@ -0,0 +1,40 @@ | 
				
			|||||
 | 
					Inventory Dashboard | 
				
			||||
 | 
					=================== | 
				
			||||
 | 
					* Inventory Dashboard module for Odoo 15. | 
				
			||||
 | 
					
 | 
				
			||||
 | 
					Installation | 
				
			||||
 | 
					============ | 
				
			||||
 | 
						- www.odoo.com/documentation/15.0/setup/install.html | 
				
			||||
 | 
						- Install our custom addon | 
				
			||||
 | 
					
 | 
				
			||||
 | 
					License | 
				
			||||
 | 
					------- | 
				
			||||
 | 
					General Public License, Version 3 (LGPL v3). | 
				
			||||
 | 
					(https://www.odoo.com/documentation/user/15.0/legal/licenses/licenses.html) | 
				
			||||
 | 
					
 | 
				
			||||
 | 
					Company | 
				
			||||
 | 
					------- | 
				
			||||
 | 
					* 'Cybrosys Techno Solutions <https://cybrosys.com/>'__ | 
				
			||||
 | 
					
 | 
				
			||||
 | 
					Credits | 
				
			||||
 | 
					------- | 
				
			||||
 | 
					* 'Cybrosys Techno Solutions <https://cybrosys.com/>'__ | 
				
			||||
 | 
					
 | 
				
			||||
 | 
					Contacts | 
				
			||||
 | 
					-------- | 
				
			||||
 | 
					* Mail Contact : odoo@cybrosys.com | 
				
			||||
 | 
					
 | 
				
			||||
 | 
					Bug Tracker | 
				
			||||
 | 
					----------- | 
				
			||||
 | 
					Bugs are tracked on GitHub Issues. In case of trouble, please check there if your issue has already been reported. | 
				
			||||
 | 
					
 | 
				
			||||
 | 
					Maintainer | 
				
			||||
 | 
					========== | 
				
			||||
 | 
					This module is maintained by Cybrosys Technologies. | 
				
			||||
 | 
					
 | 
				
			||||
 | 
					For support and more information, please visit https://www.cybrosys.com | 
				
			||||
 | 
					
 | 
				
			||||
 | 
					Further information | 
				
			||||
 | 
					=================== | 
				
			||||
 | 
					HTML Description: `<static/description/index.html>`__ | 
				
			||||
 | 
					
 | 
				
			||||
@ -0,0 +1,23 @@ | 
				
			|||||
 | 
					# -*- coding: utf-8 -*- | 
				
			||||
 | 
					############################################################################# | 
				
			||||
 | 
					# | 
				
			||||
 | 
					#    Cybrosys Technologies Pvt. Ltd. | 
				
			||||
 | 
					# | 
				
			||||
 | 
					#    Copyright (C) 2022-TODAY Cybrosys Technologies(<https://www.cybrosys.com>) | 
				
			||||
 | 
					#    Author: Cybrosys Techno Solutions(<https://www.cybrosys.com>) | 
				
			||||
 | 
					# | 
				
			||||
 | 
					#    You can modify it under the terms of the GNU LESSER | 
				
			||||
 | 
					#    GENERAL PUBLIC LICENSE (LGPL v3), Version 3. | 
				
			||||
 | 
					# | 
				
			||||
 | 
					#    This program is distributed in the hope that it will be useful, | 
				
			||||
 | 
					#    but WITHOUT ANY WARRANTY; without even the implied warranty of | 
				
			||||
 | 
					#    MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the | 
				
			||||
 | 
					#    GNU LESSER GENERAL PUBLIC LICENSE (LGPL v3) for more details. | 
				
			||||
 | 
					# | 
				
			||||
 | 
					#    You should have received a copy of the GNU LESSER GENERAL PUBLIC LICENSE | 
				
			||||
 | 
					#    (LGPL v3) along with this program. | 
				
			||||
 | 
					#    If not, see <http://www.gnu.org/licenses/>. | 
				
			||||
 | 
					# | 
				
			||||
 | 
					############################################################################# | 
				
			||||
 | 
					
 | 
				
			||||
 | 
					from . import models | 
				
			||||
@ -0,0 +1,51 @@ | 
				
			|||||
 | 
					# -*- coding: utf-8 -*- | 
				
			||||
 | 
					############################################################################# | 
				
			||||
 | 
					# | 
				
			||||
 | 
					#    Cybrosys Technologies Pvt. Ltd. | 
				
			||||
 | 
					# | 
				
			||||
 | 
					#    Copyright (C) 2022-TODAY Cybrosys Technologies(<https://www.cybrosys.com>) | 
				
			||||
 | 
					#    Author: Cybrosys Techno Solutions(<https://www.cybrosys.com>) | 
				
			||||
 | 
					# | 
				
			||||
 | 
					#    You can modify it under the terms of the GNU LESSER | 
				
			||||
 | 
					#    GENERAL PUBLIC LICENSE (LGPL v3), Version 3. | 
				
			||||
 | 
					# | 
				
			||||
 | 
					#    This program is distributed in the hope that it will be useful, | 
				
			||||
 | 
					#    but WITHOUT ANY WARRANTY; without even the implied warranty of | 
				
			||||
 | 
					#    MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the | 
				
			||||
 | 
					#    GNU LESSER GENERAL PUBLIC LICENSE (LGPL v3) for more details. | 
				
			||||
 | 
					# | 
				
			||||
 | 
					#    You should have received a copy of the GNU LESSER GENERAL PUBLIC LICENSE | 
				
			||||
 | 
					#    (LGPL v3) along with this program. | 
				
			||||
 | 
					#    If not, see <http://www.gnu.org/licenses/>. | 
				
			||||
 | 
					# | 
				
			||||
 | 
					############################################################################# | 
				
			||||
 | 
					{ | 
				
			||||
 | 
					    'name': 'Inventory Dashboard Odoo15', | 
				
			||||
 | 
					    'version': '15.0.1.0.0', | 
				
			||||
 | 
					    'summary': 'Inventory Dashboard', | 
				
			||||
 | 
					    'description': """  Detailed Dashboard View For Inventory""", | 
				
			||||
 | 
					    'category': 'Inventory', | 
				
			||||
 | 
					    'author': 'Cybrosys Techno Solutions', | 
				
			||||
 | 
					    'company': 'Cybrosys Techno Solutions', | 
				
			||||
 | 
					    'maintainer': 'Cybrosys Techno Solutions', | 
				
			||||
 | 
					    'website': "https://www.cybrosys.com", | 
				
			||||
 | 
					    'depends': ['stock', 'base'], | 
				
			||||
 | 
					    'data': ['views/style.xml', | 
				
			||||
 | 
					             'views/dashboard_menu.xml', | 
				
			||||
 | 
					             'views/res_config_settings_inherit.xml', | 
				
			||||
 | 
					             ], | 
				
			||||
 | 
					    'assets': { | 
				
			||||
 | 
					        'web.assets_backend': [ | 
				
			||||
 | 
					            'inventory_stock_dashboard_odoo/static/src/css/dashboard.css', | 
				
			||||
 | 
					            'inventory_stock_dashboard_odoo/static/src/js/dashboard.js', | 
				
			||||
 | 
					            'inventory_stock_dashboard_odoo/static/src/js/lib/Chart.bundle.js', | 
				
			||||
 | 
					        ], | 
				
			||||
 | 
					        'web.assets_qweb': [ | 
				
			||||
 | 
					            'inventory_stock_dashboard_odoo/static/src/xml/dashboard.xml' | 
				
			||||
 | 
					        ], | 
				
			||||
 | 
					    }, | 
				
			||||
 | 
					    'license': 'LGPL-3', | 
				
			||||
 | 
					    'installable': True, | 
				
			||||
 | 
					    'application': True, | 
				
			||||
 | 
					    'auto_install': False, | 
				
			||||
 | 
					} | 
				
			||||
@ -0,0 +1,6 @@ | 
				
			|||||
 | 
					## Module <inventory_stock_dashboard_odoo> | 
				
			||||
 | 
					
 | 
				
			||||
 | 
					#### 24.05.2022 | 
				
			||||
 | 
					#### Version 15.0.1.0.0 | 
				
			||||
 | 
					#### ADD | 
				
			||||
 | 
					- Initial commit for CRM Dashboard Module | 
				
			||||
@ -0,0 +1,28 @@ | 
				
			|||||
 | 
					# -*- coding: utf-8 -*- | 
				
			||||
 | 
					############################################################################# | 
				
			||||
 | 
					# | 
				
			||||
 | 
					#    Cybrosys Technologies Pvt. Ltd. | 
				
			||||
 | 
					# | 
				
			||||
 | 
					#    Copyright (C) 2022-TODAY Cybrosys Technologies(<https://www.cybrosys.com>) | 
				
			||||
 | 
					#    Author: Cybrosys Techno Solutions(<https://www.cybrosys.com>) | 
				
			||||
 | 
					# | 
				
			||||
 | 
					#    You can modify it under the terms of the GNU LESSER | 
				
			||||
 | 
					#    GENERAL PUBLIC LICENSE (LGPL v3), Version 3. | 
				
			||||
 | 
					# | 
				
			||||
 | 
					#    This program is distributed in the hope that it will be useful, | 
				
			||||
 | 
					#    but WITHOUT ANY WARRANTY; without even the implied warranty of | 
				
			||||
 | 
					#    MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the | 
				
			||||
 | 
					#    GNU LESSER GENERAL PUBLIC LICENSE (LGPL v3) for more details. | 
				
			||||
 | 
					# | 
				
			||||
 | 
					#    You should have received a copy of the GNU LESSER GENERAL PUBLIC LICENSE | 
				
			||||
 | 
					#    (LGPL v3) along with this program. | 
				
			||||
 | 
					#    If not, see <http://www.gnu.org/licenses/>. | 
				
			||||
 | 
					# | 
				
			||||
 | 
					############################################################################# | 
				
			||||
 | 
					
 | 
				
			||||
 | 
					from . import stock_move_inherit | 
				
			||||
 | 
					from . import stock_picking_inherit | 
				
			||||
 | 
					from . import res_config_settings_inherit | 
				
			||||
 | 
					from . import stock_quant_inherit | 
				
			||||
 | 
					from . import stock_move_line_inherit | 
				
			||||
 | 
					
 | 
				
			||||
@ -0,0 +1,37 @@ | 
				
			|||||
 | 
					# -*- coding: utf-8 -*- | 
				
			||||
 | 
					############################################################################# | 
				
			||||
 | 
					# | 
				
			||||
 | 
					#    Cybrosys Technologies Pvt. Ltd. | 
				
			||||
 | 
					# | 
				
			||||
 | 
					#    Copyright (C) 2022-TODAY Cybrosys Technologies(<https://www.cybrosys.com>) | 
				
			||||
 | 
					#    Author: Cybrosys Techno Solutions(<https://www.cybrosys.com>) | 
				
			||||
 | 
					# | 
				
			||||
 | 
					#    You can modify it under the terms of the GNU LESSER | 
				
			||||
 | 
					#    GENERAL PUBLIC LICENSE (LGPL v3), Version 3. | 
				
			||||
 | 
					# | 
				
			||||
 | 
					#    This program is distributed in the hope that it will be useful, | 
				
			||||
 | 
					#    but WITHOUT ANY WARRANTY; without even the implied warranty of | 
				
			||||
 | 
					#    MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the | 
				
			||||
 | 
					#    GNU LESSER GENERAL PUBLIC LICENSE (LGPL v3) for more details. | 
				
			||||
 | 
					# | 
				
			||||
 | 
					#    You should have received a copy of the GNU LESSER GENERAL PUBLIC LICENSE | 
				
			||||
 | 
					#    (LGPL v3) along with this program. | 
				
			||||
 | 
					#    If not, see <http://www.gnu.org/licenses/>. | 
				
			||||
 | 
					# | 
				
			||||
 | 
					############################################################################# | 
				
			||||
 | 
					
 | 
				
			||||
 | 
					from odoo import fields, models | 
				
			||||
 | 
					
 | 
				
			||||
 | 
					
 | 
				
			||||
 | 
					class ResConfiqSettingInherit(models.TransientModel): | 
				
			||||
 | 
					    _inherit = "res.config.settings" | 
				
			||||
 | 
					    out_of_stock = fields.Boolean(config_parameter='inventory_stock_dashboard_odoo.out_of_stock') | 
				
			||||
 | 
					    out_of_stock_quantity = fields.Integer(string="Quantity", | 
				
			||||
 | 
					                                           config_parameter='inventory_stock_dashboard_odoo.out_of_stock_quantity', | 
				
			||||
 | 
					                                           required=True) | 
				
			||||
 | 
					    dead_stock_bol = fields.Boolean(string="Dead Stock", | 
				
			||||
 | 
					                                    config_parameter='inventory_stock_dashboard_odoo.dead_stock_bol') | 
				
			||||
 | 
					    dead_stock = fields.Integer(config_parameter='inventory_stock_dashboard_odoo.dead_stock', required=True) | 
				
			||||
 | 
					    dead_stock_type = fields.Selection([('day', 'Day'), ('week', 'Week'), ('month', 'Month')], | 
				
			||||
 | 
					                                       string="Type", default='day', | 
				
			||||
 | 
					                                       config_parameter='inventory_stock_dashboard_odoo.dead_stock_type', required=True) | 
				
			||||
@ -0,0 +1,290 @@ | 
				
			|||||
 | 
					# -*- coding: utf-8 -*- | 
				
			||||
 | 
					############################################################################# | 
				
			||||
 | 
					# | 
				
			||||
 | 
					#    Cybrosys Technologies Pvt. Ltd. | 
				
			||||
 | 
					# | 
				
			||||
 | 
					#    Copyright (C) 2022-TODAY Cybrosys Technologies(<https://www.cybrosys.com>) | 
				
			||||
 | 
					#    Author: Cybrosys Techno Solutions(<https://www.cybrosys.com>) | 
				
			||||
 | 
					# | 
				
			||||
 | 
					#    You can modify it under the terms of the GNU LESSER | 
				
			||||
 | 
					#    GENERAL PUBLIC LICENSE (LGPL v3), Version 3. | 
				
			||||
 | 
					# | 
				
			||||
 | 
					#    This program is distributed in the hope that it will be useful, | 
				
			||||
 | 
					#    but WITHOUT ANY WARRANTY; without even the implied warranty of | 
				
			||||
 | 
					#    MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the | 
				
			||||
 | 
					#    GNU LESSER GENERAL PUBLIC LICENSE (LGPL v3) for more details. | 
				
			||||
 | 
					# | 
				
			||||
 | 
					#    You should have received a copy of the GNU LESSER GENERAL PUBLIC LICENSE | 
				
			||||
 | 
					#    (LGPL v3) along with this program. | 
				
			||||
 | 
					#    If not, see <http://www.gnu.org/licenses/>. | 
				
			||||
 | 
					# | 
				
			||||
 | 
					############################################################################# | 
				
			||||
 | 
					
 | 
				
			||||
 | 
					from odoo import api, models | 
				
			||||
 | 
					
 | 
				
			||||
 | 
					
 | 
				
			||||
 | 
					class StockMoveInherit(models.Model): | 
				
			||||
 | 
					    _inherit = "stock.move" | 
				
			||||
 | 
					
 | 
				
			||||
 | 
					    @api.model | 
				
			||||
 | 
					    def get_the_top_products(self): | 
				
			||||
 | 
					        """rpc method of top products graph | 
				
			||||
 | 
					        Returns top ten products and done quantity""" | 
				
			||||
 | 
					        company_id = self.env.company.id | 
				
			||||
 | 
					        query = '''select product_template.name,sum(product_uom_qty)  from stock_move | 
				
			||||
 | 
					            inner join stock_picking on stock_move.picking_id = stock_picking.id | 
				
			||||
 | 
					            inner join stock_picking_type on stock_picking.picking_type_id = stock_picking_type.id | 
				
			||||
 | 
					            inner join product_product on stock_move.product_id = product_product.id | 
				
			||||
 | 
					            inner join product_template on product_template.id = product_product.product_tmpl_id  | 
				
			||||
 | 
					            where stock_move.state = 'done' and stock_move.company_id=%s and stock_picking_type.code = 'outgoing' and  | 
				
			||||
 | 
					            stock_move.create_date between (now() - interval '10 day') and now() | 
				
			||||
 | 
					            group by product_template.name ORDER BY sum DESC''' % company_id | 
				
			||||
 | 
					
 | 
				
			||||
 | 
					        self._cr.execute(query) | 
				
			||||
 | 
					        top_product = self._cr.dictfetchall() | 
				
			||||
 | 
					        total_quantity = [] | 
				
			||||
 | 
					        product_name = [] | 
				
			||||
 | 
					        for record in top_product[:10]: | 
				
			||||
 | 
					            total_quantity.append(record.get('sum')) | 
				
			||||
 | 
					            product_name.append(record.get('name')) | 
				
			||||
 | 
					        value = {'products': product_name, 'count': total_quantity} | 
				
			||||
 | 
					        return value | 
				
			||||
 | 
					
 | 
				
			||||
 | 
					    @api.model | 
				
			||||
 | 
					    def top_products_last_ten(self): | 
				
			||||
 | 
					        """rpc method of top products graph for last 10 days | 
				
			||||
 | 
					        Returns top ten products and done quantity""" | 
				
			||||
 | 
					        company_id = self.env.company.id | 
				
			||||
 | 
					        query = '''select product_template.name,sum(product_uom_qty)  from stock_move | 
				
			||||
 | 
					            inner join stock_picking on stock_move.picking_id = stock_picking.id | 
				
			||||
 | 
					            inner join stock_picking_type on stock_picking.picking_type_id = stock_picking_type.id | 
				
			||||
 | 
					            inner join product_product on stock_move.product_id = product_product.id | 
				
			||||
 | 
					            inner join product_template on product_template.id = product_product.product_tmpl_id  | 
				
			||||
 | 
					            where stock_move.state = 'done' and stock_move.company_id=%s and stock_picking_type.code = 'outgoing' and  | 
				
			||||
 | 
					            stock_move.create_date between (now() - interval '10 day') and now() | 
				
			||||
 | 
					            group by product_template.name ORDER BY sum DESC''' % company_id | 
				
			||||
 | 
					
 | 
				
			||||
 | 
					        self._cr.execute(query) | 
				
			||||
 | 
					        top_product = self._cr.dictfetchall() | 
				
			||||
 | 
					        total_quantity = [] | 
				
			||||
 | 
					        product_name = [] | 
				
			||||
 | 
					        for record in top_product[:10]: | 
				
			||||
 | 
					            total_quantity.append(record.get('sum')) | 
				
			||||
 | 
					            product_name.append(record.get('name')) | 
				
			||||
 | 
					        value = {'products': product_name, 'count': total_quantity} | 
				
			||||
 | 
					        return value | 
				
			||||
 | 
					
 | 
				
			||||
 | 
					    @api.model | 
				
			||||
 | 
					    def top_products_last_thirty(self): | 
				
			||||
 | 
					        """rpc method of top products graph for last 30 days | 
				
			||||
 | 
					        Returns top ten products and done quantity""" | 
				
			||||
 | 
					        company_id = self.env.company.id | 
				
			||||
 | 
					        query = '''select product_template.name,sum(product_uom_qty)  from stock_move | 
				
			||||
 | 
					                inner join stock_picking on stock_move.picking_id = stock_picking.id | 
				
			||||
 | 
					                inner join stock_picking_type on stock_picking.picking_type_id = stock_picking_type.id | 
				
			||||
 | 
					                inner join product_product on stock_move.product_id = product_product.id | 
				
			||||
 | 
					                inner join product_template on product_template.id = product_product.product_tmpl_id  | 
				
			||||
 | 
					                where stock_move.state = 'done' and stock_move.company_id=%s and stock_picking_type.code = 'outgoing'  | 
				
			||||
 | 
					                and stock_move.create_date between (now() - interval '30 day') and now() | 
				
			||||
 | 
					                group by product_template.name ORDER BY sum DESC''' % company_id | 
				
			||||
 | 
					
 | 
				
			||||
 | 
					        self._cr.execute(query) | 
				
			||||
 | 
					        top_product = self._cr.dictfetchall() | 
				
			||||
 | 
					        total_quantity = [] | 
				
			||||
 | 
					        product_name = [] | 
				
			||||
 | 
					        for record in top_product[:10]: | 
				
			||||
 | 
					            total_quantity.append(record.get('sum')) | 
				
			||||
 | 
					            product_name.append(record.get('name')) | 
				
			||||
 | 
					        value = {'products': product_name, 'count': total_quantity} | 
				
			||||
 | 
					        return value | 
				
			||||
 | 
					
 | 
				
			||||
 | 
					    @api.model | 
				
			||||
 | 
					    def top_products_last_three_months(self): | 
				
			||||
 | 
					        """rpc method of top products graph select 3 months | 
				
			||||
 | 
					        Returns top ten products and done quantity""" | 
				
			||||
 | 
					        company_id = self.env.company.id | 
				
			||||
 | 
					        query = '''select product_template.name,sum(product_uom_qty)  from stock_move | 
				
			||||
 | 
					                    inner join stock_picking on stock_move.picking_id = stock_picking.id | 
				
			||||
 | 
					                    inner join stock_picking_type on stock_picking.picking_type_id = stock_picking_type.id | 
				
			||||
 | 
					                    inner join product_product on stock_move.product_id = product_product.id | 
				
			||||
 | 
					                    inner join product_template on product_template.id = product_product.product_tmpl_id  | 
				
			||||
 | 
					                    where stock_move.state = 'done' and stock_move.company_id=%s and stock_picking_type.code ='outgoing'  | 
				
			||||
 | 
					                    and stock_move.create_date between (now() - interval '3 month') and now() | 
				
			||||
 | 
					                    group by product_template.name ORDER BY sum DESC''' % company_id | 
				
			||||
 | 
					
 | 
				
			||||
 | 
					        self._cr.execute(query) | 
				
			||||
 | 
					        top_product = self._cr.dictfetchall() | 
				
			||||
 | 
					        total_quantity = [] | 
				
			||||
 | 
					        product_name = [] | 
				
			||||
 | 
					        for record in top_product[:10]: | 
				
			||||
 | 
					            total_quantity.append(record.get('sum')) | 
				
			||||
 | 
					            product_name.append(record.get('name')) | 
				
			||||
 | 
					        value = {'products': product_name, 'count': total_quantity} | 
				
			||||
 | 
					        return value | 
				
			||||
 | 
					
 | 
				
			||||
 | 
					    @api.model | 
				
			||||
 | 
					    def top_products_last_year(self): | 
				
			||||
 | 
					        """rpc method of top products graph select last year | 
				
			||||
 | 
					        Returns top ten products and done quantity""" | 
				
			||||
 | 
					        company_id = self.env.company.id | 
				
			||||
 | 
					        query = '''select product_template.name,sum(product_uom_qty)  from stock_move | 
				
			||||
 | 
					                        inner join stock_picking on stock_move.picking_id = stock_picking.id | 
				
			||||
 | 
					                        inner join stock_picking_type on stock_picking.picking_type_id = stock_picking_type.id | 
				
			||||
 | 
					                        inner join product_product on stock_move.product_id = product_product.id | 
				
			||||
 | 
					                        inner join product_template on product_template.id = product_product.product_tmpl_id  | 
				
			||||
 | 
					                        where stock_move.state = 'done' and stock_move.company_id=%s and  | 
				
			||||
 | 
					                        stock_picking_type.code = 'outgoing' and  | 
				
			||||
 | 
					                        stock_move.create_date between (now() - interval '1 year') and now() | 
				
			||||
 | 
					                        group by product_template.name ORDER BY sum DESC''' % company_id | 
				
			||||
 | 
					
 | 
				
			||||
 | 
					        self._cr.execute(query) | 
				
			||||
 | 
					        top_product = self._cr.dictfetchall() | 
				
			||||
 | 
					        total_quantity = [] | 
				
			||||
 | 
					        product_name = [] | 
				
			||||
 | 
					        for record in top_product[:10]: | 
				
			||||
 | 
					            total_quantity.append(record.get('sum')) | 
				
			||||
 | 
					            product_name.append(record.get('name')) | 
				
			||||
 | 
					        value = {'products': product_name, 'count': total_quantity} | 
				
			||||
 | 
					        return value | 
				
			||||
 | 
					
 | 
				
			||||
 | 
					    @api.model | 
				
			||||
 | 
					    def get_stock_moves(self): | 
				
			||||
 | 
					        """rpc method of stock moves graph | 
				
			||||
 | 
					            Returns location name and quantity_done""" | 
				
			||||
 | 
					        company_id = self.env.company.id | 
				
			||||
 | 
					        query = ('''select stock_location.complete_name, count(stock_move.id) from stock_move  | 
				
			||||
 | 
					            inner join stock_location on stock_move.location_id = stock_location.id where stock_move.state = 'done'  | 
				
			||||
 | 
					            and stock_move.company_id = %s group by stock_location.complete_name''' % company_id) | 
				
			||||
 | 
					        self._cr.execute(query) | 
				
			||||
 | 
					        stock_move = self._cr.dictfetchall() | 
				
			||||
 | 
					        count = [] | 
				
			||||
 | 
					        complete_name = [] | 
				
			||||
 | 
					        for record in stock_move: | 
				
			||||
 | 
					            count.append(record.get('count')) | 
				
			||||
 | 
					            complete_name.append(record.get('complete_name')) | 
				
			||||
 | 
					        value = {'name': complete_name, 'count': count} | 
				
			||||
 | 
					        return value | 
				
			||||
 | 
					
 | 
				
			||||
 | 
					    @api.model | 
				
			||||
 | 
					    def stock_move_last_ten_days(self, post): | 
				
			||||
 | 
					        """rpc method of stock moves graph select last ten days | 
				
			||||
 | 
					            Returns location name and quantity_done""" | 
				
			||||
 | 
					        company_id = self.env.company.id | 
				
			||||
 | 
					        query = ('''select stock_location.name,sum(stock_move_line.qty_done) from stock_move_line | 
				
			||||
 | 
					                        inner join stock_location on stock_move_line.location_id = stock_location.id | 
				
			||||
 | 
					                        where stock_move_line.state = 'done' and stock_move_line.company_id = %s | 
				
			||||
 | 
					                        and stock_move_line.create_date between (now() - interval '10 day') and now() | 
				
			||||
 | 
					                        group by stock_location.name''' % company_id) | 
				
			||||
 | 
					        self._cr.execute(query) | 
				
			||||
 | 
					        location_quantity = self._cr.dictfetchall() | 
				
			||||
 | 
					        quantity_done = [] | 
				
			||||
 | 
					        name = [] | 
				
			||||
 | 
					        for record in location_quantity: | 
				
			||||
 | 
					            quantity_done.append(record.get('sum')) | 
				
			||||
 | 
					            name.append(record.get('name')) | 
				
			||||
 | 
					        value = {'name': name, 'count': quantity_done} | 
				
			||||
 | 
					        return value | 
				
			||||
 | 
					
 | 
				
			||||
 | 
					    @api.model | 
				
			||||
 | 
					    def this_month(self, post): | 
				
			||||
 | 
					        """rpc method of stock moves graph select this month | 
				
			||||
 | 
					            Returns location name and quantity_done""" | 
				
			||||
 | 
					        company_id = self.env.company.id | 
				
			||||
 | 
					        query = ('''select stock_location.name,sum(stock_move_line.qty_done) from stock_move_line | 
				
			||||
 | 
					                    inner join stock_location on stock_move_line.location_id = stock_location.id | 
				
			||||
 | 
					                    where stock_move_line.state = 'done' and stock_move_line.company_id = %s | 
				
			||||
 | 
					                    and stock_move_line.create_date between (now() - interval '1 months') and now() | 
				
			||||
 | 
					                    group by stock_location.name''' % company_id) | 
				
			||||
 | 
					        self._cr.execute(query) | 
				
			||||
 | 
					        location_quantity = self._cr.dictfetchall() | 
				
			||||
 | 
					        quantity_done = [] | 
				
			||||
 | 
					        name = [] | 
				
			||||
 | 
					        for record in location_quantity: | 
				
			||||
 | 
					            quantity_done.append(record.get('sum')) | 
				
			||||
 | 
					            name.append(record.get('name')) | 
				
			||||
 | 
					        value = {'name': name, 'count': quantity_done} | 
				
			||||
 | 
					        return value | 
				
			||||
 | 
					
 | 
				
			||||
 | 
					    @api.model | 
				
			||||
 | 
					    def last_three_month(self, post): | 
				
			||||
 | 
					        """rpc method of stock moves graph select 3 month | 
				
			||||
 | 
					            Returns location name and quantity_done""" | 
				
			||||
 | 
					        company_id = self.env.company.id | 
				
			||||
 | 
					        query = ('''select stock_location.name,sum(stock_move_line.qty_done) from stock_move_line | 
				
			||||
 | 
					                        inner join stock_location on stock_move_line.location_id = stock_location.id | 
				
			||||
 | 
					                        where stock_move_line.state = 'done' and stock_move_line.company_id = %s | 
				
			||||
 | 
					                        and stock_move_line.create_date between (now() - interval '3 months') and now() | 
				
			||||
 | 
					                        group by stock_location.name''' % company_id) | 
				
			||||
 | 
					        self._cr.execute(query) | 
				
			||||
 | 
					        location_quantity = self._cr.dictfetchall() | 
				
			||||
 | 
					        quantity_done = [] | 
				
			||||
 | 
					        name = [] | 
				
			||||
 | 
					        for record in location_quantity: | 
				
			||||
 | 
					            quantity_done.append(record.get('sum')) | 
				
			||||
 | 
					            name.append(record.get('name')) | 
				
			||||
 | 
					        value = {'name': name, 'count': quantity_done} | 
				
			||||
 | 
					        return value | 
				
			||||
 | 
					
 | 
				
			||||
 | 
					    @api.model | 
				
			||||
 | 
					    def last_year(self, post): | 
				
			||||
 | 
					        """rpc method of stock moves graph select last year | 
				
			||||
 | 
					                    Returns location name and quantity_done""" | 
				
			||||
 | 
					        company_id = self.env.company.id | 
				
			||||
 | 
					        query = ('''select stock_location.name,sum(stock_move_line.qty_done) from stock_move_line | 
				
			||||
 | 
					                       inner join stock_location on stock_move_line.location_id = stock_location.id | 
				
			||||
 | 
					                       where stock_move_line.state = 'done' and stock_move_line.company_id = %s  | 
				
			||||
 | 
					                       and stock_move_line.create_date between (now() - interval '12 months') and now() | 
				
			||||
 | 
					                        group by stock_location.name''' % company_id) | 
				
			||||
 | 
					
 | 
				
			||||
 | 
					        self._cr.execute(query) | 
				
			||||
 | 
					        location_quantity = self._cr.dictfetchall() | 
				
			||||
 | 
					        quantity_done = [] | 
				
			||||
 | 
					        name = [] | 
				
			||||
 | 
					        for record in location_quantity: | 
				
			||||
 | 
					            quantity_done.append(record.get('sum')) | 
				
			||||
 | 
					            name.append(record.get('name')) | 
				
			||||
 | 
					        value = {'name': name, 'count': quantity_done} | 
				
			||||
 | 
					        return value | 
				
			||||
 | 
					
 | 
				
			||||
 | 
					    @api.model | 
				
			||||
 | 
					    def get_dead_of_stock(self): | 
				
			||||
 | 
					        """rpc method of dead of stock graph | 
				
			||||
 | 
					        Returns product name and dead quantity""" | 
				
			||||
 | 
					        company_id = self.env.company.id | 
				
			||||
 | 
					        sett_dead_stock_bool = self.env['ir.config_parameter'].sudo(). \ | 
				
			||||
 | 
					            get_param("inventory_stock_dashboard_odoo.dead_stock_bol", default="") | 
				
			||||
 | 
					        sett_dead_stock_quantity = self.env['ir.config_parameter'].sudo().get_param( | 
				
			||||
 | 
					            "inventory_stock_dashboard_odoo.dead_stock", | 
				
			||||
 | 
					            default="") | 
				
			||||
 | 
					        sett_dead_stock_type = self.env['ir.config_parameter'].sudo().get_param( | 
				
			||||
 | 
					            "inventory_stock_dashboard_odoo.dead_stock_type", | 
				
			||||
 | 
					            default="") | 
				
			||||
 | 
					        if sett_dead_stock_bool == "True": | 
				
			||||
 | 
					            if sett_dead_stock_quantity: | 
				
			||||
 | 
					                out_stock_value = int(sett_dead_stock_quantity) | 
				
			||||
 | 
					                query = '''select product_product.id,stock_quant.quantity from product_product | 
				
			||||
 | 
					                inner join stock_quant on product_product.id = stock_quant.product_id | 
				
			||||
 | 
					                where stock_quant.company_id = %s and product_product.create_date not between (now() - interval '%s %s') | 
				
			||||
 | 
					                and now() and product_product.id NOT IN (select product_id from stock_move | 
				
			||||
 | 
					                inner join stock_picking on stock_move.picking_id = stock_picking.id | 
				
			||||
 | 
					                inner join stock_picking_type on stock_picking.picking_type_id = stock_picking_type.id | 
				
			||||
 | 
					                where stock_move.company_id = %s and stock_picking_type.code = 'outgoing' and  | 
				
			||||
 | 
					                stock_move.state = 'done'   and stock_move.create_date between (now() - interval '%s %s') and now() | 
				
			||||
 | 
					                group by product_id)''' % \ | 
				
			||||
 | 
					                        (company_id, out_stock_value, sett_dead_stock_type, company_id, out_stock_value, | 
				
			||||
 | 
					                         sett_dead_stock_type) | 
				
			||||
 | 
					
 | 
				
			||||
 | 
					                self._cr.execute(query) | 
				
			||||
 | 
					                result = self._cr.fetchall() | 
				
			||||
 | 
					                total_quantity = [] | 
				
			||||
 | 
					                product_name = [] | 
				
			||||
 | 
					                for record in result: | 
				
			||||
 | 
					                    if record[1] > 0: | 
				
			||||
 | 
					                        complete_name = self.env['product.product'].browse(record[0]).display_name | 
				
			||||
 | 
					                        product_name.append(complete_name) | 
				
			||||
 | 
					                        total_quantity.append(record[1]) | 
				
			||||
 | 
					                value = { | 
				
			||||
 | 
					                    'product_name': product_name, | 
				
			||||
 | 
					                    'total_quantity': total_quantity | 
				
			||||
 | 
					                } | 
				
			||||
 | 
					                return value | 
				
			||||
@ -0,0 +1,85 @@ | 
				
			|||||
 | 
					# -*- coding: utf-8 -*- | 
				
			||||
 | 
					############################################################################# | 
				
			||||
 | 
					# | 
				
			||||
 | 
					#    Cybrosys Technologies Pvt. Ltd. | 
				
			||||
 | 
					# | 
				
			||||
 | 
					#    Copyright (C) 2022-TODAY Cybrosys Technologies(<https://www.cybrosys.com>) | 
				
			||||
 | 
					#    Author: Cybrosys Techno Solutions(<https://www.cybrosys.com>) | 
				
			||||
 | 
					# | 
				
			||||
 | 
					#    You can modify it under the terms of the GNU LESSER | 
				
			||||
 | 
					#    GENERAL PUBLIC LICENSE (LGPL v3), Version 3. | 
				
			||||
 | 
					# | 
				
			||||
 | 
					#    This program is distributed in the hope that it will be useful, | 
				
			||||
 | 
					#    but WITHOUT ANY WARRANTY; without even the implied warranty of | 
				
			||||
 | 
					#    MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the | 
				
			||||
 | 
					#    GNU LESSER GENERAL PUBLIC LICENSE (LGPL v3) for more details. | 
				
			||||
 | 
					# | 
				
			||||
 | 
					#    You should have received a copy of the GNU LESSER GENERAL PUBLIC LICENSE | 
				
			||||
 | 
					#    (LGPL v3) along with this program. | 
				
			||||
 | 
					#    If not, see <http://www.gnu.org/licenses/>. | 
				
			||||
 | 
					# | 
				
			||||
 | 
					############################################################################# | 
				
			||||
 | 
					
 | 
				
			||||
 | 
					from odoo import api, models | 
				
			||||
 | 
					
 | 
				
			||||
 | 
					
 | 
				
			||||
 | 
					class StockMoveLineInherit(models.Model): | 
				
			||||
 | 
					    _inherit = "stock.move.line" | 
				
			||||
 | 
					
 | 
				
			||||
 | 
					    @api.model | 
				
			||||
 | 
					    def get_product_moves(self): | 
				
			||||
 | 
					        """rpc method of product moves graph | 
				
			||||
 | 
					            Returns product move product and quantity_done""" | 
				
			||||
 | 
					        company_id = self.env.company.id | 
				
			||||
 | 
					        query = ('''select product_template.name,sum(stock_move_line.qty_done) from stock_move_line | 
				
			||||
 | 
					                inner join product_product on stock_move_line.product_id = product_product.id | 
				
			||||
 | 
					                inner join product_template on product_product.product_tmpl_id = product_template.id | 
				
			||||
 | 
					                where stock_move_line.company_id = %s group by product_template.name''' % company_id) | 
				
			||||
 | 
					        self._cr.execute(query) | 
				
			||||
 | 
					        products_quantity = self._cr.dictfetchall() | 
				
			||||
 | 
					        quantity_done = [] | 
				
			||||
 | 
					        name = [] | 
				
			||||
 | 
					        for record in products_quantity: | 
				
			||||
 | 
					            quantity_done.append(record.get('sum')) | 
				
			||||
 | 
					            name.append(record.get('name')) | 
				
			||||
 | 
					        value = {'name': name, 'count': quantity_done} | 
				
			||||
 | 
					        category_query = '''select product_category.id,product_category.name from stock_move_line | 
				
			||||
 | 
					                inner join product_product on stock_move_line.product_id = product_product.id | 
				
			||||
 | 
					                inner join product_template on product_product.product_tmpl_id = product_template.id | 
				
			||||
 | 
					                inner join product_category on product_template.categ_id = product_category.id | 
				
			||||
 | 
					                where stock_move_line.company_id = %s and stock_move_line.state = 'done' | 
				
			||||
 | 
					                group by product_category.id''' % company_id | 
				
			||||
 | 
					        self._cr.execute(category_query) | 
				
			||||
 | 
					        category = self._cr.dictfetchall() | 
				
			||||
 | 
					        category_id = [] | 
				
			||||
 | 
					        category_name = [] | 
				
			||||
 | 
					        for record in category: | 
				
			||||
 | 
					            category_id.append(record.get('id')) | 
				
			||||
 | 
					            category_name.append(record.get('name')) | 
				
			||||
 | 
					        value1 = {'category_id': category_id, 'category_name': category_name} | 
				
			||||
 | 
					        return value, value1 | 
				
			||||
 | 
					
 | 
				
			||||
 | 
					    @api.model | 
				
			||||
 | 
					    def product_move_by_category(self, args): | 
				
			||||
 | 
					        """rpc method of product moves by category | 
				
			||||
 | 
					            Returns category name and quantity_done""" | 
				
			||||
 | 
					        category_id = int(args) | 
				
			||||
 | 
					        company_id = self.env.company.id | 
				
			||||
 | 
					        query = ('''select product_template.name,sum(stock_move_line.qty_done) from stock_move_line | 
				
			||||
 | 
					        inner join product_product on stock_move_line.product_id = product_product.id | 
				
			||||
 | 
					        inner join product_template on product_product.product_tmpl_id = product_template.id | 
				
			||||
 | 
					        inner join product_category on product_template.categ_id = product_category.id | 
				
			||||
 | 
					        where stock_move_line.company_id = %s and product_category.id = %s group by product_template.name''' % | 
				
			||||
 | 
					                 (company_id, category_id)) | 
				
			||||
 | 
					        self._cr.execute(query) | 
				
			||||
 | 
					        product_move = self._cr.dictfetchall() | 
				
			||||
 | 
					        quantity_done = [] | 
				
			||||
 | 
					        name = [] | 
				
			||||
 | 
					        for record in product_move: | 
				
			||||
 | 
					            quantity_done.append(record.get('sum')) | 
				
			||||
 | 
					            name.append(record.get('name')) | 
				
			||||
 | 
					        value = { | 
				
			||||
 | 
					            'name': name, | 
				
			||||
 | 
					            'count': quantity_done, | 
				
			||||
 | 
					        } | 
				
			||||
 | 
					        return value | 
				
			||||
@ -0,0 +1,101 @@ | 
				
			|||||
 | 
					# -*- coding: utf-8 -*- | 
				
			||||
 | 
					############################################################################# | 
				
			||||
 | 
					# | 
				
			||||
 | 
					#    Cybrosys Technologies Pvt. Ltd. | 
				
			||||
 | 
					# | 
				
			||||
 | 
					#    Copyright (C) 2022-TODAY Cybrosys Technologies(<https://www.cybrosys.com>) | 
				
			||||
 | 
					#    Author: Cybrosys Techno Solutions(<https://www.cybrosys.com>) | 
				
			||||
 | 
					# | 
				
			||||
 | 
					#    You can modify it under the terms of the GNU LESSER | 
				
			||||
 | 
					#    GENERAL PUBLIC LICENSE (LGPL v3), Version 3. | 
				
			||||
 | 
					# | 
				
			||||
 | 
					#    This program is distributed in the hope that it will be useful, | 
				
			||||
 | 
					#    but WITHOUT ANY WARRANTY; without even the implied warranty of | 
				
			||||
 | 
					#    MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the | 
				
			||||
 | 
					#    GNU LESSER GENERAL PUBLIC LICENSE (LGPL v3) for more details. | 
				
			||||
 | 
					# | 
				
			||||
 | 
					#    You should have received a copy of the GNU LESSER GENERAL PUBLIC LICENSE | 
				
			||||
 | 
					#    (LGPL v3) along with this program. | 
				
			||||
 | 
					#    If not, see <http://www.gnu.org/licenses/>. | 
				
			||||
 | 
					# | 
				
			||||
 | 
					############################################################################# | 
				
			||||
 | 
					
 | 
				
			||||
 | 
					from odoo import api, models | 
				
			||||
 | 
					
 | 
				
			||||
 | 
					
 | 
				
			||||
 | 
					class StockPickingInherit(models.Model): | 
				
			||||
 | 
					    _inherit = "stock.picking" | 
				
			||||
 | 
					
 | 
				
			||||
 | 
					    @api.model | 
				
			||||
 | 
					    def get_operation_types(self): | 
				
			||||
 | 
					        """rpc method of operation type tiles,operation type graph | 
				
			||||
 | 
					            Returns operation type details. | 
				
			||||
 | 
					            no_transfer - each operation type transfer count, | 
				
			||||
 | 
					            late - each operation type late count | 
				
			||||
 | 
					            waiting - each operation type waiting count | 
				
			||||
 | 
					            operation_type_name - have all the operation type name | 
				
			||||
 | 
					            backorder - each operation type backorders count | 
				
			||||
 | 
					                """ | 
				
			||||
 | 
					        no_transfer = {} | 
				
			||||
 | 
					        stock_picking_type = self.env['stock.picking.type'].search([]) | 
				
			||||
 | 
					        stock_picking = self.env['stock.picking'].search([]) | 
				
			||||
 | 
					        stock = [] | 
				
			||||
 | 
					        length = [] | 
				
			||||
 | 
					        names = [] | 
				
			||||
 | 
					        late = {} | 
				
			||||
 | 
					        query = '''select stock_picking.picking_type_id, count(stock_picking.picking_type_id) from stock_picking | 
				
			||||
 | 
					            inner join stock_picking_type on stock_picking.picking_type_id = stock_picking_type.id | 
				
			||||
 | 
					            where stock_picking.company_id = %s and | 
				
			||||
 | 
					            stock_picking.state in ('assigned', 'waiting', 'confirmed') and (has_deadline_issue = true or  | 
				
			||||
 | 
					            date_deadline <= now() or scheduled_date <= now()) | 
				
			||||
 | 
					            group by stock_picking.picking_type_id''' % self.env.company.id | 
				
			||||
 | 
					
 | 
				
			||||
 | 
					        self._cr.execute(query) | 
				
			||||
 | 
					        lates = self._cr.dictfetchall() | 
				
			||||
 | 
					        for rec in lates: | 
				
			||||
 | 
					            late.update({rec.get('picking_type_id'): rec.get('count')}) | 
				
			||||
 | 
					        waiting = {} | 
				
			||||
 | 
					        backorder = {} | 
				
			||||
 | 
					        operation_type_name = {} | 
				
			||||
 | 
					        for i in stock_picking_type: | 
				
			||||
 | 
					            names.append(i.name) | 
				
			||||
 | 
					            orders = stock_picking.filtered(lambda r: r.picking_type_id.id == i.id) | 
				
			||||
 | 
					            stock.append(len(orders)) | 
				
			||||
 | 
					            length_stock_picking = len(orders) | 
				
			||||
 | 
					            length.append(len(stock_picking.filtered(lambda r: r.picking_type_id.id == i.id))) | 
				
			||||
 | 
					            no_transfer.update({i.id: length_stock_picking}) | 
				
			||||
 | 
					            operation_type_name.update({i.id: i.name}) | 
				
			||||
 | 
					            if len(orders) > 0: | 
				
			||||
 | 
					                if len(orders.filtered(lambda r: r.state == 'confirmed')) > 0: | 
				
			||||
 | 
					                    waiting.update({i.id: len(orders.filtered(lambda r: r.state == 'confirmed'))}) | 
				
			||||
 | 
					                if len(orders.mapped('backorder_id')) > 0: | 
				
			||||
 | 
					                    backorder.update({i.id: len(orders.mapped('backorder_id'))}) | 
				
			||||
 | 
					        return no_transfer, late, waiting, operation_type_name, backorder | 
				
			||||
 | 
					
 | 
				
			||||
 | 
					    @api.model | 
				
			||||
 | 
					    def get_product_category(self): | 
				
			||||
 | 
					        """rpc method of product category graph | 
				
			||||
 | 
					        Returns product categories and category having on hand product quantity""" | 
				
			||||
 | 
					        category_ids = self.env['product.category'].search([]) | 
				
			||||
 | 
					        category_name = [] | 
				
			||||
 | 
					        product_count = [] | 
				
			||||
 | 
					        for rec in category_ids: | 
				
			||||
 | 
					            name = rec.name | 
				
			||||
 | 
					            category_name.append(name) | 
				
			||||
 | 
					            count = rec.product_count | 
				
			||||
 | 
					            product_count.append(count) | 
				
			||||
 | 
					        value = {'name': category_name, 'count': product_count} | 
				
			||||
 | 
					        return value | 
				
			||||
 | 
					
 | 
				
			||||
 | 
					    @api.model | 
				
			||||
 | 
					    def get_locations(self): | 
				
			||||
 | 
					        """rpc method of product location table | 
				
			||||
 | 
					               Returns locations and location having on hand product quantity""" | 
				
			||||
 | 
					        stock_quant_ids = self.env['stock.quant'].search([]) | 
				
			||||
 | 
					        locations = stock_quant_ids.mapped('location_id') | 
				
			||||
 | 
					        value = {} | 
				
			||||
 | 
					        for rec in locations: | 
				
			||||
 | 
					            loc_stock_quant = stock_quant_ids.filtered(lambda x: x.location_id == rec) | 
				
			||||
 | 
					            on_hand_quantity = sum(loc_stock_quant.mapped('inventory_quantity_auto_apply')) | 
				
			||||
 | 
					            value[rec.name] = on_hand_quantity | 
				
			||||
 | 
					        return value | 
				
			||||
@ -0,0 +1,59 @@ | 
				
			|||||
 | 
					# -*- coding: utf-8 -*- | 
				
			||||
 | 
					############################################################################# | 
				
			||||
 | 
					# | 
				
			||||
 | 
					#    Cybrosys Technologies Pvt. Ltd. | 
				
			||||
 | 
					# | 
				
			||||
 | 
					#    Copyright (C) 2022-TODAY Cybrosys Technologies(<https://www.cybrosys.com>) | 
				
			||||
 | 
					#    Author: Cybrosys Techno Solutions(<https://www.cybrosys.com>) | 
				
			||||
 | 
					# | 
				
			||||
 | 
					#    You can modify it under the terms of the GNU LESSER | 
				
			||||
 | 
					#    GENERAL PUBLIC LICENSE (LGPL v3), Version 3. | 
				
			||||
 | 
					# | 
				
			||||
 | 
					#    This program is distributed in the hope that it will be useful, | 
				
			||||
 | 
					#    but WITHOUT ANY WARRANTY; without even the implied warranty of | 
				
			||||
 | 
					#    MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the | 
				
			||||
 | 
					#    GNU LESSER GENERAL PUBLIC LICENSE (LGPL v3) for more details. | 
				
			||||
 | 
					# | 
				
			||||
 | 
					#    You should have received a copy of the GNU LESSER GENERAL PUBLIC LICENSE | 
				
			||||
 | 
					#    (LGPL v3) along with this program. | 
				
			||||
 | 
					#    If not, see <http://www.gnu.org/licenses/>. | 
				
			||||
 | 
					# | 
				
			||||
 | 
					############################################################################# | 
				
			||||
 | 
					
 | 
				
			||||
 | 
					from odoo import api, models | 
				
			||||
 | 
					
 | 
				
			||||
 | 
					
 | 
				
			||||
 | 
					class StockQuantInherit(models.Model): | 
				
			||||
 | 
					    _inherit = "stock.quant" | 
				
			||||
 | 
					
 | 
				
			||||
 | 
					    @api.model | 
				
			||||
 | 
					    def get_out_of_stock(self): | 
				
			||||
 | 
					        """rpc method of out of stock graph | 
				
			||||
 | 
					        Returns products and quantity""" | 
				
			||||
 | 
					        company_id = self.env.company.id | 
				
			||||
 | 
					        sett_out_stock_bool = self.env['ir.config_parameter'].sudo(). \ | 
				
			||||
 | 
					            get_param("inventory_stock_dashboard_odoo.out_of_stock", default="") | 
				
			||||
 | 
					        sett_out_stock_quantity = self.env['ir.config_parameter'].sudo().\ | 
				
			||||
 | 
					            get_param("inventory_stock_dashboard_odoo.out_of_stock_quantity", default="") | 
				
			||||
 | 
					        if sett_out_stock_bool == "True": | 
				
			||||
 | 
					            if sett_out_stock_quantity: | 
				
			||||
 | 
					                out_stock_value = int(sett_out_stock_quantity) | 
				
			||||
 | 
					                query = '''select product_template.name,sum(stock_quant.quantity) from stock_quant | 
				
			||||
 | 
					                 inner join product_product on stock_quant.product_id = product_product.id | 
				
			||||
 | 
					                 inner join product_template on product_product.product_tmpl_id = product_template.id | 
				
			||||
 | 
					                 where stock_quant.quantity < %s and stock_quant.company_id = %s group by product_template.name''' \ | 
				
			||||
 | 
					                        % (out_stock_value, company_id) | 
				
			||||
 | 
					
 | 
				
			||||
 | 
					                self._cr.execute(query) | 
				
			||||
 | 
					                result = self._cr.fetchall() | 
				
			||||
 | 
					                total_quantity = [] | 
				
			||||
 | 
					                for record in result: | 
				
			||||
 | 
					                    total_quantity.append(record[1]) | 
				
			||||
 | 
					                product_name = [] | 
				
			||||
 | 
					                for record in result: | 
				
			||||
 | 
					                    product_name.append(record[0]) | 
				
			||||
 | 
					                value = { | 
				
			||||
 | 
					                    'product_name': product_name, | 
				
			||||
 | 
					                    'total_quantity': total_quantity | 
				
			||||
 | 
					                } | 
				
			||||
 | 
					                return value | 
				
			||||
| 
		 After Width: | Height: | Size: 3.6 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: 911 B  | 
| 
		 After Width: | Height: | Size: 1.1 KiB  | 
| 
		 After Width: | Height: | Size: 1.2 KiB  | 
| 
		 After Width: | Height: | Size: 3.4 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: 59 KiB  | 
| 
		 After Width: | Height: | Size: 60 KiB  | 
| 
		 After Width: | Height: | Size: 60 KiB  | 
| 
		 After Width: | Height: | Size: 60 KiB  | 
| 
		 After Width: | Height: | Size: 56 KiB  | 
| 
		 After Width: | Height: | Size: 58 KiB  | 
| 
		 After Width: | Height: | Size: 98 KiB  | 
| 
		 After Width: | Height: | Size: 198 KiB  | 
| 
		 After Width: | Height: | Size: 103 KiB  | 
| 
		 After Width: | Height: | Size: 64 KiB  | 
| 
		 After Width: | Height: | Size: 65 KiB  | 
| 
		 After Width: | Height: | Size: 103 KiB  | 
| 
		 After Width: | Height: | Size: 56 KiB  | 
| 
		 After Width: | Height: | Size: 70 KiB  | 
| 
		 After Width: | Height: | Size: 126 KiB  | 
| 
		 After Width: | Height: | Size: 53 KiB  | 
| 
		 After Width: | Height: | Size: 28 KiB  | 
| 
		 After Width: | Height: | Size: 148 KiB  | 
| 
		 After Width: | Height: | Size: 146 KiB  | 
| 
		 After Width: | Height: | Size: 101 KiB  | 
| 
		 After Width: | Height: | Size: 85 KiB  | 
| 
		 After Width: | Height: | Size: 76 KiB  | 
| 
		 After Width: | Height: | Size: 148 KiB  | 
| 
		 After Width: | Height: | Size: 25 KiB  | 
| 
		 After Width: | Height: | Size: 58 KiB  | 
| 
		 After Width: | Height: | Size: 17 KiB  | 
@ -0,0 +1,749 @@ | 
				
			|||||
 | 
					
 | 
				
			||||
 | 
					
 | 
				
			||||
 | 
					<!DOCTYPE html> | 
				
			||||
 | 
					<html> | 
				
			||||
 | 
					<head> | 
				
			||||
 | 
					  <meta charset="utf-8"> | 
				
			||||
 | 
					  <meta name="viewport" content="width=device-width, initial-scale=1"> | 
				
			||||
 | 
					  <title></title> | 
				
			||||
 | 
					  <link rel="stylesheet" href="https://cdn.jsdelivr.net/npm/bootstrap@4.6.1/dist/css/bootstrap.min.css" integrity="sha384-zCbKRCUGaJDkqS1kPbPd7TveP5iyJE0EjAuZQTgFLD2ylzuqKfdKlfG/eSrtxUkn" crossorigin="anonymous"> | 
				
			||||
 | 
					</head> | 
				
			||||
 | 
					<body> | 
				
			||||
 | 
					<div class="container" style="padding: 1rem !important; margin-bottom: 1rem !important;"> | 
				
			||||
 | 
					  <div class="row"> | 
				
			||||
 | 
					    <div class="col-sm-12 col-md-12 col-lg-12 d-flex justify-content-between" style="border-bottom: 1px solid #d5d5d5;"> | 
				
			||||
 | 
					      <div class="my-3"> | 
				
			||||
 | 
					        <img src="./assets/icons/logo.png" style="width: auto !important; height: 40px !important;"> | 
				
			||||
 | 
					      </div> | 
				
			||||
 | 
					      <div class="my-3 d-flex align-items-center"> | 
				
			||||
 | 
					        <div | 
				
			||||
 | 
					          style="background-color: #7C7BAD !important; color: #fff !important; font-weight: 600 !important; padding: 5px 15px 8px !important; margin: 0 5px !important;"> | 
				
			||||
 | 
					          <i class="fa fa-check mr-1"></i>Community | 
				
			||||
 | 
					        </div> | 
				
			||||
 | 
					      </div> | 
				
			||||
 | 
					    </div> | 
				
			||||
 | 
					  </div> | 
				
			||||
 | 
					</div> | 
				
			||||
 | 
					
 | 
				
			||||
 | 
					<div class="container" style="padding: 0rem 1.5rem 4rem !important"> | 
				
			||||
 | 
					  <div class="row" style="height: 900px !important;"> | 
				
			||||
 | 
					    <div class="col-sm-12 col-md-12 col-lg-12" | 
				
			||||
 | 
					      style="padding: 4rem 1rem !important; background-color: #714B67 !important; height: 600px !important; border-radius: 20px !important;"> | 
				
			||||
 | 
					      <h1 | 
				
			||||
 | 
					        style="font-family: 'Montserrat', sans-serif !important; font-weight: 600 !important; color: #FFFFFF !important;  font-size: 3.5rem !important; text-align: center !important;"> | 
				
			||||
 | 
					        Inventory Dashboard</h1> | 
				
			||||
 | 
					      <p | 
				
			||||
 | 
					        style="font-family: 'Montserrat', sans-serif !important; font-weight: 300 !important; color: #FFFFFF !important;  font-size: 1.4rem !important; text-align: center !important;"> | 
				
			||||
 | 
					        Detailed Dashboard View For Inventory | 
				
			||||
 | 
					      </p> | 
				
			||||
 | 
					      <img src="./assets/screenshots/hero2.gif" class="img-responsive" width="100%" height="auto" /> | 
				
			||||
 | 
					    </div> | 
				
			||||
 | 
					  </div> | 
				
			||||
 | 
					
 | 
				
			||||
 | 
					  <div class="row"> | 
				
			||||
 | 
					    <div class="col-md-12" style="border-bottom: 1px solid #d5d5d5 !important; margin-bottom: 2rem !important"> | 
				
			||||
 | 
					      <h2 | 
				
			||||
 | 
					        style="font-family: 'Montserrat', sans-serif !important; font-weight: 600 !important; color: #714B67 !important; font-size: 1.5rem !important;"> | 
				
			||||
 | 
					        <i class="fa fa-compass mr-2"></i>Explore this module | 
				
			||||
 | 
					      </h2> | 
				
			||||
 | 
					      <div class="row"> | 
				
			||||
 | 
					        <div class="col-md-6"> | 
				
			||||
 | 
					          <a href="#overview" style="text-decoration: none !important;"> | 
				
			||||
 | 
					            <div class="row" | 
				
			||||
 | 
					              style="background-color: #f5f2f5 !important; border-radius: 10px !important; margin: 1rem !important; padding: 1.5em !important; height: 100px !important;"> | 
				
			||||
 | 
					              <div class="col-8"> | 
				
			||||
 | 
					                <h3 | 
				
			||||
 | 
					                  style="font-family: 'Montserrat', sans-serif !important; font-weight: 600 !important; color: #714B67 !important; font-size: 1.2rem !important;"> | 
				
			||||
 | 
					                  Overview</h3> | 
				
			||||
 | 
					                <p | 
				
			||||
 | 
					                  style="font-family: 'Roboto', sans-serif !important; font-weight: 400 !important; color: #714B67 !important; font-size: 0.9rem !important;"> | 
				
			||||
 | 
					                  Learn more about this module</p> | 
				
			||||
 | 
					              </div> | 
				
			||||
 | 
					              <div class="col-4 text-right d-flex justify-content-end align-items-center"> | 
				
			||||
 | 
					                <i class="fa fa-chevron-right" style="color: #714B67 !important;"></i> | 
				
			||||
 | 
					              </div> | 
				
			||||
 | 
					            </div> | 
				
			||||
 | 
					          </a> | 
				
			||||
 | 
					        </div> | 
				
			||||
 | 
					        <div class="col-md-6"> | 
				
			||||
 | 
					          <a href="#features" style="text-decoration: none !important;"> | 
				
			||||
 | 
					            <div class="row" | 
				
			||||
 | 
					              style="background-color: #f5f2f5 !important; border-radius: 10px !important; margin: 1rem !important; padding: 1.5em !important; height: 100px !important;"> | 
				
			||||
 | 
					              <div class="col-8"> | 
				
			||||
 | 
					                <h3 | 
				
			||||
 | 
					                  style="font-family: 'Montserrat', sans-serif !important; font-weight: 600 !important; color: #714B67 !important; font-size: 1.2rem !important;"> | 
				
			||||
 | 
					                  Features</h3> | 
				
			||||
 | 
					                <p | 
				
			||||
 | 
					                  style="font-family: 'Roboto', sans-serif !important; font-weight: 400 !important; color: #714B67 !important; font-size: 0.9rem !important;"> | 
				
			||||
 | 
					                  View features of this module</p> | 
				
			||||
 | 
					              </div> | 
				
			||||
 | 
					              <div class="col-4 text-right d-flex justify-content-end align-items-center"> | 
				
			||||
 | 
					                <i class="fa fa-chevron-right" style="color: #714B67 !important;"></i> | 
				
			||||
 | 
					              </div> | 
				
			||||
 | 
					            </div> | 
				
			||||
 | 
					          </a> | 
				
			||||
 | 
					        </div> | 
				
			||||
 | 
					        <div class="col-md-6"> | 
				
			||||
 | 
					          <a href="#screenshots" style="text-decoration: none !important;"> | 
				
			||||
 | 
					            <div class="row" | 
				
			||||
 | 
					              style="background-color: #f5f2f5 !important; border-radius: 10px !important; margin: 1rem !important; padding: 1.5em !important; height: 100px !important;"> | 
				
			||||
 | 
					              <div class="col-8"> | 
				
			||||
 | 
					                <h3 | 
				
			||||
 | 
					                  style="font-family: 'Montserrat', sans-serif !important; font-weight: 600 !important; color: #714B67 !important; font-size: 1.2rem !important;"> | 
				
			||||
 | 
					                  Screenshots</h3> | 
				
			||||
 | 
					                <p | 
				
			||||
 | 
					                  style="font-family: 'Roboto', sans-serif !important; font-weight: 400 !important; color: #714B67 !important; font-size: 0.9rem !important;"> | 
				
			||||
 | 
					                  See key screenshots of this module</p> | 
				
			||||
 | 
					              </div> | 
				
			||||
 | 
					              <div class="col-4 text-right d-flex justify-content-end align-items-center"> | 
				
			||||
 | 
					                <i class="fa fa-chevron-right" style="color: #714B67 !important;"></i> | 
				
			||||
 | 
					              </div> | 
				
			||||
 | 
					            </div> | 
				
			||||
 | 
					          </a> | 
				
			||||
 | 
					        </div> | 
				
			||||
 | 
					      </div> | 
				
			||||
 | 
					    </div> | 
				
			||||
 | 
					
 | 
				
			||||
 | 
					  </div> | 
				
			||||
 | 
					
 | 
				
			||||
 | 
					  <div class="row" id="overview"> | 
				
			||||
 | 
					    <div class="col-md-12" style="border-bottom: 1px solid #d5d5d5 !important; margin: 2rem 0 !important"> | 
				
			||||
 | 
					      <h2 | 
				
			||||
 | 
					        style="font-family: 'Montserrat', sans-serif !important; font-weight: 600 !important; color: #714B67 !important; font-size: 1.5rem !important;"> | 
				
			||||
 | 
					        <i class="fa fa-pie-chart mr-2"></i>Overview | 
				
			||||
 | 
					      </h2> | 
				
			||||
 | 
					    </div> | 
				
			||||
 | 
					
 | 
				
			||||
 | 
					    <div class="col-mg-12 pl-3"> | 
				
			||||
 | 
					      <p | 
				
			||||
 | 
					        style="font-family: 'Roboto', sans-serif !important; font-weight: 400 !important; color: #282F33 !important; font-size: 1rem !important; line-height: 30px !important;"> | 
				
			||||
 | 
					        The Inventory Dashboard helps you to see the detailed overview of the Inventory module in a single face.Inventory Dashboard provides view for Inventory Users and Admin.They can easily analys the functionlities of Inventory module using Inventory Dashboard.  | 
				
			||||
 | 
					        </p> | 
				
			||||
 | 
					    </div> | 
				
			||||
 | 
					    </p> | 
				
			||||
 | 
					
 | 
				
			||||
 | 
					  </div> | 
				
			||||
 | 
					
 | 
				
			||||
 | 
					
 | 
				
			||||
 | 
					  <div class="row" id="features"> | 
				
			||||
 | 
					    <div class="col-md-12" style="border-bottom: 1px solid #d5d5d5 !important; margin: 2rem 0 !important"> | 
				
			||||
 | 
					      <h2 | 
				
			||||
 | 
					        style="font-family: 'Montserrat', sans-serif !important; font-weight: 600 !important; color: #714B67 !important; font-size: 1.5rem !important;"> | 
				
			||||
 | 
					        <i class="fa fa-star mr-2"></i>Features | 
				
			||||
 | 
					      </h2> | 
				
			||||
 | 
					    </div> | 
				
			||||
 | 
					
 | 
				
			||||
 | 
					    <div class="col-md-6 pl-3 py-3 d-flex"> | 
				
			||||
 | 
					      <div> | 
				
			||||
 | 
					        <img src="assets/icons/check.png"> | 
				
			||||
 | 
					      </div> | 
				
			||||
 | 
					      <div> | 
				
			||||
 | 
					        <h4 | 
				
			||||
 | 
					          style="font-family: 'Roboto', sans-serif !important; font-weight: 600 !important; color: #282F33 !important; font-size: 1.3rem !important;"> | 
				
			||||
 | 
					          Detailed View for Users and Admins</h4> | 
				
			||||
 | 
					      </div> | 
				
			||||
 | 
					    </div> | 
				
			||||
 | 
					
 | 
				
			||||
 | 
					    <div class="col-md-6 pl-3 py-3 d-flex"> | 
				
			||||
 | 
					      <div> | 
				
			||||
 | 
					        <img src="assets/icons/check.png"> | 
				
			||||
 | 
					      </div> | 
				
			||||
 | 
					      <div> | 
				
			||||
 | 
					        <h4 | 
				
			||||
 | 
					          style="font-family: 'Roboto', sans-serif !important; font-weight: 600 !important; color: #282F33 !important; font-size: 1.3rem !important;"> | 
				
			||||
 | 
					          Responsive View</h4> | 
				
			||||
 | 
					      </div> | 
				
			||||
 | 
					    </div> | 
				
			||||
 | 
					
 | 
				
			||||
 | 
					    <div class="col-md-6 pl-3 py-3 d-flex"> | 
				
			||||
 | 
					      <div> | 
				
			||||
 | 
					        <img src="assets/icons/check.png"> | 
				
			||||
 | 
					      </div> | 
				
			||||
 | 
					      <div> | 
				
			||||
 | 
					        <h4 | 
				
			||||
 | 
					          style="font-family: 'Roboto', sans-serif !important; font-weight: 600 !important; color: #282F33 !important; font-size: 1.3rem !important;"> | 
				
			||||
 | 
					          Dynamic And Clickable Dashboard Tiles</h4> | 
				
			||||
 | 
					      </div> | 
				
			||||
 | 
					    </div> | 
				
			||||
 | 
					
 | 
				
			||||
 | 
					    <div class="col-md-6 pl-3 py-3 d-flex"> | 
				
			||||
 | 
					      <div> | 
				
			||||
 | 
					        <img src="assets/icons/check.png"> | 
				
			||||
 | 
					      </div> | 
				
			||||
 | 
					      <div> | 
				
			||||
 | 
					        <h4 | 
				
			||||
 | 
					          style="font-family: 'Roboto', sans-serif !important; font-weight: 600 !important; color: #282F33 !important; font-size: 1.3rem !important;"> | 
				
			||||
 | 
					          Different Types of Graphs</h4> | 
				
			||||
 | 
					      </div> | 
				
			||||
 | 
					    </div> | 
				
			||||
 | 
					
 | 
				
			||||
 | 
					    <div class="col-md-6 pl-3 py-3 d-flex"> | 
				
			||||
 | 
					      <div> | 
				
			||||
 | 
					        <img src="assets/icons/check.png"> | 
				
			||||
 | 
					      </div> | 
				
			||||
 | 
					      <div> | 
				
			||||
 | 
					        <h4 | 
				
			||||
 | 
					          style="font-family: 'Roboto', sans-serif !important; font-weight: 600 !important; color: #282F33 !important; font-size: 1.3rem !important;"> | 
				
			||||
 | 
					          Show Details Button for graphs</h4> | 
				
			||||
 | 
					      </div> | 
				
			||||
 | 
					    </div> | 
				
			||||
 | 
					
 | 
				
			||||
 | 
					    <div class="col-md-6 pl-3 py-3 d-flex"> | 
				
			||||
 | 
					      <div> | 
				
			||||
 | 
					        <img src="assets/icons/check.png"> | 
				
			||||
 | 
					      </div> | 
				
			||||
 | 
					      <div> | 
				
			||||
 | 
					        <h4 | 
				
			||||
 | 
					          style="font-family: 'Roboto', sans-serif !important; font-weight: 600 !important; color: #282F33 !important; font-size: 1.3rem !important;"> | 
				
			||||
 | 
					          Filter option for specified graph</h4> | 
				
			||||
 | 
					      </div> | 
				
			||||
 | 
					    </div> | 
				
			||||
 | 
					
 | 
				
			||||
 | 
					    <div class="col-md-6 pl-3 py-3 d-flex"> | 
				
			||||
 | 
					      <div> | 
				
			||||
 | 
					        <img src="assets/icons/check.png"> | 
				
			||||
 | 
					      </div> | 
				
			||||
 | 
					      <div> | 
				
			||||
 | 
					        <h4 | 
				
			||||
 | 
					          style="font-family: 'Roboto', sans-serif !important; font-weight: 600 !important; color: #282F33 !important; font-size: 1.3rem !important;"> | 
				
			||||
 | 
					          Users can Hide and Set the Dead Stock and Out of Stock Graph</h4> | 
				
			||||
 | 
					      </div> | 
				
			||||
 | 
					    </div> | 
				
			||||
 | 
					
 | 
				
			||||
 | 
					
 | 
				
			||||
 | 
					  </div> | 
				
			||||
 | 
					
 | 
				
			||||
 | 
					  <div class="row" id="screenshots"> | 
				
			||||
 | 
					    <div class="col-md-12" style="border-bottom: 1px solid #d5d5d5 !important; margin: 2rem 0 !important"> | 
				
			||||
 | 
					      <h2 | 
				
			||||
 | 
					        style="font-family: 'Montserrat', sans-serif !important; font-weight: 600 !important; color: #714B67 !important; font-size: 1.5rem !important;"> | 
				
			||||
 | 
					        <i class="fa fa-image mr-2"></i>Screenshots | 
				
			||||
 | 
					      </h2> | 
				
			||||
 | 
					    </div> | 
				
			||||
 | 
					
 | 
				
			||||
 | 
					    <div class="row" style="height: 900px !important;"> | 
				
			||||
 | 
					    <div class="col-sm-12 col-md-12 col-lg-12" | 
				
			||||
 | 
					      style="padding: 4rem 1rem !important; background-color: #714B67 !important; height: 600px !important; border-radius: 20px !important;"> | 
				
			||||
 | 
					      <h1 | 
				
			||||
 | 
					        style="font-family: 'Montserrat', sans-serif !important; font-weight: 600 !important; color: #FFFFFF !important;  font-size: 3.5rem !important; text-align: center !important;"> | 
				
			||||
 | 
					        Responsive View</h1> | 
				
			||||
 | 
					      <img src="./assets/screenshots/hero--mobile1.gif" class="img-responsive" width="100%" height="auto" /> | 
				
			||||
 | 
					    </div> | 
				
			||||
 | 
					  </div> | 
				
			||||
 | 
					
 | 
				
			||||
 | 
					<!--    <div class="col-lg-12 my-2">--> | 
				
			||||
 | 
					<!--      <h4 class="mt-2"--> | 
				
			||||
 | 
					<!--        style="font-family: 'Roboto', sans-serif !important; font-weight: 600 !important; color: #282F33 !important; font-size: 1.3rem !important;">--> | 
				
			||||
 | 
					<!--        Responsive View</h4>--> | 
				
			||||
 | 
					<!--      <img src="assets/screenshots/hero--mobile1.gif" class="img-responsive img-thumbnail border" width="100%"--> | 
				
			||||
 | 
					<!--        height="auto" />--> | 
				
			||||
 | 
					<!--    </div>--> | 
				
			||||
 | 
					
 | 
				
			||||
 | 
					    <div class="col-lg-12 my-2"> | 
				
			||||
 | 
					      <h4 class="mt-2" | 
				
			||||
 | 
					        style="font-family: 'Roboto', sans-serif !important; font-weight: 600 !important; color: #282F33 !important; font-size: 1.3rem !important;"> | 
				
			||||
 | 
					        Dynamic And Clickable Dashboard Tiles</h4> | 
				
			||||
 | 
					      <p | 
				
			||||
 | 
					        style="font-family: 'Roboto', sans-serif !important; font-weight: 400 !important; color: #282F33 !important; font-size: 1rem !important;"> | 
				
			||||
 | 
					        User can click the Tiles and States in tile,That shows the detailed view of corresponding 0peration Type</p> | 
				
			||||
 | 
					      <img src="assets/screenshots/dash_tile_click.png" class="img-responsive img-thumbnail border" width="100%" | 
				
			||||
 | 
					        height="auto" /> | 
				
			||||
 | 
					    </div> | 
				
			||||
 | 
					
 | 
				
			||||
 | 
					    <div class="col-lg-12 my-3"> | 
				
			||||
 | 
					      <h4 class="mt-3" | 
				
			||||
 | 
					        style="font-family: 'Roboto', sans-serif !important; font-weight: 600 !important; color: #282F33 !important; font-size: 1.3rem !important;"> | 
				
			||||
 | 
					        Different Types of Graphs</h4> | 
				
			||||
 | 
					      <p | 
				
			||||
 | 
					        style="font-family: 'Roboto', sans-serif !important; font-weight: 400 !important; color: #282F33 !important; font-size: 1rem !important;"> | 
				
			||||
 | 
					        Inventory dashboard have different types of graphs thal will give you complete analys of the inventory module. | 
				
			||||
 | 
					      </p> | 
				
			||||
 | 
					      <img src="assets/screenshots/dash2.png" class="img-responsive img-thumbnail border" width="100%" | 
				
			||||
 | 
					        height="auto" /> | 
				
			||||
 | 
					         <p | 
				
			||||
 | 
					        style="font-family: 'Roboto', sans-serif !important; font-weight: 400 !important; color: #282F33 !important; font-size: 1rem !important;"> | 
				
			||||
 | 
					        Show Details button in Inventory dashboard Give the detailed information of that perticular graph. | 
				
			||||
 | 
					      </p> | 
				
			||||
 | 
					      <img src="assets/screenshots/dash3_1.png" class="img-responsive img-thumbnail border" width="100%" | 
				
			||||
 | 
					        height="auto" /> | 
				
			||||
 | 
					         <p | 
				
			||||
 | 
					        style="font-family: 'Roboto', sans-serif !important; font-weight: 400 !important; color: #282F33 !important; font-size: 1rem !important;"> | 
				
			||||
 | 
					        Filter option for specified graph. | 
				
			||||
 | 
					      </p> | 
				
			||||
 | 
					      <img src="assets/screenshots/dash4.png" class="img-responsive img-thumbnail border" width="100%" | 
				
			||||
 | 
					        height="auto" /> | 
				
			||||
 | 
					    </div> | 
				
			||||
 | 
					
 | 
				
			||||
 | 
					    <div class="col-lg-12 my-3"> | 
				
			||||
 | 
					      <h4 class="mt-3" | 
				
			||||
 | 
					        style="font-family: 'Roboto', sans-serif !important; font-weight: 600 !important; color: #282F33 !important; font-size: 1.07rem !important;"> | 
				
			||||
 | 
					        1. Top Moving Product</h4> | 
				
			||||
 | 
					        <p | 
				
			||||
 | 
					        style="font-family: 'Roboto', sans-serif !important; font-weight: 400 !important; color: #282F33 !important; font-size: 1rem !important;"> | 
				
			||||
 | 
					        Top Selling 10 products and saled count of corresponding product. | 
				
			||||
 | 
					      </p> | 
				
			||||
 | 
					      <img src="assets/screenshots/dash5_1.png" class="img-responsive img-thumbnail border" width="100%" | 
				
			||||
 | 
					        height="auto" /> | 
				
			||||
 | 
					    </div> | 
				
			||||
 | 
					
 | 
				
			||||
 | 
					
 | 
				
			||||
 | 
					    <div class="col-lg-12 my-3"> | 
				
			||||
 | 
					      <h4 class="mt-3" | 
				
			||||
 | 
					        style="font-family: 'Roboto', sans-serif !important; font-weight: 600 !important; color: #282F33 !important; font-size: 1.07rem !important;"> | 
				
			||||
 | 
					        2. Product Categories </h4> | 
				
			||||
 | 
					        <p | 
				
			||||
 | 
					        style="font-family: 'Roboto', sans-serif !important; font-weight: 400 !important; color: #282F33 !important; font-size: 1rem !important;"> | 
				
			||||
 | 
					        Showing Product Categories and Product Count in corresponding category. | 
				
			||||
 | 
					      </p> | 
				
			||||
 | 
					      <img src="assets/screenshots/dash6.png" class="img-responsive img-thumbnail border" width="100%" | 
				
			||||
 | 
					        height="auto" /> | 
				
			||||
 | 
					    </div> | 
				
			||||
 | 
					
 | 
				
			||||
 | 
					
 | 
				
			||||
 | 
					    <div class="col-lg-12 my-3"> | 
				
			||||
 | 
					      <h4 class="mt-3" | 
				
			||||
 | 
					        style="font-family: 'Roboto', sans-serif !important; font-weight: 600 !important; color: #282F33 !important; font-size: 1.07rem !important;"> | 
				
			||||
 | 
					        3. Product Move Report By Categories </h4> | 
				
			||||
 | 
					        <p | 
				
			||||
 | 
					        style="font-family: 'Roboto', sans-serif !important; font-weight: 400 !important; color: #282F33 !important; font-size: 1rem !important;"> | 
				
			||||
 | 
					        This graphs shows Product Move report and filtered based on the available categories in the product move | 
				
			||||
 | 
					      </p> | 
				
			||||
 | 
					      <img src="assets/screenshots/dash7.png" class="img-responsive img-thumbnail border" width="100%" | 
				
			||||
 | 
					        height="auto" /> | 
				
			||||
 | 
					    </div> | 
				
			||||
 | 
					
 | 
				
			||||
 | 
					
 | 
				
			||||
 | 
					    <div class="col-lg-12 my-3"> | 
				
			||||
 | 
					      <h4 class="mt-3" | 
				
			||||
 | 
					        style="font-family: 'Roboto', sans-serif !important; font-weight: 600 !important; color: #282F33 !important; font-size: 1.07rem !important;"> | 
				
			||||
 | 
					        4. Stock Move Report By Location</h4> | 
				
			||||
 | 
					        <p | 
				
			||||
 | 
					        style="font-family: 'Roboto', sans-serif !important; font-weight: 400 !important; color: #282F33 !important; font-size: 1rem !important;"> | 
				
			||||
 | 
					        Shows the Stock Move report by Locations wise and corresponding Stock Move Count. | 
				
			||||
 | 
					      </p> | 
				
			||||
 | 
					      <img src="assets/screenshots/dash8.png" class="img-responsive img-thumbnail border" width="100%" | 
				
			||||
 | 
					        height="auto" /> | 
				
			||||
 | 
					    </div> | 
				
			||||
 | 
					
 | 
				
			||||
 | 
					    <div class="col-lg-12 my-3"> | 
				
			||||
 | 
					      <h4 class="mt-3" | 
				
			||||
 | 
					        style="font-family: 'Roboto', sans-serif !important; font-weight: 600 !important; color: #282F33 !important; font-size: 1.07rem !important;"> | 
				
			||||
 | 
					        5. Operation Types</h4> | 
				
			||||
 | 
					        <p | 
				
			||||
 | 
					        style="font-family: 'Roboto', sans-serif !important; font-weight: 400 !important; color: #282F33 !important; font-size: 1rem !important;"> | 
				
			||||
 | 
					        Operation Types and their Transfer count. | 
				
			||||
 | 
					      </p> | 
				
			||||
 | 
					      <img src="assets/screenshots/dash9.png" class="img-responsive img-thumbnail border" width="100%" | 
				
			||||
 | 
					        height="auto" /> | 
				
			||||
 | 
					    </div> | 
				
			||||
 | 
					
 | 
				
			||||
 | 
					    <div class="col-lg-12 my-3"> | 
				
			||||
 | 
					      <h4 class="mt-3" | 
				
			||||
 | 
					        style="font-family: 'Roboto', sans-serif !important; font-weight: 600 !important; color: #282F33 !important; font-size: 1.07rem !important;"> | 
				
			||||
 | 
					        6. Dead Stock</h4> | 
				
			||||
 | 
					        <p | 
				
			||||
 | 
					        style="font-family: 'Roboto', sans-serif !important; font-weight: 400 !important; color: #282F33 !important; font-size: 1rem !important;"> | 
				
			||||
 | 
					        Dead Stocks are the unsold stocks which are lying in your warehouse or your store for a given duration.Users can configure dead stock duration in settings.Enabling and disabling option is available.User disable/enable the graph also in settings. | 
				
			||||
 | 
					      </p> | 
				
			||||
 | 
					      <img src="assets/screenshots/dash_dead_sett.png" class="img-responsive img-thumbnail border" width="100%" | 
				
			||||
 | 
					        height="auto" /> | 
				
			||||
 | 
					        <p | 
				
			||||
 | 
					        style="font-family: 'Roboto', sans-serif !important; font-weight: 400 !important; color: #282F33 !important; font-size: 1rem !important;"> | 
				
			||||
 | 
					        Graphs shows the Dead stock Products and their Curret stock | 
				
			||||
 | 
					      </p> | 
				
			||||
 | 
					      <img src="assets/screenshots/dash11.png" class="img-responsive img-thumbnail border" width="100%" | 
				
			||||
 | 
					        height="auto" /> | 
				
			||||
 | 
					    </div> | 
				
			||||
 | 
					
 | 
				
			||||
 | 
					    <div class="col-lg-12 my-3"> | 
				
			||||
 | 
					      <h4 class="mt-3" | 
				
			||||
 | 
					        style="font-family: 'Roboto', sans-serif !important; font-weight: 600 !important; color: #282F33 !important; font-size: 1.07rem !important;"> | 
				
			||||
 | 
					        7. Out of Stock</h4> | 
				
			||||
 | 
					        <p | 
				
			||||
 | 
					        style="font-family: 'Roboto', sans-serif !important; font-weight: 400 !important; color: #282F33 !important; font-size: 1rem !important;"> | 
				
			||||
 | 
					        Showing Out Of stocks products.Users can also configure the Out Stock Products using inventory settings.Enabling and disabling option is available.User disable/enable the graph also in settings. | 
				
			||||
 | 
					      </p> | 
				
			||||
 | 
					      <img src="assets/screenshots/dash_out_sett1.png" class="img-responsive img-thumbnail border" width="100%" | 
				
			||||
 | 
					        height="auto" /> | 
				
			||||
 | 
					         <p | 
				
			||||
 | 
					        style="font-family: 'Roboto', sans-serif !important; font-weight: 400 !important; color: #282F33 !important; font-size: 1rem !important;"> | 
				
			||||
 | 
					        Graphs shows the Out Of Stock Products and their Curret stock | 
				
			||||
 | 
					      </p> | 
				
			||||
 | 
					      <img src="assets/screenshots/dash10.png" class="img-responsive img-thumbnail border" width="100%" | 
				
			||||
 | 
					        height="auto" /> | 
				
			||||
 | 
					    </div> | 
				
			||||
 | 
					
 | 
				
			||||
 | 
					    <div class="col-lg-12 my-3"> | 
				
			||||
 | 
					      <h4 class="mt-3" | 
				
			||||
 | 
					        style="font-family: 'Roboto', sans-serif !important; font-weight: 600 !important; color: #282F33 !important; font-size: 1.3rem !important;"> | 
				
			||||
 | 
					        Location Table</h4> | 
				
			||||
 | 
					      <p | 
				
			||||
 | 
					        style="font-family: 'Roboto', sans-serif !important; font-weight: 400 !important; color: #282F33 !important; font-size: 1rem !important;"> | 
				
			||||
 | 
					        Locations with their onhand quantity. | 
				
			||||
 | 
					      </p> | 
				
			||||
 | 
					      <img src="assets/screenshots/loc_table.png" class="img-responsive img-thumbnail border" width="100%" | 
				
			||||
 | 
					        height="auto" /> | 
				
			||||
 | 
					    </div> | 
				
			||||
 | 
					
 | 
				
			||||
 | 
					  </div> | 
				
			||||
 | 
					  <!-- SUGGESTED PRODUCTS --> | 
				
			||||
 | 
					  <div class="row"> | 
				
			||||
 | 
					    <div class="col-lg-12 d-flex flex-column justify-content-center" | 
				
			||||
 | 
					      style="text-align: center; padding: 2.5rem 1rem !important;"> | 
				
			||||
 | 
					      <h2 style="color: #212529 !important;">Suggested Products</h2> | 
				
			||||
 | 
					      <hr | 
				
			||||
 | 
					        style="border: 3px solid #714B67 !important; background-color: #714B67 !important; width: 80px !important; margin-bottom: 2rem !important;" /> | 
				
			||||
 | 
					
 | 
				
			||||
 | 
					      <div id="demo1" class="row carousel slide" data-ride="carousel"> | 
				
			||||
 | 
					        <!-- The slideshow --> | 
				
			||||
 | 
					        <div class="carousel-inner"> | 
				
			||||
 | 
					          <div class="carousel-item active" style="min-height:0px"> | 
				
			||||
 | 
					            <div class="col-xs-12 col-sm-4 col-md-4 mb16 mt16" style="float:left"> | 
				
			||||
 | 
					              <a href="https://apps.odoo.com/apps/modules/15.0/export_stockinfo_xls/" 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/export_image.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/15.0/custom_gantt_view/" 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/gantt_image.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/15.0/sales_credit_limit/" 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/credit_image.png"> | 
				
			||||
 | 
					                </div> | 
				
			||||
 | 
					              </a> | 
				
			||||
 | 
					            </div> | 
				
			||||
 | 
					          </div> | 
				
			||||
 | 
					          <div class="carousel-item" style="min-height:0px"> | 
				
			||||
 | 
					            <div class="col-xs-12 col-sm-4 col-md-4 mb16 mt16" style="float:left"> | 
				
			||||
 | 
					              <a href="https://apps.odoo.com/apps/modules/15.0/base_account_budget/" 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/budget_image.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/15.0/product_to_quotation/" 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/quotation_image.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/15.0/employee_documents_expiry/" 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/employee_image.png"> | 
				
			||||
 | 
					                </div> | 
				
			||||
 | 
					              </a> | 
				
			||||
 | 
					            </div> | 
				
			||||
 | 
					          </div> | 
				
			||||
 | 
					        </div> | 
				
			||||
 | 
					        <!-- Left and right controls --> | 
				
			||||
 | 
					        <a class="carousel-control-prev" href="#demo1" data-slide="prev" style="left:-25px;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="#demo1" data-slide="next" style="right:-25px;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> | 
				
			||||
 | 
					  <!-- 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 style="color: #212529 !important;">Our Services</h2> | 
				
			||||
 | 
					        <hr | 
				
			||||
 | 
					          style="border: 3px solid #714B67 !important; background-color: #714B67 !important; width: 80px !important; margin-bottom: 2rem !important;" /> | 
				
			||||
 | 
					      </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 style="color: #212529 !important;">Our Industries</h2> | 
				
			||||
 | 
					        <hr | 
				
			||||
 | 
					          style="border: 3px solid #714B67 !important; background-color: #714B67 !important; width: 80px !important; margin-bottom: 2rem !important;" /> | 
				
			||||
 | 
					      </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 style="color: #212529 !important;">Need Help?</h2> | 
				
			||||
 | 
					        <hr | 
				
			||||
 | 
					          style="border: 3px solid #714B67 !important; background-color: #714B67 !important; width: 80px !important; margin-bottom: 2rem !important;" /> | 
				
			||||
 | 
					      </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-6"> | 
				
			||||
 | 
					            <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-6"> | 
				
			||||
 | 
					            <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>+91 86068 27707</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 --> | 
				
			||||
 | 
					
 | 
				
			||||
 | 
					</div> | 
				
			||||
@ -0,0 +1,175 @@ | 
				
			|||||
 | 
					<?xml version="1.0" encoding="UTF-8"?> | 
				
			||||
 | 
					
 | 
				
			||||
 | 
					<templates id="template" xml:space="preserve"> | 
				
			||||
 | 
					
 | 
				
			||||
 | 
					     <t t-name="Dashboard"> | 
				
			||||
 | 
					        <div class="oh_dashboards"> | 
				
			||||
 | 
					            <div class="container-fluid my-5 o_hr_dashboard"/> | 
				
			||||
 | 
					            <h1> | 
				
			||||
 | 
					             </h1> | 
				
			||||
 | 
					        </div> | 
				
			||||
 | 
					    </t> | 
				
			||||
 | 
					
 | 
				
			||||
 | 
					    <t t-name="InventoryTiles"> | 
				
			||||
 | 
					        <div class="container-fluid py-5"> | 
				
			||||
 | 
					            <div class="row" id="set"> | 
				
			||||
 | 
					            </div> | 
				
			||||
 | 
					          </div> | 
				
			||||
 | 
					        <div class="accounts-dashboard-wrap"> | 
				
			||||
 | 
					            <div class="row main-section" id="new"> | 
				
			||||
 | 
					            </div> | 
				
			||||
 | 
					        </div> | 
				
			||||
 | 
					    </t> | 
				
			||||
 | 
					
 | 
				
			||||
 | 
					    <t t-name="ProductSaleBarGraph"> | 
				
			||||
 | 
					        <div class="row mt-5 px-4" id="graphs"> | 
				
			||||
 | 
					            <div class="year_to_date_graph_div col-sm-12 col-md-6 my-4"> | 
				
			||||
 | 
					                    <div class="chart-container card-shadow" id="tiles"> | 
				
			||||
 | 
					                        <div style="height: 20px; max-height: 20px;"> | 
				
			||||
 | 
					                            <h2>Top Moving Products</h2> | 
				
			||||
 | 
					                            <div class="form-group col-2" id="top_product_button"> | 
				
			||||
 | 
					                                <select id="top_product_selection" class="btn btn-primary"> | 
				
			||||
 | 
					                                    <option id="top_last_10_days" value="top_last_10_days" selected="selected">Last 10 Days</option> | 
				
			||||
 | 
					                                    <option id="top_last_30_days" value="top_last_30_days">Last 30 Days</option> | 
				
			||||
 | 
					                                    <option id="top_last_3_month" value="top_last_3_month">Last 3 Month</option> | 
				
			||||
 | 
					                                    <option id="top_last_year" value="top_last_year">Last Year</option> | 
				
			||||
 | 
					                                </select> | 
				
			||||
 | 
					                            </div> | 
				
			||||
 | 
					                            <button class="btn_info" id="top_product_info" title="Show Details"> | 
				
			||||
 | 
					                                <i class="fa fa-ellipsis-v"></i> | 
				
			||||
 | 
					                            </button> | 
				
			||||
 | 
					                            <table class="graph_details_table" id="pro_info"> | 
				
			||||
 | 
					                                <tr> | 
				
			||||
 | 
					                                    <th>Products</th> | 
				
			||||
 | 
					                                    <th>Quantity Transfered</th> | 
				
			||||
 | 
					                                </tr> | 
				
			||||
 | 
					                            </table> | 
				
			||||
 | 
					                        </div> | 
				
			||||
 | 
					                        <hr/> | 
				
			||||
 | 
					                        <div class="graph_canvas" style="margin-top: 30px;"> | 
				
			||||
 | 
					                            <canvas id="canvaspie" height="500px" width="150px"/> | 
				
			||||
 | 
					                        </div> | 
				
			||||
 | 
					                    </div> | 
				
			||||
 | 
					            </div> | 
				
			||||
 | 
					
 | 
				
			||||
 | 
					            <div class="year_to_date_graph_div col-sm-12 col-md-6 my-4"> | 
				
			||||
 | 
					                <div class="chart-container card-shadow" id="tiles"> | 
				
			||||
 | 
					                    <div style="height: 20px; max-height: 20px;"> | 
				
			||||
 | 
					                        <h2>Product Categories</h2> | 
				
			||||
 | 
					                        <button class="btn_info" id="pro_cate_info" title="Show Details"> | 
				
			||||
 | 
					                            <i class="fa fa-ellipsis-v"></i> | 
				
			||||
 | 
					                        </button> | 
				
			||||
 | 
					
 | 
				
			||||
 | 
					                        <table class="graph_details_table" id="category_table"> | 
				
			||||
 | 
					                            <tr> | 
				
			||||
 | 
					                                <th>Categories</th> | 
				
			||||
 | 
					                                <th>Onhand Quantity</th> | 
				
			||||
 | 
					                            </tr> | 
				
			||||
 | 
					                        </table> | 
				
			||||
 | 
					                    </div> | 
				
			||||
 | 
					                    <hr/> | 
				
			||||
 | 
					                    <div class="graph_canvas" style="margin-top: 30px;"> | 
				
			||||
 | 
					                        <canvas id="product_category" height="500px" width="150px"/> | 
				
			||||
 | 
					                    </div> | 
				
			||||
 | 
					                </div> | 
				
			||||
 | 
					            </div> | 
				
			||||
 | 
					
 | 
				
			||||
 | 
					            <div class="year_to_date_graph_div col-sm-12 col-md-6 my-4"> | 
				
			||||
 | 
					                    <div class="chart-container card-shadow" id="tiles"> | 
				
			||||
 | 
					                        <div style="height: 20px; max-height: 20px;" | 
				
			||||
 | 
					                             class="d-flex justify-content-between align-items-center"> | 
				
			||||
 | 
					                            <h2>Product Moves By Category</h2> | 
				
			||||
 | 
					                            <div class="form-group col-2" id="product_move_select"> | 
				
			||||
 | 
					                                <select id="product_move_selection" class="btn btn-primary"> | 
				
			||||
 | 
					                                </select> | 
				
			||||
 | 
					                            </div> | 
				
			||||
 | 
					                            <button class="btn_info" id="product_move_info" title="Show Details"> | 
				
			||||
 | 
					                                <i class="fa fa-ellipsis-v"></i> | 
				
			||||
 | 
					                            </button> | 
				
			||||
 | 
					                            <table class="graph_details_table" id="product_move_table"> | 
				
			||||
 | 
					                                <tr> | 
				
			||||
 | 
					                                    <th>Products</th> | 
				
			||||
 | 
					                                    <th>Quantity Done</th> | 
				
			||||
 | 
					                                </tr> | 
				
			||||
 | 
					                            </table> | 
				
			||||
 | 
					                        </div> | 
				
			||||
 | 
					                        <hr/> | 
				
			||||
 | 
					                        <div class="graph_canvas" style="margin-top: 30px;"> | 
				
			||||
 | 
					                            <canvas id="product_move_graph" height="500px" width="150px"/> | 
				
			||||
 | 
					                        </div> | 
				
			||||
 | 
					                    </div> | 
				
			||||
 | 
					            </div> | 
				
			||||
 | 
					
 | 
				
			||||
 | 
					            <div class="year_to_date_graph_div col-sm-12 col-md-6 my-4"> | 
				
			||||
 | 
					                    <div class="chart-container card-shadow" id="tiles"> | 
				
			||||
 | 
					                         <div style="height: 20px; max-height: 20px;" | 
				
			||||
 | 
					                              class="d-flex justify-content-between align-items-center"> | 
				
			||||
 | 
					                             <h2>Stock Moves By Location</h2> | 
				
			||||
 | 
					
 | 
				
			||||
 | 
					                             <div class="form-group col-2" id="stock_move_select"> | 
				
			||||
 | 
					                                <select id="stock_moves_selection" class="btn btn-primary"> | 
				
			||||
 | 
					                                    <option id="last_10_days" value="last_10_days" selected="selected">Last 10 Days</option> | 
				
			||||
 | 
					                                    <option id="this_month" value="this_month">Last months</option> | 
				
			||||
 | 
					                                    <option id="last_3_month" value="last_3_month">Last 3 months</option> | 
				
			||||
 | 
					                                    <option id="last_year" value="last_year">Last Year</option> | 
				
			||||
 | 
					                                </select> | 
				
			||||
 | 
					                            </div> | 
				
			||||
 | 
					                             <button class="btn_info" id="stock_move_info" title="Show Details"> | 
				
			||||
 | 
					                                 <i class="fa fa-ellipsis-v"></i> | 
				
			||||
 | 
					                             </button> | 
				
			||||
 | 
					                             <table class="graph_details_table" id="stock_move_table"> | 
				
			||||
 | 
					                                <tr> | 
				
			||||
 | 
					                                    <th>Location</th> | 
				
			||||
 | 
					                                    <th>Stock Moves Count</th> | 
				
			||||
 | 
					                                </tr> | 
				
			||||
 | 
					                            </table> | 
				
			||||
 | 
					                         </div> | 
				
			||||
 | 
					                        <hr/> | 
				
			||||
 | 
					                        <div class="graph_canvas" style="margin-top: 30px;"> | 
				
			||||
 | 
					                            <canvas id="stock_moves" height="500px" width="150px"/> | 
				
			||||
 | 
					                        </div> | 
				
			||||
 | 
					                    </div> | 
				
			||||
 | 
					            </div> | 
				
			||||
 | 
					
 | 
				
			||||
 | 
					            <div class="year_to_date_graph_div col-sm-12 col-md-6 my-4"> | 
				
			||||
 | 
					                <div class="chart-container card-shadow" id="tiles"> | 
				
			||||
 | 
					                     <div style="height: 20px; max-height: 20px;"> | 
				
			||||
 | 
					                        <h2>Operation Types</h2> | 
				
			||||
 | 
					                         <button class="btn_info" id="operation_type_info" title="Show Details"> | 
				
			||||
 | 
					                             <i class="fa fa-ellipsis-v"></i> | 
				
			||||
 | 
					                         </button> | 
				
			||||
 | 
					
 | 
				
			||||
 | 
					                         <table class="graph_details_table" id="operation_type_table"> | 
				
			||||
 | 
					                            <tr> | 
				
			||||
 | 
					                                <th>Operation Types</th> | 
				
			||||
 | 
					                                <th>Transfer Count</th> | 
				
			||||
 | 
					                            </tr> | 
				
			||||
 | 
					                        </table> | 
				
			||||
 | 
					                     </div> | 
				
			||||
 | 
					                    <hr/> | 
				
			||||
 | 
					                    <div class="graph_canvas" style="margin-top: 30px;"> | 
				
			||||
 | 
					                        <canvas id="operation" height="500px" width="150px"/> | 
				
			||||
 | 
					                    </div> | 
				
			||||
 | 
					                </div> | 
				
			||||
 | 
					            </div> | 
				
			||||
 | 
					
 | 
				
			||||
 | 
					            <div class="year_to_date_graph_div col-sm-12 col-md-6 my-4"> | 
				
			||||
 | 
					                <div class="chart-container card-shadow" id="tiles"> | 
				
			||||
 | 
					                    <div style="height: 20px; max-height: 20px"> | 
				
			||||
 | 
					                        <h2>Locations</h2> | 
				
			||||
 | 
					                    </div> | 
				
			||||
 | 
					                    <hr/> | 
				
			||||
 | 
					                    <table style="margin-top: 30px;" class="table table-hover" id="location_table"> | 
				
			||||
 | 
					                         <thead><tr><th> | 
				
			||||
 | 
					                             <h2>Location</h2> | 
				
			||||
 | 
					                         </th> | 
				
			||||
 | 
					                             <th> | 
				
			||||
 | 
					                                 <h2 style="text-align: center;">On Hand Quantity</h2> | 
				
			||||
 | 
					                             </th></tr></thead> | 
				
			||||
 | 
					                        <tbody class="storage"></tbody> | 
				
			||||
 | 
					                     </table> | 
				
			||||
 | 
					                </div> | 
				
			||||
 | 
					            </div> | 
				
			||||
 | 
					        </div> | 
				
			||||
 | 
					    </t> | 
				
			||||
 | 
					</templates> | 
				
			||||
@ -0,0 +1,13 @@ | 
				
			|||||
 | 
					<?xml version="1.0" encoding="utf-8"?> | 
				
			||||
 | 
					<odoo> | 
				
			||||
 | 
					    <record id="dashboard_action" model="ir.actions.client"> | 
				
			||||
 | 
					          <field name="name">Dashboard</field> | 
				
			||||
 | 
					          <field name="tag">inventory_dashboard_tag</field> | 
				
			||||
 | 
					      </record> | 
				
			||||
 | 
					    <menuitem id="dashboard" | 
				
			||||
 | 
					              name="Dashboard" | 
				
			||||
 | 
					              parent="stock.menu_stock_root" | 
				
			||||
 | 
					              action="dashboard_action" | 
				
			||||
 | 
					              groups="stock.group_stock_user" | 
				
			||||
 | 
					              sequence="-10"/> | 
				
			||||
 | 
					</odoo> | 
				
			||||
@ -0,0 +1,54 @@ | 
				
			|||||
 | 
					<?xml version="1.0" encoding="utf-8"?> | 
				
			||||
 | 
					<odoo> | 
				
			||||
 | 
					    <data> | 
				
			||||
 | 
					        <record id="res_config_settings_view_form" model="ir.ui.view"> | 
				
			||||
 | 
					            <field name="name">res.config.settings.view.form.inherit</field> | 
				
			||||
 | 
					            <field name="model">res.config.settings</field> | 
				
			||||
 | 
					            <field name="priority" eval="99"/> | 
				
			||||
 | 
					            <field name="inherit_id" ref="stock.res_config_settings_view_form"/> | 
				
			||||
 | 
					            <field name="arch" type="xml"> | 
				
			||||
 | 
					                <div id="production_lot_info" position="after"> | 
				
			||||
 | 
					                    <div class="app_settings_block"> | 
				
			||||
 | 
					                        <h2>Dashboard</h2> | 
				
			||||
 | 
					
 | 
				
			||||
 | 
					                        <div class="row mt16 o_settings_container"> | 
				
			||||
 | 
					                            <div class="col-12 col-lg-6 o_setting_box"> | 
				
			||||
 | 
					                                <div class="o_setting_left_pane"> | 
				
			||||
 | 
					                                    <field name="out_of_stock"/> | 
				
			||||
 | 
					                                </div> | 
				
			||||
 | 
					                                <div class="o_setting_right_pane"> | 
				
			||||
 | 
					                                    <label for="out_of_stock"/> | 
				
			||||
 | 
					                                    <div class="text-muted"> | 
				
			||||
 | 
					                                        Set Your Out Of Stock Quantity | 
				
			||||
 | 
					                                    </div> | 
				
			||||
 | 
					                                    <field name="out_of_stock_quantity" | 
				
			||||
 | 
					                                            attrs="{'invisible': [('out_of_stock', '=', False)]}"/> | 
				
			||||
 | 
					                                </div> | 
				
			||||
 | 
					                            </div> | 
				
			||||
 | 
					                            <div class="col-12 col-lg-6 o_setting_box"> | 
				
			||||
 | 
					                                <div class="o_setting_left_pane"> | 
				
			||||
 | 
					                                    <field name="dead_stock_bol"/> | 
				
			||||
 | 
					                                </div> | 
				
			||||
 | 
					                                <div class="o_setting_right_pane"> | 
				
			||||
 | 
					                                    <label for="dead_stock_bol"/> | 
				
			||||
 | 
					                                    <div class="text-muted"> | 
				
			||||
 | 
					                                        Show Dead Stocks In Dashboard | 
				
			||||
 | 
					                                    </div> | 
				
			||||
 | 
					                                        <div> | 
				
			||||
 | 
					                                            <field name="dead_stock" | 
				
			||||
 | 
					                                                    attrs="{'invisible': [('dead_stock_bol', '=', False)]}"/> | 
				
			||||
 | 
					                                        </div> | 
				
			||||
 | 
					                                        <div> | 
				
			||||
 | 
					                                            <field name="dead_stock_type" | 
				
			||||
 | 
					                                                    attrs="{'invisible': [('dead_stock_bol', '=', False)]}"/> | 
				
			||||
 | 
					                                            <span attrs="{'invisible': [('dead_stock_bol', '=', False)]}">  Duration</span> | 
				
			||||
 | 
					                                        </div> | 
				
			||||
 | 
					                                </div> | 
				
			||||
 | 
					                            </div> | 
				
			||||
 | 
					                        </div> | 
				
			||||
 | 
					                    </div> | 
				
			||||
 | 
					                </div> | 
				
			||||
 | 
					            </field> | 
				
			||||
 | 
					        </record> | 
				
			||||
 | 
					    </data> | 
				
			||||
 | 
					</odoo> | 
				
			||||
@ -0,0 +1,9 @@ | 
				
			|||||
 | 
					<?xml version="1.0" encoding="utf-8" ?> | 
				
			||||
 | 
					<odoo> | 
				
			||||
 | 
					    <template id="code_custom_layout" inherit_id="web.layout" name="Custom Layout"> | 
				
			||||
 | 
					        <xpath expr="//meta[@content='IE=edge,chrome=1']" position="after"> | 
				
			||||
 | 
					            <meta name="viewport" content="width=device-width, initial-scale=1, user-scalable=no"/> | 
				
			||||
 | 
					            <link href="https://fonts.googleapis.com/css2?family=Poppins:wght@400;600&display=swap" rel="stylesheet"/> | 
				
			||||
 | 
					        </xpath> | 
				
			||||
 | 
					    </template> | 
				
			||||
 | 
					</odoo> | 
				
			||||