| @ -0,0 +1,47 @@ | |||
| .. image:: https://img.shields.io/badge/license-LGPL--3-green.svg | |||
|     :target: https://www.gnu.org/licenses/lgpl-3.0-standalone.html | |||
|     :alt: License: LGPL-3 | |||
| 
 | |||
| Infobip Whatsapp Integration | |||
| ============================ | |||
| Send whatsapp messages to the partner | |||
| 
 | |||
| Installation | |||
| ============ | |||
|     - www.odoo.com/documentation/16.0/setup/install.html | |||
|     -  pip install infobip-api-python-sdk | |||
| 
 | |||
| License | |||
| ------- | |||
| General Public License, Version 3 (LGPL v3). | |||
| (https://www.odoo.com/documentation/user/15.0/legal/licenses/licenses.html) | |||
| 
 | |||
| Company | |||
| ------- | |||
| * `Cybrosys Techno Solutions <https://cybrosys.com/>`__ | |||
| 
 | |||
| Credits | |||
| ------- | |||
| * Developer: (V16) Jumana Jabin MP ,Contact: odoo@cybrosys.com | |||
| 
 | |||
| Contacts | |||
| -------- | |||
| * Mail Contact : odoo@cybrosys.com | |||
| * Website : https://cybrosys.com | |||
| 
 | |||
| Bug Tracker | |||
| ----------- | |||
| Bugs are tracked on GitHub Issues. In case of trouble, please check there if your issue has already been reported. | |||
| 
 | |||
| Maintainer | |||
| ========== | |||
| .. image:: https://cybrosys.com/images/logo.png | |||
|    :target: https://cybrosys.com | |||
| 
 | |||
| This module is maintained by Cybrosys Technologies. | |||
| 
 | |||
| For support and more information, please visit https://www.cybrosys.com | |||
| 
 | |||
| Further information | |||
| =================== | |||
| HTML Description: `<static/description/index.html>`__ | |||
| @ -0,0 +1,23 @@ | |||
| # -*- coding: utf-8 -*- | |||
| ############################################################################# | |||
| # | |||
| #    Cybrosys Technologies Pvt. Ltd. | |||
| # | |||
| #    Copyright (C) 2024-TODAY Cybrosys Technologies(<https://www.cybrosys.com>) | |||
| #    Author: Jumana Jabin MP (odoo@cybrosys.com) | |||
| # | |||
| #    You can modify it under the terms of the GNU LESSER | |||
| #    GENERAL PUBLIC LICENSE (LGPL v3), Version 3. | |||
| # | |||
| #    This program is distributed in the hope that it will be useful, | |||
| #    but WITHOUT ANY WARRANTY; without even the implied warranty of | |||
| #    MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the | |||
| #    GNU LESSER GENERAL PUBLIC LICENSE (LGPL v3) for more details. | |||
| # | |||
| #    You should have received a copy of the GNU LESSER GENERAL PUBLIC LICENSE | |||
| #    (LGPL v3) along with this program. | |||
| #    If not, see <http://www.gnu.org/licenses/>. | |||
| # | |||
| ############################################################################# | |||
| from . import models | |||
| from . import wizard | |||
| @ -0,0 +1,50 @@ | |||
| # -*- coding: utf-8 -*- | |||
| ############################################################################# | |||
| # | |||
| #    Cybrosys Technologies Pvt. Ltd. | |||
| # | |||
| #    Copyright (C) 2024-TODAY Cybrosys Technologies(<https://www.cybrosys.com>) | |||
| #    Author: Jumana Jabin MP (odoo@cybrosys.com) | |||
| # | |||
| #    You can modify it under the terms of the GNU LESSER | |||
| #    GENERAL PUBLIC LICENSE (LGPL v3), Version 3. | |||
| # | |||
| #    This program is distributed in the hope that it will be useful, | |||
| #    but WITHOUT ANY WARRANTY; without even the implied warranty of | |||
| #    MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the | |||
| #    GNU LESSER GENERAL PUBLIC LICENSE (LGPL v3) for more details. | |||
| # | |||
| #    You should have received a copy of the GNU LESSER GENERAL PUBLIC LICENSE | |||
| #    (LGPL v3) along with this program. | |||
| #    If not, see <http://www.gnu.org/licenses/>. | |||
| # | |||
| ############################################################################# | |||
| { | |||
|     'name': "Infobip Whatsapp Integration", | |||
|     'version': '16.0.1.0.0', | |||
|     'category': 'Extra Tools', | |||
|     'summary': 'Send whatsapp messages to the partner', | |||
|     'description': """This Module Helps you to Send a Whatsapp Message to your | |||
|     Partners to send text message , send interactive list and button message , | |||
|     send contact details and to send location of a user using infobip | |||
|     Gateway.""", | |||
|     'author': 'Cybrosys Techno Solutions', | |||
|     'company': 'Cybrosys Techno Solutions', | |||
|     'maintainer': 'Cybrosys Techno Solutions', | |||
|     'website': 'https://www.cybrosys.com', | |||
|     'depends': ['base', 'base_geolocalize', 'contacts'], | |||
|     'data': [ | |||
|         'security/ir.model.access.csv', | |||
|         'views/res_partner_views.xml', | |||
|         'views/res_config_settings_views.xml', | |||
|         'wizard/whatsapp_message_views.xml', | |||
|     ], | |||
|     'external_dependencies': { | |||
|         'python': ['infobip-api-python-sdk'], | |||
|     }, | |||
|     'images': ['static/description/banner.jpg'], | |||
|     'license': 'LGPL-3', | |||
|     'installable': True, | |||
|     'auto_install': False, | |||
|     'application': False, | |||
| } | |||
| @ -0,0 +1,6 @@ | |||
| ## Module <infobip_whatsapp_integration> | |||
| 
 | |||
| #### 13.03.2024 | |||
| #### Version 16.0.1.0.0 | |||
| #### ADD | |||
| - Initial commit for Infobip Whatsapp Integration | |||
| @ -0,0 +1,23 @@ | |||
| # -*- coding: utf-8 -*- | |||
| ############################################################################# | |||
| # | |||
| #    Cybrosys Technologies Pvt. Ltd. | |||
| # | |||
| #    Copyright (C) 2024-TODAY Cybrosys Technologies(<https://www.cybrosys.com>) | |||
| #    Author: Jumana Jabin MP (odoo@cybrosys.com) | |||
| # | |||
| #    You can modify it under the terms of the GNU LESSER | |||
| #    GENERAL PUBLIC LICENSE (LGPL v3), Version 3. | |||
| # | |||
| #    This program is distributed in the hope that it will be useful, | |||
| #    but WITHOUT ANY WARRANTY; without even the implied warranty of | |||
| #    MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the | |||
| #    GNU LESSER GENERAL PUBLIC LICENSE (LGPL v3) for more details. | |||
| # | |||
| #    You should have received a copy of the GNU LESSER GENERAL PUBLIC LICENSE | |||
| #    (LGPL v3) along with this program. | |||
| #    If not, see <http://www.gnu.org/licenses/>. | |||
| # | |||
| ############################################################################# | |||
| from . import res_config_settings | |||
| from . import res_partner | |||
| @ -0,0 +1,44 @@ | |||
| # -*- coding: utf-8 -*- | |||
| ############################################################################### | |||
| # | |||
| #    Cybrosys Technologies Pvt. Ltd. | |||
| # | |||
| #    Copyright (C) 2024-TODAY Cybrosys Technologies(<https://www.cybrosys.com>) | |||
| #    Author: Jumana Jabin MP (odoo@cybrosys.com) | |||
| # | |||
| #    You can modify it under the terms of the GNU AFFERO | |||
| #    GENERAL PUBLIC LICENSE (AGPL v3), Version 3. | |||
| # | |||
| #    This program is distributed in the hope that it will be useful, | |||
| #    but WITHOUT ANY WARRANTY; without even the implied warranty of | |||
| #    MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the | |||
| #    GNU AFFERO GENERAL PUBLIC LICENSE (AGPL v3) for more details. | |||
| # | |||
| #    You should have received a copy of the GNU AFFERO GENERAL PUBLIC LICENSE | |||
| #    (AGPL v3) along with this program. | |||
| #    If not, see <http://www.gnu.org/licenses/>. | |||
| # | |||
| ############################################################################### | |||
| from odoo import fields, models | |||
| 
 | |||
| 
 | |||
| class ResConfigSettings(models.TransientModel): | |||
|     """ Inherited this module is to add fields for WhatsApp's | |||
|         message-sending authentication """ | |||
|     _inherit = "res.config.settings" | |||
| 
 | |||
|     api_key = fields.Char(string="API Key", | |||
|                           config_parameter='infobip_whatsapp_integration.' | |||
|                                            'api_key', | |||
|                           help="Enter your API Key for Infobip WhatsApp" | |||
|                                " integration.") | |||
|     base_url = fields.Char(string="Base URL", | |||
|                            config_parameter='infobip_whatsapp_integration.' | |||
|                                             'base_url', | |||
|                            help="Enter the base URL for Infobip WhatsApp " | |||
|                                 "integration.") | |||
|     infobip_whatsapp = fields.Char(string="Infobip Whatsapp Number", | |||
|                                    config_parameter='infobip_whatsapp_integration' | |||
|                                                     '.infobip_whatsapp', | |||
|                                    help="Enter the Infobip WhatsApp number " | |||
|                                         "for integration.") | |||
| @ -0,0 +1,45 @@ | |||
| # -*- coding: utf-8 -*- | |||
| ############################################################################# | |||
| # | |||
| #    Cybrosys Technologies Pvt. Ltd. | |||
| # | |||
| #    Copyright (C) 2024-TODAY Cybrosys Technologies(<https://www.cybrosys.com>) | |||
| #    Author: Jumana Jabin MP (odoo@cybrosys.com) | |||
| # | |||
| #    You can modify it under the terms of the GNU LESSER | |||
| #    GENERAL PUBLIC LICENSE (LGPL v3), Version 3. | |||
| # | |||
| #    This program is distributed in the hope that it will be useful, | |||
| #    but WITHOUT ANY WARRANTY; without even the implied warranty of | |||
| #    MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the | |||
| #    GNU LESSER GENERAL PUBLIC LICENSE (LGPL v3) for more details. | |||
| # | |||
| #    You should have received a copy of the GNU LESSER GENERAL PUBLIC LICENSE | |||
| #    (LGPL v3) along with this program. | |||
| #    If not, see <http://www.gnu.org/licenses/>. | |||
| # | |||
| ############################################################################# | |||
| from odoo import models | |||
| 
 | |||
| 
 | |||
| class ResPartner(models.Model): | |||
|     """This class extends the 'res.partner' model to add the | |||
|     'action_open_whatsapp' method.It opens a WhatsApp Message Wizard for the | |||
|      partner.""" | |||
|     _inherit = 'res.partner' | |||
| 
 | |||
|     def action_open_whatsapp(self): | |||
|         """This method opens a WhatsApp Message Wizard for the partner.""" | |||
|         return { | |||
|             'type': 'ir.actions.act_window', | |||
|             'name': f'Send WhatsApp Message to {self.name}', | |||
|             'res_model': 'whatsapp.message', | |||
|             'view_mode': 'form', | |||
|             'view_id': self.env.ref( | |||
|                 'infobip_whatsapp_integration.view_whatsapp_message_form').id, | |||
|             'target': 'new', | |||
|             'context': { | |||
|                 'default_partner_name': self.name, | |||
|                 'default_partner_mobile': self.mobile, | |||
|             }, | |||
|         } | |||
| 
 | 
| After Width: | Height: | Size: 3.6 KiB | 
| After Width: | Height: | Size: 310 B | 
| After Width: | Height: | Size: 1.3 KiB | 
| After Width: | Height: | Size: 1.4 KiB | 
| After Width: | Height: | Size: 576 B | 
| After Width: | Height: | Size: 733 B | 
| After Width: | Height: | Size: 911 B | 
| After Width: | Height: | Size: 1.1 KiB | 
| After Width: | Height: | Size: 1.2 KiB | 
| After Width: | Height: | Size: 673 B | 
| After Width: | Height: | Size: 878 B | 
| After Width: | Height: | Size: 653 B | 
| After Width: | Height: | Size: 905 B | 
| After Width: | Height: | Size: 839 B | 
| After Width: | Height: | Size: 427 B | 
| After Width: | Height: | Size: 627 B | 
| After Width: | Height: | Size: 1.2 KiB | 
| After Width: | Height: | Size: 988 B | 
| After Width: | Height: | Size: 1.2 KiB | 
| After Width: | Height: | Size: 1.5 KiB | 
| After Width: | Height: | Size: 1.1 KiB | 
| After Width: | Height: | Size: 1.9 KiB | 
| After Width: | Height: | Size: 1.1 KiB | 
| After Width: | Height: | Size: 2.1 KiB | 
| After Width: | Height: | Size: 4.4 KiB | 
| After Width: | Height: | Size: 589 B | 
| After Width: | Height: | Size: 3.4 KiB | 
| After Width: | Height: | Size: 1.7 KiB | 
| After Width: | Height: | Size: 2.3 KiB | 
| After Width: | Height: | Size: 967 B | 
| After Width: | Height: | Size: 1.6 KiB | 
| After Width: | Height: | Size: 3.8 KiB | 
| After Width: | Height: | Size: 5.0 KiB | 
| After Width: | Height: | Size: 84 KiB | 
| After Width: | Height: | Size: 88 KiB | 
| After Width: | Height: | Size: 79 KiB | 
| After Width: | Height: | Size: 84 KiB | 
| After Width: | Height: | Size: 86 KiB | 
| After Width: | Height: | Size: 84 KiB | 
| After Width: | Height: | Size: 113 KiB | 
| After Width: | Height: | Size: 114 KiB | 
| After Width: | Height: | Size: 452 KiB | 
| After Width: | Height: | Size: 42 KiB | 
| After Width: | Height: | Size: 100 KiB | 
| After Width: | Height: | Size: 435 KiB | 
| After Width: | Height: | Size: 132 KiB | 
| After Width: | Height: | Size: 137 KiB | 
| After Width: | Height: | Size: 156 KiB | 
| After Width: | Height: | Size: 99 KiB | 
| After Width: | Height: | Size: 89 KiB | 
| After Width: | Height: | Size: 91 KiB | 
| After Width: | Height: | Size: 281 KiB | 
| After Width: | Height: | Size: 99 KiB | 
| After Width: | Height: | Size: 357 KiB | 
| After Width: | Height: | Size: 96 KiB | 
| After Width: | Height: | Size: 430 KiB | 
| After Width: | Height: | Size: 584 KiB | 
| After Width: | Height: | Size: 105 KiB | 
| After Width: | Height: | Size: 25 KiB | 
| @ -0,0 +1,809 @@ | |||
| <div style="background-color: #714B67; height: 810px; width: 100%; padding: 15px; position: relative;"> | |||
|     <!-- TITLE BAR --> | |||
|     <div class="d-flex align-items-center justify-content-between" | |||
|          style="border-bottom: 1px solid #875A7B; padding: 15px; display: flex; justify-content: space-between; align-items: center;"> | |||
|         <img src="assets/misc/cybrosys-logo.png" width="42" height="42" | |||
|              style="width: 42px; height: 42px;"/> | |||
|         <div> | |||
|             <div | |||
|                     style="color: #7C7BAD; font-size: 14px; font-family: 'Montserrat', sans-serif; font-weight: bold; background-color: white; display: inline-block; padding: 3px 10px; border-radius: 50px;" | |||
|                     class="mr-2"> | |||
|                 <i class="fa fa-check mr-1"></i>Community | |||
|             </div> | |||
|             <div | |||
|                     style="color: #7C7BAD; font-size: 14px; font-family: 'Montserrat', sans-serif; font-weight: bold; background-color: white; display: inline-block; padding: 3px 10px; border-radius: 50px;" | |||
|                     class="mr-2"> | |||
|                 <i class="fa fa-check mr-1"></i>Enterprise | |||
|             </div> | |||
|             <div | |||
|                     style="color: #7C7BAD; font-size: 14px; font-family: 'Montserrat', sans-serif; font-weight: bold; background-color: white; display: inline-block; padding: 3px 10px; border-radius: 50px;" | |||
|                     class="mr-2"> | |||
|                 <i class="fa fa-check mr-1"></i>Odoo.sh | |||
|             </div> | |||
|         </div> | |||
|     </div> | |||
| 
 | |||
|     <div class="container" style="padding: 0rem 1.5rem 4rem !important"> | |||
|         <div class="row" style="height: 900px !important;"> | |||
|             <div class="col-sm-12 col-md-12 col-lg-12" | |||
|                  style="padding: 4rem 1rem !important; background-color: #714B67 !important; height: 600px !important; border-radius: 20px !important;"> | |||
|                 <h1 | |||
|                         style="font-family: 'Montserrat', sans-serif !important; font-weight: 600 !important; color: #FFFFFF !important;  font-size: 3.5rem !important; text-align: center !important;"> | |||
|                     Infobip Whatsapp Integration</h1> | |||
|                 <p | |||
|                         style="font-family: 'Montserrat', sans-serif !important; font-weight: 300 !important; color: #FFFFFF !important;  font-size: 1.4rem !important; text-align: center !important;"> | |||
|                     Send Different Types of Whatsapp Messages to Each Partner | |||
|                     Using Infobip Gateway </p> | |||
|                 <img src="assets/screenshots/hero.gif" class="img-responsive" | |||
|                      width="100%" height="auto"/> | |||
|             </div> | |||
|         </div> | |||
| 
 | |||
|         <div class="row"> | |||
|             <div class="col-md-12" | |||
|                  style="border-bottom: 1px solid #d5d5d5 !important; margin-bottom: 2rem !important"> | |||
|                 <h2 | |||
|                         style="font-family: 'Montserrat', sans-serif !important; font-weight: 600 !important; color: #714B67 !important; font-size: 1.5rem !important;"> | |||
|                     <i class="fa fa-compass mr-2"></i>Explore this module | |||
|                 </h2> | |||
|                 <div class="row"> | |||
|                     <div class="col-md-6"> | |||
|                         <a href="#overview" | |||
|                            style="text-decoration: none !important;"> | |||
|                             <div class="row" | |||
|                                  style="background-color: #f5f2f5 !important; border-radius: 10px !important; margin: 1rem !important; padding: 1.5em !important; height: 100px !important;"> | |||
|                                 <div class="col-8"> | |||
|                                     <h3 | |||
|                                             style="font-family: 'Montserrat', sans-serif !important; font-weight: 600 !important; color: #714B67 !important; font-size: 1.2rem !important;"> | |||
|                                         Overview</h3> | |||
|                                     <p | |||
|                                             style="font-family: 'Roboto', sans-serif !important; font-weight: 400 !important; color: #714B67 !important; font-size: 0.9rem !important;"> | |||
|                                         Learn more about this module</p> | |||
|                                 </div> | |||
|                                 <div class="col-4 text-right d-flex justify-content-end align-items-center"> | |||
|                                     <i class="fa fa-chevron-right" | |||
|                                        style="color: #714B67 !important;"></i> | |||
|                                 </div> | |||
|                             </div> | |||
|                         </a> | |||
|                     </div> | |||
|                     <div class="col-md-6"> | |||
|                         <a href="#features" | |||
|                            style="text-decoration: none !important;"> | |||
|                             <div class="row" | |||
|                                  style="background-color: #f5f2f5 !important; border-radius: 10px !important; margin: 1rem !important; padding: 1.5em !important; height: 100px !important;"> | |||
|                                 <div class="col-8"> | |||
|                                     <h3 | |||
|                                             style="font-family: 'Montserrat', sans-serif !important; font-weight: 600 !important; color: #714B67 !important; font-size: 1.2rem !important;"> | |||
|                                         Features</h3> | |||
|                                     <p | |||
|                                             style="font-family: 'Roboto', sans-serif !important; font-weight: 400 !important; color: #714B67 !important; font-size: 0.9rem !important;"> | |||
|                                         View features of this module</p> | |||
|                                 </div> | |||
|                                 <div class="col-4 text-right d-flex justify-content-end align-items-center"> | |||
|                                     <i class="fa fa-chevron-right" | |||
|                                        style="color: #714B67 !important;"></i> | |||
|                                 </div> | |||
|                             </div> | |||
|                         </a> | |||
|                     </div> | |||
|                     <div class="col-md-6"> | |||
|                         <a href="#screenshots" | |||
|                            style="text-decoration: none !important;"> | |||
|                             <div class="row" | |||
|                                  style="background-color: #f5f2f5 !important; border-radius: 10px !important; margin: 1rem !important; padding: 1.5em !important; height: 100px !important;"> | |||
|                                 <div class="col-8"> | |||
|                                     <h3 | |||
|                                             style="font-family: 'Montserrat', sans-serif !important; font-weight: 600 !important; color: #714B67 !important; font-size: 1.2rem !important;"> | |||
|                                         Screenshots</h3> | |||
|                                     <p | |||
|                                             style="font-family: 'Roboto', sans-serif !important; font-weight: 400 !important; color: #714B67 !important; font-size: 0.9rem !important;"> | |||
|                                         See key screenshots of this module</p> | |||
|                                 </div> | |||
|                                 <div class="col-4 text-right d-flex justify-content-end align-items-center"> | |||
|                                     <i class="fa fa-chevron-right" | |||
|                                        style="color: #714B67 !important;"></i> | |||
|                                 </div> | |||
|                             </div> | |||
|                         </a> | |||
|                     </div> | |||
|                 </div> | |||
|             </div> | |||
|         </div> | |||
| 
 | |||
|         <div class="row" id="overview"> | |||
|             <div class="col-md-12" | |||
|                  style="border-bottom: 1px solid #d5d5d5 !important; margin: 2rem 0 !important"> | |||
|                 <h2 | |||
|                         style="font-family: 'Montserrat', sans-serif !important; font-weight: 600 !important; color: #714B67 !important; font-size: 1.5rem !important;"> | |||
|                     <i class="fa fa-pie-chart mr-2"></i>Overview | |||
|                 </h2> | |||
|             </div> | |||
| 
 | |||
|             <div class="col-mg-12 pl-3"> | |||
|                 <p | |||
|                         style="font-family: 'Roboto', sans-serif !important; font-weight: 400 !important; color: #282F33 !important; font-size: 1rem !important; line-height: 30px !important;"> | |||
|                     This Module Helps you to Send a Whatsapp Message to your | |||
|                     Partners to send text message , send interactive list and | |||
|                     button message ,send contact details and to send location | |||
|                     of a user. | |||
|                 </p> | |||
|             </div> | |||
|         </div> | |||
| 
 | |||
|         <div class="row" id="features"> | |||
|             <div class="col-md-12" | |||
|                  style="border-bottom: 1px solid #d5d5d5 !important; margin: 2rem 0 !important"> | |||
|                 <h2 | |||
|                         style="font-family: 'Montserrat', sans-serif !important; font-weight: 600 !important; color: #714B67 !important; font-size: 1.5rem !important;"> | |||
|                     <i class="fa fa-star mr-2"></i>Features | |||
|                 </h2> | |||
|             </div> | |||
| 
 | |||
|             <div class="col-md-6 pl-3 py-3 d-flex"> | |||
|                 <div> | |||
|                     <img src="assets/icons/check.png"> | |||
|                 </div> | |||
|                 <div> | |||
|                     <h4 | |||
|                             style="font-family: 'Roboto', sans-serif !important; font-weight: 600 !important; color: #282F33 !important; font-size: 1.3rem !important;"> | |||
|                         Send Text Message Using Infobip</h4> | |||
|                 </div> | |||
|             </div> | |||
| 
 | |||
|             <div class="col-md-6 pl-3 py-3 d-flex"> | |||
|                 <div> | |||
|                     <img src="assets/icons/check.png"> | |||
|                 </div> | |||
|                 <div> | |||
|                     <h4 | |||
|                             style="font-family: 'Roboto', sans-serif !important; font-weight: 600 !important; color: #282F33 !important; font-size: 1.3rem !important;"> | |||
|                         Send Interactive Button and List Message to | |||
|                         partner.</h4> | |||
|                 </div> | |||
|             </div> | |||
| 
 | |||
|             <div class="col-md-6 pl-3 py-3 d-flex"> | |||
|                 <div> | |||
|                     <img src="assets/icons/check.png"> | |||
|                 </div> | |||
|                 <div> | |||
|                     <h4 | |||
|                             style="font-family: 'Roboto', sans-serif !important; font-weight: 600 !important; color: #282F33 !important; font-size: 1.3rem !important;"> | |||
|                         Send Contact Details of Users to Another Users.</h4> | |||
|                 </div> | |||
|             </div> | |||
| 
 | |||
|             <div class="col-md-6 pl-3 py-3 d-flex"> | |||
|                 <div> | |||
|                     <img src="assets/icons/check.png"> | |||
|                 </div> | |||
|                 <div> | |||
|                     <h4 | |||
|                             style="font-family: 'Roboto', sans-serif !important; font-weight: 600 !important; color: #282F33 !important; font-size: 1.3rem !important;"> | |||
|                         Send Location Details of Users to Others</h4> | |||
|                 </div> | |||
|             </div> | |||
|             <div class="col-md-6 pl-3 py-3 d-flex"> | |||
|                 <div> | |||
|                     <img src="assets/icons/check.png"> | |||
|                 </div> | |||
|                 <div> | |||
|                     <h4 | |||
|                             style="font-family: 'Roboto', sans-serif !important; font-weight: 600 !important; color: #282F33 !important; font-size: 1.3rem !important;"> | |||
|                         In Infobip We can See the Log Details of Sent | |||
|                         Messages.</h4> | |||
|                 </div> | |||
|             </div> | |||
|         </div> | |||
|     </div> | |||
| 
 | |||
|     <div class="row" id="screenshots"> | |||
|         <div class="col-md-12" | |||
|              style="border-bottom: 1px solid #d5d5d5 !important; margin: 2rem 0 !important"> | |||
|             <h2 | |||
|                     style="font-family: 'Montserrat', sans-serif !important; font-weight: 600 !important; color: #714B67 !important; font-size: 1.5rem !important;"> | |||
|                 <i class="fa fa-image mr-2"></i>Screenshots | |||
|             </h2> | |||
|         </div> | |||
|         <div class="col-lg-12 my-2"> | |||
|             <h4 class="mt-2" | |||
|                 style="font-family: 'Roboto', sans-serif !important; font-weight: 600 !important; color: #282F33 !important; font-size: 1.3rem !important;"> | |||
|                 Infobip Credentials </h4> | |||
|             <p | |||
|                     style="font-family: 'Roboto', sans-serif !important; font-weight: 400 !important; color: #282F33 !important; font-size: 1rem !important;"> | |||
|                 Go to the Infobip website at <a | |||
|                     href="https://portal.infobip.com/">https://portal.infobip.com/</a><br/> | |||
|                 Click on the "Sign Up" Button to Create a new Account. If you | |||
|                 already have an Account, you can Log In Instead.</p> | |||
| 
 | |||
|             <p | |||
|                     style="font-family: 'Roboto', sans-serif !important; font-weight: 400 !important; color: #282F33 !important; font-size: 1rem !important;"> | |||
|                 After Logging in, Navigate to the Homepage. Where you can see | |||
|                 the API Key | |||
|                 and API Base URL . Below that we can see the Whatsapp . | |||
|             </p> | |||
|             <img src="assets/screenshots/15.png" | |||
|                  class="img-responsive img-thumbnail border" width="100%" | |||
|                  height="auto"/> | |||
|             <p | |||
|                     style="font-family: 'Roboto', sans-serif !important; font-weight: 400 !important; color: #282F33 !important; font-size: 1rem !important;"> | |||
|                 Below that we can see "Continue your journey with WhatsApp API | |||
|                 ".Complete the 5 steps below.</p> | |||
|             <img src="assets/screenshots/16.png" | |||
|                  class="img-responsive img-thumbnail border" width="100%" | |||
|                  height="auto"/> | |||
|             <p | |||
|                     style="font-family: 'Roboto', sans-serif !important; font-weight: 400 !important; color: #282F33 !important; font-size: 1rem !important;"> | |||
|                 Its is important to connect with the whatsapp  , by | |||
|                 scanning the qrcode or sending message directly from your | |||
|                 whatsapp</p> | |||
|             <img src="assets/screenshots/17.png" | |||
|                  class="img-responsive img-thumbnail border" width="100%" | |||
|                  height="auto"/> | |||
|             <p | |||
|                     style="font-family: 'Roboto', sans-serif !important; font-weight: 400 !important; color: #282F33 !important; font-size: 1rem !important;"> | |||
|                 By clicking "VIEW LOG" , we can see the log details of sent | |||
|                 messages, Also Copy the "test sender" to use as infobip | |||
|                 Number</p> | |||
|         </div> | |||
| 
 | |||
|         <div class="col-lg-12 my-2"> | |||
|             <h4 class="mt-2" | |||
|                 style="font-family: 'Roboto', sans-serif !important; font-weight: 600 !important; color: #282F33 !important; font-size: 1.3rem !important;"> | |||
|                 Configuration of Credentials </h4> | |||
|             <p | |||
|                     style="font-family: 'Roboto', sans-serif !important; font-weight: 400 !important; color: #282F33 !important; font-size: 1rem !important;"> | |||
|                 Go to Settings and add Infobip Account | |||
|                 Credentials.</p> | |||
|             <img src="assets/screenshots/1.png" | |||
|                  class="img-responsive img-thumbnail border" width="100%" | |||
|                  height="auto"/> | |||
|         </div> | |||
|         <div class="col-lg-12 my-2"> | |||
|             <p | |||
|                     style="font-family: 'Roboto', sans-serif !important; font-weight: 400 !important; color: #282F33 !important; font-size: 1rem !important;"> | |||
|                 Add whatsapp mobile number to any partner.We can see in header | |||
|                 "WHATSAPP" Button .Click on it.</p> | |||
|             <img src="assets/screenshots/2.png" | |||
|                  class="img-responsive img-thumbnail border" width="100%" | |||
|                  height="auto"/> | |||
|         </div> | |||
| 
 | |||
|         <div class="col-lg-12 my-3"> | |||
|             <p | |||
|                     style="font-family: 'Roboto', sans-serif !important; font-weight: 400 !important; color: #282F33 !important; font-size: 1rem !important;"> | |||
|                A Wizard with alot of options to send whatsapp message will be | |||
|                 shown. | |||
|             </p> | |||
|             <img src="assets/screenshots/3.png" | |||
|                  class="img-responsive img-thumbnail border" width="100%" | |||
|                  height="auto"/> | |||
|              <h4 class="mt-3" | |||
|                 style="font-family: 'Roboto', sans-serif !important; font-weight: 600 !important; color: #282F33 !important; font-size: 1.3rem !important;"> | |||
|                  Choose One Method to Send Message . Choose Text Message and | |||
|                 click the "Send Message" Button </h4> | |||
|             <img src="assets/screenshots/4.png" | |||
|                  class="img-responsive img-thumbnail border" width="100%" | |||
|                  height="auto"/> | |||
|             <p | |||
|                     style="font-family: 'Roboto', sans-serif !important; font-weight: 400 !important; color: #282F33 !important; font-size: 1rem !important;"> | |||
|                 The message shown as: | |||
|             </p> | |||
|             <img src="assets/screenshots/5.png" | |||
|                  class="img-responsive img-thumbnail border" width="100%" | |||
|                  height="auto"/> | |||
|             <h4 class="mt-3" | |||
|                 style="font-family: 'Roboto', sans-serif !important; font-weight: 600 !important; color: #282F33 !important; font-size: 1.3rem !important;"> | |||
|                 Choose Interactive Button Message . </h4> | |||
|             <img src="assets/screenshots/6.png" | |||
|                  class="img-responsive img-thumbnail border" width="100%" | |||
|                  height="auto"/> | |||
|             <p | |||
|                     style="font-family: 'Roboto', sans-serif !important; font-weight: 400 !important; color: #282F33 !important; font-size: 1rem !important;"> | |||
|                 The message shown as: | |||
|             </p> | |||
|             <img src="assets/screenshots/7.png" | |||
|                  class="img-responsive img-thumbnail border" width="100%" | |||
|                  height="auto"/> | |||
|             <h4 class="mt-3" | |||
|                 style="font-family: 'Roboto', sans-serif !important; font-weight: 600 !important; color: #282F33 !important; font-size: 1.3rem !important;"> | |||
|                 Choose Share Contact Details . | |||
|             </h4> | |||
|             <img src="assets/screenshots/8.png" | |||
|                  class="img-responsive img-thumbnail border" width="100%" | |||
|                  height="auto"/> | |||
|             <p | |||
|                     style="font-family: 'Roboto', sans-serif !important; font-weight: 400 !important; color: #282F33 !important; font-size: 1rem !important;"> | |||
|                 The message shown as: | |||
|             </p> | |||
|             <img src="assets/screenshots/9.png" | |||
|                  class="img-responsive img-thumbnail border" width="100%" | |||
|                  height="auto"/> | |||
|         </div> | |||
|         <div class="col-lg-12 my-3"> | |||
|             <h4 class="mt-3" | |||
|                 style="font-family: 'Roboto', sans-serif !important; font-weight: 600 !important; color: #282F33 !important; font-size: 1.3rem !important;"> | |||
|                 Choose Interactive List Message . </h4> | |||
|             <img src="assets/screenshots/10.png" | |||
|                  class="img-responsive img-thumbnail border" width="100%" | |||
|                  height="auto"/> | |||
|             <p | |||
|                     style="font-family: 'Roboto', sans-serif !important; font-weight: 400 !important; color: #282F33 !important; font-size: 1rem !important;"> | |||
|                 The message shown as: | |||
|             </p> | |||
|             <img src="assets/screenshots/11.png" | |||
|                  class="img-responsive img-thumbnail border" width="100%" | |||
|                  height="auto"/> | |||
|             <p | |||
|                     style="font-family: 'Roboto', sans-serif !important; font-weight: 400 !important; color: #282F33 !important; font-size: 1rem !important;"> | |||
|                 The Options shown as: | |||
|             </p> | |||
|             <img src="assets/screenshots/12.png" | |||
|                  class="img-responsive img-thumbnail border" width="100%" | |||
|                  height="auto"/> | |||
|         </div> | |||
| 
 | |||
|         <div class="col-lg-12 my-3"> | |||
|             <h4 class="mt-3" | |||
|                 style="font-family: 'Roboto', sans-serif !important; font-weight: 600 !important; color: #282F33 !important; font-size: 1.3rem !important;"> | |||
|                 Choose Share Location . </h4> | |||
|             <img src="assets/screenshots/13.png" | |||
|                  class="img-responsive img-thumbnail border" width="100%" | |||
|                  height="auto"/> | |||
|             <p | |||
|                     style="font-family: 'Roboto', sans-serif !important; font-weight: 400 !important; color: #282F33 !important; font-size: 1rem !important;"> | |||
|                               The message shown as: | |||
| 
 | |||
|             </p> | |||
|             <img src="assets/screenshots/14.png" | |||
|                  class="img-responsive img-thumbnail border" width="100%" | |||
|                  height="auto"/> | |||
|         </div> | |||
| 
 | |||
|     </div> | |||
|     <!-- RELATED PRODUCTS --> | |||
|     <div class="d-flex align-items-center" | |||
|          style="border-bottom: 2px solid #714B67; padding: 15px 0px;"> | |||
|         <div class="d-flex justify-content-center align-items-center mr-2" | |||
|              style="background-color: #F5F5F5; border-radius: 0px; width: 40px; height: 40px;"> | |||
|             <img src="assets/misc/categories.png"/> | |||
|         </div> | |||
|         <h2 class="mt-2" | |||
|             style="font-family: 'Montserrat', sans-serif; font-size: 24px; font-weight: bold;"> | |||
|             Related | |||
|             Products | |||
|         </h2> | |||
|     </div> | |||
|     <div class="row"> | |||
|         <div class="col-sm-12"> | |||
|             <div id="demo1" class="row carousel slide" data-ride="carousel"> | |||
|                 <!-- The slideshow --> | |||
|                 <div class="carousel-inner" style="padding: 30px;"> | |||
|                     <div class="carousel-item" style="min-height: 198.656px;"> | |||
|                         <div class="col-xs-12 col-sm-4 col-md-4 mb16 mt16" | |||
|                              style="float:left"> | |||
|                             <a href="https://apps.odoo.com/apps/modules/16.0/whatsapp_mail_messaging/" | |||
|                                target="_blank"> | |||
|                                 <div style="border-radius:10px"> | |||
|                                     <img class="img img-responsive center-block" | |||
|                                          style="border-radius: 0px;" | |||
|                                          src="assets/modules/11.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/16.0/whatsapp_redirect/" | |||
|                                target="_blank"> | |||
|                                 <div style="border-radius:10px"> | |||
|                                     <img class="img img-responsive center-block" | |||
|                                          style="border-radius: 0px;" | |||
|                                          src="assets/modules/12.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/16.0/insta_feed_snippet/" | |||
|                                target="_blank"> | |||
|                                 <div style="border-radius:10px"> | |||
|                                     <img class="img img-responsive center-block" | |||
|                                          style="border-radius: 0px;" | |||
|                                          src="assets/modules/13.png"> | |||
|                                 </div> | |||
|                             </a> | |||
|                         </div> | |||
|                     </div> | |||
|                     <div class="carousel-item active" | |||
|                          style="min-height: 198.656px;"> | |||
|                         <div class="col-xs-12 col-sm-4 col-md-4 mb16 mt16" | |||
|                              style="float:left"> | |||
|                             <a href="https://apps.odoo.com/apps/modules/16.0/website_floating_whatsapp_icon/" | |||
|                                target="_blank"> | |||
|                                 <div style="border-radius:10px"> | |||
|                                     <img class="img img-responsive center-block" | |||
|                                          style="border-radius: 0px;" | |||
|                                          src="assets/modules/14.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/16.0/whatsapp_chat_layout/" | |||
|                                target="_blank"> | |||
|                                 <div style="border-radius:10px"> | |||
|                                     <img class="img img-responsive center-block" | |||
|                                          style="border-radius: 0px;" | |||
|                                          src="assets/modules/15.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/16.0/fb_messenger/" | |||
|                                target="_blank"> | |||
|                                 <div style="border-radius:10px"> | |||
|                                     <img class="img img-responsive center-block" | |||
|                                          style="border-radius: 0px;" | |||
|                                          src="assets/modules/16.png"> | |||
|                                 </div> | |||
|                             </a> | |||
|                         </div> | |||
|                     </div> | |||
|                 </div> | |||
|                 <!-- Left and right controls --> | |||
|                 <a class="carousel-control-prev" href="#demo1" | |||
|                    data-slide="prev" | |||
|                    style="width:35px; color:#000"> <span | |||
|                         class="carousel-control-prev-icon"><i | |||
|                         class="fa fa-chevron-left" | |||
|                         style="font-size:24px"></i></span> | |||
|                 </a> <a class="carousel-control-next" href="#demo1" | |||
|                         data-slide="next" style="width:35px; color:#000"> | |||
|                 <span class="carousel-control-next-icon"><i | |||
|                         class="fa fa-chevron-right" style="font-size:24px"></i></span> | |||
|             </a> | |||
|             </div> | |||
|         </div> | |||
|     </div> | |||
|     <!-- END OF RELATED PRODUCTS --> | |||
| 
 | |||
|     <!-- OUR SERVICES --> | |||
| 
 | |||
|     <div class="d-flex align-items-center" | |||
|          style="border-bottom: 2px solid #714B67; padding: 15px 0px;"> | |||
|         <div class="d-flex justify-content-center align-items-center mr-2" | |||
|              style="background-color: #F5F5F5; border-radius: 0px; width: 40px; height: 40px;"> | |||
|             <img src="assets/misc/star.png"/> | |||
|         </div> | |||
|         <h2 class="mt-2" | |||
|             style="font-family: 'Montserrat', sans-serif; font-size: 24px; font-weight: bold;"> | |||
|             Our Services | |||
|         </h2> | |||
|     </div> | |||
| 
 | |||
|     <div class="container my-5"> | |||
|         <div class="row"> | |||
|             <div class="col-lg-4 d-flex flex-column justify-content-center align-items-center my-4"> | |||
|                 <div class="d-flex justify-content-center align-items-center mx-3 my-3" | |||
|                      style="background-color: #1dd1a1 !important; border-radius: 15px !important; height: 80px; width: 80px;"> | |||
|                     <img src="assets/icons/cogs.png" class="img-responsive" | |||
|                          height="48px" width="48px"> | |||
|                 </div> | |||
|                 <h6 class="text-center" | |||
|                     style="font-family: Montserrat, 'sans-serif' !important; font-weight: bold;"> | |||
|                     Odoo | |||
|                     Customization</h6> | |||
|             </div> | |||
| 
 | |||
|             <div class="col-lg-4 d-flex flex-column justify-content-center align-items-center my-4"> | |||
|                 <div class="d-flex justify-content-center align-items-center mx-3 my-3" | |||
|                      style="background-color: #ff6b6b !important; border-radius: 15px !important; height: 80px; width: 80px;"> | |||
|                     <img src="assets/icons/wrench.png" class="img-responsive" | |||
|                          height="48px" width="48px"> | |||
|                 </div> | |||
|                 <h6 class="text-center" | |||
|                     style="font-family: Montserrat, 'sans-serif' !important; font-weight: bold;"> | |||
|                     Odoo | |||
|                     Implementation</h6> | |||
|             </div> | |||
| 
 | |||
|             <div class="col-lg-4 d-flex flex-column justify-content-center align-items-center my-4"> | |||
|                 <div class="d-flex justify-content-center align-items-center mx-3 my-3" | |||
|                      style="background-color: #6462CD !important; border-radius: 15px !important; height: 80px; width: 80px;"> | |||
|                     <img src="assets/icons/lifebuoy.png" class="img-responsive" | |||
|                          height="48px" width="48px"> | |||
|                 </div> | |||
|                 <h6 class="text-center" | |||
|                     style="font-family: Montserrat, 'sans-serif' !important; font-weight: bold;"> | |||
|                     Odoo | |||
|                     Support</h6> | |||
|             </div> | |||
| 
 | |||
| 
 | |||
|             <div class="col-lg-4 d-flex flex-column justify-content-center align-items-center my-4"> | |||
|                 <div class="d-flex justify-content-center align-items-center mx-3 my-3" | |||
|                      style="background-color: #ffa801 !important; border-radius: 15px !important; height: 80px; width: 80px;"> | |||
|                     <img src="assets/icons/user.png" class="img-responsive" | |||
|                          height="48px" width="48px"> | |||
|                 </div> | |||
|                 <h6 class="text-center" | |||
|                     style="font-family: Montserrat, 'sans-serif' !important; font-weight: bold;"> | |||
|                     Hire | |||
|                     Odoo | |||
|                     Developer</h6> | |||
|             </div> | |||
| 
 | |||
|             <div class="col-lg-4 d-flex flex-column justify-content-center align-items-center my-4"> | |||
|                 <div class="d-flex justify-content-center align-items-center mx-3 my-3" | |||
|                      style="background-color: #54a0ff  !important; border-radius: 15px !important; height: 80px; width: 80px;"> | |||
|                     <img src="assets/icons/puzzle.png" class="img-responsive" | |||
|                          height="48px" width="48px"> | |||
|                 </div> | |||
|                 <h6 class="text-center" | |||
|                     style="font-family: Montserrat, 'sans-serif' !important; font-weight: bold;"> | |||
|                     Odoo | |||
|                     Integration</h6> | |||
|             </div> | |||
| 
 | |||
|             <div class="col-lg-4 d-flex flex-column justify-content-center align-items-center my-4"> | |||
|                 <div class="d-flex justify-content-center align-items-center mx-3 my-3" | |||
|                      style="background-color: #6d7680 !important; border-radius: 15px !important; height: 80px; width: 80px;"> | |||
|                     <img src="assets/icons/update.png" class="img-responsive" | |||
|                          height="48px" width="48px"> | |||
|                 </div> | |||
|                 <h6 class="text-center" | |||
|                     style="font-family: Montserrat, 'sans-serif' !important; font-weight: bold;"> | |||
|                     Odoo | |||
|                     Migration</h6> | |||
|             </div> | |||
| 
 | |||
| 
 | |||
|             <div class="col-lg-4 d-flex flex-column justify-content-center align-items-center my-4"> | |||
|                 <div class="d-flex justify-content-center align-items-center mx-3 my-3" | |||
|                      style="background-color: #786fa6 !important; border-radius: 15px !important; height: 80px; width: 80px;"> | |||
|                     <img src="assets/icons/consultation.png" | |||
|                          class="img-responsive" height="48px" width="48px"> | |||
|                 </div> | |||
|                 <h6 class="text-center" | |||
|                     style="font-family: Montserrat, 'sans-serif' !important; font-weight: bold;"> | |||
|                     Odoo | |||
|                     Consultancy</h6> | |||
|             </div> | |||
| 
 | |||
|             <div class="col-lg-4 d-flex flex-column justify-content-center align-items-center my-4"> | |||
|                 <div class="d-flex justify-content-center align-items-center mx-3 my-3" | |||
|                      style="background-color: #f8a5c2 !important; border-radius: 15px !important; height: 80px; width: 80px;"> | |||
|                     <img src="assets/icons/training.png" class="img-responsive" | |||
|                          height="48px" width="48px"> | |||
|                 </div> | |||
|                 <h6 class="text-center" | |||
|                     style="font-family: Montserrat, 'sans-serif' !important; font-weight: bold;"> | |||
|                     Odoo | |||
|                     Implementation</h6> | |||
|             </div> | |||
| 
 | |||
|             <div class="col-lg-4 d-flex flex-column justify-content-center align-items-center my-4"> | |||
|                 <div class="d-flex justify-content-center align-items-center mx-3 my-3" | |||
|                      style="background-color: #e6be26 !important; border-radius: 15px !important; height: 80px; width: 80px;"> | |||
|                     <img src="assets/icons/license.png" class="img-responsive" | |||
|                          height="48px" width="48px"> | |||
|                 </div> | |||
|                 <h6 class="text-center" | |||
|                     style="font-family: Montserrat, 'sans-serif' !important; font-weight: bold;"> | |||
|                     Odoo | |||
|                     Licensing Consultancy</h6> | |||
|             </div> | |||
|         </div> | |||
| 
 | |||
|     </div> | |||
| 
 | |||
|     <!-- END OF OUR SERVICES --> | |||
| 
 | |||
|     <!-- OUR INDUSTRIES --> | |||
| 
 | |||
|     <div class="d-flex align-items-center" | |||
|          style="border-bottom: 2px solid #714B67; padding: 15px 0px;"> | |||
|         <div class="d-flex justify-content-center align-items-center mr-2" | |||
|              style="background-color: #F5F5F5; border-radius: 0px; width: 40px; height: 40px;"> | |||
|             <img src="assets/misc/corporate.png"/> | |||
|         </div> | |||
|         <h2 class="mt-2" | |||
|             style="font-family: 'Montserrat', sans-serif; font-size: 24px; font-weight: bold;"> | |||
|             Our | |||
|             Industries | |||
|         </h2> | |||
|     </div> | |||
| 
 | |||
|     <div class="container my-5"> | |||
|         <div class="row"> | |||
|             <div class="col-lg-3"> | |||
|                 <div class="my-4 d-flex flex-column justify-content-center" | |||
|                      style="background-color: #f6f8f9 !important; border-radius: 0px; padding: 2rem !important; height: 250px !important;"> | |||
|                     <img src="assets/icons/trading-black.png" | |||
|                          class="img-responsive mb-3" height="48px" | |||
|                          width="48px"> | |||
|                     <h5 style="font-family: Montserrat, sans-serif !important; color: #000 !important; font-weight: bold;"> | |||
|                         Trading | |||
|                     </h5> | |||
|                     <p style="font-family: Montserrat, sans-serif !important; font-size: 0.9rem !important;"> | |||
|                         Easily procure | |||
|                         and | |||
|                         sell your products</p> | |||
|                 </div> | |||
|             </div> | |||
| 
 | |||
|             <div class="col-lg-3"> | |||
|                 <div class="my-4 d-flex flex-column justify-content-center" | |||
|                      style="background-color: #f6f8f9 !important; border-radius: 0px; padding: 2rem !important; height: 250px !important;"> | |||
|                     <img src="assets/icons/pos-black.png" | |||
|                          class="img-responsive mb-3" height="48px" | |||
|                          width="48px"> | |||
|                     <h5 style="font-family: Montserrat, sans-serif !important; color: #000 !important; font-weight: bold;"> | |||
|                         POS | |||
|                     </h5> | |||
|                     <p style="font-family: Montserrat, sans-serif !important; font-size: 0.9rem !important;"> | |||
|                         Easy | |||
|                         configuration | |||
|                         and convivial experience</p> | |||
|                 </div> | |||
|             </div> | |||
| 
 | |||
|             <div class="col-lg-3"> | |||
|                 <div class="my-4 d-flex flex-column justify-content-center" | |||
|                      style="background-color: #f6f8f9 !important; border-radius: 0px; padding: 2rem !important; height: 250px !important;"> | |||
|                     <img src="assets/icons/education-black.png" | |||
|                          class="img-responsive mb-3" height="48px" | |||
|                          width="48px"> | |||
|                     <h5 style="font-family: Montserrat, sans-serif !important; color: #000 !important; font-weight: bold;"> | |||
|                         Education | |||
|                     </h5> | |||
|                     <p style="font-family: Montserrat, sans-serif !important; font-size: 0.9rem !important;"> | |||
|                         A platform for | |||
|                         educational management</p> | |||
|                 </div> | |||
|             </div> | |||
| 
 | |||
|             <div class="col-lg-3"> | |||
|                 <div class="my-4 d-flex flex-column justify-content-center" | |||
|                      style="background-color: #f6f8f9 !important; border-radius: 0px; padding: 2rem !important; height: 250px !important;"> | |||
|                     <img src="assets/icons/manufacturing-black.png" | |||
|                          class="img-responsive mb-3" height="48px" | |||
|                          width="48px"> | |||
|                     <h5 style="font-family: Montserrat, sans-serif !important; color: #000 !important; font-weight: bold;"> | |||
|                         Manufacturing | |||
|                     </h5> | |||
|                     <p style="font-family: Montserrat, sans-serif !important; font-size: 0.9rem !important;"> | |||
|                         Plan, track and | |||
|                         schedule your operations</p> | |||
|                 </div> | |||
|             </div> | |||
| 
 | |||
|             <div class="col-lg-3"> | |||
|                 <div class="my-4 d-flex flex-column justify-content-center" | |||
|                      style="background-color: #f6f8f9 !important; border-radius: 0px; padding: 2rem !important; height: 250px !important;"> | |||
|                     <img src="assets/icons/ecom-black.png" | |||
|                          class="img-responsive mb-3" height="48px" | |||
|                          width="48px"> | |||
|                     <h5 style="font-family: Montserrat, sans-serif !important; color: #000 !important; font-weight: bold;"> | |||
|                         E-commerce & Website | |||
|                     </h5> | |||
|                     <p style="font-family: Montserrat, sans-serif !important; font-size: 0.9rem !important;"> | |||
|                         Mobile | |||
|                         friendly, | |||
|                         awe-inspiring product pages</p> | |||
|                 </div> | |||
|             </div> | |||
| 
 | |||
|             <div class="col-lg-3"> | |||
|                 <div class="my-4 d-flex flex-column justify-content-center" | |||
|                      style="background-color: #f6f8f9 !important; border-radius: 0px; padding: 2rem !important; height: 250px !important;"> | |||
|                     <img src="assets/icons/service-black.png" | |||
|                          class="img-responsive mb-3" height="48px" | |||
|                          width="48px"> | |||
|                     <h5 style="font-family: Montserrat, sans-serif !important; color: #000 !important; font-weight: bold;"> | |||
|                         Service Management | |||
|                     </h5> | |||
|                     <p style="font-family: Montserrat, sans-serif !important; font-size: 0.9rem !important;"> | |||
|                         Keep track of | |||
|                         services and invoice</p> | |||
|                 </div> | |||
|             </div> | |||
| 
 | |||
|             <div class="col-lg-3"> | |||
|                 <div class="my-4 d-flex flex-column justify-content-center" | |||
|                      style="background-color: #f6f8f9 !important; border-radius: 0px; padding: 2rem !important; height: 250px !important;"> | |||
|                     <img src="assets/icons/restaurant-black.png" | |||
|                          class="img-responsive mb-3" height="48px" | |||
|                          width="48px"> | |||
|                     <h5 style="font-family: Montserrat, sans-serif !important; color: #000 !important; font-weight: bold;"> | |||
|                         Restaurant | |||
|                     </h5> | |||
|                     <p style="font-family: Montserrat, sans-serif !important; font-size: 0.9rem !important;"> | |||
|                         Run your bar or | |||
|                         restaurant methodically</p> | |||
|                 </div> | |||
|             </div> | |||
| 
 | |||
|             <div class="col-lg-3"> | |||
|                 <div class="my-4 d-flex flex-column justify-content-center" | |||
|                      style="background-color: #f6f8f9 !important; border-radius: 0px; padding: 2rem !important; height: 250px !important;"> | |||
|                     <img src="assets/icons/hotel-black.png" | |||
|                          class="img-responsive mb-3" height="48px" | |||
|                          width="48px"> | |||
|                     <h5 style="font-family: Montserrat, sans-serif !important; color: #000 !important; font-weight: bold;"> | |||
|                         Hotel Management | |||
|                     </h5> | |||
|                     <p style="font-family: Montserrat, sans-serif !important; font-size: 0.9rem !important;"> | |||
|                         An | |||
|                         all-inclusive | |||
|                         hotel management application</p> | |||
|                 </div> | |||
|             </div> | |||
|         </div> | |||
|     </div> | |||
| 
 | |||
|     <!-- END OF OUR INDUSTRIES --> | |||
| 
 | |||
|     <!-- SUPPORT --> | |||
|     <div class="d-flex align-items-center" | |||
|          style="border-bottom: 2px solid #714B67; padding: 15px 0px;"> | |||
|         <div class="d-flex justify-content-center align-items-center mr-2" | |||
|              style="background-color: #F5F5F5; border-radius: 0px; width: 40px; height: 40px;"> | |||
|             <img src="assets/misc/customer-support.png"/> | |||
|         </div> | |||
|         <h2 class="mt-2" | |||
|             style="font-family: 'Montserrat', sans-serif; font-size: 24px; font-weight: bold;"> | |||
|             Support | |||
|         </h2> | |||
|     </div> | |||
|     <div class="container mt-5"> | |||
|         <div class="row"> | |||
|             <div class="col-sm-12 col-md-6"> | |||
|                 <div style="background-color: #F6F8F9; padding: 30px; display: flex; align-items: center;"> | |||
|                     <div class="mr-4 d-flex justify-content-center align-items-center" | |||
|                          style="background-color: #714B67; display: inline-block; height: 70px; width: 70px; display: flex; align-items: center; justify-content: center;"> | |||
|                         <img src="assets/misc/support.png" height="48" | |||
|                              width="48" style="width: 42px; height: 42px;"/> | |||
|                     </div> | |||
|                     <div> | |||
|                         <h4>Need Help?</h4> | |||
|                         <p style="line-height: 100%;">Got questions or need | |||
|                             help? Get in touch.</p> | |||
|                         <a href="mailto:odoo@cybrosys.com"> | |||
|                             <p style="font-weight: 400; font-size: 28px; line-height: 80%; color: #714B67;"> | |||
|                                 odoo@cybrosys.com</p> | |||
|                         </a> | |||
|                     </div> | |||
|                 </div> | |||
|             </div> | |||
|             <div class="col-sm-12 col-md-6"> | |||
|                 <div style="background-color: #F6F8F9; padding: 30px; display: flex; align-items: center;"> | |||
|                     <div class="mr-4 d-flex justify-content-center align-items-center" | |||
|                          style="background-color: #2AC44D; display: inline-block; height: 70px; width: 70px; display: flex; align-items: center; justify-content: center;"> | |||
|                         <img src="assets/misc/whatsapp.png" height="52" | |||
|                              width="52" style="width: 52px; height: 52px;"/> | |||
|                     </div> | |||
|                     <div> | |||
|                         <h4>WhatsApp</h4> | |||
|                         <p style="line-height: 100%;">Say hi to us on | |||
|                             WhatsApp!</p> | |||
|                         <a href="https://api.whatsapp.com/send?phone=918606827707"> | |||
|                             <p style="font-weight: 400; font-size: 28px; line-height: 80%; color: #714B67;"> | |||
|                                 +91 86068 | |||
|                                 27707</p> | |||
|                         </a> | |||
|                     </div> | |||
|                 </div> | |||
|             </div> | |||
|         </div> | |||
|         <div class="row"> | |||
|             <div class="col-sm-12 my-5 d-flex justify-content-center align-items-center"> | |||
|                 <img src="assets/misc/logo.png" width="144" height="31" | |||
|                      style="width:144px; height: 31px; margin-top: 40px;"/> | |||
|             </div> | |||
|         </div> | |||
|     </div> | |||
|     <!-- END OF SUPPORT --> | |||
| </div> | |||
| @ -0,0 +1,61 @@ | |||
| <?xml version="1.0" encoding="UTF-8"?> | |||
| <odoo> | |||
|     <!--Settings form view with whatsapp authentication fields--> | |||
|     <record id="res_config_settings_view_form" model="ir.ui.view"> | |||
|         <field name="name"> | |||
|             res.config.settings.view.form.inherit.infobip.whatsapp.integration | |||
|         </field> | |||
|         <field name="model">res.config.settings</field> | |||
|         <field name="inherit_id" ref="base.res_config_settings_view_form"/> | |||
|         <field name="arch" type="xml"> | |||
|             <div id="companies" position="after"> | |||
|                 <h2>Infobip Credentials for Whatsapp</h2> | |||
|                 <div class="row mt16 o_settings_container"> | |||
|                     <div class="col-12 col-lg-6 o_setting_box"> | |||
|                         <div class="o_setting_right_pane"> | |||
|                             <label string="Infobip Whatsapp Number" | |||
|                                    for="infobip_whatsapp"/> | |||
|                             <div class="text-muted"> | |||
|                                 Infobip Whatsapp Number | |||
|                             </div> | |||
|                             <div class="content-group"> | |||
|                                 <div class="mt16"> | |||
|                                     <field name="infobip_whatsapp" | |||
|                                            class="o_light_label"/> | |||
|                                 </div> | |||
|                             </div> | |||
|                         </div> | |||
|                     </div> | |||
|                     <div class="col-12 col-lg-6 o_setting_box"> | |||
|                         <div class="o_setting_right_pane"> | |||
|                             <label string="Base URL" for="base_url"/> | |||
|                             <div class="text-muted"> | |||
|                                 Base URL | |||
|                             </div> | |||
|                             <div class="content-group"> | |||
|                                 <div class="mt16"> | |||
|                                     <field name="base_url" | |||
|                                            class="o_light_label"/> | |||
|                                 </div> | |||
|                             </div> | |||
|                         </div> | |||
|                     </div> | |||
|                     <div class="col-12 col-lg-6 o_setting_box"> | |||
|                         <div class="o_setting_right_pane"> | |||
|                             <label string="API Key" for="api_key"/> | |||
|                             <div class="text-muted"> | |||
|                                 API Key | |||
|                             </div> | |||
|                             <div class="content-group"> | |||
|                                 <div class="mt16"> | |||
|                                     <field name="api_key" | |||
|                                            class="o_light_label"/> | |||
|                                 </div> | |||
|                             </div> | |||
|                         </div> | |||
|                     </div> | |||
|                 </div> | |||
|             </div> | |||
|         </field> | |||
|     </record> | |||
| </odoo> | |||
| @ -0,0 +1,25 @@ | |||
| <?xml version="1.0" encoding="UTF-8" ?> | |||
| <odoo> | |||
|     <!-- This record defines a custom view for the 'res.partner' model. --> | |||
|     <record id="view_partner_form" model="ir.ui.view"> | |||
|         <field name="name"> | |||
|             res.partner.view.form.inherit.infobip.whatsapp.integration | |||
|         </field> | |||
|         <field name="model">res.partner</field> | |||
|         <field name="inherit_id" ref="base.view_partner_form"/> | |||
|         <field name="arch" type="xml"> | |||
|             <!-- Add a WhatsApp button to the partner form view. --> | |||
|             <xpath expr="//form//sheet" position="before"> | |||
|                 <header> | |||
|                     <button name="action_open_whatsapp" type="object" | |||
|                             class="btn-icon"> | |||
|                         <div style="background-color: #429139; color: #fff; border-radius: 5px; padding: 5px; text-align: center;"> | |||
|                             <i class="fa fa-whatsapp"/> | |||
|                             WhatsApp | |||
|                         </div> | |||
|                     </button> | |||
|                 </header> | |||
|             </xpath> | |||
|         </field> | |||
|     </record> | |||
| </odoo> | |||
| @ -0,0 +1,22 @@ | |||
| # -*- coding: utf-8 -*- | |||
| ############################################################################# | |||
| # | |||
| #    Cybrosys Technologies Pvt. Ltd. | |||
| # | |||
| #    Copyright (C) 2023-TODAY Cybrosys Technologies(<https://www.cybrosys.com>) | |||
| #    Author: Jumana Jabin MP (odoo@cybrosys.com) | |||
| # | |||
| #    You can modify it under the terms of the GNU LESSER | |||
| #    GENERAL PUBLIC LICENSE (LGPL v3), Version 3. | |||
| # | |||
| #    This program is distributed in the hope that it will be useful, | |||
| #    but WITHOUT ANY WARRANTY; without even the implied warranty of | |||
| #    MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the | |||
| #    GNU LESSER GENERAL PUBLIC LICENSE (LGPL v3) for more details. | |||
| # | |||
| #    You should have received a copy of the GNU LESSER GENERAL PUBLIC LICENSE | |||
| #    (LGPL v3) along with this program. | |||
| #    If not, see <http://www.gnu.org/licenses/>. | |||
| # | |||
| ############################################################################# | |||
| from . import whatsapp_message | |||
| @ -0,0 +1,290 @@ | |||
| # -*- coding: utf-8 -*- | |||
| ############################################################################# | |||
| # | |||
| #    Cybrosys Technologies Pvt. Ltd. | |||
| # | |||
| #    Copyright (C) 2024-TODAY Cybrosys Technologies(<https://www.cybrosys.com>) | |||
| #    Author: Jumana Jabin MP (odoo@cybrosys.com) | |||
| # | |||
| #    You can modify it under the terms of the GNU LESSER | |||
| #    GENERAL PUBLIC LICENSE (LGPL v3), Version 3. | |||
| # | |||
| #    This program is distributed in the hope that it will be useful, | |||
| #    but WITHOUT ANY WARRANTY; without even the implied warranty of | |||
| #    MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the | |||
| #    GNU LESSER GENERAL PUBLIC LICENSE (LGPL v3) for more details. | |||
| # | |||
| #    You should have received a copy of the GNU LESSER GENERAL PUBLIC LICENSE | |||
| #    (LGPL v3) along with this program. | |||
| #    If not, see <http://www.gnu.org/licenses/>. | |||
| # | |||
| ############################################################################# | |||
| from infobip_channels import WhatsAppChannel | |||
| from odoo import fields, models, _ | |||
| from odoo.exceptions import ValidationError | |||
| 
 | |||
| 
 | |||
| class WhatsAppMessage(models.TransientModel): | |||
|     """WhatsApp Message Wizard Model This model is used to send various types | |||
|      of WhatsApp messages.""" | |||
|     _name = 'whatsapp.message' | |||
|     _description = 'WhatsApp Message Wizard' | |||
| 
 | |||
|     message_type = fields.Selection([ | |||
|         ('text', 'Text Message'), | |||
|         ('button', 'Interactive Button  Message'), | |||
|         ('contact', 'Share Contact Details'), | |||
|         ('list', 'Interactive List  Message'), | |||
|         ('location', 'Share Location'), | |||
|     ], string='Message Type', default='text', | |||
|         help="Choose a method to send Message") | |||
|     text_message = fields.Char(string='Text Message', | |||
|                                help='Enter the text message content') | |||
|     partner_name = fields.Char(string='Partner Name', | |||
|                                readonly=True, | |||
|                                store=True, help='Name of the partner') | |||
|     partner_mobile = fields.Char(string='Partner Mobile', | |||
|                                  readonly=True, | |||
|                                  store=True, | |||
|                                  help='Mobile number of the partner') | |||
|     text = fields.Char(string="Type Header Text", help='Enter the header text') | |||
|     yes_text = fields.Char(string="Text for Yes Reply", | |||
|                            help='Text for the "Yes" reply option') | |||
|     no_text = fields.Char(string="Text for No Reply", | |||
|                           help='Text for the "No" reply option') | |||
|     later_text = fields.Char(string="Text for Later Reply", | |||
|                              help='Text for the "Later" reply option') | |||
|     partner_ids = fields.Many2many('res.partner', string='Select Partners', | |||
|                                    help='Select one or more partners') | |||
|     footer_text = fields.Char(string="Type Footer Text", | |||
|                               help='Enter the footer text') | |||
|     section_title = fields.Char(string="Title of Section", | |||
|                                 help='Title of the section') | |||
|     section1_title = fields.Char(string="Type Option 1 Title", | |||
|                                  help='Title for Option 1') | |||
|     section1_description = fields.Char(string="Type Option 1 Description", | |||
|                                        help='Description for Option 1') | |||
|     section2_title = fields.Char(string="Type Option 2 Title", | |||
|                                  help='Title for Option 2') | |||
|     section2_description = fields.Char(string="Type Option 2 Description", | |||
|                                        help='Description for Option 2') | |||
|     section3_title = fields.Char(string="Type Option 3 Title", | |||
|                                  help='Title for Option 3') | |||
|     section3_description = fields.Char(string="Type Option 3 Description", | |||
|                                        help='Description for Option 3') | |||
|     section4_title = fields.Char(string="Type Option 4 Title", | |||
|                                  help='Title for Option 4') | |||
|     section4_description = fields.Char(string="Type Option 4 Description", | |||
|                                        help='Description for Option 4') | |||
| 
 | |||
|     def _get_config_parameter(self, param_name): | |||
|         """Retrieve a configuration parameter value from the database.""" | |||
|         return self.env['ir.config_parameter'].sudo().get_param(param_name) | |||
| 
 | |||
|     def action_send_message(self): | |||
|         """Send a Text Message through WhatsApp.""" | |||
|         url = self._get_config_parameter( | |||
|             'infobip_whatsapp_integration.base_url') | |||
|         api_key = self._get_config_parameter( | |||
|             'infobip_whatsapp_integration.api_key') | |||
|         number = self._get_config_parameter( | |||
|             'infobip_whatsapp_integration.infobip_whatsapp') | |||
|         if not all([url, api_key, number, self.text_message]): | |||
|             raise ValidationError( | |||
|                 _('Incomplete Data: Please ensure you have provided all ' | |||
|                   'necessary information to send the WhatsApp message.')) | |||
|         channel = WhatsAppChannel.from_auth_params({ | |||
|             "base_url": url, | |||
|             "api_key": api_key, }) | |||
|         response = channel.send_text_message({ | |||
|             "from": number, | |||
|             "to": self.partner_mobile, | |||
|             "content": { | |||
|                 "text": self.text_message | |||
|             }}) | |||
|         return response | |||
| 
 | |||
|     def action_send_intractive_message(self): | |||
|         """Send an Interactive Button Message through WhatsApp.""" | |||
|         url = self._get_config_parameter( | |||
|             'infobip_whatsapp_integration.base_url') | |||
|         api_key = self._get_config_parameter( | |||
|             'infobip_whatsapp_integration.api_key') | |||
|         number = self._get_config_parameter( | |||
|             'infobip_whatsapp_integration.infobip_whatsapp') | |||
|         if (self.text_message and self.partner_mobile and url and api_key and | |||
|                 number and self.yes_text and self.no_text and self.later_text | |||
|                 and self.text): | |||
|             channel = WhatsAppChannel.from_auth_params({ | |||
|                 "base_url": url, | |||
|                 "api_key": api_key, }) | |||
|             button_message = channel.send_interactive_buttons_message({ | |||
|                 "from": number, | |||
|                 "to": self.partner_mobile, | |||
|                 "content": { | |||
|                     "body": { | |||
|                         "text": self.text_message}, | |||
|                     "action": { | |||
|                         "buttons": [ | |||
|                             { | |||
|                                 "type": "REPLY", | |||
|                                 "id": "yes", | |||
|                                 "title": self.yes_text | |||
|                             }, { | |||
|                                 "type": "REPLY", | |||
|                                 "id": "no", | |||
|                                 "title": self.no_text | |||
|                             }, { | |||
|                                 "type": "REPLY", | |||
|                                 "id": "later", | |||
|                                 "title": self.later_text | |||
|                             }, ]}, | |||
|                     "header": { | |||
|                         "type": "TEXT", | |||
|                         "text": self.text | |||
|                     }}}) | |||
|             return button_message | |||
|         else: | |||
|             raise ValidationError( | |||
|                 _('Incomplete Data: Please ensure you have provided all' | |||
|                   ' necessary information to send the WhatsApp message.')) | |||
| 
 | |||
|     def action_send_contact_details(self): | |||
|         """ Share Contact Details through WhatsApp.""" | |||
|         url = self._get_config_parameter( | |||
|             'infobip_whatsapp_integration.base_url') | |||
|         api_key = self._get_config_parameter( | |||
|             'infobip_whatsapp_integration.api_key') | |||
|         number = self._get_config_parameter( | |||
|             'infobip_whatsapp_integration.infobip_whatsapp') | |||
|         if (self.partner_ids and self.partner_mobile and url and api_key and | |||
|                 number): | |||
|             channel = WhatsAppChannel.from_auth_params({ | |||
|                 "base_url": url, | |||
|                 "api_key": api_key, }) | |||
|             contact_messages = [] | |||
|             for partner in self.partner_ids: | |||
|                 contact = { | |||
|                     "addresses": [{ | |||
|                         "street": partner.street, | |||
|                         "city": partner.city, | |||
|                         "zip": partner.zip, | |||
|                         "country": partner.country_id.name, | |||
|                         "type": "HOME" | |||
|                     }], | |||
|                     "emails": [{ | |||
|                         "email": partner.email, | |||
|                         "type": "WORK" | |||
|                     }, ], | |||
|                     "name": { | |||
|                         "firstName": partner.name, | |||
|                         "formattedName": partner.name | |||
|                     }, | |||
|                     "phones": [{ | |||
|                         "phone": partner.phone, | |||
|                         "type": "HOME", | |||
|                     }, { | |||
|                         "phone": partner.mobile, | |||
|                         "type": "WORK", | |||
|                     }]} | |||
|                 contact_messages.append(contact) | |||
|             for message in contact_messages: | |||
|                 response = channel.send_contact_message({ | |||
|                     "from": number, | |||
|                     "to": self.partner_mobile, | |||
|                     "content": { | |||
|                         "contacts": [message] | |||
|                     }}) | |||
|             return response | |||
|         else: | |||
|             raise ValidationError( | |||
|                 _('Incomplete Data: Please ensure you have provided all' | |||
|                   ' necessary information to send the WhatsApp message.')) | |||
| 
 | |||
|     def action_send_interactive_list_message(self): | |||
|         """Send an Interactive List Message through WhatsApp.""" | |||
|         url = self._get_config_parameter( | |||
|             'infobip_whatsapp_integration.base_url') | |||
|         api_key = self._get_config_parameter( | |||
|             'infobip_whatsapp_integration.api_key') | |||
|         number = self._get_config_parameter( | |||
|             'infobip_whatsapp_integration.infobip_whatsapp') | |||
|         if (self.text_message and self.partner_mobile and url and api_key and | |||
|                 number and self.text and self.footer_text and | |||
|                 self.section_title and self.section1_title and | |||
|                 self.section2_title and self.section3_title and | |||
|                 self.section4_title and self.section1_description and | |||
|                 self.section2_description and self.section3_description | |||
|                 and self.section4_description): | |||
|             channel = WhatsAppChannel.from_auth_params({ | |||
|                 "base_url": url, | |||
|                 "api_key": api_key, }) | |||
|             list_message = channel.send_interactive_list_message({ | |||
|                 "from": number, | |||
|                 "to": self.partner_mobile, | |||
|                 "content": { | |||
|                     "body": { | |||
|                         "text": self.text_message | |||
|                     }, | |||
|                     "action": { | |||
|                         "title": "See All Options", | |||
|                         "sections": [ | |||
|                             { | |||
|                                 "title": self.section_title, | |||
|                                 "rows": [{ | |||
|                                     "id": "1", | |||
|                                     "title": self.section1_title, | |||
|                                     "description": self.section1_description | |||
|                                 }, { | |||
|                                     "id": "2", | |||
|                                     "title": self.section2_title, | |||
|                                     "description": self.section2_description | |||
|                                 }, { | |||
|                                     "id": "3", | |||
|                                     "title": self.section3_title, | |||
|                                     "description": self.section3_description | |||
|                                 }, { | |||
|                                     "id": "4", | |||
|                                     "title": self.section4_title, | |||
|                                     "description": self.section4_description | |||
|                                 }]}]}, | |||
|                     "header": { | |||
|                         "type": "TEXT", | |||
|                         "text": self.text}, | |||
|                     "footer": { | |||
|                         "text": self.footer_text | |||
|                     }}}) | |||
|             return list_message | |||
|         else: | |||
|             raise ValidationError( | |||
|                 _('Incomplete Data: Please ensure you have provided all' | |||
|                   ' necessary information to send the WhatsApp message.')) | |||
| 
 | |||
|     def action_send_location_details(self): | |||
|         """Share Location Details through WhatsApp.""" | |||
|         url = self._get_config_parameter( | |||
|             'infobip_whatsapp_integration.base_url') | |||
|         api_key = self._get_config_parameter( | |||
|             'infobip_whatsapp_integration.api_key') | |||
|         number = self._get_config_parameter( | |||
|             'infobip_whatsapp_integration.infobip_whatsapp') | |||
|         if (self.partner_ids and self.partner_mobile and url and api_key and | |||
|                 number): | |||
|             for partner in self.partner_ids: | |||
|                 channel = WhatsAppChannel.from_auth_params({ | |||
|                     "base_url": url, | |||
|                     "api_key": api_key, }) | |||
|                 response = channel.send_location_message({ | |||
|                     "from": number, | |||
|                     "to": self.partner_mobile, | |||
|                     "content": { | |||
|                         "latitude": partner.partner_latitude, | |||
|                         "longitude": partner.partner_longitude, | |||
|                         "name": partner.name, | |||
|                         "address": partner.street | |||
|                     }}) | |||
|                 return response | |||
|         else: | |||
|             raise ValidationError( | |||
|                 _('Incomplete Data: Please ensure you have provided all' | |||
|                   ' necessary information to send the WhatsApp message.')) | |||
| @ -0,0 +1,104 @@ | |||
| <?xml version="1.0" encoding="UTF-8" ?> | |||
| <odoo> | |||
|      <!-- WhatsApp Message XML Definition. This XML file defines the Odoo | |||
|      views and actions for WhatsApp messages.--> | |||
|     <record id="view_whatsapp_message_form" model="ir.ui.view"> | |||
|         <field name="name">whatsapp.message.view.form</field> | |||
|         <field name="model">whatsapp.message</field> | |||
|         <field name="arch" type="xml"> | |||
|             <form string="Send WhatsApp Message "> | |||
|                 <group> | |||
|                     <field name="partner_name" string="Name" readonly="1"/> | |||
|                     <field name="partner_mobile" string="Whatsapp Number" | |||
|                            readonly="1"/> | |||
|                 </group> | |||
|                 <group/> | |||
|                 <group> | |||
|                     <field name="message_type" widget="radio" | |||
|                            options="{'horizontal': true}"/> | |||
|                 </group> | |||
|                 <group/> | |||
|                 <group/> | |||
|                 <group> | |||
|                     <field name="text_message" | |||
|                            attrs="{'invisible': [('message_type', 'in', ('contact','location'))]}"/> | |||
|                     <field name="text" | |||
|                            attrs="{'invisible': [('message_type', 'not in', ('button','list'))]}"/> | |||
|                     <field name="footer_text" | |||
|                            attrs="{'invisible': [('message_type', '!=', 'list')]}"/> | |||
|                     <field name="section_title" | |||
|                            attrs="{'invisible': [('message_type', '!=', 'list')]}"/> | |||
|                     <field name="yes_text" | |||
|                            attrs="{'invisible': [('message_type', '!=', 'button')]}"/> | |||
|                     <field name="no_text" | |||
|                            attrs="{'invisible': [('message_type', '!=', 'button')]}"/> | |||
|                     <field name="later_text" | |||
|                            attrs="{'invisible': [('message_type', '!=', 'button')]}"/> | |||
|                     <field name="partner_ids" | |||
|                            attrs="{'invisible': [('message_type', 'not in', ('contact','location'))]}" | |||
|                            widget="many2many_tags"/> | |||
|                 </group> | |||
|                 <group attrs="{'invisible': [('message_type', '!=', 'list')]}"> | |||
|                     <group string="Option 1 Details"> | |||
|                         <field name="section1_title" | |||
|                                attrs="{'invisible': [('message_type', '!=', 'list')]}"/> | |||
|                         <field name="section1_description" | |||
|                                attrs="{'invisible': [('message_type', '!=', 'list')]}"/> | |||
|                     </group> | |||
|                     <group string="Option 2 Details"> | |||
|                         <field name="section2_title" | |||
|                                attrs="{'invisible': [('message_type', '!=', 'list')]}"/> | |||
|                         <field name="section2_description" | |||
|                                attrs="{'invisible': [('message_type', '!=', 'list')]}"/> | |||
|                     </group> | |||
|                     <group string="Option 3 Details"> | |||
|                         <field name="section3_title" | |||
|                                attrs="{'invisible': [('message_type', '!=', 'list')]}"/> | |||
|                         <field name="section3_description" | |||
|                                attrs="{'invisible': [('message_type', '!=', 'list')]}"/> | |||
|                     </group> | |||
|                     <group string="Option 4 Details"> | |||
|                         <field name="section4_title" | |||
|                                attrs="{'invisible': [('message_type', '!=', 'list')]}"/> | |||
|                         <field name="section4_description" | |||
|                                attrs="{'invisible': [('message_type', '!=', 'list')]}"/> | |||
|                     </group> | |||
|                 </group> | |||
|                 <button name="action_send_message" string="Send Message" | |||
|                         type="object" | |||
|                         icon="fa-comment" class="btn-success" | |||
|                         attrs="{'invisible': [('message_type', '!=', 'text')]}"/> | |||
|                 <button name="action_send_intractive_message" | |||
|                         string="Send Interactive Button Message" type="object" | |||
|                         icon="fa-share-square-o" class="btn-success" | |||
|                         attrs="{'invisible': [('message_type', '!=', 'button')]}"/> | |||
|                 <button name="action_send_contact_details" | |||
|                         string="Send Contact Details" | |||
|                         type="object" | |||
|                         icon="fa-mobile" class="btn-success" | |||
|                         attrs="{'invisible': [('message_type', '!=', 'contact')]}"/> | |||
|                 <button name="action_send_interactive_list_message" | |||
|                         string="Send Interactive List Message" | |||
|                         type="object" | |||
|                         icon="fa-list-alt" class="btn-success" | |||
|                         attrs="{'invisible': [('message_type', '!=', 'list')]}"/> | |||
|                 <button name="action_send_location_details" | |||
|                         string="Send Location" | |||
|                         type="object" | |||
|                         icon="fa-map-marker" class="btn-success" | |||
|                         attrs="{'invisible': [('message_type', '!=', 'location')]}"/> | |||
|                 <footer> | |||
|                     <button string="Cancel" class="btn-secondary" | |||
|                             special="cancel"/> | |||
|                 </footer> | |||
|             </form> | |||
|         </field> | |||
|     </record> | |||
|     <record id="whatsapp_message_action" model="ir.actions.act_window"> | |||
|         <field name="name">WhatsApp Message Action</field> | |||
|         <field name="res_model">whatsapp.message</field> | |||
|         <field name="view_mode">form</field> | |||
|         <field name="view_id" ref="view_whatsapp_message_form"/> | |||
|         <field name="target">new</field> | |||
|     </record> | |||
| </odoo> | |||