| @ -0,0 +1,19 @@ | |||
| POS Dashboard v14 | |||
| ================= | |||
| POS Dashboard | |||
| 
 | |||
| Installation | |||
| ============ | |||
| 	- www.odoo.com/documentation/14.0/setup/install.html | |||
| 	- Install our custom addon | |||
| 
 | |||
| Configuration | |||
| ============= | |||
| 
 | |||
|     No additional configurations needed | |||
| 
 | |||
| Credits | |||
| ======= | |||
| Developer: Irfan v13 @ cybrosys, Contact: odoo@cybrosys.com | |||
|            Jibin James V14 @ cybrosys, Contact: odoo@cybrosys.com | |||
| 
 | |||
| @ -0,0 +1,23 @@ | |||
| # -*- coding: utf-8 -*- | |||
| ################################################################################### | |||
| # | |||
| #    Cybrosys Technologies Pvt. Ltd. | |||
| #    Copyright (C) 2020-TODAY Cybrosys Technologies (<https://www.cybrosys.com>). | |||
| #    Author: Irfan (<https://www.cybrosys.com>) | |||
| # | |||
| #    This program is free software: you can modify | |||
| #    it under the terms of the GNU Affero General Public License (AGPL) as | |||
| #    published by the Free Software Foundation, either version 3 of the | |||
| #    License, or (at your option) any later version. | |||
| # | |||
| #    This program is distributed in the hope that it will be useful, | |||
| #    but WITHOUT ANY WARRANTY; without even the implied warranty of | |||
| #    MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the | |||
| #    GNU Affero General Public License for more details. | |||
| # | |||
| #    You should have received a copy of the GNU Affero General Public License | |||
| #    along with this program.  If not, see <https://www.gnu.org/licenses/>. | |||
| # | |||
| ################################################################################### | |||
| 
 | |||
| from . import models | |||
| @ -0,0 +1,44 @@ | |||
| # -*- coding: utf-8 -*- | |||
| ################################################################################### | |||
| # | |||
| #    Cybrosys Technologies Pvt. Ltd. | |||
| #    Copyright (C) 2020-TODAY Cybrosys Technologies (<https://www.cybrosys.com>). | |||
| #    Author: Irfan (<https://www.cybrosys.com>) | |||
| # | |||
| #    This program is free software: you can modify | |||
| #    it under the terms of the GNU Affero General Public License (AGPL) as | |||
| #    published by the Free Software Foundation, either version 3 of the | |||
| #    License, or (at your option) any later version. | |||
| # | |||
| #    This program is distributed in the hope that it will be useful, | |||
| #    but WITHOUT ANY WARRANTY; without even the implied warranty of | |||
| #    MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the | |||
| #    GNU Affero General Public License for more details. | |||
| # | |||
| #    You should have received a copy of the GNU Affero General Public License | |||
| #    along with this program.  If not, see <https://www.gnu.org/licenses/>. | |||
| # | |||
| ################################################################################### | |||
| { | |||
|     'name': "POS Dashboard", | |||
|     'version': '14.0.1.0.0', | |||
|     'summary': """POS Dashboard""", | |||
|     'description': """POS Dashboard""", | |||
|     'category': 'Point of Sale', | |||
|     'author': 'Cybrosys Techno Solutions', | |||
|     'company': 'Cybrosys Techno Solutions', | |||
|     'maintainer': 'Cybrosys Techno Solutions', | |||
|     'website': "https://www.openhrms.com", | |||
|     'depends': ['hr', 'point_of_sale'], | |||
|     'external_dependencies': { | |||
|         'python': ['pandas'], | |||
|     }, | |||
|     'data': [ | |||
|         'views/dashboard_views.xml' | |||
|     ], | |||
|     'qweb': ["static/src/xml/pos_dashboard.xml"], | |||
|     'images': ['static/description/banner.png'], | |||
|     'license': "AGPL-3", | |||
|     'installable': True, | |||
|     'application': False, | |||
| } | |||
| @ -0,0 +1,7 @@ | |||
| ## Module <pos_dashboard> | |||
| 
 | |||
| #### 09.04.2021 | |||
| #### Version 14.0.1.0.0 | |||
| 
 | |||
| ##### Initial Commit for pos_dashboard | |||
| 
 | |||
| @ -0,0 +1,23 @@ | |||
| # -*- coding: utf-8 -*- | |||
| ################################################################################### | |||
| # | |||
| #    Cybrosys Technologies Pvt. Ltd. | |||
| #    Copyright (C) 2020-TODAY Cybrosys Technologies (<https://www.cybrosys.com>). | |||
| #    Author: Irfan (<https://www.cybrosys.com>) | |||
| # | |||
| #    This program is free software: you can modify | |||
| #    it under the terms of the GNU Affero General Public License (AGPL) as | |||
| #    published by the Free Software Foundation, either version 3 of the | |||
| #    License, or (at your option) any later version. | |||
| # | |||
| #    This program is distributed in the hope that it will be useful, | |||
| #    but WITHOUT ANY WARRANTY; without even the implied warranty of | |||
| #    MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the | |||
| #    GNU Affero General Public License for more details. | |||
| # | |||
| #    You should have received a copy of the GNU Affero General Public License | |||
| #    along with this program.  If not, see <https://www.gnu.org/licenses/>. | |||
| # | |||
| ################################################################################### | |||
| 
 | |||
| from . import pos_dashboard | |||
| @ -0,0 +1,227 @@ | |||
| # -*- coding: utf-8 -*- | |||
| ################################################################################### | |||
| # | |||
| #    Cybrosys Technologies Pvt. Ltd. | |||
| #    Copyright (C) 2020-TODAY Cybrosys Technologies (<https://www.cybrosys.com>). | |||
| #    Author: Irfan (<https://www.cybrosys.com>) | |||
| # | |||
| #    This program is free software: you can modify | |||
| #    it under the terms of the GNU Affero General Public License (AGPL) as | |||
| #    published by the Free Software Foundation, either version 3 of the | |||
| #    License, or (at your option) any later version. | |||
| # | |||
| #    This program is distributed in the hope that it will be useful, | |||
| #    but WITHOUT ANY WARRANTY; without even the implied warranty of | |||
| #    MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the | |||
| #    GNU Affero General Public License for more details. | |||
| # | |||
| #    You should have received a copy of the GNU Affero General Public License | |||
| #    along with this program.  If not, see <https://www.gnu.org/licenses/>. | |||
| # | |||
| ################################################################################### | |||
| import pytz | |||
| from odoo import models, fields, api | |||
| from datetime import timedelta, datetime, date | |||
| 
 | |||
| 
 | |||
| class PosDashboard(models.Model): | |||
|     _inherit = 'pos.order' | |||
| 
 | |||
|     @api.model | |||
|     def get_department(self, option): | |||
|         company_id = self.env.company.id | |||
|         if option == 'pos_hourly_sales': | |||
| 
 | |||
|             user_tz = self.env.user.tz if self.env.user.tz else pytz.UTC | |||
|             query = '''select  EXTRACT(hour FROM date_order at time zone 'utc' at time zone '{}')  | |||
|                        as date_month,sum(amount_total) from pos_order where   | |||
|                        EXTRACT(month FROM date_order::date) = EXTRACT(month FROM CURRENT_DATE)  | |||
|                        AND pos_order.company_id = ''' + str( | |||
|                        company_id) + ''' group by date_month ''' | |||
|             query = query.format(user_tz) | |||
|             label = 'HOURS' | |||
|         elif option == 'pos_monthly_sales': | |||
|             query = '''select  date_order::date as date_month,sum(amount_total) from pos_order where  | |||
|              EXTRACT(month FROM date_order::date) = EXTRACT(month FROM CURRENT_DATE) AND pos_order.company_id = ''' + str( | |||
|                 company_id) + '''  group by date_month ''' | |||
|             label = 'DAYS' | |||
|         else: | |||
|             query = '''select TO_CHAR(date_order,'MON')date_month,sum(amount_total) from pos_order where | |||
|              EXTRACT(year FROM date_order::date) = EXTRACT(year FROM CURRENT_DATE) AND pos_order.company_id = ''' + str( | |||
|                 company_id) + ''' group by date_month''' | |||
|             label = 'MONTHS' | |||
| 
 | |||
|         self._cr.execute(query) | |||
|         docs = self._cr.dictfetchall() | |||
|         order = [] | |||
|         for record in docs: | |||
|             order.append(record.get('sum')) | |||
|         today = [] | |||
|         for record in docs: | |||
|             today.append(record.get('date_month')) | |||
|         final = [order, today, label] | |||
|         return final | |||
| 
 | |||
|     @api.model | |||
|     def get_details(self): | |||
|         company_id = self.env.company.id | |||
|         cr = self._cr | |||
|         cr.execute( | |||
|             """select pos_payment_method.name,sum(amount) from pos_payment inner join pos_payment_method on  | |||
|             pos_payment_method.id=pos_payment.payment_method_id group by pos_payment_method.name ORDER  | |||
|             BY sum(amount) DESC; """) | |||
|         payment_details = cr.fetchall() | |||
|         cr.execute( | |||
|             '''select hr_employee.name,sum(pos_order.amount_paid) as total,count(pos_order.amount_paid) as orders  | |||
|             from pos_order inner join hr_employee on pos_order.user_id = hr_employee.user_id  | |||
|             where pos_order.company_id =''' + str(company_id) + '''GROUP BY hr_employee.name order by total DESC;''') | |||
|         salesperson = cr.fetchall() | |||
|         total_sales = [] | |||
|         for rec in salesperson: | |||
|             rec = list(rec) | |||
|             sym_id = rec[1] | |||
|             company = self.env.company | |||
|             if company.currency_id.position == 'after': | |||
|                 rec[1] = "%s %s" % (sym_id, company.currency_id.symbol) | |||
|             else: | |||
|                 rec[1] = "%s %s" % (company.currency_id.symbol, sym_id) | |||
|             rec = tuple(rec) | |||
|             total_sales.append(rec) | |||
|         cr.execute( | |||
|             '''select DISTINCT(product_template.name) as product_name,sum(qty) as total_quantity from  | |||
|        pos_order_line inner join product_product on product_product.id=pos_order_line.product_id inner join  | |||
|        product_template on product_product.product_tmpl_id = product_template.id  where pos_order_line.company_id =''' + str( | |||
|                 company_id) + ''' group by product_template.id ORDER  | |||
|        BY total_quantity DESC Limit 10 ''') | |||
|         selling_product = cr.fetchall() | |||
|         sessions = self.env['pos.config'].search([]) | |||
|         sessions_list = [] | |||
|         dict = { | |||
|             'closing_control': 'Closed', | |||
|             'opened': 'Opened', | |||
|             'new_session': 'New Session', | |||
|             'opening_control': "Opening Control" | |||
|         } | |||
|         for session in sessions: | |||
|             sessions_list.append({ | |||
|                 'session': session.name, | |||
|                 'status': dict.get(session.pos_session_state) | |||
|             }) | |||
|         payments =[] | |||
|         for rec in payment_details: | |||
|             rec = list(rec) | |||
|             sym_id = rec[1] | |||
|             company = self.env.company | |||
|             if company.currency_id.position == 'after': | |||
|                 rec[1] = "%s %s" % (sym_id, company.currency_id.symbol) | |||
|             else: | |||
|                 rec[1] = "%s %s" % (company.currency_id.symbol, sym_id) | |||
|             rec = tuple(rec) | |||
|             payments.append(rec) | |||
|         return { | |||
|             'payment_details': payments, | |||
|             'salesperson': total_sales, | |||
|             'selling_product': sessions_list, | |||
|         } | |||
| 
 | |||
|     @api.model | |||
|     def get_refund_details(self): | |||
|         default_date = datetime.today().date() | |||
|         pos_order = self.env['pos.order'].search([]) | |||
|         total = 0 | |||
|         today_refund_total = 0 | |||
|         total_order_count = 0 | |||
|         total_refund_count = 0 | |||
|         today_sale = 0 | |||
|         a = 0 | |||
|         for rec in pos_order: | |||
|             if rec.amount_total < 0.0 and rec.date_order.date() == default_date: | |||
|                 today_refund_total = today_refund_total + 1 | |||
|             total_sales = rec.amount_total | |||
|             total = total + total_sales | |||
|             total_order_count = total_order_count + 1 | |||
|             if rec.date_order.date() == default_date: | |||
|                 today_sale = today_sale + 1 | |||
|             if rec.amount_total < 0.0: | |||
|                 total_refund_count = total_refund_count + 1 | |||
|         magnitude = 0 | |||
|         while abs(total) >= 1000: | |||
|             magnitude += 1 | |||
|             total /= 1000.0 | |||
|         # add more suffixes if you need them | |||
|         val = '%.2f%s' % (total, ['', 'K', 'M', 'G', 'T', 'P'][magnitude]) | |||
|         pos_session = self.env['pos.session'].search([]) | |||
|         total_session = 0 | |||
|         for record in pos_session: | |||
|             total_session = total_session + 1 | |||
|         return { | |||
|             'total_sale': val, | |||
|             'total_order_count': total_order_count, | |||
|             'total_refund_count': total_refund_count, | |||
|             'total_session': total_session, | |||
|             'today_refund_total': today_refund_total, | |||
|             'today_sale': today_sale, | |||
|         } | |||
| 
 | |||
|     @api.model | |||
|     def get_the_top_customer(self, ): | |||
|         company_id = self.env.company.id | |||
|         query = '''select res_partner.name as customer,pos_order.partner_id,sum(pos_order.amount_paid) as amount_total from pos_order  | |||
|         inner join res_partner on res_partner.id = pos_order.partner_id where pos_order.company_id = ''' + str( | |||
|             company_id) + ''' GROUP BY pos_order.partner_id, | |||
|         res_partner.name  ORDER BY amount_total  DESC LIMIT 10;''' | |||
|         self._cr.execute(query) | |||
|         docs = self._cr.dictfetchall() | |||
|         print(docs) | |||
| 
 | |||
|         order = [] | |||
|         for record in docs: | |||
|             order.append(record.get('amount_total')) | |||
|         day = [] | |||
|         for record in docs: | |||
|             day.append(record.get('customer')) | |||
|         final = [order, day] | |||
|         return final | |||
| 
 | |||
|     @api.model | |||
|     def get_the_top_products(self): | |||
|         company_id = self.env.company.id | |||
| 
 | |||
|         query = '''select DISTINCT(product_template.name) as product_name,sum(qty) as total_quantity from  | |||
|        pos_order_line inner join product_product on product_product.id=pos_order_line.product_id inner join  | |||
|        product_template on product_product.product_tmpl_id = product_template.id where pos_order_line.company_id = ''' + str( | |||
|             company_id) + ''' group by product_template.id ORDER  | |||
|        BY total_quantity DESC Limit 10 ''' | |||
| 
 | |||
|         self._cr.execute(query) | |||
|         top_product = self._cr.dictfetchall() | |||
| 
 | |||
|         total_quantity = [] | |||
|         for record in top_product: | |||
|             # if record.get('total_quantity') != 0: | |||
|             #     print(total_quantity.append(record.get('total_quantity'))) | |||
|             total_quantity.append(record.get('total_quantity')) | |||
|         product_name = [] | |||
|         for record in top_product: | |||
|             product_name.append(record.get('product_name')) | |||
|         final = [total_quantity, product_name] | |||
|         return final | |||
| 
 | |||
|     @api.model | |||
|     def get_the_top_categories(self): | |||
|         company_id = self.env.company.id | |||
|         query = '''select DISTINCT(product_category.complete_name) as product_category,sum(qty) as total_quantity  | |||
|         from pos_order_line inner join product_product on product_product.id=pos_order_line.product_id  inner join  | |||
|         product_template on product_product.product_tmpl_id = product_template.id inner join product_category on  | |||
|         product_category.id =product_template.categ_id where pos_order_line.company_id = ''' + str( | |||
|             company_id) + ''' group by product_category ORDER BY total_quantity DESC ''' | |||
|         self._cr.execute(query) | |||
|         top_product = self._cr.dictfetchall() | |||
|         total_quantity = [] | |||
|         for record in top_product: | |||
|             total_quantity.append(record.get('total_quantity')) | |||
|         product_categ = [] | |||
|         for record in top_product: | |||
|             product_categ.append(record.get('product_category')) | |||
|         final = [total_quantity, product_categ] | |||
|         return final | |||
| After Width: | Height: | Size: 77 KiB | 
| After Width: | Height: | Size: 17 KiB | 
| After Width: | Height: | Size: 86 KiB | 
| After Width: | Height: | Size: 72 KiB | 
| After Width: | Height: | Size: 15 KiB | 
| After Width: | Height: | Size: 51 KiB | 
| After Width: | Height: | Size: 40 KiB | 
| After Width: | Height: | Size: 55 KiB | 
| After Width: | Height: | Size: 136 KiB | 
| After Width: | Height: | Size: 130 KiB | 
| After Width: | Height: | Size: 507 KiB | 
| After Width: | Height: | Size: 90 KiB | 
| After Width: | Height: | Size: 129 KiB | 
| After Width: | Height: | Size: 44 KiB | 
| After Width: | Height: | Size: 110 KiB | 
| @ -0,0 +1,541 @@ | |||
| <div class="row" | |||
|      style="margin: 0;position: relative;color: #000;background-position: center;background: #ffffff;border-bottom: 1px solid #e4e4e4;text-align: center; margin: auto; display: flex;justify-content: center;"> | |||
|     <a href="https://www.cybrosys.com/" target="_blank"><img src="images/cybrosys.png" | |||
|                                                              style=" width: 293px; padding: 1rem 0rem; margin: auto" | |||
|                                                              alt="cybrosys-logo"></a></div> | |||
| <div class="row" | |||
|      style="margin:75px 0;position: relative;color: #000;background-position: center;background: #ffffff;border-bottom: 1px solid #e4e4e4; padding-bottom: 30px;"> | |||
|     <div class="col-md-7 col-sm-12 col-xs-12" style="padding: 0px"> | |||
|         <div style=" margin: 0 0 0px;padding: 20px 0 10;font-size: 23px;line-height: 35px;font-weight: 400;color: #000;border-top: 1px solid rgba(255,255,255,0.1);border-bottom: 1px solid rgba(255,255,255,0.11);text-align: left;"> | |||
|             <h1 style="font-size: 39px;font-weight: 600;margin: 0px !important;">POS Dashboard</h1> | |||
|             <h3 style="font-size: 21px;margin-top: 8px;position: relative;"> | |||
|                 Detailed Dashboard View for POS | |||
|             </h3> | |||
|         </div> | |||
|         <h2 style="font-weight: 600;font-size: 1.8rem;margin-top: 15px;">Key Highlights</h2> | |||
|         <ul style=" padding: 0 1px; list-style: none; "> | |||
|                                         <li class="mb8" | |||
|                                 style="font-family: Roboto;color: #000;list-style-type: square;font-size: 19px;line-height: 50px; background-color: #3a34380d;padding-left: 20px;border-radius: 7px;list-style: none;"> | |||
|                                 <i class="fa fa-check-circle-o" style="width:40px; color:#07B700"></i> | |||
|                                 Total Pos Orders | |||
|                             </li> | |||
|                             <li class="mb8" | |||
|                                 style="font-family: Roboto;color: #000;list-style-type: square;font-size: 19px;line-height: 50px; background-color: #3a34380d;padding-left: 20px;border-radius: 7px;list-style: none;"> | |||
|                                 <i class="fa fa-check-circle-o" style="width:40px; color:#07B700"></i>Session | |||
|                                 Details | |||
|                             </li> | |||
|                             <li class="mb8" | |||
|                                 style="font-family: Roboto;color: #000;list-style-type: square;font-size: 19px;line-height: 50px; background-color: #3a34380d;padding-left: 20px;border-radius: 7px;list-style: none;"> | |||
|                                 <i class="fa fa-check-circle-o" style="width:40px; color:#07B700"></i>Customer | |||
|                                 List | |||
|                             </li> | |||
|                             <li class="mb8" | |||
|                                 style="font-family: Roboto;color: #000;list-style-type: square;font-size: 19px;line-height: 50px; background-color: #3a34380d;padding-left: 20px;border-radius: 7px;list-style: none;"> | |||
|                                 <i class="fa fa-check-circle-o" style="width:40px; color:#07B700"></i>Sale | |||
|                                 Report | |||
|                             </li> | |||
|         </ul> | |||
|     </div> | |||
|     <div class="col-md-5 col-sm-12 col-xs-12"><img src="images/pos_dashboard.gif" class="img-responsive" alt=""></div> | |||
| </div> | |||
| <div> | |||
|     <section class="oe_container" style="padding: 1rem 0rem 1rem; background-color: #ffffff !important;"> | |||
|         <div class="row py-4 px-3"> | |||
|             <div class="w-100" style="padding-top:30px;padding-bottom:45px;border-radius: 10px;"> | |||
|                 <ul role="tablist" class="nav nav-pills justify-content-center" data-tabs="tabs" id="pills-tab" | |||
|                     style="border: none;background: unset;"> | |||
|                     <li class="nav-item mr-1 mb-3" | |||
|                         style="font-size: 1.05rem;font-weight: 400;transition: all .15s ease;color: #d31c22;background-color: #d31c22;box-shadow: 0 4px 6px rgba(50,50,93,.11), 0 1px 3px rgba(0,0,0,.08);border: 0;font-family: 'Open Sans',sans-serif;width: 140px;border-radius: 0.30rem;"> | |||
|                         <a id="pills-home-tab" data-toggle="pill" href="#pills-home" role="tab" | |||
|                            aria-controls="pills-home" aria-selected="true" class="nav-link active show" style="color: #000000;line-height: 33px;border: 0;border-radius: .25rem;font-weight: 400;text-align: center; | |||
|                   color: #fff;">Overview </a></li> | |||
|                     <li class="nav-item mr-1 mb-3" | |||
|                         style="font-size: 1.05rem;font-weight: 400;transition: all .15s ease;color: #d31c22;background-color: #d31c22;box-shadow: 0 4px 6px rgba(50,50,93,.11), 0 1px 3px rgba(0,0,0,.08);border: 0;font-family: 'Open Sans',sans-serif;width: 140px;border-radius: 0.30rem;"> | |||
|                         <a id="pills-home-tab" data-toggle="pill" href="#pills-home1" role="tab" | |||
|                            aria-controls="pills-home" aria-selected="true" class="nav-link " style="color: #000000;line-height: 33px;border: 0;border-radius: .25rem;font-weight: 400; text-align: center; | |||
|                   color: #fff;">Features </a></li> | |||
|                     <li class="nav-item mr-1 mb-3" | |||
|                         style="font-size: 1.05rem;font-weight: 400;transition: all .15s ease;color: #ffffff;background-color: #d31c22;box-shadow: 0 4px 6px rgba(50,50,93,.11), 0 1px 3px rgba(0,0,0,.08);border: 0;font-family: 'Open Sans',sans-serif;width: 140px;border-radius: 0.30rem;"> | |||
|                         <a class="nav-link" id="pills-profile-tab" data-toggle="pill" href="#pills-profile" role="tab" | |||
|                            aria-controls="pills-profile" aria-selected="false" style="color: #000000;line-height: 33px;border: 0;border-radius: .25rem;font-weight: 400; text-align: center; | |||
|                   color: #fff;">Screenshots </a></li> | |||
|                 </ul> | |||
|                 <div class="tab-content" id="pills-tabContent" | |||
|                      style="padding-top: 30px; padding-bottom: 30px; padding: 30px;"> | |||
|                     <div class="px-3 pt-1 tab-pane fade active show" id="pills-home" role="tabpanel" aria-labelledby=" | |||
|                   pills-home-tab"> | |||
|                         <!-- Overview--> | |||
|                         <h2 style="font-weight: 600;text-align: center;width: 100%;">Overview</h2> | |||
|                         <hr style="margin-top: 0px;margin-bottom: 2%;border: 0;text-align: center;border-top: 3px solid #d21c22;width: 5%;"> | |||
|                         <h3 class="oe_slogan" | |||
|                             style="text-align: center;font-size: 19px;width: 100%;margin: 0;margin-top: 14px;color: #000 !important;opacity: 1 !important;line-height: 31px;font-weight: 400;letter-spacing: .5px;margin-bottom: 21px;"> | |||
|                             This module helps you to see the Overview of POS, here You can see the total orders, | |||
|                             sessions, top customers, top products etc | |||
|                         </h3> | |||
|                     </div> | |||
|                     <div class="px-3 pt-1 tab-pane fade " id="pills-home1" role="tabpanel" aria-labelledby=" | |||
|                   pills-home-tab"> | |||
|                         <!-- feature tab--> | |||
|                         <h2 style="font-weight: 600;text-align: center;width: 100%;">POS Dashboard</h2> | |||
|                         <hr style="margin-top: 0px;margin-bottom: 2%;border: 0;text-align: center;border-top: 3px solid #d21c22;width: 5%;"> | |||
|                         <ul> | |||
|                                         <li class="mb8" | |||
|                 style="font-family: Roboto;color: #000;list-style-type: square;font-size: 19px;line-height: 50px; background-color: #3a34380d;padding-left: 20px;border-radius: 7px;list-style: none;"> | |||
|                 <i class="fa fa-check-circle-o" style="width:40px; color:#07B700"></i>Total Pos Orders | |||
|             </li> | |||
|             <li class="mb8" | |||
|                 style="font-family: Roboto;color: #000;list-style-type: square;font-size: 19px;line-height: 50px; background-color: #3a34380d;padding-left: 20px;border-radius: 7px;list-style: none;"> | |||
|                 <i class="fa fa-check-circle-o" style="width:40px; color:#07B700"></i>Session Details | |||
|             </li> | |||
|             <li class="mb8" | |||
|                 style="font-family: Roboto;color: #000;list-style-type: square;font-size: 19px;line-height: 50px; background-color: #3a34380d;padding-left: 20px;border-radius: 7px;list-style: none;"> | |||
|                 <i class="fa fa-check-circle-o" style="width:40px; color:#07B700"></i>Refund Details | |||
|             </li> | |||
|             <li class="mb8" | |||
|                 style="font-family: Roboto;color: #000;list-style-type: square;font-size: 19px;line-height: 50px; background-color: #3a34380d;padding-left: 20px;border-radius: 7px;list-style: none;"> | |||
|                 <i class="fa fa-check-circle-o" style="width:40px; color:#07B700"></i>Sale Details | |||
|             </li> | |||
|             <li class="mb8" | |||
|                 style="font-family: Roboto;color: #000;list-style-type: square;font-size: 19px;line-height: 50px; background-color: #3a34380d;padding-left: 20px;border-radius: 7px;list-style: none;"> | |||
|                 <i class="fa fa-check-circle-o" style="width:40px; color:#07B700"></i>Sale Report Charts | |||
|             </li> | |||
|             <li class="mb8" | |||
|                 style="font-family: Roboto;color: #000;list-style-type: square;font-size: 19px;line-height: 50px; background-color: #3a34380d;padding-left: 20px;border-radius: 7px;list-style: none;"> | |||
|                 <i class="fa fa-check-circle-o" style="width:40px; color:#07B700"></i>Top Products | |||
|             </li> | |||
| 
 | |||
|                         </ul> | |||
|                     </div> | |||
|                     <!-- Screenshot tab--> | |||
|                     <div class="px-3 tab-pane fade" id="pills-profile" role="tabpanel" | |||
|                          aria-labelledby="pills-profile-tab"> | |||
|                         <div class="tab-pane"> | |||
|                             <h2 style="font-weight: 600;text-align: center;width: 100%;">Screenshots</h2> | |||
|                             <hr style="margin-top: 0px;margin-bottom: 2%;border: 0;text-align: center;border-top: 3px solid #d21c22;width: 5%;"> | |||
|                             <div> | |||
|                                 <section class="oe_container"> | |||
|                                     <div id="demo" class="row carousel slide  mb32" data-ride="carousel"> | |||
|                                         <div class="carousel-inner"> | |||
|                                             <div class="carousel-item active" style="min-height: 0px;"> | |||
|                                                 <div class="col-xs-12 col-sm-12 col-md-12 mb16 mt16" | |||
|                                                      style="float: left;"> | |||
|                                                     <h3 class="alert" | |||
|                                                         style="font-weight:400;color: #091E42;background: #fff;text-align: left;border-radius: 0; font-size: 18px;"> | |||
|                                                         <i class="fa fa-check-circle-o" style="width:40px; color:#07B700"></i> | |||
|                                                         After installation, open POS</h3> | |||
|                                                     <div style=""><img class="img img-responsive center-block" | |||
|                                                                        style="border-top-left-radius: 10px;border-top-right-radius: 10px;" | |||
|                                                                        src="images/dashboard.png"></div> | |||
|                                                 </div> | |||
|                                             </div> | |||
| 
 | |||
|                                             <div class="carousel-item" style="min-height: 0px;"> | |||
|                                                 <div class="col-xs-12 col-sm-12 col-md-12 mb16 mt16" | |||
|                                                      style="float: left;"> | |||
|                                                     <h3 class="alert" | |||
|                                                         style="font-weight:400;color: #091E42;background: #fff;text-align: left;border-radius: 0; font-size: 18px;"> | |||
|                                                         <i class="fa fa-check-circle-o" style="width:40px; color:#07B700"></i>Order and Session details</h3> | |||
|                                                     <div style=""><img class="img img-responsive center-block" | |||
|                                                                        style="border-top-left-radius: 10px;border-top-right-radius: 10px;" | |||
|                                                                        src="images/tile_view.png"></div> | |||
|                                                 </div> | |||
|                                             </div> | |||
| 
 | |||
|                                             <div class="carousel-item" style="min-height: 0px;"> | |||
|                                                 <div class="col-xs-12 col-sm-12 col-md-12 mb16 mt16" | |||
|                                                      style="float: left;"> | |||
|                                                     <h3 class="mb32 alert" | |||
|                                                         style="font-weight:400;color: #091E42;background: #fff;text-align: left;border-radius: 0; font-size: 18px; "> | |||
|                                                         <i class="fa fa-check-circle-o" style="width:40px; color:#07B700"></i>Possible to see the pos details | |||
|                                                         in different charts</h3> | |||
|                                                     <div style=""><img class="img img-responsive center-block" | |||
|                                                                        style="border-top-left-radius: 10px;border-top-right-radius: 10px;" | |||
|                                                                        src="images/chart_view.png"></div> | |||
|                                                 </div> | |||
|                                             </div> | |||
|                                             <div class="carousel-item" style="min-height: 0px;"> | |||
|                                                 <div class="col-xs-12 col-sm-12 col-md-12 mb16 mt16" | |||
|                                                      style="float: left;"> | |||
|                                                     <h3 class="mb32 alert" | |||
|                                                         style="font-weight:400;color: #091E42;background: #fff;text-align: left;border-radius: 0; font-size: 18px; "> | |||
|                                                         <i class="fa fa-check-circle-o" style="width:40px; color:#07B700"></i>Details like | |||
|                                                         bank, session status, salesperson details are listed.</h3> | |||
|                                                     <div style=""><img class="img img-responsive center-block" | |||
|                                                                        style="border-top-left-radius: 10px;border-top-right-radius: 10px;" | |||
|                                                                        src="images/tree_view.png"></div> | |||
|                                                 </div> | |||
|                                             </div> | |||
|                                         </div> | |||
|                                         <a class="carousel-control-prev" href="#demo" 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="#demo" 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> | |||
|                                 </section> | |||
|                             </div> | |||
|                         </div> | |||
|                     </div> | |||
|                     <!--               <div class="px-3 pt-1 tab-pane fade" id="pills-video" role="tabpanel" aria-labelledby="--> | |||
|                     <!--                  pills-home-tab">--> | |||
|                     <!--                  <!– Video–>--> | |||
|                     <!--                  <h2 style="font-weight: 600;text-align: center;width: 100%;">Video</h2>--> | |||
|                     <!--                  <hr style="margin-top: 0px;margin-bottom: 2%;border: 0;text-align: center;border-top: 3px solid #d21c22;width: 5%;">--> | |||
|                     <!--                  <center>--> | |||
|                     <!--                     <p>Project Task Timer Demo</p>--> | |||
|                     <!--                     <!–<a href="https://www.youtube.com/watch?v=57QWXrMYe84&feature=youtu.be" target="_blank"> <img src="addon-youtube.png" style="width:80%;"></a>–>--> | |||
|                     <!--                     <div class="s_panel_video" data-video-id="7PFB7FpMFyM?rel=0" style="cursor:pointer;">--> | |||
|                     <!--                        <img class="img-fluid s_tooltip_tabs_tooltip_image s_figure_link pb0" src="images/task_timer_youtube.png" alt="Cybrosys Cover Video" style="max-width:100%;">--> | |||
|                     <!--                     </div>--> | |||
|                     <!--                  </center>--> | |||
|                     <!--               </div>--> | |||
|                     <!-- faq tab--> | |||
|                     <div class="px-2 px-lg-4 pt-3 tab-pane fade" id="pills-contact" role="tabpanel" | |||
|                          aria-labelledby="pills-contact-tab"> | |||
|                         <ul class="list-unstyled"> | |||
|                         </ul> | |||
|                     </div> | |||
|                 </div> | |||
|             </div> | |||
|         </div> | |||
|     </section> | |||
|     <section class="oe_container" style="padding: 2rem 3rem 1rem;"> | |||
|         <h2 style="font-weight: 600;text-align: center;margin-bottom: 25px;width: 100%;">Suggested Products</h2> | |||
|         <hr style="margin-top: 0px;margin-bottom: 2%;border: 0;text-align: center;border-top: 3px solid #d21c22;width: 5%;"> | |||
|         <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/12.0/project_report_pdf/" target="_blank"> | |||
|                             <div style="box-shadow: 0 15px 35px rgba(50, 50, 93, 0.1), 0 5px 15px rgba(0, 0, 0, 0.07);border-radius: 10px;"> | |||
|                                 <img class="img img-responsive center-block" | |||
|                                      style="border-top-left-radius: 10px;border-top-right-radius: 10px;" | |||
|                                      src="images/booking_order.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/10.0/project_status_level_report/" target="_blank"> | |||
|                             <div style="box-shadow: 0 15px 35px rgba(50, 50, 93, 0.1), 0 5px 15px rgba(0, 0, 0, 0.07);border-radius: 10px;"> | |||
|                                 <img class="img img-responsive center-block" | |||
|                                      style="border-top-left-radius: 10px;border-top-right-radius: 10px;" | |||
|                                      src="images/mrp_orders.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/10.0/project_lifeline/" target="_blank"> | |||
|                             <div style="box-shadow: 0 15px 35px rgba(50, 50, 93, 0.1), 0 5px 15px rgba(0, 0, 0, 0.07);border-radius: 10px;"> | |||
|                                 <img class="img img-responsive center-block" | |||
|                                      style="border-top-left-radius: 10px;border-top-right-radius: 10px;" | |||
|                                      src="images/order_line_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/10.0/project_subtask/" target="_blank"> | |||
|                             <div style="box-shadow: 0 15px 35px rgba(50, 50, 93, 0.1), 0 5px 15px rgba(0, 0, 0, 0.07);border-radius: 10px;"> | |||
|                                 <img class="img img-responsive center-block" | |||
|                                      style="border-top-left-radius: 10px;border-top-right-radius: 10px;" | |||
|                                      src="images/pos_coupons.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/12.0/task_deadline_reminder/" target="_blank"> | |||
|                             <div style="box-shadow: 0 15px 35px rgba(50, 50, 93, 0.1), 0 5px 15px rgba(0, 0, 0, 0.07);border-radius: 10px;"> | |||
|                                 <img class="img img-responsive center-block" | |||
|                                      style="border-top-left-radius: 10px;border-top-right-radius: 10px;" | |||
|                                      src="images/pos_return.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/10.0/project_time_spend/" target="_blank"> | |||
|                             <div style="box-shadow: 0 15px 35px rgba(50, 50, 93, 0.1), 0 5px 15px rgba(0, 0, 0, 0.07);border-radius: 10px;"> | |||
|                                 <img class="img img-responsive center-block" | |||
|                                      style="border-top-left-radius: 10px;border-top-right-radius: 10px;" | |||
|                                      src="images/product_creation.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> | |||
|     </section> | |||
|     <section class="row" style="padding: 2rem 3rem 1rem;margin:0px"> | |||
|         <h2 style="font-weight: 600;margin-bottom: 20px;text-align: center;width: 100%;">Our Service</h2> | |||
|         <hr style="margin-top: 0px;margin-bottom: 2%;border: 0;text-align: center;border-top: 3px solid #d21c22;width: 5%;"> | |||
|         <div class="row" style=" display: flex; justify-content: center; flex-wrap: wrap;width: 100%; "> | |||
|             <!-- <div style="display:flex;padding-top: 20px;justify-content: space-between;"> --> | |||
|             <div class="col-md-2 col-sm-6 col-xs-12"> | |||
|                 <div style="width:75px;height:75px;background:#fff; border-radius:100%;margin: auto;"><a | |||
|                         href="https://www.cybrosys.com/odoo-customization-and-installation/" target="_blank"> <img | |||
|                         src="https://www.cybrosys.com/images/odoo-customization.png" | |||
|                         style="width: 100%;border-radius: 100%;"/> </a></div> | |||
|                 <h3 class="oe_slogan" | |||
|                     style="font-weight: 800;text-align: center;font-size: 14px;width: 100%;margin: 0;margin-top: 14px;color: #000 !important;margin-top: 5px;opacity: 1 !important;line-height: 17px;"> | |||
|                     <a href="https://www.cybrosys.com/odoo-customization-and-installation/" target="_blank" | |||
|                        style="list-style: none; color:#000; text-decoration: none; font-family: 'Montserrat',sans-serif;"> | |||
|                         Odoo Customization </a></h3> | |||
|             </div> | |||
|             <div class="col-md-2 col-sm-6 col-xs-12"> | |||
|                 <div style="width:75px;height:75px;background:#fff; border-radius:100%;margin: auto;"><a | |||
|                         href="https://www.cybrosys.com/odoo-erp-implementation/" target="_blank"> <img | |||
|                         src="https://www.cybrosys.com/images/odoo-erp-implementation.png" | |||
|                         style="width: 100%;border-radius: 100%;"/> </a></div> | |||
|                 <h3 class="oe_slogan" | |||
|                     style="font-weight: 800;text-align: center;font-size: 14px;width: 100%;margin: 0;margin-top: 14px;color: #000 !important;margin-top: 5px;opacity: 1 !important;line-height: 17px;"> | |||
|                     <a href="https://www.cybrosys.com/odoo-erp-implementation/" target="_blank" | |||
|                        style="list-style: none; color:#000; text-decoration: none; font-family: 'Montserrat',sans-serif;"> | |||
|                         Odoo Implementation </a></h3> | |||
|             </div> | |||
|             <div class="col-md-2 col-sm-6 col-xs-12"> | |||
|                 <div style="width:75px;height:75px;background:#fff; border-radius:100%;margin: auto;"><a | |||
|                         href="https://www.cybrosys.com/odoo-erp-integration/" target="_blank"> <img | |||
|                         src="https://www.cybrosys.com/images/odoo-erp-integration.png" | |||
|                         style="width: 100%;border-radius: 100%;"/> </a></div> | |||
|                 <h3 class="oe_slogan" | |||
|                     style="font-weight: 800;text-align: center;font-size: 14px;width: 100%;margin: 0;margin-top: 14px;color: #000 !important;margin-top: 5px;opacity: 1 !important;line-height: 17px;"> | |||
|                     <a href="https://www.cybrosys.com/odoo-erp-integration/" target="_blank" | |||
|                        style="list-style: none; color:#000; text-decoration: none; font-family: 'Montserrat',sans-serif;"> | |||
|                         Odoo Integration </a></h3> | |||
|             </div> | |||
|             <div class="col-md-2 col-sm-6 col-xs-12"> | |||
|                 <div style="width:75px;height:75px;background:#fff; border-radius:100%;margin: auto;"><a | |||
|                         href="https://www.cybrosys.com/odoo-erp-support/" target="_blank"> <img | |||
|                         src="https://www.cybrosys.com/images/odoo-erp-support.png" | |||
|                         style="width: 100%;border-radius: 100%;"/> </a></div> | |||
|                 <h3 class="oe_slogan" | |||
|                     style="font-weight: 800;text-align: center;font-size: 14px;width: 100%;margin: 0;margin-top: 14px;color: #000 !important;margin-top: 5px;opacity: 1 !important;line-height: 17px;"> | |||
|                     <a href="https://www.cybrosys.com/odoo-erp-support/" target="_blank" | |||
|                        style="list-style: none; color:#000; text-decoration: none; font-family: 'Montserrat',sans-serif;"> | |||
|                         Odoo Support</a></h3> | |||
|             </div> | |||
|             <div class="col-md-2 col-sm-6 col-xs-12"> | |||
|                 <div style="width:75px;height:75px;background:#fff; border-radius:100%;margin: auto;"><a | |||
|                         href="https://www.cybrosys.com/hire-odoo-developer/" target="_blank"> <img | |||
|                         src="https://www.cybrosys.com/images/hire-odoo-developer.png" | |||
|                         style="width: 100%;border-radius: 100%;"/> </a></div> | |||
|                 <h3 class="oe_slogan" | |||
|                     style="font-weight: 800;text-align: center;font-size: 14px;width: 100%;margin: 0;margin-top: 14px;color: #000 !important;margin-top: 5px;opacity: 1 !important;line-height: 17px;"> | |||
|                     <a href="https://www.cybrosys.com/hire-odoo-developer/" target="_blank" | |||
|                        style="list-style: none; color:#000; text-decoration: none; font-family: 'Montserrat',sans-serif;"> | |||
|                         Hire Odoo Developers</a></h3> | |||
|                 </a> | |||
|             </div> | |||
|             <!-- </div> --> | |||
|         </div> | |||
|     </section> | |||
|     <section class="row" style="padding: 2rem 3rem 1rem;margin:0px"> | |||
|         <div class="row" style="margin: 0"> | |||
|             <h2 style="font-weight: 600;margin-bottom: 20px;text-align: center;width: 100%;">Our Industries</h2> | |||
|             <hr style="margin-top: 0px;margin-bottom: 2%;border: 0;text-align: center;border-top: 3px solid #d21c22;width: 5%;"> | |||
|             <!-- <div style="display:flex;justify-content: space-between;flex-wrap:wrap;"> --> | |||
|             <div class="row" style="width: 100%"> | |||
|                 <div class="col-md-4 col-sm-6 col-xs-12" style=" margin-bottom: 10px; "> | |||
|                     <div> | |||
|                         <div style="width:75px;height:75px;background:#CE2D48; border-radius:100%;float: left;text-align: left;"> | |||
|                             <a href="https://www.cybrosys.com/odoo/industries/best-trading-erp/" target="_blank"> <img | |||
|                                     src="https://www.cybrosys.com/images/odoo-index-industry-1.png" alt="Odoo Industry" | |||
|                                     style="    border-radius: 100%;width:100%;"/> </a></div> | |||
|                     </div> | |||
|                     <div style="width:70%;float:left;"> | |||
|                         <h3 class="oe_slogan" | |||
|                             style=" text-align: left;font-size: 14px;font-weight:800;width: auto;margin: 0;margin-top: 14px;color: #000 !important;margin-top: 5px;opacity: 1 !important;line-height: 17px;float: left;margin-top: 4px;margin-left: 16px;"> | |||
|                             <a href="https://www.cybrosys.com/odoo/industries/best-trading-erp/" target="_blank" | |||
|                                style="list-style: none; color:#000; text-decoration: none;font-family: 'Montserrat',sans-serif;"> | |||
|                                 Trading </a></h3> | |||
|                         <h3 class="oe_slogan" | |||
|                             style=" text-align: left;font-size: 12px;width: auto;margin: 0;margin-top:5px;color: #000 !important;margin-top: 5px;opacity: 1 !important;line-height: 17px;float: left;margin-top: 5px;margin-left: 16px; font-family: 'Montserrat',sans-serif;"> | |||
|                             Easily procure and sell your products. </h3> | |||
|                     </div> | |||
|                 </div> | |||
|                 <div class="col-md-4 col-sm-6 col-xs-12" style=" margin-bottom: 10px; "> | |||
|                     <div> | |||
|                         <div style="width:75px;height:75px;background:#CE2D48; border-radius:100%;float: left;text-align: left;"> | |||
|                             <a href="https://www.cybrosys.com/odoo/industries/manufacturing-erp-software/" | |||
|                                target="_blank"> <img src="https://www.cybrosys.com/images/odoo-index-industry-2.png" | |||
|                                                      alt="Odoo Industry" style="    border-radius: 100%;width:100%;"/> | |||
|                             </a></div> | |||
|                     </div> | |||
|                     <div style="width:70%;float:left;" style=" margin-bottom: 10px; "> | |||
|                         <h3 class="oe_slogan" | |||
|                             style=" text-align: left;font-size: 14px;font-weight:800;width: auto;margin: 0;margin-top: 14px;color: #000 !important;margin-top: 5px;opacity: 1 !important;line-height: 17px;float: left;margin-top: 4px;margin-left: 16px;"> | |||
|                             <a href="https://www.cybrosys.com/odoo/industries/manufacturing-erp-software/" | |||
|                                target="_blank" | |||
|                                style="list-style: none; color:#000; text-decoration: none;font-family: 'Montserrat',sans-serif;"> | |||
|                                 Manufacturing</a></h3> | |||
|                         <h3 class="oe_slogan" | |||
|                             style=" text-align: left;font-size: 12px;width: auto;margin: 0;margin-top:5px;color: #000 !important;margin-top: 5px;opacity: 1 !important;line-height: 17px;float: left;margin-top: 5px;margin-left: 16px;font-family: 'Montserrat',sans-serif;"> | |||
|                             Plan, track and schedule your operations. </h3> | |||
|                     </div> | |||
|                 </div> | |||
|                 <div class="col-md-4 col-sm-6 col-xs-12" style=" margin-bottom: 10px; "> | |||
|                     <div> | |||
|                         <div style="width:75px;height:75px;background:#CE2D48; border-radius:100%;float: left;text-align: left;"> | |||
|                             <a href="https://www.cybrosys.com/odoo/industries/restaurant-management/" target="_blank"> | |||
|                                 <img src="https://www.cybrosys.com/images/odoo-index-industry-3.png" alt="Odoo Industry" | |||
|                                      style="    border-radius: 100%;width:100%;"/> </a></div> | |||
|                     </div> | |||
|                     <div style="width:70%;float:left;"> | |||
|                         <h3 class="oe_slogan" | |||
|                             style=" text-align: left;font-size: 14px;font-weight:800;width: auto;margin: 0;margin-top: 14px;color: #000 !important;margin-top: 5px;opacity: 1 !important;line-height: 17px;float: left;margin-top: 4px;margin-left: 16px;"> | |||
|                             <a href="https://www.cybrosys.com/odoo/industries/restaurant-management/" target="_blank" | |||
|                                style="list-style: none; color:#000; text-decoration: none;font-family: 'Montserrat',sans-serif;"> | |||
|                                 Restaurant</a></h3> | |||
|                         <h3 class="oe_slogan" | |||
|                             style=" text-align: left;font-size: 12px;width: auto;margin: 0;margin-top:5px;color: #000 !important;margin-top: 5px;opacity: 1 !important;line-height: 17px;float: left;margin-top: 5px;margin-left: 16px;font-family: 'Montserrat',sans-serif;"> | |||
|                             Run your bar or restaurant methodical. </h3> | |||
|                     </div> | |||
|                 </div> | |||
|                 <div class="col-md-4 col-sm-6 col-xs-12" style=" margin-bottom: 10px; "> | |||
|                     <div> | |||
|                         <div style="width:75px;height:75px;background:#CE2D48; border-radius:100%;float: left;text-align: left;"> | |||
|                             <a href="https://www.cybrosys.com/odoo/industries/pos/" target="_blank"> <img | |||
|                                     src="https://www.cybrosys.com/images/odoo-index-industry-4.png" alt="Odoo Industry" | |||
|                                     style="    border-radius: 100%;width:100%;"/> </a></div> | |||
|                     </div> | |||
|                     <div style="width:70%;float:left;"> | |||
|                         <h3 class="oe_slogan" | |||
|                             style=" text-align: left;font-size: 14px;font-weight:800;width: auto;margin: 0;margin-top: 14px;color: #000 !important;margin-top: 5px;opacity: 1 !important;line-height: 17px;float: left;margin-top: 4px;margin-left: 16px;"> | |||
|                             <a href="https://www.cybrosys.com/odoo/industries/pos/" target="_blank" | |||
|                                style="list-style: none; color:#000; text-decoration: none;font-family: 'Montserrat',sans-serif;"> | |||
|                                 POS</a></h3> | |||
|                         <h3 class="oe_slogan" | |||
|                             style=" text-align: left;font-size: 12px;width: auto;margin: 0;margin-top:5px;color: #000 !important;margin-top: 5px;opacity: 1 !important;line-height: 17px;float: left;margin-top: 5px;margin-left: 16px;font-family: 'Montserrat',sans-serif;"> | |||
|                             Easy configuring and convivial selling. </h3> | |||
|                     </div> | |||
|                 </div> | |||
|                 <div class="col-md-4 col-sm-6 col-xs-12" style=" margin-bottom: 10px; "> | |||
|                     <div> | |||
|                         <div style="width:75px;height:75px;background:#CE2D48; border-radius:100%;float: left;text-align: left;"> | |||
|                             <a href="https://www.cybrosys.com/odoo/industries/ecommerce-website/" target="_blank"> <img | |||
|                                     src="https://www.cybrosys.com/images/odoo-index-industry-5.png" alt="Odoo Industry" | |||
|                                     style="    border-radius: 100%;width:100%;"/> </a></div> | |||
|                     </div> | |||
|                     <div style="width:70%;float:left;"> | |||
|                         <h3 class="oe_slogan" | |||
|                             style=" text-align: left;font-size: 14px;font-weight:800;width: auto;margin: 0;margin-top: 14px;color: #000 !important;margin-top: 5px;opacity: 1 !important;line-height: 17px;float: left;margin-top: 0px;margin-left: 16px;"> | |||
|                             <a href="https://www.cybrosys.com/odoo/industries/ecommerce-website/" target="_blank" | |||
|                                style="list-style: none; color:#000; text-decoration: none; font-family: 'Montserrat',sans-serif;"> | |||
|                                 E-commerce & Website</a></h3> | |||
|                         <h3 class="oe_slogan" | |||
|                             style=" text-align: left;font-size: 12px;width: auto;margin: 0;margin-top:5px;color: #000 !important;margin-top: 5px;opacity: 1 !important;line-height: 17px;float: left;margin-top: 5px;margin-left: 16px; font-family: 'Montserrat',sans-serif;"> | |||
|                             Mobile friendly, awe-inspiring product pages. </h3> | |||
|                     </div> | |||
|                 </div> | |||
|                 <div class="col-md-4 col-sm-6 col-xs-12" style=" margin-bottom: 10px; "> | |||
|                     <div> | |||
|                         <div style="width:75px;height:75px;background:#CE2D48; border-radius:100%;float: left;text-align: left;"> | |||
|                             <a href="https://www.cybrosys.com/odoo/industries/hotel-management-erp/" target="_blank"> | |||
|                                 <img src="https://www.cybrosys.com/images/odoo-index-industry-6.png" alt="Odoo Industry" | |||
|                                      style="    border-radius: 100%;width:100%;"/> </a></div> | |||
|                     </div> | |||
|                     <div style="width:70%;float:left;"> | |||
|                         <h3 class="oe_slogan" | |||
|                             style=" text-align: left;font-size: 14px;font-weight:800;width: auto;margin: 0;margin-top: 14px;color: #000 !important;margin-top: 5px;opacity: 1 !important;line-height: 17px;float: left;margin-top: 4px;margin-left: 16px;"> | |||
|                             <a href="https://www.cybrosys.com/odoo/industries/hotel-management-erp/" target="_blank" | |||
|                                style="list-style: none; color:#000; text-decoration: none; font-family: 'Montserrat',sans-serif;"> | |||
|                                 Hotel Management</a></h3> | |||
|                         <h3 class="oe_slogan" | |||
|                             style=" text-align: left;font-size: 12px;width: auto;margin: 0;margin-top:5px;color: #000 !important;margin-top: 5px;opacity: 1 !important;line-height: 17px;float: left;margin-top: 5px;margin-left: 16px; font-family: 'Montserrat',sans-serif;"> | |||
|                             An all-inclusive hotel management application. </h3> | |||
|                     </div> | |||
|                 </div> | |||
|                 <div class="col-md-4 col-sm-6 col-xs-12" style=" margin-bottom: 10px; "> | |||
|                     <div> | |||
|                         <div style="width:75px;height:75px;background:#CE2D48; border-radius:100%;float: left;text-align: left;"> | |||
|                             <a href="https://www.cybrosys.com/odoo/industries/education-erp-software/" target="_blank"> | |||
|                                 <img src="https://www.cybrosys.com/images/odoo-index-industry-7.png" alt="Odoo Industry" | |||
|                                      style="    border-radius: 100%;width:100%;"/> </a></div> | |||
|                     </div> | |||
|                     <div style="width:70%;float:left;"> | |||
|                         <h3 class="oe_slogan" | |||
|                             style=" text-align: left;font-size: 14px;font-weight:800;width: auto;margin: 0;margin-top: 14px;color: #000 !important;margin-top: 5px;opacity: 1 !important;line-height: 17px;float: left;margin-top: 4px;margin-left: 16px;"> | |||
|                             <a href="https://www.cybrosys.com/odoo/industries/education-erp-software/" target="_blank" | |||
|                                style="list-style: none; color:#000; text-decoration: none; font-family: 'Montserrat',sans-serif;"> | |||
|                                 Education</a></h3> | |||
|                         <h3 class="oe_slogan" | |||
|                             style=" text-align: left;font-size: 12px;width: auto;margin: 0;margin-top:5px;color: #000 !important;margin-top: 5px;opacity: 1 !important;line-height: 17px;float: left;margin-top: 5px;margin-left: 16px; font-family: 'Montserrat',sans-serif;"> | |||
|                             A Collaborative platform for educational management. </h3> | |||
|                     </div> | |||
|                 </div> | |||
|                 <div class="col-md-4 col-sm-6 col-xs-12" style=" margin-bottom: 10px; "> | |||
|                     <div> | |||
|                         <div style="width:75px;height:75px;background:#CE2D48; border-radius:100%;float: left;text-align: left;"> | |||
|                             <a href="https://www.cybrosys.com/odoo/industries/service-management/" target="_blank"> <img | |||
|                                     src="https://www.cybrosys.com/images/odoo-index-industry-8.png" alt="Odoo Industry" | |||
|                                     style="    border-radius: 100%;width:100%;"/> </a></div> | |||
|                     </div> | |||
|                     <div style="width:70%;float:left;"> | |||
|                         <h3 class="oe_slogan" | |||
|                             style=" text-align: left;font-size: 14px;font-weight:800;width: auto;margin: 0;margin-top: 14px;color: #000 !important;margin-top: 5px;opacity: 1 !important;line-height: 17px;float: left;margin-top: 4px;margin-left: 16px;"> | |||
|                             <a href="https://www.cybrosys.com/odoo/industries/service-management/" target="_blank" | |||
|                                style="list-style: none; color:#000; text-decoration: none; font-family: 'Montserrat',sans-serif;"> | |||
|                                 Service Management</a></h3> | |||
|                         <h3 class="oe_slogan" | |||
|                             style=" text-align: left;font-size: 12px;width: auto;margin: 0;margin-top:5px;color: #000 !important;margin-top: 5px;opacity: 1 !important;line-height: 17px;float: left;margin-top: 5px;margin-left: 16px; font-family: 'Montserrat',sans-serif;"> | |||
|                             Keep track of services and invoice accordingly. </h3> | |||
|                     </div> | |||
|                 </div> | |||
|             </div> | |||
|         </div> | |||
| </div> | |||
| </section> | |||
| <section class="oe_container" style="padding: 0% 0% 6% 0%;"> | |||
|     <center> | |||
|         <div class="col-md-12" style="margin: auto !important; | |||
|          width: 70%; | |||
|          padding: 30px;"> | |||
|             <h2 style="font-weight: 600;text-align: center;width: 100%;">Need Any Help?</h2> | |||
|             <hr style="margin-top: 0px;margin-bottom: 2%;border: 0;text-align: center;border-top: 3px solid #d21c22;width: 5%;"> | |||
|             <h4 style="font-size:16px;"> If you have anything to share with us based on your use of this module, please | |||
|                 let us know. We are ready to offer our support. </h4> | |||
|             <div class="col-md-6" style="float:left; padding:20px;"> | |||
|                 <h4><i class="fa fa-envelope"></i>Email us </h4> | |||
|                 <p>odoo@cybrosys.com / info@cybrosys.com</p> | |||
|             </div> | |||
|             <div class="col-md-6" style="float:left; padding:20px;"> | |||
|                 <h4><i class="fa fa-phone"></i> Contact Us </h4> | |||
|                 <a href="https://www.cybrosys.com/contact/" target="_blank"> www.cybrosys.com</a> | |||
|             </div> | |||
|         </div> | |||
|     </center> | |||
| </section> | |||
| <section class="oe_container" style="padding: 0% 0% 6% 0%;"> | |||
|     <div class="oe_slogan" style="margin-bottom: 0px;"> | |||
|         <div style=" display: flex; justify-content: center; flex-wrap: wrap; "> | |||
|         </div> | |||
|         <br> | |||
|         <img src="https://www.cybrosys.com/images/logo.png" style="width: 190px; margin-bottom: 25px;margin-top: 30px;" | |||
|              class="center-block"> | |||
|         <div style=" display: flex; justify-content: center; flex-wrap: wrap; "><a href="https://twitter.com/cybrosys" | |||
|                                                                                    target="_blank"><i | |||
|                 class="fa fa-2x fa-twitter" | |||
|                 style="color:white;background: #00a0d1;width:35px;height: 35px;padding-top: 7px;font-size: 21px;margin-right: 6px;border-radius: 100%;"></i></a> | |||
|             </td> | |||
|             <a href="https://www.linkedin.com/company/cybrosys-technologies-pvt-ltd" target="_blank"><i | |||
|                     class="fa fa-2x fa-linkedin" | |||
|                     style="color:white;background: #31a3d6;width:35px;height: 35px;padding-top: 7px;font-size: 21px;margin-right: 6px;border-radius: 100%;"></i></a> | |||
|             </td> | |||
|             <a href="https://www.facebook.com/cybrosystechnologies" target="_blank"><i class="fa fa-2x fa-facebook" | |||
|                                                                                        style="color:white;background: #3b5998;width:35px;  height: 35px;padding-top: 7px;font-size: 21px;margin-right: 6px;border-radius: 100%;"></i></a> | |||
|             </td> | |||
|             <a href="https://in.pinterest.com/cybrosys" target="_blank"><i class="fa fa-2x fa-pinterest" | |||
|                                                                            style="color:white;background: #ac0f18;width:35px;height: 35px;padding-top: 7px;font-size: 21px;margin-right: 6px;border-radius: 100%;"></i></a> | |||
|             </td> | |||
|         </div> | |||
|     </div> | |||
| </section> | |||
| </div> | |||
| @ -0,0 +1,544 @@ | |||
| odoo.define('dashboard_pos.Dashboard', function (require) { | |||
| "use strict"; | |||
| 
 | |||
| var AbstractAction = require('web.AbstractAction'); | |||
| var ajax = require('web.ajax'); | |||
| var core = require('web.core'); | |||
| var rpc = require('web.rpc'); | |||
| var session = require('web.session'); | |||
| var web_client = require('web.web_client'); | |||
| var _t = core._t; | |||
| var QWeb = core.qweb; | |||
| 
 | |||
| var PosDashboard = AbstractAction.extend({ | |||
|     template: 'PosDashboard', | |||
|     events: { | |||
|             'click .pos_order_today':'pos_order_today', | |||
|             'click .pos_order':'pos_order', | |||
|             'click .pos_total_sales':'pos_order', | |||
|             'click .pos_session':'pos_session', | |||
|             'click .pos_refund_orders':'pos_refund_orders', | |||
|             'click .pos_refund_today_orders':'pos_refund_today_orders', | |||
|             'change #pos_sales': 'onclick_pos_sales', | |||
|     }, | |||
| 
 | |||
|     init: function(parent, context) { | |||
|         this._super(parent, context); | |||
|         this.dashboards_templates = ['PosOrders','PosChart','PosCustomer']; | |||
|         this.payment_details = []; | |||
|         this.top_salesperson = []; | |||
|         this.selling_product = []; | |||
|         this.total_sale = []; | |||
|         this.total_order_count = []; | |||
|         this.total_refund_count = []; | |||
|         this.total_session = []; | |||
|         this.today_refund_total = []; | |||
|         this.today_sale = []; | |||
|     }, | |||
| 
 | |||
|     willStart: function() { | |||
|         var self = this; | |||
|         return $.when(ajax.loadLibs(this), this._super()).then(function() { | |||
|             return self.fetch_data(); | |||
|         }); | |||
|     }, | |||
| 
 | |||
|     start: function() { | |||
|         var self = this; | |||
|         this.set("title", 'Dashboard'); | |||
|         return this._super().then(function() { | |||
|             self.render_dashboards(); | |||
|             self.render_graphs(); | |||
|             self.$el.parent().addClass('oe_background_grey'); | |||
|         }); | |||
|     }, | |||
| 
 | |||
|     fetch_data: function() { | |||
|         var self = this; | |||
|         var def1 =  this._rpc({ | |||
|                 model: 'pos.order', | |||
|                 method: 'get_refund_details' | |||
|         }).then(function(result) { | |||
|            self.total_sale = result['total_sale'], | |||
|            self.total_order_count = result['total_order_count'] | |||
|            self.total_refund_count = result['total_refund_count'] | |||
|            self.total_session = result['total_session'] | |||
|            self.today_refund_total = result['today_refund_total'] | |||
|            self.today_sale = result['today_sale'] | |||
|         }); | |||
|       var def2 = self._rpc({ | |||
|             model: "pos.order", | |||
|             method: "get_details", | |||
|         }) | |||
|         .then(function (res) { | |||
|             self.payment_details = res['payment_details']; | |||
|             self.top_salesperson = res['salesperson']; | |||
|             self.selling_product = res['selling_product']; | |||
|         }); | |||
|         return $.when(def1,def2); | |||
|     }, | |||
| 
 | |||
|     render_dashboards: function() { | |||
|         var self = this; | |||
|             _.each(this.dashboards_templates, function(template) { | |||
|                 self.$('.o_pos_dashboard').append(QWeb.render(template, {widget: self})); | |||
|             }); | |||
|     }, | |||
|       render_graphs: function(){ | |||
|         var self = this; | |||
|          self.render_top_customer_graph(); | |||
|          self.render_top_product_graph(); | |||
|          self.render_product_category_graph(); | |||
|     }, | |||
| //      get_emp_image_url: function(employee){
 | |||
| //        return window.location.origin + '/web/image?model=pos.order&field=image&id='+employee;
 | |||
| //    },
 | |||
| 
 | |||
| 
 | |||
| 
 | |||
| 
 | |||
|        pos_order_today: function(e){ | |||
|         var self = this; | |||
|         var date = new Date(); | |||
|         var yesterday = new Date(date.getTime()); | |||
|         yesterday.setDate(date.getDate() - 1); | |||
|         console.log(yesterday) | |||
|         e.stopPropagation(); | |||
|         e.preventDefault(); | |||
| 
 | |||
|         session.user_has_group('hr.group_hr_user').then(function(has_group){ | |||
|             if(has_group){ | |||
|                 var options = { | |||
|                     on_reverse_breadcrumb: self.on_reverse_breadcrumb, | |||
|                 }; | |||
|                 self.do_action({ | |||
|                     name: _t("Today Order"), | |||
|                     type: 'ir.actions.act_window', | |||
|                     res_model: 'pos.order', | |||
|                     view_mode: 'tree,form,calendar', | |||
|                     view_type: 'form', | |||
|                     views: [[false, 'list'],[false, 'form']], | |||
|                     domain: [['date_order','<=', date],['date_order', '>=', yesterday]], | |||
|                     target: 'current' | |||
|                 }, options) | |||
|             } | |||
|         }); | |||
| 
 | |||
|     }, | |||
| 
 | |||
| 
 | |||
|       pos_refund_orders: function(e){ | |||
|         var self = this; | |||
|         var date = new Date(); | |||
| //        alert(date,"date")
 | |||
|         var yesterday = new Date(date.getTime()); | |||
|         yesterday.setDate(date.getDate() - 1); | |||
|         console.log(yesterday) | |||
|         e.stopPropagation(); | |||
|         e.preventDefault(); | |||
| 
 | |||
|         session.user_has_group('hr.group_hr_user').then(function(has_group){ | |||
|             if(has_group){ | |||
|                 var options = { | |||
|                     on_reverse_breadcrumb: self.on_reverse_breadcrumb, | |||
|                 }; | |||
|                 self.do_action({ | |||
|                     name: _t("Refund Orders"), | |||
|                     type: 'ir.actions.act_window', | |||
|                     res_model: 'pos.order', | |||
|                     view_mode: 'tree,form,calendar', | |||
|                     view_type: 'form', | |||
|                     views: [[false, 'list'],[false, 'form']], | |||
|                     domain: [['amount_total', '<', 0.0]], | |||
| 
 | |||
| //                    domain: [['date_order', '=', date]],
 | |||
|                     target: 'current' | |||
|                 }, options) | |||
|             } | |||
|         }); | |||
| 
 | |||
|     }, | |||
|     pos_refund_today_orders: function(e){ | |||
|         var self = this; | |||
|         var date = new Date(); | |||
| //        alert(date,"date")
 | |||
|         var yesterday = new Date(date.getTime()); | |||
|         yesterday.setDate(date.getDate() - 1); | |||
|         console.log(yesterday) | |||
|         e.stopPropagation(); | |||
|         e.preventDefault(); | |||
| 
 | |||
|         session.user_has_group('hr.group_hr_user').then(function(has_group){ | |||
|             if(has_group){ | |||
|                 var options = { | |||
|                     on_reverse_breadcrumb: self.on_reverse_breadcrumb, | |||
|                 }; | |||
|                 self.do_action({ | |||
|                     name: _t("Refund Orders"), | |||
|                     type: 'ir.actions.act_window', | |||
|                     res_model: 'pos.order', | |||
|                     view_mode: 'tree,form,calendar', | |||
|                     view_type: 'form', | |||
|                     views: [[false, 'list'],[false, 'form']], | |||
|                     domain: [['amount_total', '<', 0.0],['date_order','<=', date],['date_order', '>=', yesterday]], | |||
| //                    domain: [['date_order', '=', date]],
 | |||
|                     target: 'current' | |||
|                 }, options) | |||
|             } | |||
|         }); | |||
| 
 | |||
|     }, | |||
| 
 | |||
|         pos_order: function(e){ | |||
|         var self = this; | |||
|         var date = new Date(); | |||
|         var yesterday = new Date(date.getTime()); | |||
|         yesterday.setDate(date.getDate() - 1); | |||
|         console.log(yesterday) | |||
|         e.stopPropagation(); | |||
|         e.preventDefault(); | |||
|         session.user_has_group('hr.group_hr_user').then(function(has_group){ | |||
|             if(has_group){ | |||
|                 var options = { | |||
|                     on_reverse_breadcrumb: self.on_reverse_breadcrumb, | |||
|                 }; | |||
|                 self.do_action({ | |||
|                     name: _t("Total Order"), | |||
|                     type: 'ir.actions.act_window', | |||
|                     res_model: 'pos.order', | |||
|                     view_mode: 'tree,form,calendar', | |||
|                     view_type: 'form', | |||
|                     views: [[false, 'list'],[false, 'form']], | |||
| //                    domain: [['amount_total', '<', 0.0]],
 | |||
|                     target: 'current' | |||
|                 }, options) | |||
|             } | |||
|         }); | |||
| 
 | |||
|     }, | |||
|     pos_session: function(e){ | |||
|         var self = this; | |||
|         e.stopPropagation(); | |||
|         e.preventDefault(); | |||
|         session.user_has_group('hr.group_hr_user').then(function(has_group){ | |||
|             if(has_group){ | |||
|                 var options = { | |||
|                     on_reverse_breadcrumb: self.on_reverse_breadcrumb, | |||
|                 }; | |||
|                 self.do_action({ | |||
|                     name: _t("sessions"), | |||
|                     type: 'ir.actions.act_window', | |||
|                     res_model: 'pos.session', | |||
|                     view_mode: 'tree,form,calendar', | |||
|                     view_type: 'form', | |||
|                     views: [[false, 'list'],[false, 'form']], | |||
| //                     domain: [['state','=', In Progress]],
 | |||
|                     target: 'current' | |||
|                 }, options) | |||
|             } | |||
|         }); | |||
| 
 | |||
|     }, | |||
| 
 | |||
|      onclick_pos_sales:function(events){ | |||
|         var option = $(events.target).val(); | |||
|         console.log('came monthly') | |||
|        var self = this | |||
|         var ctx = self.$("#canvas_1"); | |||
|             rpc.query({ | |||
|                 model: "pos.order", | |||
|                 method: "get_department", | |||
|                 args: [option], | |||
|             }).then(function (arrays) { | |||
|             console.log(arrays) | |||
|           var data = { | |||
|             labels: arrays[1], | |||
|             datasets: [ | |||
|               { | |||
|                 label: arrays[2], | |||
|                 data: arrays[0], | |||
|                 backgroundColor: [ | |||
|                   "rgba(255, 99, 132,1)", | |||
|                   "rgba(54, 162, 235,1)", | |||
|                   "rgba(75, 192, 192,1)", | |||
|                   "rgba(153, 102, 255,1)", | |||
|                   "rgba(10,20,30,1)" | |||
|                 ], | |||
|                 borderColor: [ | |||
|                  "rgba(255, 99, 132, 0.2)", | |||
|                   "rgba(54, 162, 235, 0.2)", | |||
|                   "rgba(75, 192, 192, 0.2)", | |||
|                   "rgba(153, 102, 255, 0.2)", | |||
|                   "rgba(10,20,30,0.3)" | |||
|                 ], | |||
|                 borderWidth: 1 | |||
|               }, | |||
| 
 | |||
|             ] | |||
|           }; | |||
| 
 | |||
|   //options
 | |||
|           var options = { | |||
|             responsive: true, | |||
|             title: { | |||
|               display: true, | |||
|               position: "top", | |||
|               text: "SALE DETAILS", | |||
|               fontSize: 18, | |||
|               fontColor: "#111" | |||
|             }, | |||
|             legend: { | |||
|               display: true, | |||
|               position: "bottom", | |||
|               labels: { | |||
|                 fontColor: "#333", | |||
|                 fontSize: 16 | |||
|               } | |||
|             }, | |||
|             scales: { | |||
|               yAxes: [{ | |||
|                 ticks: { | |||
|                   min: 0 | |||
|                 } | |||
|               }] | |||
|             } | |||
|           }; | |||
| 
 | |||
|           //create Chart class object
 | |||
|           if (window.myCharts != undefined) | |||
|           window.myCharts.destroy(); | |||
|           window.myCharts = new Chart(ctx, { | |||
| //          var chart = new Chart(ctx, {
 | |||
|             type: "bar", | |||
|             data: data, | |||
|             options: options | |||
|           }); | |||
| 
 | |||
|         }); | |||
|         }, | |||
| 
 | |||
| 
 | |||
|      render_top_customer_graph:function(){ | |||
|        var self = this | |||
|         var ctx = self.$(".top_customer"); | |||
|             rpc.query({ | |||
|                 model: "pos.order", | |||
|                 method: "get_the_top_customer", | |||
|             }).then(function (arrays) { | |||
| 
 | |||
| 
 | |||
|           var data = { | |||
|             labels: arrays[1], | |||
|             datasets: [ | |||
|               { | |||
|                 label: "", | |||
|                 data: arrays[0], | |||
|                 backgroundColor: [ | |||
|                   "rgb(148, 22, 227)", | |||
|                   "rgba(54, 162, 235)", | |||
|                   "rgba(75, 192, 192)", | |||
|                   "rgba(153, 102, 255)", | |||
|                   "rgba(10,20,30)" | |||
|                 ], | |||
|                 borderColor: [ | |||
|                  "rgba(255, 99, 132,)", | |||
|                   "rgba(54, 162, 235,)", | |||
|                   "rgba(75, 192, 192,)", | |||
|                   "rgba(153, 102, 255,)", | |||
|                   "rgba(10,20,30,)" | |||
|                 ], | |||
|                 borderWidth: 1 | |||
|               }, | |||
| 
 | |||
|             ] | |||
|           }; | |||
| 
 | |||
|   //options
 | |||
|           var options = { | |||
|             responsive: true, | |||
|             title: { | |||
|               display: true, | |||
|               position: "top", | |||
|               text: " Top Customer", | |||
|               fontSize: 18, | |||
|               fontColor: "#111" | |||
|             }, | |||
|             legend: { | |||
|               display: true, | |||
|               position: "bottom", | |||
|               labels: { | |||
|                 fontColor: "#333", | |||
|                 fontSize: 16 | |||
|               } | |||
|             }, | |||
|             scales: { | |||
|               yAxes: [{ | |||
|                 ticks: { | |||
|                   min: 0 | |||
|                 } | |||
|               }] | |||
|             } | |||
|           }; | |||
| 
 | |||
|           //create Chart class object
 | |||
|           var chart = new Chart(ctx, { | |||
|             type: "pie", | |||
|             data: data, | |||
|             options: options | |||
|           }); | |||
| 
 | |||
|         }); | |||
|         }, | |||
| 
 | |||
|      render_top_product_graph:function(){ | |||
|        var self = this | |||
|         var ctx = self.$(".top_selling_product"); | |||
|             rpc.query({ | |||
|                 model: "pos.order", | |||
|                 method: "get_the_top_products", | |||
|             }).then(function (arrays) { | |||
| 
 | |||
| 
 | |||
|           var data = { | |||
|             labels: arrays[1], | |||
|             datasets: [ | |||
|               { | |||
|                 label: "Quantity", | |||
|                 data: arrays[0], | |||
|                 backgroundColor: [ | |||
|                   "rgba(255, 99, 132,1)", | |||
|                   "rgba(54, 162, 235,1)", | |||
|                   "rgba(75, 192, 192,1)", | |||
|                   "rgba(153, 102, 255,1)", | |||
|                   "rgba(10,20,30,1)" | |||
|                 ], | |||
|                 borderColor: [ | |||
|                  "rgba(255, 99, 132, 0.2)", | |||
|                   "rgba(54, 162, 235, 0.2)", | |||
|                   "rgba(75, 192, 192, 0.2)", | |||
|                   "rgba(153, 102, 255, 0.2)", | |||
|                   "rgba(10,20,30,0.3)" | |||
|                 ], | |||
|                 borderWidth: 1 | |||
|               }, | |||
| 
 | |||
|             ] | |||
|           }; | |||
| 
 | |||
|   //options
 | |||
|           var options = { | |||
|             responsive: true, | |||
|             title: { | |||
|               display: true, | |||
|               position: "top", | |||
|               text: " Top products", | |||
|               fontSize: 18, | |||
|               fontColor: "#111" | |||
|             }, | |||
|             legend: { | |||
|               display: true, | |||
|               position: "bottom", | |||
|               labels: { | |||
|                 fontColor: "#333", | |||
|                 fontSize: 16 | |||
|               } | |||
|             }, | |||
|             scales: { | |||
|               yAxes: [{ | |||
|                 ticks: { | |||
|                   min: 0 | |||
|                 } | |||
|               }] | |||
|             } | |||
|           }; | |||
| 
 | |||
|           //create Chart class object
 | |||
|           var chart = new Chart(ctx, { | |||
|             type: "horizontalBar", | |||
|             data: data, | |||
|             options: options | |||
|           }); | |||
| 
 | |||
|         }); | |||
|         }, | |||
| 
 | |||
|      render_product_category_graph:function(){ | |||
|            var self = this | |||
|         var ctx = self.$(".top_product_categories"); | |||
|             rpc.query({ | |||
|                 model: "pos.order", | |||
|                 method: "get_the_top_categories", | |||
|             }).then(function (arrays) { | |||
| 
 | |||
| 
 | |||
|           var data = { | |||
|             labels: arrays[1], | |||
|             datasets: [ | |||
|               { | |||
|                 label: "Quantity", | |||
|                 data: arrays[0], | |||
|                 backgroundColor: [ | |||
|                   "rgba(255, 99, 132,1)", | |||
|                   "rgba(54, 162, 235,1)", | |||
|                   "rgba(75, 192, 192,1)", | |||
|                   "rgba(153, 102, 255,1)", | |||
|                   "rgba(10,20,30,1)" | |||
|                 ], | |||
|                 borderColor: [ | |||
|                  "rgba(255, 99, 132, 0.2)", | |||
|                   "rgba(54, 162, 235, 0.2)", | |||
|                   "rgba(75, 192, 192, 0.2)", | |||
|                   "rgba(153, 102, 255, 0.2)", | |||
|                   "rgba(10,20,30,0.3)" | |||
|                 ], | |||
|                 borderWidth: 1 | |||
|               }, | |||
| 
 | |||
| 
 | |||
|             ] | |||
|           }; | |||
| 
 | |||
|   //options
 | |||
|           var options = { | |||
|             responsive: true, | |||
|             title: { | |||
|               display: true, | |||
|               position: "top", | |||
|               text: " Top product categories", | |||
|               fontSize: 18, | |||
|               fontColor: "#111" | |||
|             }, | |||
|             legend: { | |||
|               display: true, | |||
|               position: "bottom", | |||
|               labels: { | |||
|                 fontColor: "#333", | |||
|                 fontSize: 16 | |||
|               } | |||
|             }, | |||
|             scales: { | |||
|               yAxes: [{ | |||
|                 ticks: { | |||
|                   min: 0 | |||
|                 } | |||
|               }] | |||
|             } | |||
|           }; | |||
| 
 | |||
|           //create Chart class object
 | |||
|           var chart = new Chart(ctx, { | |||
|             type: "horizontalBar", | |||
|             data: data, | |||
|             options: options | |||
|           }); | |||
| 
 | |||
|         }); | |||
|         }, | |||
| }); | |||
| 
 | |||
| 
 | |||
| core.action_registry.add('pos_dashboard', PosDashboard); | |||
| 
 | |||
| return PosDashboard; | |||
| 
 | |||
| }); | |||
| @ -0,0 +1,305 @@ | |||
| <?xml version="1.0" encoding="UTF-8"?> | |||
| <templates id="template" xml:space="preserve"> | |||
|     <t t-name="PosDashboard"> | |||
|         <div class="oh_dashboards"> | |||
|             <div class="container-fluid o_pos_dashboard"> | |||
|             </div> | |||
|         </div> | |||
|     </t> | |||
|     <t t-name="PosOrders"> | |||
|         <div class="row main-section"> | |||
|             <div class="col-md-4 col-sm-6 pos_order_today oh-payslip"> | |||
|                         <div class="oh-card" style="width: 288px;"> | |||
|                             <div class="oh-card-body"> | |||
|                                 <div class="stat-widget-one"> | |||
| <!--                                    <div class="stat-icon" style="background:#5bcbd0"><t t-esc="widget.today_sale"/></div>--> | |||
| 
 | |||
|                                     <div class="stat-icon" style="background:#5bcbd0"><i class="fa fa-shopping-bag"/></div> | |||
|                                     <div class="stat-content"> | |||
|                                         <div class="stat-head">Today Orders</div> | |||
|                                         <div class="stat_count"><t t-esc="widget.today_sale"/></div> | |||
|                                     </div> | |||
|                                 </div> | |||
|                             </div> | |||
|                         </div> | |||
|                     </div> | |||
|             <div class="col-md-4 col-sm-6 pos_order oh-payslip"> | |||
|                                     <div class="oh-card" style="width: 288px;"> | |||
|                                         <div class="oh-card-body"> | |||
|                                             <div class="stat-widget-one"> | |||
| <!--                                                <div class="stat-icon" style="background:#645bd0"><t t-esc="widget.total_order_count"/></div>--> | |||
|                                                 <div class="stat-icon" style="background:#645bd0"><i class="fa fa-shopping-bag"/></div> | |||
|                                                 <div class="stat-content"> | |||
|                                                     <div class="stat-head">Total Orders</div> | |||
|                                                     <div class="stat_count"><t t-esc="widget.total_order_count"/></div> | |||
|                                                 </div> | |||
|                                             </div> | |||
|                                         </div> | |||
|                                     </div> | |||
|                                 </div> | |||
|             <div class="col-md-4 col-sm-6 pos_total_sales oh-payslip"> | |||
|                                     <div class="oh-card" style="width: 350px;"> | |||
|                                         <div class="oh-card-body"> | |||
|                                             <div class="stat-widget-one"> | |||
|                                                 <div class="stat-icon" style="background:#85d05b"><i class="fa fa-shopping-cart"/></div> | |||
|                                                 <!--                                                <div class="stat-icon" style="width:150px;background:##85d05b"><t t-esc="widget.total_sale"/></div>--> | |||
|                                                 <div class="stat-content"> | |||
|                                                     <div class="stat-head">Total Sales</div> | |||
|                                                     <div class="stat_count"><t t-esc="widget.total_sale"/></div> | |||
|                                                 </div> | |||
|                                             </div> | |||
|                                         </div> | |||
|                                     </div> | |||
|                                 </div> | |||
|             <div class="col-md-4 col-sm-6 pos_session oh-payslip"> | |||
|                                             <div class="oh-card" style="width: 288px;"> | |||
|                                                 <div class="oh-card-body"> | |||
|                                                     <div class="stat-widget-one"> | |||
|                                                         <div class="stat-icon" style="background:#d05bb8"><i class="fa fa-signal"/></div> | |||
|                                                         <div class="stat-content"> | |||
|                                                             <div class="stat-head">Sessions</div> | |||
|                                                             <div class="stat_count"><t t-esc="widget.total_session"/></div> | |||
|                                                         </div> | |||
|                                                     </div> | |||
|                                                 </div> | |||
|                                             </div> | |||
|                                 </div> | |||
| 
 | |||
|             <div class="col-md-4 col-sm-6 pos_refund_orders oh-payslip"> | |||
|                                     <div class="oh-card" style="width: 288px;"> | |||
|                                         <div class="oh-card-body"> | |||
|                                             <div class="stat-widget-one"> | |||
|                                                 <div class="stat-icon" style="background:#d0c35b"><i class="fa fa-minus-circle"/></div> | |||
|                                                 <div class="stat-content"> | |||
|                                                     <div class="stat-head">Total Refund Orders</div> | |||
|                                                     <div class="stat_count"><t t-esc="widget.total_refund_count"/></div> | |||
|                                                 </div> | |||
|                                             </div> | |||
|                                         </div> | |||
|                                     </div> | |||
|                                 </div> | |||
|             <div class="col-md-4 col-sm-6 pos_refund_today_orders oh-payslip"> | |||
|                                     <div class="oh-card" style="width: 350px;"> | |||
|                                         <div class="oh-card-body"> | |||
|                                             <div class="stat-widget-one"> | |||
|                                                 <div class="stat-icon" style="background:#5b8ed0"><i class="fa fa-minus-circle"/></div> | |||
|                                                 <div class="stat-content"> | |||
|                                                     <div class="stat-head">Today Refund Order</div> | |||
|                                                     <div class="stat_count"><t t-esc="widget.today_refund_total"/></div> | |||
|                                                 </div> | |||
|                                             </div> | |||
|                                         </div> | |||
|                                     </div> | |||
|                                 </div> | |||
| 
 | |||
|             </div> | |||
|         </t> | |||
|     <t t-name="PosChart"> | |||
|         <div class="col-xs-12 col-sm-12 col-lg-12 col-md-12"> | |||
|             <div class="row" style="margin:0px;"> | |||
|                 <div class="col-md-6" id="col-graph"> | |||
|                     <div class="card"> | |||
|                         <div class="card-header"> | |||
|                             <div class="card-title"> | |||
|                                 <b> | |||
|                                     <h3 class="custom-h3">SALE REPORT</h3> | |||
|                                 </b> | |||
|                             </div> | |||
|                             <div class="card-tools"> | |||
|                             <select id="pos_sales"> | |||
| <!--                                <option value="pos_hourly_sales">Select</option>--> | |||
|                                 <option style="display:none;"> -- select an option -- </option> | |||
|                                 <option value="pos_hourly_sales">Hourly</option> | |||
|                                 <option value="pos_monthly_sales">Monthly</option> | |||
|                                 <option value="pos_year_sales">Yearly</option> | |||
|                             </select> | |||
|                         </div> | |||
|                         </div> | |||
|                         <div class="card-body mt-3" id="in_ex_body_hide"> | |||
|                              <div class="row"> | |||
|                                 <div class="col-md-12"> | |||
|                                    <p id="myelement1"></p> | |||
|                                     <div class="chart"> | |||
|                                       <canvas id="canvas_1" width="200" height="90"></canvas> | |||
|                                    </div> | |||
|                                 </div> | |||
|                              </div> | |||
|                         </div> | |||
|                     </div> | |||
|                 </div> | |||
|                 <div class="col-sm-6 col-lg-6  top_customer_graph_view"> | |||
|                     <div class="oh-card text-color"> | |||
|                         <div class="oh-card-body pb-0"> | |||
|                             <h4 class="mb-0"> | |||
|                             </h4> | |||
|                         </div> | |||
|                         <canvas class="top_customer" width="200" height="120"/> | |||
|                     </div> | |||
|                 </div> | |||
|                 <div class="col-sm-6 col-lg-6  selling_product_graph_view"> | |||
|                     <div class="oh-card text-color"> | |||
|                         <div class="oh-card-body pb-0"> | |||
|                             <h4 class="mb-0"> | |||
|                             </h4> | |||
|                         </div> | |||
|                         <canvas class="top_selling_product" width="200" height="120"/> | |||
|                     </div> | |||
|                 </div> | |||
|                 <div class="col-sm-6 col-lg-6  selling_product_graph_view"> | |||
|                     <div class="oh-card text-color"> | |||
|                         <div class="oh-card-body pb-0"> | |||
|                             <h4 class="mb-0"> | |||
|                             </h4> | |||
|                         </div> | |||
|                         <canvas class="top_product_categories" width="200" height="120"/> | |||
|                     </div> | |||
|                 </div> | |||
|             </div> | |||
|         </div> | |||
| 
 | |||
|     </t> | |||
| 
 | |||
|     <t t-name="PosCustomer"> | |||
|          <div class="employee_dashboard_main"> | |||
|         <div class="row main-section"> | |||
|             <div class="col-md-4 col-lg-4"> | |||
|                 <div class="hr_notification" style="background: #fff;transition: transform 0.2s ease, box-shadow 0.2s ease;will-change: transform, box-shadow;box-shadow: 0 10px 40px 0 rgba(62,57,107,0.07), 0 2px 9px 0 rgba(62,57,107,0.06); | |||
|                 height: 316px;overflow-y: auto;margin-bottom: 15px;"> | |||
|                     <div class="hr_notification_head" | |||
|                          style="font-size: 17px;text-align: center;padding: 12px 0;color: #fff;font-weight: 300;background: #de6a5e;margin-bottom: 9px;"> | |||
|                    Sale by Salesperson | |||
|                     </div> | |||
|                     <div class="col-sm-12 col-lg-12" style="padding:0;"> | |||
|                             <div class="text-color"> | |||
|                                 <div class=""> | |||
|                                 <div class="media"> | |||
|                                 <div class="media-body"> | |||
|                                     <table class="table table-sm"> | |||
|                                         <thead> | |||
|                                             <tr> | |||
|                                                 <th rowspan="12">Name   </th> | |||
|                                                 <th rowspan="12">orders</th> | |||
|                                                 <th rowspan="12">Amount</th> | |||
|                                             </tr> | |||
|                                         </thead> | |||
|                                         <tbody> | |||
|                                              <t t-foreach="widget.top_salesperson" t-as="salesperson"> | |||
|                                                 <tr> | |||
|                                                     <td> | |||
|                                                         <h2 class="text-color display-6" style="font-size: 15px;"> | |||
|                                                             <t t-esc="salesperson[0]"/> | |||
|                                                         </h2> | |||
|                                                     </td> | |||
|                                                     <td> | |||
|                                                         <h2 class="text-color display-6" style="font-size: 15px;"> | |||
|                                                             <t t-esc="salesperson[2]"/> | |||
|                                                         </h2> | |||
|                                                     </td> | |||
|                                                     <td> | |||
|                                                         <h2 class="text-color display-6" style="font-size: 15px;"> | |||
|                                                             <t t-esc="salesperson[1]"/> | |||
|                                                         </h2> | |||
|                                                     </td> | |||
|                                                 </tr> | |||
|                                             </t> | |||
|                                         </tbody> | |||
|                                     </table> | |||
|                                 </div></div></div></div> | |||
|                             </div> | |||
|                     </div> | |||
|             </div> | |||
|             <div class="col-md-4 col-lg-4"> | |||
|                     <div class="hr_notification" style="background: #fff;transition: transform 0.2s ease, box-shadow 0.2s ease;will-change: transform, box-shadow;box-shadow: 0 10px 40px 0 rgba(62,57,107,0.07), 0 2px 9px 0 rgba(62,57,107,0.06); | |||
|                     height: 316px;overflow-y: auto;margin-bottom: 15px;"> | |||
|                         <div class="hr_notification_head" | |||
|                              style="font-size: 17px;text-align: center;padding: 12px 0;color: #fff;font-weight: 300;background:#de6a5e;;margin-bottom: 9px;"> | |||
|                           Payment Method | |||
|                         </div> | |||
|                         <div class="col-sm-12 col-lg-12" style="padding:0;"> | |||
|                                 <div class="text-color"> | |||
|                                     <div class=""> | |||
|                                     <div class="media"> | |||
|                                     <div class="media-body"> | |||
|                                         <table class="table table-sm"> | |||
|                                             <thead> | |||
|                                                 <tr> | |||
|                                                     <th rowspan="12">Payment Method   </th> | |||
|                                                     <th rowspan="12">Amount</th> | |||
|                                                 </tr> | |||
|                                             </thead> | |||
|                                             <tbody> | |||
|                                                  <t t-foreach="widget.payment_details" t-as="payment_method"> | |||
|                                                     <tr> | |||
|                                                         <td> | |||
|                                                             <h2 class="text-color display-6" style="font-size: 15px;"> | |||
|                                                                 <t t-esc="payment_method[0]"/> | |||
|                                                             </h2> | |||
|                                                         </td> | |||
|                                                         <td> | |||
|                                                             <h2 class="text-color display-6" style="font-size: 15px;"> | |||
|                                                                 <t t-esc="payment_method[1]"/> | |||
|                                                             </h2> | |||
|                                                         </td> | |||
|                                                     </tr> | |||
|                                                 </t> | |||
|                                             </tbody> | |||
|                                         </table> | |||
|                                     </div></div></div></div> | |||
|                                 </div> | |||
|                     </div> | |||
|             </div> | |||
| 
 | |||
| 
 | |||
|             <div class="col-md-4 col-lg-4"> | |||
|                 <div class="hr_notification" style="background: #fff;transition: transform 0.2s ease, box-shadow 0.2s ease;will-change: transform, box-shadow;box-shadow: 0 10px 40px 0 rgba(62,57,107,0.07), 0 2px 9px 0 rgba(62,57,107,0.06); | |||
|                 height: 316px;overflow-y: auto;margin-bottom: 15px;"> | |||
|                     <div class="hr_notification_head" | |||
|                          style="font-size: 17px;text-align: center;padding: 12px 0;color: #fff;font-weight: 300;background: #de6a5e;margin-bottom: 9px;"> | |||
|                  Session Status | |||
|                     </div> | |||
|                     <div class="col-sm-12 col-lg-12" style="padding:0;"> | |||
|                             <div class="text-color"> | |||
|                                 <div class=""> | |||
|                                 <div class="media"> | |||
|                                 <div class="media-body"> | |||
|                                     <table class="table table-sm"> | |||
|                                         <thead> | |||
|                                             <tr> | |||
|                                                 <th rowspan="12">Session   </th> | |||
|                                                 <th rowspan="12">Status</th> | |||
|                                                 <!--                                                <th rowspan="12">Amount</th>--> | |||
|                                             </tr> | |||
|                                         </thead> | |||
|                                         <tbody> | |||
|                                              <t t-foreach="widget.selling_product" t-as="session"> | |||
|                                                 <tr> | |||
|                                                     <td> | |||
|                                                         <h2 class="text-color display-6" style="font-size: 15px;"> | |||
|                                                             <t t-esc="session['session']"/> | |||
|                                                         </h2> | |||
|                                                     </td> | |||
|                                                     <td> | |||
|                                                         <h2 class="text-color display-6" style="font-size: 15px;"> | |||
|                                                             <t t-esc="session['status']"/> | |||
|                                                         </h2> | |||
|                                                     </td> | |||
|                                                     <!--                                                    <td>--> | |||
|                                                     <!--                                                        <h2 class="text-color display-6" style="font-size: 15px;">--> | |||
|                                                     <!--                                                            <t t-esc="salesperson[1]"/>--> | |||
|                                                     <!--                                                        </h2>--> | |||
|                                                     <!--                                                    </td>--> | |||
|                                                 </tr> | |||
|                                             </t> | |||
|                                         </tbody> | |||
|                                     </table> | |||
|                                 </div></div></div></div> | |||
|                             </div> | |||
|                     </div> | |||
|             </div> | |||
| 
 | |||
|             </div> | |||
|          </div> | |||
| 
 | |||
| 
 | |||
|     </t> | |||
| </templates> | |||
| @ -0,0 +1,21 @@ | |||
| <odoo> | |||
|     <data> | |||
|         <record id="action_pos_dashboard" model="ir.actions.client"> | |||
|             <field name="name">Dashboard</field> | |||
|             <field name="tag">pos_dashboard</field> | |||
|         </record> | |||
| 
 | |||
|         <menuitem name="Dashboard" id="pos_dashboard" parent="point_of_sale.menu_point_rep" | |||
|                   sequence="1" | |||
|                   groups="point_of_sale.group_pos_manager" | |||
|                   action="action_pos_dashboard"/> | |||
|     </data> | |||
| 
 | |||
|     <template id="assets_backend_dashboard" name="POS Dashboard assets inherit" inherit_id="web.assets_backend"> | |||
|         <xpath expr="." position="inside"> | |||
|             <script type="text/javascript" src="/dashboard_pos/static/src/js/pos_dashboard.js"/> | |||
|             <link rel="stylesheet" href="/dashboard_pos/static/src/css/pos_dashboard.css"/> | |||
|             <script src="https://cdnjs.cloudflare.com/ajax/libs/Chart.js/2.8.0/Chart.bundle.js"></script> | |||
|         </xpath> | |||
|     </template> | |||
| </odoo> | |||
| @ -0,0 +1,14 @@ | |||
| POS Serial Number Validator v14 | |||
| =============================== | |||
| 
 | |||
| Validate Serial number of a product by checking availability in stock | |||
| 
 | |||
| Credits | |||
| ======= | |||
| Cybrosys Techno Solutions | |||
| 
 | |||
| Author | |||
| ------ | |||
| * Akhilesh N S <odoo@cybrosys.com> | |||
| * V13 Sreenath | |||
| * V14 Jibin James | |||
| @ -0,0 +1,22 @@ | |||
| # -*- coding: utf-8 -*- | |||
| ############################################################################## | |||
| # | |||
| #    Cybrosys Technologies Pvt. Ltd. | |||
| # | |||
| #    Copyright (C) 2019-TODAY Cybrosys Technologies(<http://www.cybrosys.com>). | |||
| #    Author: Akhilesh N S(<http://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 | |||
| #    GENERAL PUBLIC LICENSE (LGPL v3) along with this program. | |||
| #    If not, see <http://www.gnu.org/licenses/>. | |||
| # | |||
| ############################################################################## | |||
| 
 | |||
| from . import models | |||
| @ -0,0 +1,40 @@ | |||
| # -*- coding: utf-8 -*- | |||
| ############################################################################## | |||
| # | |||
| #    Cybrosys Technologies Pvt. Ltd. | |||
| # | |||
| #    Copyright (C) 2020-TODAY Cybrosys Technologies(<http://www.cybrosys.com>). | |||
| #    Author: Akhilesh N S(<http://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 | |||
| #    GENERAL PUBLIC LICENSE (LGPL v3) along with this program. | |||
| #    If not, see <http://www.gnu.org/licenses/>. | |||
| # | |||
| ############################################################################## | |||
| 
 | |||
| { | |||
|     'name': 'POS Serial Number Validator', | |||
|     'version': '14.0.1.0.0', | |||
|     'author': 'Cybrosys Techno Solutions', | |||
|     'company': 'Cybrosys Techno Solutions', | |||
|     'website': 'https://www.cybrosys.com', | |||
|     'category': 'Point of Sale', | |||
|     'summary': """Validate Serial number of a product by checking availability in stock""", | |||
|     'description': """Validate Serial number of a product by checking availability in stock""", | |||
|     'depends': ['point_of_sale'], | |||
|     'data': [ | |||
|         'static/src/xml/pos_templates.xml', | |||
|     ], | |||
|     'images': ['static/description/banner.png'], | |||
|     'license': 'LGPL-3', | |||
|     'installable': True, | |||
|     'auto_install': False, | |||
| } | |||
| 
 | |||
| @ -0,0 +1,7 @@ | |||
| ## Module <pos_traceability_validation> | |||
| 
 | |||
| #### 08.04.2021 | |||
| #### Version 14.0.1.0.0 | |||
| #### ADD | |||
| 
 | |||
| Initial Commit | |||
| @ -0,0 +1,22 @@ | |||
| # -*- coding: utf-8 -*- | |||
| ############################################################################## | |||
| # | |||
| #    Cybrosys Technologies Pvt. Ltd. | |||
| # | |||
| #    Copyright (C) 2019-TODAY Cybrosys Technologies(<http://www.cybrosys.com>). | |||
| #    Author: Akhilesh N S(<http://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 | |||
| #    GENERAL PUBLIC LICENSE (LGPL v3) along with this program. | |||
| #    If not, see <http://www.gnu.org/licenses/>. | |||
| # | |||
| ############################################################################## | |||
| 
 | |||
| from . import traceability_validation | |||
| @ -0,0 +1,45 @@ | |||
| # -*- coding: utf-8 -*- | |||
| ############################################################################## | |||
| # | |||
| #    Cybrosys Technologies Pvt. Ltd. | |||
| # | |||
| #    Copyright (C) 2019-TODAY Cybrosys Technologies(<http://www.cybrosys.com>). | |||
| #    Author: Akhilesh N S(<http://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 | |||
| #    GENERAL PUBLIC LICENSE (LGPL v3) along with this program. | |||
| #    If not, see <http://www.gnu.org/licenses/>. | |||
| # | |||
| ############################################################################## | |||
| 
 | |||
| from odoo import models, api | |||
| 
 | |||
| 
 | |||
| class ValidateLotNumber(models.Model): | |||
|     _name = 'serial_no.validation' | |||
| 
 | |||
|     @api.model | |||
|     def validate_lots(self, lots): | |||
|         processed = [] | |||
|         LotObj = self.env['stock.production.lot'] | |||
|         for lot in lots: | |||
|             lot_id = LotObj.search([('name', '=', lot)], limit=1) | |||
|             try: | |||
|                 if lot_id.product_qty > 0 and lot not in processed: | |||
|                     processed.append(lot) | |||
|                     continue | |||
|                 else: | |||
|                     if lot in processed: | |||
|                         return ['duplicate', lot] | |||
|                     else: | |||
|                         return ['no_stock', lot] | |||
|             except Exception: | |||
|                 return ['except', lot] | |||
|         return True | |||
| After Width: | Height: | Size: 89 KiB | 
| After Width: | Height: | Size: 50 KiB | 
| After Width: | Height: | Size: 33 KiB | 
| After Width: | Height: | Size: 58 KiB | 
| After Width: | Height: | Size: 91 KiB | 
| After Width: | Height: | Size: 86 KiB | 
| After Width: | Height: | Size: 67 KiB | 
| After Width: | Height: | Size: 62 KiB | 
| After Width: | Height: | Size: 70 KiB | 
| After Width: | Height: | Size: 15 KiB | 
| After Width: | Height: | Size: 51 KiB | 
| After Width: | Height: | Size: 40 KiB | 
| After Width: | Height: | Size: 54 KiB | 
| After Width: | Height: | Size: 57 KiB | 
| @ -0,0 +1,296 @@ | |||
| <div class="row" style="margin: 0;position: relative;color: #000;background-position: center;background: #ffffff;border-bottom: 1px solid #e4e4e4;text-align: center; margin: auto; display: flex;justify-content: center;">  <a  href="https://www.cybrosys.com/" target="_blank"><img src="images/cybrosys.png" style=" width: 293px; padding: 1rem 0rem; margin: auto" alt="cybrosys-logo"></a> </div> | |||
| <div class="row" style="margin:75px 0;position: relative;color: #000;background-position: center;background: #ffffff;border-bottom: 1px solid #e4e4e4; padding-bottom: 30px;"> | |||
|    <div class="col-md-7 col-sm-12 col-xs-12" style="padding: 0px"> | |||
|       <div style=" margin: 0 0 0px;padding: 20px 0 10;font-size: 23px;line-height: 35px;font-weight: 400;color: #000;border-top: 1px solid rgba(255,255,255,0.1);border-bottom: 1px solid rgba(255,255,255,0.11);text-align: left;"> | |||
|          <h1 style="font-size: 39px;font-weight: 600;margin: 0px !important;"> POS Serial Number Validator   </h1> | |||
|          <h3 style="font-size: 21px;margin-top: 8px;position: relative;"> Validate the given Serial number of a product from stock </h3> | |||
|       </div> | |||
|       <h2 style="font-weight: 600;font-size: 1.8rem;margin-top: 15px;">Key Highlights</h2> | |||
|       <ul style=" padding: 0 1px; list-style: none; "> | |||
|          <li style="display: flex;align-items: center;padding: 8px 0;font-size: 18px;"><i class="fa fa-check-circle-o" style="width:40px; color:#07B700"></i>  Validates given serial number is available in stock  </li> | |||
|          <li style="display: flex;align-items: center;padding: 8px 0;font-size: 18px;"><i class="fa fa-check-circle-o" style="width:40px; color:#07B700"></i>  Prevents duplicated entry for more than one quantity   </li> | |||
| 
 | |||
|       </ul> | |||
|     </div> | |||
| 	<div class="col-md-5 col-sm-12 col-xs-12"> <img src="images/pos.png" class="img-responsive" alt=""> </div> | |||
| </div> | |||
| 
 | |||
| <div> | |||
|    <section class="oe_container" style="padding: 1rem 0rem 1rem; background-color: #ffffff !important;"> | |||
|       <div class="row py-4 px-3"> | |||
|          <div class="w-100" style="padding-top:30px;padding-bottom:45px;border-radius: 10px;"> | |||
|             <ul role="tablist" class="nav nav-pills justify-content-center" data-tabs="tabs" id="pills-tab" style="border: none;background: unset;"> | |||
|                <li class="nav-item mr-1 mb-3" style="font-size: 1.05rem;font-weight: 400;transition: all .15s ease;color: #d31c22;background-color: #d31c22;box-shadow: 0 4px 6px rgba(50,50,93,.11), 0 1px 3px rgba(0,0,0,.08);border: 0;font-family: 'Open Sans',sans-serif;width: 140px;border-radius: 0.30rem;"> <a id="pills-home-tab" data-toggle="pill" href="#pills-home" role="tab" aria-controls="pills-home" aria-selected="true" class="nav-link active show" style="color: #000000;line-height: 33px;border: 0;border-radius: .25rem;font-weight: 400;text-align: center; | |||
|                   color: #fff;">Overview </a> </li> | |||
|                <li class="nav-item mr-1 mb-3" style="font-size: 1.05rem;font-weight: 400;transition: all .15s ease;color: #d31c22;background-color: #d31c22;box-shadow: 0 4px 6px rgba(50,50,93,.11), 0 1px 3px rgba(0,0,0,.08);border: 0;font-family: 'Open Sans',sans-serif;width: 140px;border-radius: 0.30rem;"> <a id="pills-home-tab" data-toggle="pill" href="#pills-home1" role="tab" aria-controls="pills-home" aria-selected="true" class="nav-link " style="color: #000000;line-height: 33px;border: 0;border-radius: .25rem;font-weight: 400; text-align: center; | |||
|                   color: #fff;" >Features </a> </li> | |||
|                <li class="nav-item mr-1 mb-3" style="font-size: 1.05rem;font-weight: 400;transition: all .15s ease;color: #ffffff;background-color: #d31c22;box-shadow: 0 4px 6px rgba(50,50,93,.11), 0 1px 3px rgba(0,0,0,.08);border: 0;font-family: 'Open Sans',sans-serif;width: 140px;border-radius: 0.30rem;"> <a class="nav-link" id="pills-profile-tab" data-toggle="pill" href="#pills-profile" role="tab" aria-controls="pills-profile" aria-selected="false" style="color: #000000;line-height: 33px;border: 0;border-radius: .25rem;font-weight: 400; text-align: center; | |||
|                   color: #fff;">Screenshots </a> </li> | |||
|                | |||
|             </ul> | |||
|             <div class="tab-content" id="pills-tabContent" | |||
|                style="padding-top: 30px; padding-bottom: 30px; padding: 30px;"> | |||
|                <div class="px-3 pt-1 tab-pane fade active show" id="pills-home" role="tabpanel" aria-labelledby=" | |||
|                   pills-home-tab"> | |||
|                   <!-- Overview--> | |||
|                   <h2 style="font-weight: 600;text-align: center;width: 100%;">Overview</h2> | |||
|                   <hr style="margin-top: 0px;margin-bottom: 2%;border: 0;text-align: center;border-top: 3px solid #d21c22;width: 5%;"> | |||
|                   <h3 class="oe_slogan" style="text-align: center;font-size: 19px;width: 100%;margin: 0;margin-top: 14px;color: #000 !important;opacity: 1 !important;line-height: 31px;font-weight: 400;letter-spacing: .5px;margin-bottom: 21px;"> | |||
|                     Currently in Odoo, Serial number validation at POS not available. This module validates given serial number is available in stock and prevent duplicated entry for more than one quantity.  </h3>   | |||
|                </div> | |||
|                <div class="px-3 pt-1 tab-pane fade " id="pills-home1" role="tabpanel" aria-labelledby=" | |||
|                   pills-home-tab"> | |||
|                   <!-- feature tab--> | |||
|                   <h2 style="font-weight: 600;text-align: center;width: 100%;"> POS Serial Number Validator </h2> | |||
|                   <hr style="margin-top: 0px;margin-bottom: 2%;border: 0;text-align: center;border-top: 3px solid #d21c22;width: 5%;"> | |||
|                   <ul> | |||
|                      <li class="mb8" style="font-family: Roboto;color: #000;list-style-type: square;font-size: 19px;line-height: 50px; background-color: #3a34380d;padding-left: 20px;border-radius: 7px;list-style: none;">  | |||
|                         <i class="fa fa-check-circle-o" style="width:40px; color:#07B700"></i> Validates given serial number is available in stock | |||
|                      </li> | |||
| 
 | |||
|                      <li class="mb8" style="font-family: Roboto;color: #000;list-style-type: square;font-size: 19px;line-height: 50px; background-color: #3a34380d;padding-left: 20px;border-radius: 7px;list-style: none;">  | |||
|                         <i class="fa fa-check-circle-o" style="width:40px; color:#07B700"></i> Prevents duplicated entry for more than one quantity | |||
|                      </li> | |||
| 
 | |||
|                   </ul> | |||
|                </div> | |||
|                <!-- Screenshot tab--> | |||
|                <div class="px-3 tab-pane fade" id="pills-profile" role="tabpanel" aria-labelledby="pills-profile-tab" > | |||
|                   <div class="tab-pane"> | |||
|                      <h2 style="font-weight: 600;text-align: center;width: 100%;">Screenshots</h2> | |||
|                      <hr style="margin-top: 0px;margin-bottom: 2%;border: 0;text-align: center;border-top: 3px solid #d21c22;width: 5%;"> | |||
|                      <div> | |||
|                         <section class="oe_container"> | |||
|                            <div id="demo" class="row carousel slide  mb32" data-ride="carousel"> | |||
|                               <div class="carousel-inner"> | |||
| 
 | |||
|                                  <div class="carousel-item active" style="min-height: 0px;"> | |||
|                                     <div class="col-xs-12 col-sm-12 col-md-12 mb16 mt16" style="float: left;"> | |||
|                                        <h3 class="alert" style="font-weight:400;color: #091E42;background: #fff;text-align: left;border-radius: 0; font-size: 18px;"> <i class="fa fa-check-circle-o" style="width:40px; color:#07B700"></i>Warnings for invalid Serial Number  </h3> | |||
|                                        <div style=""> <img class="img img-responsive center-block" style="border-top-left-radius: 10px;border-top-right-radius: 10px;" src="images/pos1.png"> </div> | |||
|                                         | |||
|                                         | |||
|                                         | |||
|                                     </div> | |||
|                                   </div>  | |||
| 								   | |||
| 								   | |||
| 								   | |||
| 								  <div class="carousel-item" style="min-height: 0px;"> | |||
|                                     <div class="col-xs-12 col-sm-12 col-md-12 mb16 mt16" style="float: left;"> | |||
|                                         | |||
|                                        <h3 class="alert" style="font-weight:400;color: #091E42;background: #fff;text-align: left;border-radius: 0; font-size: 18px;"> <i class="fa fa-check-circle-o" style="width:40px; color:#07B700"></i>Warnings for Duplicate Serial Number  </h3> | |||
|                                        <div style=""> <img class="img img-responsive center-block" style="border-top-left-radius: 10px;border-top-right-radius: 10px;" src="images/pos2.png"> </div> | |||
|                                     </div> | |||
|                                   </div>   | |||
| 
 | |||
|                               </div> | |||
|                               <a class="carousel-control-prev" href="#demo" 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="#demo" 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> | |||
|                         </section> | |||
|                      </div> | |||
|                   </div> | |||
|                </div> | |||
|                 | |||
|                <!-- faq tab--> | |||
|                <div class="px-2 px-lg-4 pt-3 tab-pane fade" id="pills-contact" role="tabpanel" aria-labelledby="pills-contact-tab"> | |||
|                   <ul class="list-unstyled"> | |||
|                   </ul> | |||
|                </div> | |||
|             </div> | |||
|          </div> | |||
|       </div> | |||
|    </section> | |||
|    <section class="oe_container" style="padding: 2rem 3rem 1rem;"> | |||
|       <h2 style="font-weight: 600;text-align: center;margin-bottom: 25px;width: 100%;"> Suggested Products </h2> | |||
|       <hr style="margin-top: 0px;margin-bottom: 2%;border: 0;text-align: center;border-top: 3px solid #d21c22;width: 5%;"> | |||
|       <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/12.0/project_report_pdf/" target="_blank"> | |||
|                      <div style="box-shadow: 0 15px 35px rgba(50, 50, 93, 0.1), 0 5px 15px rgba(0, 0, 0, 0.07);border-radius: 10px;"> <img class="img img-responsive center-block" style="border-top-left-radius: 10px;border-top-right-radius: 10px;" src="images/banner_project_report_xls_pdf.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/10.0/project_status_level_report/" target="_blank"> | |||
|                      <div style="box-shadow: 0 15px 35px rgba(50, 50, 93, 0.1), 0 5px 15px rgba(0, 0, 0, 0.07);border-radius: 10px;"> <img class="img img-responsive center-block" style="border-top-left-radius: 10px;border-top-right-radius: 10px;" src="images/banner_project_status_report.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/10.0/project_lifeline/" target="_blank"> | |||
|                      <div style="box-shadow: 0 15px 35px rgba(50, 50, 93, 0.1), 0 5px 15px rgba(0, 0, 0, 0.07);border-radius: 10px;"> <img class="img img-responsive center-block" style="border-top-left-radius: 10px;border-top-right-radius: 10px;" src="images/banner_lifeline_for_task.jpeg"> </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/10.0/project_subtask/" target="_blank"> | |||
|                      <div style="box-shadow: 0 15px 35px rgba(50, 50, 93, 0.1), 0 5px 15px rgba(0, 0, 0, 0.07);border-radius: 10px;"> <img class="img img-responsive center-block" style="border-top-left-radius: 10px;border-top-right-radius: 10px;" src="images/banner_subtask.jpeg"> </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/12.0/task_deadline_reminder/" target="_blank"> | |||
|                      <div style="box-shadow: 0 15px 35px rgba(50, 50, 93, 0.1), 0 5px 15px rgba(0, 0, 0, 0.07);border-radius: 10px;"> <img class="img img-responsive center-block" style="border-top-left-radius: 10px;border-top-right-radius: 10px;" src="images/banner_task_deadline_reminder.jpeg"> </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/10.0/project_time_spend/" target="_blank"> | |||
|                      <div style="box-shadow: 0 15px 35px rgba(50, 50, 93, 0.1), 0 5px 15px rgba(0, 0, 0, 0.07);border-radius: 10px;"> <img class="img img-responsive center-block" style="border-top-left-radius: 10px;border-top-right-radius: 10px;" src="images/banner_task_statusbar.jpeg"> </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> | |||
|    </section> | |||
|    <section class="row" style="padding: 2rem 3rem 1rem;margin:0px"> | |||
|       <h2 style="font-weight: 600;margin-bottom: 20px;text-align: center;width: 100%;"> Our Service </h2> | |||
|       <hr style="margin-top: 0px;margin-bottom: 2%;border: 0;text-align: center;border-top: 3px solid #d21c22;width: 5%;"> | |||
|       <div class="row" style=" display: flex; justify-content: center; flex-wrap: wrap;width: 100%; "> | |||
|          <!-- <div style="display:flex;padding-top: 20px;justify-content: space-between;"> --> | |||
|          <div class="col-md-2 col-sm-6 col-xs-12"> | |||
|             <div style="width:75px;height:75px;background:#fff; border-radius:100%;margin: auto;"> <a href="https://www.cybrosys.com/odoo-customization-and-installation/" target="_blank"> <img src="https://www.cybrosys.com/images/odoo-customization.png" style="width: 100%;border-radius: 100%;"/> </a> </div> | |||
|             <h3 class="oe_slogan" style="font-weight: 800;text-align: center;font-size: 14px;width: 100%;margin: 0;margin-top: 14px;color: #000 !important;margin-top: 5px;opacity: 1 !important;line-height: 17px;"> <a href="https://www.cybrosys.com/odoo-customization-and-installation/" target="_blank" style="list-style: none; color:#000; text-decoration: none; font-family: 'Montserrat',sans-serif;"> Odoo Customization </a> </h3> | |||
|          </div> | |||
|          <div class="col-md-2 col-sm-6 col-xs-12"> | |||
|             <div style="width:75px;height:75px;background:#fff; border-radius:100%;margin: auto;"> <a href="https://www.cybrosys.com/odoo-erp-implementation/" target="_blank"> <img src="https://www.cybrosys.com/images/odoo-erp-implementation.png" style="width: 100%;border-radius: 100%;"/> </a> </div> | |||
|             <h3 class="oe_slogan" style="font-weight: 800;text-align: center;font-size: 14px;width: 100%;margin: 0;margin-top: 14px;color: #000 !important;margin-top: 5px;opacity: 1 !important;line-height: 17px;"> <a href="https://www.cybrosys.com/odoo-erp-implementation/" target="_blank" style="list-style: none; color:#000; text-decoration: none; font-family: 'Montserrat',sans-serif;"> Odoo Implementation </a> </h3> | |||
|          </div> | |||
|          <div class="col-md-2 col-sm-6 col-xs-12"> | |||
|             <div style="width:75px;height:75px;background:#fff; border-radius:100%;margin: auto;"> <a href="https://www.cybrosys.com/odoo-erp-integration/" target="_blank"> <img src="https://www.cybrosys.com/images/odoo-erp-integration.png" style="width: 100%;border-radius: 100%;"/> </a> </div> | |||
|             <h3 class="oe_slogan" style="font-weight: 800;text-align: center;font-size: 14px;width: 100%;margin: 0;margin-top: 14px;color: #000 !important;margin-top: 5px;opacity: 1 !important;line-height: 17px;"> <a href="https://www.cybrosys.com/odoo-erp-integration/" target="_blank" style="list-style: none; color:#000; text-decoration: none; font-family: 'Montserrat',sans-serif;"> Odoo Integration </a> </h3> | |||
|          </div> | |||
|          <div class="col-md-2 col-sm-6 col-xs-12"> | |||
|             <div style="width:75px;height:75px;background:#fff; border-radius:100%;margin: auto;"> <a href="https://www.cybrosys.com/odoo-erp-support/" target="_blank"> <img src="https://www.cybrosys.com/images/odoo-erp-support.png" style="width: 100%;border-radius: 100%;"/> </a> </div> | |||
|             <h3 class="oe_slogan" style="font-weight: 800;text-align: center;font-size: 14px;width: 100%;margin: 0;margin-top: 14px;color: #000 !important;margin-top: 5px;opacity: 1 !important;line-height: 17px;"> <a href="https://www.cybrosys.com/odoo-erp-support/" target="_blank" style="list-style: none; color:#000; text-decoration: none; font-family: 'Montserrat',sans-serif;"> Odoo Support</a> </h3> | |||
|          </div> | |||
|          <div class="col-md-2 col-sm-6 col-xs-12"> | |||
|             <div style="width:75px;height:75px;background:#fff; border-radius:100%;margin: auto;"> <a href="https://www.cybrosys.com/hire-odoo-developer/" target="_blank"> <img src="https://www.cybrosys.com/images/hire-odoo-developer.png" style="width: 100%;border-radius: 100%;"/> </a> </div> | |||
|             <h3 class="oe_slogan" style="font-weight: 800;text-align: center;font-size: 14px;width: 100%;margin: 0;margin-top: 14px;color: #000 !important;margin-top: 5px;opacity: 1 !important;line-height: 17px;"> <a href="https://www.cybrosys.com/hire-odoo-developer/" target="_blank" style="list-style: none; color:#000; text-decoration: none; font-family: 'Montserrat',sans-serif;"> Hire Odoo Developers</a> </h3> | |||
|             </a>  | |||
|          </div> | |||
|          <!-- </div> -->  | |||
|       </div> | |||
|    </section> | |||
|    <section class="row"  style="padding: 2rem 3rem 1rem;margin:0px"> | |||
|       <div class="row" style="margin: 0"> | |||
|          <h2 style="font-weight: 600;margin-bottom: 20px;text-align: center;width: 100%;"> Our Industries</h2> | |||
|          <hr style="margin-top: 0px;margin-bottom: 2%;border: 0;text-align: center;border-top: 3px solid #d21c22;width: 5%;"> | |||
|          <!-- <div style="display:flex;justify-content: space-between;flex-wrap:wrap;"> --> | |||
|          <div class="row" style="width: 100%"> | |||
|             <div class="col-md-4 col-sm-6 col-xs-12" style=" margin-bottom: 10px; "> | |||
|                <div  > | |||
|                   <div style="width:75px;height:75px;background:#CE2D48; border-radius:100%;float: left;text-align: left;"> <a href="https://www.cybrosys.com/odoo/industries/best-trading-erp/" target="_blank"> <img src="https://www.cybrosys.com/images/odoo-index-industry-1.png" alt="Odoo Industry" style="    border-radius: 100%;width:100%;"/> </a> </div> | |||
|                </div> | |||
|                <div style="width:70%;float:left;"> | |||
|                   <h3 class="oe_slogan" style=" text-align: left;font-size: 14px;font-weight:800;width: auto;margin: 0;margin-top: 14px;color: #000 !important;margin-top: 5px;opacity: 1 !important;line-height: 17px;float: left;margin-top: 4px;margin-left: 16px;"> <a href="https://www.cybrosys.com/odoo/industries/best-trading-erp/" target="_blank" style="list-style: none; color:#000; text-decoration: none;font-family: 'Montserrat',sans-serif;"> Trading </a> </h3> | |||
|                   <h3 class="oe_slogan" style=" text-align: left;font-size: 12px;width: auto;margin: 0;margin-top:5px;color: #000 !important;margin-top: 5px;opacity: 1 !important;line-height: 17px;float: left;margin-top: 5px;margin-left: 16px; font-family: 'Montserrat',sans-serif;"> Easily procure and sell your products. </h3> | |||
|                </div> | |||
|             </div> | |||
|             <div class="col-md-4 col-sm-6 col-xs-12" style=" margin-bottom: 10px; "> | |||
|                <div  > | |||
|                   <div style="width:75px;height:75px;background:#CE2D48; border-radius:100%;float: left;text-align: left;"> <a href="https://www.cybrosys.com/odoo/industries/manufacturing-erp-software/" target="_blank"> <img src="https://www.cybrosys.com/images/odoo-index-industry-2.png" alt="Odoo Industry" style="    border-radius: 100%;width:100%;"/> </a> </div> | |||
|                </div> | |||
|                <div style="width:70%;float:left;" style=" margin-bottom: 10px; "> | |||
|                   <h3 class="oe_slogan" style=" text-align: left;font-size: 14px;font-weight:800;width: auto;margin: 0;margin-top: 14px;color: #000 !important;margin-top: 5px;opacity: 1 !important;line-height: 17px;float: left;margin-top: 4px;margin-left: 16px;"> <a href="https://www.cybrosys.com/odoo/industries/manufacturing-erp-software/" target="_blank" style="list-style: none; color:#000; text-decoration: none;font-family: 'Montserrat',sans-serif;"> Manufacturing</a> </h3> | |||
|                   <h3 class="oe_slogan" style=" text-align: left;font-size: 12px;width: auto;margin: 0;margin-top:5px;color: #000 !important;margin-top: 5px;opacity: 1 !important;line-height: 17px;float: left;margin-top: 5px;margin-left: 16px;font-family: 'Montserrat',sans-serif;"> Plan, track and schedule your operations. </h3> | |||
|                </div> | |||
|             </div> | |||
|             <div class="col-md-4 col-sm-6 col-xs-12" style=" margin-bottom: 10px; "> | |||
|                <div  > | |||
|                   <div style="width:75px;height:75px;background:#CE2D48; border-radius:100%;float: left;text-align: left;"> <a href="https://www.cybrosys.com/odoo/industries/restaurant-management/" target="_blank"> <img src="https://www.cybrosys.com/images/odoo-index-industry-3.png" alt="Odoo Industry" style="    border-radius: 100%;width:100%;"/> </a> </div> | |||
|                </div> | |||
|                <div style="width:70%;float:left;"> | |||
|                   <h3 class="oe_slogan" style=" text-align: left;font-size: 14px;font-weight:800;width: auto;margin: 0;margin-top: 14px;color: #000 !important;margin-top: 5px;opacity: 1 !important;line-height: 17px;float: left;margin-top: 4px;margin-left: 16px;"> <a href="https://www.cybrosys.com/odoo/industries/restaurant-management/" target="_blank" style="list-style: none; color:#000; text-decoration: none;font-family: 'Montserrat',sans-serif;"> Restaurant</a> </h3> | |||
|                   <h3 class="oe_slogan" style=" text-align: left;font-size: 12px;width: auto;margin: 0;margin-top:5px;color: #000 !important;margin-top: 5px;opacity: 1 !important;line-height: 17px;float: left;margin-top: 5px;margin-left: 16px;font-family: 'Montserrat',sans-serif;"> Run your bar or restaurant methodical. </h3> | |||
|                </div> | |||
|             </div> | |||
|             <div class="col-md-4 col-sm-6 col-xs-12" style=" margin-bottom: 10px; "> | |||
|                <div  > | |||
|                   <div style="width:75px;height:75px;background:#CE2D48; border-radius:100%;float: left;text-align: left;"> <a href="https://www.cybrosys.com/odoo/industries/pos/" target="_blank"> <img src="https://www.cybrosys.com/images/odoo-index-industry-4.png" alt="Odoo Industry" style="    border-radius: 100%;width:100%;"/> </a> </div> | |||
|                </div> | |||
|                <div style="width:70%;float:left;"> | |||
|                   <h3 class="oe_slogan" style=" text-align: left;font-size: 14px;font-weight:800;width: auto;margin: 0;margin-top: 14px;color: #000 !important;margin-top: 5px;opacity: 1 !important;line-height: 17px;float: left;margin-top: 4px;margin-left: 16px;"> <a href="https://www.cybrosys.com/odoo/industries/pos/" target="_blank" style="list-style: none; color:#000; text-decoration: none;font-family: 'Montserrat',sans-serif;"> POS</a> </h3> | |||
|                   <h3 class="oe_slogan" style=" text-align: left;font-size: 12px;width: auto;margin: 0;margin-top:5px;color: #000 !important;margin-top: 5px;opacity: 1 !important;line-height: 17px;float: left;margin-top: 5px;margin-left: 16px;font-family: 'Montserrat',sans-serif;"> Easy configuring and convivial selling. </h3> | |||
|                </div> | |||
|             </div> | |||
|             <div class="col-md-4 col-sm-6 col-xs-12" style=" margin-bottom: 10px; "> | |||
|                <div  > | |||
|                   <div style="width:75px;height:75px;background:#CE2D48; border-radius:100%;float: left;text-align: left;"> <a href="https://www.cybrosys.com/odoo/industries/ecommerce-website/" target="_blank"> <img src="https://www.cybrosys.com/images/odoo-index-industry-5.png" alt="Odoo Industry" style="    border-radius: 100%;width:100%;"/> </a> </div> | |||
|                </div> | |||
|                <div style="width:70%;float:left;"> | |||
|                   <h3 class="oe_slogan" style=" text-align: left;font-size: 14px;font-weight:800;width: auto;margin: 0;margin-top: 14px;color: #000 !important;margin-top: 5px;opacity: 1 !important;line-height: 17px;float: left;margin-top: 0px;margin-left: 16px;"> <a href="https://www.cybrosys.com/odoo/industries/ecommerce-website/" target="_blank" style="list-style: none; color:#000; text-decoration: none; font-family: 'Montserrat',sans-serif;"> E-commerce & Website</a> </h3> | |||
|                   <h3 class="oe_slogan" style=" text-align: left;font-size: 12px;width: auto;margin: 0;margin-top:5px;color: #000 !important;margin-top: 5px;opacity: 1 !important;line-height: 17px;float: left;margin-top: 5px;margin-left: 16px; font-family: 'Montserrat',sans-serif;"> Mobile friendly, awe-inspiring product pages. </h3> | |||
|                </div> | |||
|             </div> | |||
|             <div class="col-md-4 col-sm-6 col-xs-12" style=" margin-bottom: 10px; "> | |||
|                <div  > | |||
|                   <div style="width:75px;height:75px;background:#CE2D48; border-radius:100%;float: left;text-align: left;"> <a href="https://www.cybrosys.com/odoo/industries/hotel-management-erp/" target="_blank"> <img src="https://www.cybrosys.com/images/odoo-index-industry-6.png" alt="Odoo Industry" style="    border-radius: 100%;width:100%;"/> </a> </div> | |||
|                </div> | |||
|                <div style="width:70%;float:left;"> | |||
|                   <h3 class="oe_slogan" style=" text-align: left;font-size: 14px;font-weight:800;width: auto;margin: 0;margin-top: 14px;color: #000 !important;margin-top: 5px;opacity: 1 !important;line-height: 17px;float: left;margin-top: 4px;margin-left: 16px;"> <a href="https://www.cybrosys.com/odoo/industries/hotel-management-erp/" target="_blank" style="list-style: none; color:#000; text-decoration: none; font-family: 'Montserrat',sans-serif;"> Hotel Management</a> </h3> | |||
|                   <h3 class="oe_slogan" style=" text-align: left;font-size: 12px;width: auto;margin: 0;margin-top:5px;color: #000 !important;margin-top: 5px;opacity: 1 !important;line-height: 17px;float: left;margin-top: 5px;margin-left: 16px; font-family: 'Montserrat',sans-serif;"> An all-inclusive hotel management application. </h3> | |||
|                </div> | |||
|             </div> | |||
|             <div class="col-md-4 col-sm-6 col-xs-12" style=" margin-bottom: 10px; "> | |||
|                <div  > | |||
|                   <div style="width:75px;height:75px;background:#CE2D48; border-radius:100%;float: left;text-align: left;"> <a href="https://www.cybrosys.com/odoo/industries/education-erp-software/" target="_blank"> <img src="https://www.cybrosys.com/images/odoo-index-industry-7.png" alt="Odoo Industry" style="    border-radius: 100%;width:100%;"/> </a> </div> | |||
|                </div> | |||
|                <div style="width:70%;float:left;"> | |||
|                   <h3 class="oe_slogan" style=" text-align: left;font-size: 14px;font-weight:800;width: auto;margin: 0;margin-top: 14px;color: #000 !important;margin-top: 5px;opacity: 1 !important;line-height: 17px;float: left;margin-top: 4px;margin-left: 16px;"> <a href="https://www.cybrosys.com/odoo/industries/education-erp-software/" target="_blank" style="list-style: none; color:#000; text-decoration: none; font-family: 'Montserrat',sans-serif;"> Education</a> </h3> | |||
|                   <h3 class="oe_slogan" style=" text-align: left;font-size: 12px;width: auto;margin: 0;margin-top:5px;color: #000 !important;margin-top: 5px;opacity: 1 !important;line-height: 17px;float: left;margin-top: 5px;margin-left: 16px; font-family: 'Montserrat',sans-serif;"> A Collaborative platform for educational management. </h3> | |||
|                </div> | |||
|             </div> | |||
|             <div class="col-md-4 col-sm-6 col-xs-12" style=" margin-bottom: 10px; "> | |||
|                <div  > | |||
|                   <div style="width:75px;height:75px;background:#CE2D48; border-radius:100%;float: left;text-align: left;"> <a href="https://www.cybrosys.com/odoo/industries/service-management/" target="_blank"> <img src="https://www.cybrosys.com/images/odoo-index-industry-8.png" alt="Odoo Industry" style="    border-radius: 100%;width:100%;"/> </a> </div> | |||
|                </div> | |||
|                <div style="width:70%;float:left;"> | |||
|                   <h3 class="oe_slogan" style=" text-align: left;font-size: 14px;font-weight:800;width: auto;margin: 0;margin-top: 14px;color: #000 !important;margin-top: 5px;opacity: 1 !important;line-height: 17px;float: left;margin-top: 4px;margin-left: 16px;"> <a href="https://www.cybrosys.com/odoo/industries/service-management/" target="_blank" style="list-style: none; color:#000; text-decoration: none; font-family: 'Montserrat',sans-serif;"> Service Management</a> </h3> | |||
|                   <h3 class="oe_slogan" style=" text-align: left;font-size: 12px;width: auto;margin: 0;margin-top:5px;color: #000 !important;margin-top: 5px;opacity: 1 !important;line-height: 17px;float: left;margin-top: 5px;margin-left: 16px; font-family: 'Montserrat',sans-serif;"> Keep track of services and invoice accordingly. </h3> | |||
|                </div> | |||
|             </div> | |||
|          </div> | |||
|       </div> | |||
| </div> | |||
| </section> | |||
| <section class="oe_container" style="padding: 0% 0% 6% 0%;"> | |||
|    <center> | |||
|       <div class="col-md-12" style="margin: auto !important; | |||
|          width: 70%; | |||
|          padding: 30px;"> | |||
|          <h2 style="font-weight: 600;text-align: center;width: 100%;"> Need Any Help? </h2> | |||
|          <hr style="margin-top: 0px;margin-bottom: 2%;border: 0;text-align: center;border-top: 3px solid #d21c22;width: 5%;"> | |||
|          <h4 style="font-size:16px;"> If you have anything to share with us based on your use of this module, please let us know. We are ready to offer our support. </h4> | |||
|          <div class="col-md-6" style="float:left; padding:20px;"> | |||
|             <h4><i class="fa fa-envelope"></i> Email us </h4> | |||
|             <p>odoo@cybrosys.com  / info@cybrosys.com</p> | |||
|          </div> | |||
|          <div class="col-md-6" style="float:left; padding:20px;"> | |||
|             <h4><i class="fa fa-phone"></i> Contact Us </h4> | |||
|             <a href="https://www.cybrosys.com/contact/" target="_blank"> www.cybrosys.com </a> | |||
|          </div> | |||
|       </div> | |||
|    </center> | |||
| </section> | |||
| <section class="oe_container" style="padding: 0% 0% 6% 0%;"> | |||
|    <div class="oe_slogan" style="margin-bottom: 0px;"> | |||
|       <div style=" display: flex; justify-content: center; flex-wrap: wrap; "> | |||
|       </div> | |||
|       <br> | |||
|       <img src="https://www.cybrosys.com/images/logo.png" style="width: 190px; margin-bottom: 25px;margin-top: 30px;" class="center-block"> | |||
|       <div style=" display: flex; justify-content: center; flex-wrap: wrap; "> <a href="https://twitter.com/cybrosys" target="_blank"><i class="fa fa-2x fa-twitter" style="color:white;background: #00a0d1;width:35px;height: 35px;padding-top: 7px;font-size: 21px;margin-right: 6px;border-radius: 100%;"></i></a> | |||
|          </td> | |||
|          <a href="https://www.linkedin.com/company/cybrosys-technologies-pvt-ltd" target="_blank"><i class="fa fa-2x fa-linkedin" style="color:white;background: #31a3d6;width:35px;height: 35px;padding-top: 7px;font-size: 21px;margin-right: 6px;border-radius: 100%;"></i></a> | |||
|          </td> | |||
|          <a href="https://www.facebook.com/cybrosystechnologies" target="_blank"><i class="fa fa-2x fa-facebook" style="color:white;background: #3b5998;width:35px;  height: 35px;padding-top: 7px;font-size: 21px;margin-right: 6px;border-radius: 100%;"></i></a> | |||
|          </td> | |||
|          <a href="https://in.pinterest.com/cybrosys" target="_blank"><i class="fa fa-2x fa-pinterest" style="color:white;background: #ac0f18;width:35px;height: 35px;padding-top: 7px;font-size: 21px;margin-right: 6px;border-radius: 100%;"></i></a> | |||
|          </td> | |||
|       </div> | |||
|    </div> | |||
| </section> | |||
| </div> | |||
| @ -0,0 +1,64 @@ | |||
| odoo.define('pos_traceability_validation.pos_models', function (require) { | |||
| "use strict"; | |||
| 
 | |||
|     const EditListPopup = require('point_of_sale.EditListPopup'); | |||
|     const Registries = require('point_of_sale.Registries'); | |||
|     var rpc = require('web.rpc'); | |||
| 
 | |||
|     const PosEditlistpopup = (EditListPopup) => | |||
|         class extends EditListPopup { | |||
|              async confirm() { | |||
| 
 | |||
|                  if (this.props.title == 'Lot/Serial Number(s) Required'){ | |||
| 
 | |||
|                          var lot_string = this.state.array | |||
|                          var lot_names = []; | |||
|                          for (var i = 0; i < lot_string.length; i++) { | |||
| 
 | |||
|                             if (lot_string[i].text != ""){ | |||
|                                 lot_names.push(lot_string[i].text); | |||
|                             } | |||
| 
 | |||
|                          } | |||
| 
 | |||
|                          const result =  await rpc.query({ | |||
|                                                 model: 'serial_no.validation', | |||
|                                                 method: 'validate_lots', | |||
|                                                 args: [lot_names] | |||
|                                                 }) | |||
| 
 | |||
|                             if(result != true){ | |||
|                                 if(result[0] == 'no_stock'){ | |||
|                                     alert("Insufficient stock for " + result[1]) | |||
|                                 } | |||
|                                 else if(result[0] == 'duplicate'){ | |||
|                                     alert("Duplicate entry for " + result[1]) | |||
|                                 } | |||
|                                 else if(result[0] == 'except'){ | |||
|                                     alert("Exception occured with " + result[1]) | |||
|                                 } | |||
|                             } | |||
|                             else{ | |||
|                                     this.props.resolve({ confirmed: true, payload: await this.getPayload() }); | |||
|                                     this.trigger('close-popup'); | |||
| 
 | |||
|                             } | |||
|                  } | |||
|                  else{ | |||
|                         this.props.resolve({ confirmed: true, payload: await this.getPayload() }); | |||
|                         this.trigger('close-popup'); | |||
|                  } | |||
| 
 | |||
|             } | |||
| 
 | |||
|         }; | |||
| 
 | |||
|     Registries.Component.extend(EditListPopup, PosEditlistpopup); | |||
| 
 | |||
|     return EditListPopup; | |||
| 
 | |||
| 
 | |||
| }); | |||
| 
 | |||
| 
 | |||
| 
 | |||
| @ -0,0 +1,9 @@ | |||
| <?xml version="1.0" encoding="UTF-8"?> | |||
| <odoo> | |||
|     <template id="pos_extend_assets" inherit_id="point_of_sale.assets"> | |||
|         <xpath expr="." position="inside"> | |||
|             <script type="text/javascript" src="/pos_traceability_validation/static/src/js/pos_models.js"/> | |||
|         </xpath> | |||
|     </template> | |||
| </odoo> | |||
| 
 | |||