@ -0,0 +1,47 @@ |
|||
.. image:: https://img.shields.io/badge/license-AGPL--3-blue.svg |
|||
:target: https://www.gnu.org/licenses/agpl-3.0-standalone.html |
|||
:alt: License: AGPL-3 |
|||
|
|||
All in one Whatsapp Connector |
|||
============================= |
|||
Send whatsapp messages to the partner |
|||
|
|||
Installation |
|||
============ |
|||
- www.odoo.com/documentation/15.0/setup/install.html |
|||
- pip install twilio |
|||
|
|||
Company |
|||
------- |
|||
* `Cybrosys Techno Solutions <https://cybrosys.com/>`__ |
|||
|
|||
License |
|||
------- |
|||
General Public License, Version 3 (AGPL v3). |
|||
(https://www.gnu.org/licenses/agpl-3.0-standalone.html) |
|||
|
|||
Credits |
|||
------- |
|||
Developer:(V15) - 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,24 @@ |
|||
# -*- 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 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 . import controllers |
|||
from . import models |
|||
from . import wizard |
@ -0,0 +1,57 @@ |
|||
# -*- 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 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/>. |
|||
# |
|||
############################################################################### |
|||
{ |
|||
'name': "All in one Whatsapp Connector", |
|||
'version': '15.0.1.0.0', |
|||
'category': 'Extra Tools', |
|||
'summary': """All in one Whatsapp Integration for Sale Order, Purchase Order, Transfer,Whatsapp,Whatsapp Integration""", |
|||
'description': """All in one Whatsapp Integration for Sale Order, Purchase Order, Transfer, Whatsapp Integration, Whatsapp Connector""", |
|||
'author': 'Cybrosys Techno Solutions', |
|||
'company': 'Cybrosys Techno Solutions', |
|||
'maintainer': 'Cybrosys Techno Solutions', |
|||
'website': "https://www.cybrosys.com", |
|||
'depends': ['web', 'sale', 'stock', 'purchase', 'account', |
|||
'website_livechat', 'contacts'], |
|||
'data': [ |
|||
'security/ir.model.access.csv', |
|||
'data/account_move_data.xml', |
|||
'data/purchase_order_data.xml', |
|||
'data/sale_order_data.xml', |
|||
'data/stock_picking_data.xml', |
|||
'views/sale_order_views.xml', |
|||
'views/purchase_order_views.xml', |
|||
'views/stock_picking_views.xml', |
|||
'views/account_move_views.xml', |
|||
'views/mail_template_views.xml', |
|||
'views/res_config_settings_views.xml', |
|||
'views/mail_channel_views.xml', |
|||
'wizard/send_whatsapp_message_views.xml', |
|||
], |
|||
'external_dependencies': { |
|||
'python': ['html2text'] |
|||
}, |
|||
'images': ['static/description/banner.png'], |
|||
'license': "AGPL-3", |
|||
'installable': True, |
|||
'auto_install': False, |
|||
'application': False, |
|||
} |
@ -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 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 . import all_in_one_whatsapp_integration |
@ -0,0 +1,90 @@ |
|||
# -*- 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 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 Command, http |
|||
from odoo.http import request |
|||
|
|||
|
|||
class Webhook(http.Controller): |
|||
"""Cloud api webhook controller """ |
|||
|
|||
@http.route('/whatsapp_message', type='json', auth='public', |
|||
methods=['GET', 'POST'], |
|||
csrf=False) |
|||
def get_webhook_url(self, **kwargs, ): |
|||
"""Function create portal user and send message to live chat""" |
|||
if kwargs: |
|||
return kwargs['hub.challenge'] |
|||
else: |
|||
active_user = request.env['res.users'].browse(request.uid) |
|||
data = request.jsonrequest |
|||
number = data['entry'][0]['changes'][0]['value'] |
|||
if number['contacts']: |
|||
profile = number['contacts'][0] |
|||
channel_partner_ids = [active_user.partner_id.id] |
|||
to_partner = request.env['res.partner'].sudo().search([ |
|||
('phone', '=', str(number['metadata']['display_phone_number'])) |
|||
]) |
|||
if to_partner: |
|||
channel_partner_ids.append(to_partner.id) |
|||
contact = request.env['res.partner'].sudo().search([ |
|||
('name', '=', profile['profile']['name']), |
|||
('phone', '=', profile['wa_id']) |
|||
]) |
|||
if contact: |
|||
channel_partner_ids.append(contact.id) |
|||
else: |
|||
contact = request.env['res.users'].sudo().create({ |
|||
'name': profile['profile']['name'], |
|||
'company_id': active_user.company_id.id, |
|||
'login': profile['profile']['name'], |
|||
'groups_id': [ |
|||
Command.set( |
|||
[request.env.ref('base.group_portal').id])], |
|||
}).partner_id |
|||
contact.phone = profile['wa_id'] |
|||
channel_partner_ids.append(contact.id) |
|||
message_content = \ |
|||
data['entry'][0]['changes'][0]['value']['messages'][0] |
|||
channel = request.env['mail.channel'].sudo().search([ |
|||
('phone', '=', profile['wa_id']), |
|||
('channel_partner_ids', 'in', channel_partner_ids) |
|||
]) |
|||
if not channel: |
|||
channel = request.env['mail.channel'].sudo().create({ |
|||
'channel_partner_ids': [(4, contact.id), |
|||
(4, to_partner.id)], |
|||
'channel_type': 'livechat', |
|||
'name': profile['profile']['name'], |
|||
'phone': profile['wa_id'], |
|||
'livechat_operator_id': "3" |
|||
}) |
|||
uuid = channel.uuid |
|||
mail_channel = request.env["mail.channel"].sudo().search( |
|||
[('uuid', '=', uuid)], limit=1) |
|||
body = message_content['text']['body'] |
|||
mail_channel.with_context( |
|||
mail_create_nosubscribe=True).message_post( |
|||
author_id=contact.id, |
|||
body=body, |
|||
message_type='comment', |
|||
subtype_xmlid='mail.mt_comment' |
|||
) |
@ -0,0 +1,46 @@ |
|||
<?xml version="1.0" encoding="UTF-8"?> |
|||
<odoo> |
|||
<data> |
|||
<!-- Whatsapp message mail template of account move --> |
|||
<record id="account_move_whatsapp_template" model="mail.template"> |
|||
<field name="name">Whatsapp Template for Invoice</field> |
|||
<field name="subject">Invoice Template</field> |
|||
<field name="model_id" ref="account.model_account_move"/> |
|||
<field name="is_invoice_template">True</field> |
|||
<field name="body_html"> |
|||
<![CDATA[<div style="font-family: Ubuntu, Arial, Verdana, sans-serif; font-size: 12px;"> |
|||
<p style="margin: 0px; padding: 0px; font-size: 13px;"> |
|||
<div> |
|||
Hello *<t t-out="object.partner_id.name or ''"></t>* |
|||
Greetings from *<t t-out="object.company_id.name or ' '"></t>* |
|||
</div> |
|||
<div> |
|||
Your invoice number *<t t-out="object.name"></t>* with amount *<t t-out="format_amount(object.amount_total, object.currency_id)"></t>* |
|||
from <t t-out="object.company_id.name"></t>. |
|||
</div> |
|||
<div> |
|||
<t t-if="object.payment_state in ('paid')"> |
|||
This invoice is already paid and Amount due is *<t t-out="format_amount(object.amount_residual, object.currency_id)"></t>* |
|||
</t> |
|||
<t t-else=""> |
|||
Please remit payment at your earliest convenience. Amount due is *<t t-out="format_amount(object.amount_residual, object.currency_id)"></t>* |
|||
</t> |
|||
</div> |
|||
The invoice date is <t t-out="object.invoice_date"></t> |
|||
<div> |
|||
Your order details are as follows: |
|||
<br> |
|||
<t t-foreach="object" t-as="each"> |
|||
<t t-foreach="each.invoice_line_ids" t-as="id"> |
|||
*Product: <t t-out="id.product_id.name"></t>* <br> |
|||
*Qty: <t t-out="id.quantity"></t>*<br> |
|||
*Price:<t t-out="id.price_unit"></t>*<br> |
|||
</t> |
|||
</t> |
|||
</div> |
|||
If you have any questions, please feel free to contact us. |
|||
]]> |
|||
</field> |
|||
</record> |
|||
</data> |
|||
</odoo> |
@ -0,0 +1,58 @@ |
|||
<?xml version="1.0" encoding="UTF-8"?> |
|||
<odoo> |
|||
<data> |
|||
<!--Whatsapp message mail template of purchase order --> |
|||
<record id="purchase_order_whatsapp_template" model="mail.template"> |
|||
<field name="name">Whatsapp Template for Purchase Order</field> |
|||
<field name="subject">Purchase Order Template</field> |
|||
<field name="model_id" ref="purchase.model_purchase_order"/> |
|||
<field name="is_purchase_template">True</field> |
|||
<field name="body_html"> |
|||
<![CDATA[<div style="font-family: Ubuntu, Arial, Verdana, sans-serif; font-size: 12px;"> |
|||
<p style="margin: 0px; padding: 0px; font-size: 13px;"> |
|||
<div> |
|||
Hello *<t t-out="object.partner_id.name or ''"></t>*, |
|||
Greetings from *<t t-out="object.company_id.name or ' '"></t>* |
|||
</div> |
|||
<t t-if="object.state in ('draft', 'sent')"> |
|||
Your Request For Quotation (RFQ) *<t t-out="object.name"></t>* with amount *<t t-out="format_amount(object.amount_total, object.currency_id)"></t>* is ready. |
|||
<div> |
|||
As per the planned date for receipt of products on <t t-out="object.date_planned"></t> |
|||
</div> |
|||
<div> |
|||
Quotation details are mentioned below: <br> |
|||
<t t-foreach="object" t-as="each"> |
|||
<t t-foreach="each.order_line" t-as="id"> |
|||
*Product: <t t-out="id.product_id.name"></t>* <br> |
|||
*Qty: <t t-out="id.product_qty"></t>*<br> |
|||
*Price:<t t-out="id.price_subtotal"></t>*<br> |
|||
</t> |
|||
</t> |
|||
</div> |
|||
</t> |
|||
<t t-else=""> |
|||
<div> |
|||
Your Purchase Order Number *<t t-out="object.name"></t>* with amount *<t t-out="format_amount(object.amount_total, object.currency_id)"></t>* is Confirmed. |
|||
</div> |
|||
<div> |
|||
As per you RFQ Order confirmation date and time is <t t-out="object.date_approve"></t> |
|||
</div> |
|||
<div> |
|||
Order details are mentioned below: <br> |
|||
<t t-foreach="object" t-as="each"> |
|||
<t t-foreach="each.order_line" t-as="id"> |
|||
*Product: <t t-out="id.product_id.name"></t>* <br> |
|||
*Qty: <t t-out="id.product_qty"></t>*<br> |
|||
*Price:<t t-out="id.price_subtotal"></t>*<br> |
|||
</t> |
|||
</t> |
|||
</div> |
|||
</t> |
|||
<div> |
|||
If you require any further information, feel free to contact me. |
|||
</div> |
|||
]]> |
|||
</field> |
|||
</record> |
|||
</data> |
|||
</odoo> |
@ -0,0 +1,56 @@ |
|||
<?xml version="1.0" encoding="UTF-8"?> |
|||
<odoo> |
|||
<data> |
|||
<!--Whatsapp message mail template of sale order --> |
|||
<record id="sale_order_whatsapp_template" model="mail.template"> |
|||
<field name="name">Whatsapp Template for Sale Order</field> |
|||
<field name="subject">Sales Order Template</field> |
|||
<field name="model_id" ref="sale.model_sale_order"/> |
|||
<field name="is_sale_template">True</field> |
|||
<field name="body_html"><![CDATA[<div style="font-family: Ubuntu, Arial, Verdana, sans-serif; font-size: 14px;"> |
|||
<div> |
|||
Hello *<t t-out="object.partner_id.name or ' '"></t>*, <br> |
|||
Greetings from *<t t-out="object.company_id.name or ' '"></t>* |
|||
</div> |
|||
<t t-if="object.state in ('draft', 'sent')"> |
|||
Your Sale Order Quotation *<t t-out="object.name or ' '"></t>* with amount *<t t-out="format_amount(object.amount_total, object.currency_id)"></t>* is ready. |
|||
<div> |
|||
As per your quotation the date and time of the order is "<t t-out="object.date_order"></t>" |
|||
</div> |
|||
<div> |
|||
Quotation details are mentioned below: <br> |
|||
<t t-foreach="object" t-as="orders"> |
|||
<t t-foreach="orders.order_line" t-as="order_id"> |
|||
*Product: <t t-out="order_id.product_id.name"></t>* <br> |
|||
*Quantity: <t t-out="order_id.product_uom_qty"></t>*<br> |
|||
*Price:<t t-out="order_id.price_subtotal"></t>*<br> |
|||
</t> |
|||
</t> |
|||
</div> |
|||
</t> |
|||
<t t-else=""> |
|||
<div> |
|||
Your Sale Order Number *<t t-out="object.name or ''"></t>* with amount *<t t-out="format_amount(object.amount_total, object.currency_id)"></t>* is Confirmed. |
|||
</div> |
|||
<div> |
|||
As per your quotation your order date and time of the order is "<t t-out="object.date_order"></t>" |
|||
</div> |
|||
<div> |
|||
Your order details are mentioned below: <br> |
|||
<t t-foreach="object" t-as="orders"> |
|||
<t t-foreach="orders.order_line" t-as="order_id"> |
|||
*Product: <t t-out="order_id.product_id.name"></t>* <br> |
|||
*Quantity: <t t-out="order_id.product_uom_qty"></t>*<br> |
|||
*Price:<t t-out="order_id.price_subtotal"></t>*<br> |
|||
</t> |
|||
</t> |
|||
</div> |
|||
<div> |
|||
If you require any further information, feel free to contact me. |
|||
</div> |
|||
</t> |
|||
]]> |
|||
</field> |
|||
</record> |
|||
</data> |
|||
</odoo> |
@ -0,0 +1,73 @@ |
|||
<?xml version="1.0" encoding="UTF-8"?> |
|||
<odoo> |
|||
<data> |
|||
<!--Whatsapp message mail template of stock picking --> |
|||
<record id="stock_picking_whatsapp_template" model="mail.template"> |
|||
<field name="name">Whatsapp Template for Delivery</field> |
|||
<field name="subject">Inventory Template</field> |
|||
<field name="model_id" ref="stock.model_stock_picking"/> |
|||
<field name="is_delivery_template">True</field> |
|||
<field name="body_html"><![CDATA[<div style="font-family: Ubuntu, Arial, Verdana, sans-serif; font-size: 12px;"> |
|||
<p style="margin: 0px; padding: 0px; font-size: 13px;"> |
|||
<div> |
|||
Hello *<t t-out="object.partner_id.name or ''"></t>*, |
|||
</div> |
|||
<div> |
|||
<t t-if="object.state in ('draft')"> |
|||
We have received your order *<t t-out="object.name"></t>*. It will be shipped soon |
|||
<div> |
|||
Order details are as follows: <br> |
|||
<t t-foreach="object" t-as="each"> |
|||
<t t-foreach="each.move_ids_without_package" t-as="id"> |
|||
*Product: <t t-out="id.product_id.name"></t>* <br> |
|||
*Qty: <t t-out="id.product_uom_qty"></t>*<br> |
|||
</t> |
|||
</t> |
|||
</div> |
|||
</t> |
|||
<t t-if="object.state in ('assigned')"> |
|||
Your order *<t t-out="object.name"></t>* is ready. It will be shipped soon |
|||
<div> |
|||
Order details are as follows: <br> |
|||
<t t-foreach="object" t-as="each"> |
|||
<t t-foreach="each.move_ids_without_package" t-as="id"> |
|||
*Product: <t t-out="id.product_id.name"></t>* <br> |
|||
*Qty: <t t-out="id.product_uom_qty"></t>*<br> |
|||
</t> |
|||
</t> |
|||
</div> |
|||
</t> |
|||
<t t-if="object.state in ('confirmed')"> |
|||
Your order *<t t-out="object.name"></t>* is ready. It will be shipped soon |
|||
<div> |
|||
Order details are as follows: <br> |
|||
<t t-foreach="object" t-as="each"> |
|||
<t t-foreach="each.move_ids_without_package" t-as="id"> |
|||
*Product: <t t-out="id.product_id.name"></t>* <br> |
|||
*Qty: <t t-out="id.product_uom_qty"></t>*<br> |
|||
</t> |
|||
</t> |
|||
</div> |
|||
</t> |
|||
<t t-if="object.state in ('done')"> |
|||
Your order *<t t-out="object.name"></t>* is shipped. |
|||
<div> |
|||
Order details are as follows: <br> |
|||
<t t-foreach="object" t-as="each"> |
|||
<t t-foreach="each.move_ids_without_package" t-as="id"> |
|||
*Product: <t t-out="id.product_id.name"></t>* <br> |
|||
*Qty: <t t-out="id.quantity_done"></t>*<br> |
|||
</t> |
|||
</t> |
|||
</div> |
|||
</t> |
|||
</div> |
|||
<div> |
|||
If you have any questions, please feel free to contact us. |
|||
</div> |
|||
</p> |
|||
]]> |
|||
</field> |
|||
</record> |
|||
</data> |
|||
</odoo> |
@ -0,0 +1,6 @@ |
|||
## Module <whatsapp_integration_odoo> |
|||
|
|||
#### 12.01.2024 |
|||
#### Version 15.0.1.0.0 |
|||
#### ADD |
|||
- Initial Commit for All in one Whatsapp |
@ -0,0 +1,29 @@ |
|||
# -*- 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 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 . import account_move |
|||
from . import mail_channel |
|||
from . import mail_message |
|||
from . import mail_template |
|||
from . import purchase_order |
|||
from . import res_config_settings |
|||
from . import sale_order |
|||
from . import stock_picking |
@ -0,0 +1,75 @@ |
|||
# -*- 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 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/>. |
|||
# |
|||
############################################################################### |
|||
import base64 |
|||
import html2text |
|||
from odoo import models, _ |
|||
from odoo.exceptions import ValidationError |
|||
|
|||
|
|||
class AccountMove(models.Model): |
|||
"""Inherited the module for adding a button that helps to send WhatsApp |
|||
message to the customer.""" |
|||
_inherit = 'account.move' |
|||
|
|||
def action_send_by_whatsapp(self): |
|||
"""This method is invoked when the 'send_by_whatsapp' button is |
|||
clicked. It opens a wizard containing the message to be sent to the |
|||
WhatsApp web page.""" |
|||
if not self.partner_id.mobile: |
|||
raise ValidationError(_('Add a WhatsApp mobile number to the ' |
|||
' sale order partner!')) |
|||
if not self.partner_id.mobile.startswith('+'): |
|||
raise ValidationError(_('Please add a valid mobile number along ' |
|||
' with a valid country code!')) |
|||
twilio_whatsapp = self.env['ir.config_parameter'].sudo().get_param( |
|||
'all_in_one_whatsapp_integration.twilio_whatsapp') |
|||
if not twilio_whatsapp.startswith('+'): |
|||
raise ValidationError(_('Please add a valid Twilio mobile number ' |
|||
' along with "+".')) |
|||
template_id = self.env.ref( |
|||
'all_in_one_whatsapp_integration.account_move_whatsapp_template').id |
|||
mail_template_values = (self.env['mail.template'] |
|||
.browse(template_id).with_context( |
|||
tpl_partners_only=True).generate_email([self.id], |
|||
fields=['body_html'])) |
|||
body_html = mail_template_values[self.id].pop('body_html', '') |
|||
whatsapp_message = html2text.html2text(body_html) |
|||
report = self.env.ref("account.account_invoices")._render_qweb_pdf( |
|||
self.ids, data={"report_type": "pdf"})[0] |
|||
report_attachment = self.env['ir.attachment'].sudo().create({ |
|||
'name': 'Invoice Report', |
|||
'type': 'binary', |
|||
'datas': base64.b64encode(report), |
|||
"store_fname": base64.b64encode(report), |
|||
'mimetype': 'application/pdf', |
|||
'res_model': 'account.move', |
|||
}) |
|||
return { |
|||
'type': 'ir.actions.act_window', |
|||
'name': _('WhatsApp Message'), |
|||
'res_model': 'send.whatsapp.message', |
|||
'target': 'new', |
|||
'view_mode': 'form', |
|||
'view_type': 'form', |
|||
'context': {'default_whatsapp_message': whatsapp_message, |
|||
'default_attachment_ids': [(4, report_attachment.id)]}, |
|||
} |
@ -0,0 +1,33 @@ |
|||
# -*- coding: utf-8 -*- |
|||
############################################################################### |
|||
# |
|||
# Cybrosys Technologies Pvt. Ltd. |
|||
# |
|||
# Copyright (C) 2023-TODAY Cybrosys Technologies(<https://www.cybrosys.com>) |
|||
# Author: Jumana Jabin MP(odoo@cybrosys.com) |
|||
# |
|||
# This program is free software: you can redistribute it and/or modify |
|||
# it under the terms of the GNU AFFERO GENERAL PUBLIC LICENSE as published by |
|||
# the Free Software Foundation, either version 3 of the License, or |
|||
# (at your option) any later version. |
|||
# |
|||
# This program is distributed in the hope that it will be useful, |
|||
# but WITHOUT ANY WARRANTY; without even the implied warranty of |
|||
# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the |
|||
# GNU AFFERO GENERAL PUBLIC LICENSE for more details. |
|||
# |
|||
# You should have received a copy of the GNU AFFERO GENERAL PUBLIC LICENSE |
|||
# along with this program. If not, see <http://www.gnu.org/licenses/>. |
|||
# |
|||
############################################################################### |
|||
from odoo import fields, models |
|||
|
|||
|
|||
class MailChannel(models.Model): |
|||
"""This class extends the base 'mail.channel' model in Odoo to include a |
|||
'phone' field for storing the phone number associated with the |
|||
communication channel.""" |
|||
_inherit = 'mail.channel' |
|||
|
|||
phone = fields.Char(string='Phone', help='Phone number associated with ' |
|||
'the communication channel') |
@ -0,0 +1,66 @@ |
|||
# -*- coding: utf-8 -*- |
|||
############################################################################### |
|||
# |
|||
# Cybrosys Technologies Pvt. Ltd. |
|||
# |
|||
# Copyright (C) 2023-TODAY Cybrosys Technologies(<https://www.cybrosys.com>) |
|||
# Author: Jumana Jabin MP(odoo@cybrosys.com) |
|||
# |
|||
# This program is free software: you can redistribute it and/or modify |
|||
# it under the terms of the GNU AFFERO GENERAL PUBLIC LICENSE as published by |
|||
# the Free Software Foundation, either version 3 of the License, or |
|||
# (at your option) any later version. |
|||
# |
|||
# This program is distributed in the hope that it will be useful, |
|||
# but WITHOUT ANY WARRANTY; without even the implied warranty of |
|||
# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the |
|||
# GNU AFFERO GENERAL PUBLIC LICENSE for more details. |
|||
# |
|||
# You should have received a copy of the GNU AFFERO GENERAL PUBLIC LICENSE |
|||
# along with this program. If not, see <http://www.gnu.org/licenses/>. |
|||
# |
|||
############################################################################### |
|||
import http.client |
|||
import json |
|||
from odoo import api, models |
|||
|
|||
|
|||
class MailMessage(models.Model): |
|||
"""This class extends the base 'mail.message' model in Odoo to include |
|||
functionality for sending WhatsApp messages using Facebook Graph API. |
|||
""" |
|||
_inherit = 'mail.message' |
|||
|
|||
@api.model_create_multi |
|||
def create(self, values_list): |
|||
"""This method creates a new mail message and then sends the message's |
|||
body as a WhatsApp message using the Facebook Graph API.""" |
|||
bearer_token = self.env['ir.config_parameter'].sudo().get_param( |
|||
'all_in_one_whatsapp_integration.bearer_token') |
|||
whatsapp_no = self.env['ir.config_parameter'].sudo().get_param( |
|||
'all_in_one_whatsapp_integration.whatsapp_no') |
|||
if (bearer_token and whatsapp_no and values_list[0]['model'] == |
|||
'mail.channel'): |
|||
if values_list[0]['email_from']: |
|||
mail_channel = self.env['mail.channel'].browse( |
|||
values_list[0]['res_id']) |
|||
if mail_channel: |
|||
conn = http.client.HTTPSConnection("graph.facebook.com") |
|||
payload = json.dumps({ |
|||
"messaging_product": "whatsapp", |
|||
"recipient_type": "individual", |
|||
"to": mail_channel.phone, |
|||
"type": 'text', |
|||
"text": { |
|||
"preview_url": False, |
|||
"body": values_list[0]['body'] |
|||
} |
|||
}) |
|||
headers = { |
|||
'Content-Type': 'application/json', |
|||
'Authorization': f'Bearer {bearer_token}' |
|||
} |
|||
conn.request("POST", f"/v17.0/{whatsapp_no}/messages", |
|||
payload, |
|||
headers) |
|||
return super(MailMessage, self).create(values_list) |
@ -0,0 +1,46 @@ |
|||
# -*- 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 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 MailTemplate(models.Model): |
|||
"""Inherited this model for adding some fields that help to check the |
|||
message template is a delivery, invoice, purchase, or sale order |
|||
template """ |
|||
_inherit = 'mail.template' |
|||
|
|||
is_delivery_template = fields.Boolean(string='Delivery Template', |
|||
help="To check the message " |
|||
"template for" |
|||
"sending delivery to whatsapp") |
|||
is_invoice_template = fields.Boolean(string='Invoice Template', |
|||
help="To check the message " |
|||
"template for" |
|||
"sending delivery to whatsapp") |
|||
is_purchase_template = fields.Boolean(string="Purchase Template", |
|||
help="To check the message " |
|||
"template for" |
|||
"sending purchase order " |
|||
"to whatsapp") |
|||
is_sale_template = fields.Boolean(string="Sale Template", |
|||
help="To check the message template for" |
|||
"sending sale order to whatsapp") |
@ -0,0 +1,79 @@ |
|||
# -*- 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 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/>. |
|||
# |
|||
############################################################################### |
|||
import base64 |
|||
import html2text |
|||
from odoo import models, _ |
|||
from odoo.exceptions import ValidationError |
|||
|
|||
|
|||
class PurchaseOrder(models.Model): |
|||
"""Inherited the module for adding a button that helps to send whatsapp |
|||
message to the customer """ |
|||
_inherit = "purchase.order" |
|||
|
|||
def action_send_by_whatsapp(self): |
|||
"""When you click the send_by_whatsapp button, it will open a wizard |
|||
that contain the message to send to the whatsapp web page.""" |
|||
if not self.partner_id.mobile: |
|||
raise ValidationError(_('Add whatsapp mobile number to the ' |
|||
'sale order partner!')) |
|||
if not self.partner_id.mobile[0] == "+": |
|||
raise ValidationError(_('Please add a valid mobile' |
|||
' number along with a valid country code!')) |
|||
twilio_whatsapp = (self.env["ir.config_parameter"].sudo().get_param |
|||
("all_in_one_whatsapp_integration.twilio_whatsapp")) |
|||
if not twilio_whatsapp: |
|||
raise ValidationError(_("Please add your valid Twilio" |
|||
" whatsapp number in settings")) |
|||
if twilio_whatsapp[0] != "+": |
|||
raise ValidationError(_("Please add a valid " |
|||
" Twilio mobile number along with " + ".")) |
|||
template_id = self.env.ref("all_in_one_whatsapp_integration." |
|||
"purchase_order_whatsapp_template").id |
|||
mail_template_values = ( |
|||
self.env["mail.template"] |
|||
.with_context(tpl_partners_only=True) |
|||
.browse(template_id) |
|||
.generate_email([self.id], fields=["body_html"])) |
|||
body_html = dict(mail_template_values)[self.id].pop("body_html", "") |
|||
whatsapp_message = html2text.html2text(body_html) |
|||
report = self.env.ref("purchase." |
|||
"action_report_purchase_order")._render_qweb_pdf( |
|||
self.ids, data={"report_type": "pdf"})[0] |
|||
report_attachment = self.env["ir.attachment"].sudo().create({ |
|||
"name": "Purchase Report", |
|||
"type": "binary", |
|||
"datas": base64.b64encode(report), |
|||
"store_fname": base64.b64encode(report), |
|||
"mimetype": "application/pdf", |
|||
"res_model": "purchase.order", }) |
|||
return { |
|||
"type": "ir.actions.act_window", |
|||
"name": _("Whatsapp Message"), |
|||
"res_model": "send.whatsapp.message", |
|||
"target": "new", |
|||
"view_mode": "form", |
|||
"view_type": "form", |
|||
"context": { |
|||
"default_whatsapp_message": whatsapp_message, |
|||
"default_attachment_ids": [(4, report_attachment.id)], |
|||
}, } |
@ -0,0 +1,56 @@ |
|||
# -*- 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 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" |
|||
|
|||
account_sid = fields.Char(string="Account SID", check_company=True, |
|||
config_parameter='all_in_one_whatsapp_integration.' |
|||
'account_sid', |
|||
help="Account SID of twilio account", ) |
|||
auth_token = fields.Char(string="Auth Token", check_company=True, |
|||
config_parameter='all_in_one_whatsapp_integration.' |
|||
'auth_token', |
|||
help="Auth Token of twilio account") |
|||
twilio_whatsapp = fields.Char(string="Twilio Whatsapp Number", |
|||
check_company=True, |
|||
config_parameter='all_in_one_whatsapp_integration.' |
|||
'twilio_whatsapp', |
|||
help="Whatsapp number of twilio account") |
|||
bearer_token = fields.Char(string="Whatsapp Access Token", |
|||
check_company=True, |
|||
help="Authorization Token of Whatsapp Cloud " |
|||
"API", |
|||
config_parameter='all_in_one_whatsapp_integration.' |
|||
'bearer_token', ) |
|||
whatsapp_no = fields.Char(string="Phone number ID", check_company=True, |
|||
help="Phone Number ID of Whatsapp Cloud API", |
|||
config_parameter='all_in_one_whatsapp_integration.' |
|||
'whatsapp_no', ) |
|||
whatsapp_business = fields.Char(help="Business ID of Whatsapp Cloud API", |
|||
string="Whatsapp Business Account ID", |
|||
config_parameter='whatsapp_integration_' |
|||
'odoo.whatsapp_business',) |
@ -0,0 +1,84 @@ |
|||
# -*- 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 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/>. |
|||
# |
|||
############################################################################### |
|||
import base64 |
|||
import html2text |
|||
from odoo import models, _ |
|||
from odoo.exceptions import ValidationError |
|||
|
|||
|
|||
class SaleOrder(models.Model): |
|||
"""Inherited the module for adding a button that helps to send whatsapp |
|||
message to the customer """ |
|||
_inherit = "sale.order" |
|||
|
|||
def action_send_by_whatsapp(self): |
|||
"""When you click the send_by_whatsapp button, it will open a wizard |
|||
that contain the message to send to the whatsapp web page.""" |
|||
if not self.partner_id.mobile: |
|||
raise ValidationError(_('Add whatsapp mobile number to the ' |
|||
'sale order partner!')) |
|||
if not self.partner_id.mobile[0] == "+": |
|||
raise ValidationError(_('Please add a valid mobile number along ' |
|||
'with a valid country code!')) |
|||
twilio_whatsapp = self.env["ir.config_parameter"].sudo() \ |
|||
.get_param("all_in_one_whatsapp_integration.twilio_whatsapp") |
|||
if not twilio_whatsapp: |
|||
raise ValidationError(_("Please add your valid Twilio whatsapp " |
|||
" number in settings")) |
|||
if twilio_whatsapp[0] != "+": |
|||
raise ValidationError(_("Please add a valid Twilio mobile number " |
|||
"along with "+".")) |
|||
template_id = self.env.ref("all_in_one_whatsapp_integration." |
|||
"sale_order_whatsapp_template").id |
|||
mail_template_values = self.env["mail.template"] \ |
|||
.with_context(tpl_partners_only=True).browse( |
|||
template_id).generate_email([self.id], fields=["body_html"]) |
|||
mail_template = dict(mail_template_values).get(self.id) |
|||
if mail_template and "body_html" in mail_template: |
|||
body_html = mail_template["body_html"] |
|||
else: |
|||
raise ValidationError(_("Failed to retrieve the email template's" |
|||
" body HTML.")) |
|||
whatsapp_message = html2text.html2text(body_html) |
|||
report = self.env.ref("sale.action_report_saleorder")._render_qweb_pdf( |
|||
self.ids, data={"report_type": "pdf"})[0] |
|||
report_attachment = self.env["ir.attachment"].sudo().create({ |
|||
"name": "Sale Report", |
|||
"type": "binary", |
|||
"datas": base64.b64encode(report), |
|||
"store_fname": base64.b64encode(report), |
|||
"mimetype": "application/pdf", |
|||
"res_model": "sale.order", |
|||
}) |
|||
return { |
|||
"type": "ir.actions.act_window", |
|||
"name": _("Whatsapp Message"), |
|||
"res_model": "send.whatsapp.message", |
|||
"target": "new", |
|||
"view_mode": "form", |
|||
"view_type": "form", |
|||
"context": { |
|||
"default_whatsapp_message": whatsapp_message, |
|||
"default_attachment_ids": [(4, report_attachment.id)], |
|||
"default_attachment_id": report_attachment.id, |
|||
}, |
|||
} |
@ -0,0 +1,77 @@ |
|||
# -*- 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 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/>. |
|||
# |
|||
############################################################################### |
|||
import base64 |
|||
import html2text |
|||
from odoo import models, _ |
|||
from odoo.exceptions import ValidationError |
|||
|
|||
|
|||
class StockPicking(models.Model): |
|||
"""Inherited the module for adding a button that helps to send whatsapp |
|||
message to the customer """ |
|||
_inherit = 'stock.picking' |
|||
|
|||
def action_send_by_whatsapp(self): |
|||
"""When you click the send_by_whatsapp button, it will open a wizard |
|||
that contain the message to send to the whatsapp web page.""" |
|||
if not self.partner_id.mobile: |
|||
raise ValidationError(_('Add whatsapp mobile number to the sale ' |
|||
' order partner!')) |
|||
if not self.partner_id.mobile[0] == '+': |
|||
raise ValidationError(_('Please add a valid mobile number along' |
|||
' with a valid country code!')) |
|||
twilio_whatsapp = (self.env['ir.config_parameter'] |
|||
.sudo().get_param('all_in_one_whatsapp_integration.' |
|||
'twilio_whatsapp')) |
|||
if twilio_whatsapp[0] != '+': |
|||
raise ValidationError(_('Please add a valid Twilio mobile number ' |
|||
' along with "+".')) |
|||
template_id = self.env.ref('all_in_one_whatsapp_integration.' |
|||
'stock_picking_whatsapp_template').id |
|||
mail_template_values = (self.env['mail.template'] |
|||
.with_context(tpl_partners_only=True).browse( |
|||
template_id) |
|||
.generate_email([self.id], |
|||
fields=['body_html'])) |
|||
body_html = dict(mail_template_values)[self.id].pop('body_html', '') |
|||
whatsapp_message = html2text.html2text(body_html) |
|||
report = self.env.ref('stock.action_report_delivery')._render_qweb_pdf( |
|||
self.ids, data={"report_type": "pdf"})[0] |
|||
report_attachment = self.env['ir.attachment'].sudo().create({ |
|||
'name': 'Delivery Report', |
|||
'type': 'binary', |
|||
'datas': base64.b64encode(report), |
|||
'store_fname': base64.b64encode(report), |
|||
'mimetype': 'application/pdf', |
|||
'res_model': 'stock.picking', |
|||
}) |
|||
return { |
|||
'type': 'ir.actions.act_window', |
|||
'name': _('Whatsapp Message'), |
|||
'res_model': 'send.whatsapp.message', |
|||
'target': 'new', |
|||
'view_mode': 'form', |
|||
'view_type': 'form', |
|||
'context': {'default_whatsapp_message': whatsapp_message, |
|||
'default_attachment_ids': [(4, |
|||
report_attachment.id)]}, |
|||
} |
|
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: 61 KiB |
After Width: | Height: | Size: 61 KiB |
After Width: | Height: | Size: 59 KiB |
After Width: | Height: | Size: 13 KiB |
After Width: | Height: | Size: 161 KiB |
After Width: | Height: | Size: 53 KiB |
After Width: | Height: | Size: 119 KiB |
After Width: | Height: | Size: 111 KiB |
After Width: | Height: | Size: 96 KiB |
After Width: | Height: | Size: 53 KiB |
After Width: | Height: | Size: 57 KiB |
After Width: | Height: | Size: 453 KiB |
After Width: | Height: | Size: 165 KiB |
After Width: | Height: | Size: 136 KiB |
After Width: | Height: | Size: 152 KiB |
After Width: | Height: | Size: 490 KiB |
After Width: | Height: | Size: 151 KiB |
After Width: | Height: | Size: 501 KiB |
After Width: | Height: | Size: 160 KiB |
After Width: | Height: | Size: 457 KiB |
After Width: | Height: | Size: 193 KiB |
After Width: | Height: | Size: 164 KiB |
After Width: | Height: | Size: 149 KiB |
After Width: | Height: | Size: 170 KiB |
After Width: | Height: | Size: 77 KiB |
After Width: | Height: | Size: 127 KiB |
After Width: | Height: | Size: 125 KiB |
After Width: | Height: | Size: 126 KiB |
After Width: | Height: | Size: 119 KiB |
After Width: | Height: | Size: 128 KiB |
After Width: | Height: | Size: 111 KiB |
After Width: | Height: | Size: 109 KiB |
After Width: | Height: | Size: 79 KiB |
After Width: | Height: | Size: 62 KiB |
After Width: | Height: | Size: 203 KiB |
After Width: | Height: | Size: 186 KiB |
After Width: | Height: | Size: 175 KiB |
After Width: | Height: | Size: 670 KiB |
After Width: | Height: | Size: 160 KiB |
After Width: | Height: | Size: 46 KiB |
After Width: | Height: | Size: 8.0 KiB |
@ -0,0 +1,947 @@ |
|||
<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: #017E84; 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;"> |
|||
All in one Whatsapp Connector</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;"> |
|||
All in one Whatsapp Integration for Sale Order, Purchase Order, Transfer</p> |
|||
<img src="assets/screenshots/hero.gif" class="img-responsive" |
|||
width="100%" height="auto"/> |
|||
</div> |
|||
</div> |
|||
</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 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 that are in sale order, purchase order, invoice |
|||
and bills, and deliver orders. |
|||
</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 Sale Order Details and Invoice Through WhatsApp to |
|||
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 Purchase Order Details and Bill Through WhatsApp |
|||
to |
|||
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 Delivery Details and Receipt Through WhatsApp to |
|||
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 WhatsApp Message by Twilio Method</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 WhatsApp Message by WhatsApp Web Method</h4> |
|||
|
|||
</div> |
|||
</div> |
|||
</div> |
|||
|
|||
<div class="row" id="screenshots"> |
|||
<div class="col-md-12" |
|||
style="border-bottom: 1px solid #d5d5d5 !important; margin: 2rem 0 !important"> |
|||
<h2 |
|||
style="font-family: 'Montserrat', sans-serif !important; font-weight: 600 !important; color: #714B67 !important; font-size: 1.5rem !important;"> |
|||
<i class="fa fa-image mr-2"></i>Screenshots |
|||
</h2> |
|||
</div> |
|||
<div class="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;"> |
|||
Twilio Credentials </h4> |
|||
<p |
|||
style="font-family: 'Roboto', sans-serif !important; font-weight: 400 !important; color: #282F33 !important; font-size: 1rem !important;"> |
|||
Go to the Twilio website at <a href="ttps://www.twilio.com/">ttps://www.twilio.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> |
|||
<img src="assets/screenshots/a.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;"> |
|||
After Logging in, Navigate to the Twilio Console. You can find |
|||
the |
|||
Link to the Console in the top right Corner of the Website. |
|||
In the Twilio Console, you will see a Sidebar on the left. |
|||
Click |
|||
on |
|||
the "Get a Trial Number" button to obtain a Phone Number for |
|||
Testing |
|||
</p> |
|||
<p style="font-family: 'Roboto', sans-serif !important; font-weight: 400 !important; color: #282F33 !important; font-size: 1rem !important;"> |
|||
In the Settings page, you will find your Account SID (a unique |
|||
identifier for your Twilio account) and your Auth Token (used |
|||
for |
|||
authentication). These Credentials will be Required to make API |
|||
Requests. |
|||
</p> |
|||
<img src="assets/screenshots/a1.png" |
|||
class="img-responsive img-thumbnail border" width="100%" |
|||
height="auto"/> |
|||
</div> |
|||
|
|||
<div class="col-lg-12 my-2"> |
|||
<h4 class="mt-2" |
|||
style="font-family: 'Roboto', sans-serif !important; font-weight: 600 !important; color: #282F33 !important; font-size: 1.3rem !important;"> |
|||
Cloud Credentials </h4> |
|||
<p |
|||
style="font-family: 'Roboto', sans-serif !important; font-weight: 400 !important; color: #282F33 !important; font-size: 1rem !important;"> |
|||
To get cloud API whatsapp credential first you need a facebook |
|||
account. Go to the |
|||
https://developers.facebook.com website, and you can sign up |
|||
your developer facebook account using the |
|||
facebook account and whatsapp business account. </p> |
|||
<img src="assets/screenshots/c1.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;"> |
|||
After Logging in, there has an option 'My Apps', from here we |
|||
can access all your apps in the facebook |
|||
developer account |
|||
</p> |
|||
<p style="font-family: 'Roboto', sans-serif !important; font-weight: 400 !important; color: #282F33 !important; font-size: 1rem !important;"> |
|||
From there we need to create new app for the whatsapp cloud |
|||
integration. There has 'Create App' option |
|||
to create a new app. |
|||
</p> |
|||
<img src="assets/screenshots/c2.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;"> |
|||
It opens a new window, here there some option to choose, select |
|||
'Other' and click on 'Next' button. |
|||
</p> |
|||
<img src="assets/screenshots/c3.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;"> |
|||
Select app type 'Business' and click on 'Next' button. |
|||
</p> |
|||
<img src="assets/screenshots/c4.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;"> |
|||
Provide App name and App contact email, select Business account |
|||
as 'Test Business', click on Create App. |
|||
</p> |
|||
<img src="assets/screenshots/c5.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;"> |
|||
Need to enter your password here. |
|||
</p> |
|||
<img src="assets/screenshots/c6.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;"> |
|||
Then after we need to integrate the Whatsapp with our app that |
|||
we created by clicking on 'Set up'. |
|||
</p> |
|||
<img src="assets/screenshots/c7.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;"> |
|||
There has API set up option menu under Whatsapp on the left |
|||
side,from there we can access our Temporary |
|||
Access Token, Phone Number ID and Whatsapp Business Account ID. |
|||
</p> |
|||
<img src="assets/screenshots/c8.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;"> |
|||
We can Choose a mobile number from 'To' option, can send |
|||
message to the number by clicking the 'Send |
|||
Message' button. |
|||
</p> |
|||
<img src="assets/screenshots/c9.png" |
|||
class="img-responsive img-thumbnail border" width="100%" |
|||
height="auto"/> |
|||
|
|||
<img src="assets/screenshots/c10.png" |
|||
class="img-responsive img-thumbnail border" width="100%" |
|||
height="auto"/> |
|||
</div> |
|||
|
|||
<div class="col-lg-12 my-2"> |
|||
<h4 class="mt-2" |
|||
style="font-family: 'Roboto', sans-serif !important; font-weight: 600 !important; color: #282F33 !important; font-size: 1.3rem !important;"> |
|||
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 Twilio Account |
|||
Credentials and Cloud Whatsapp 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 the sale order partner.</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"> |
|||
<h4 class="mt-3" |
|||
style="font-family: 'Roboto', sans-serif !important; font-weight: 600 !important; color: #282F33 !important; font-size: 1.3rem !important;"> |
|||
Sales -> Quotation ->Click on the Button "SEND BY |
|||
WHATSAPP" </h4> |
|||
|
|||
<img src="assets/screenshots/3.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;"> |
|||
Choose One Method to Send Message (Twilio or Web or Cloud) and |
|||
also we |
|||
can |
|||
See the Sample of Whatsapp Message. |
|||
</p> |
|||
<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;"> |
|||
Using Twilio |
|||
</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;"> |
|||
Using Cloud Whatsapp , We have Two options Using , Text and |
|||
Document.Choose one. |
|||
</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"> |
|||
<p |
|||
style="font-family: 'Roboto', sans-serif !important; font-weight: 400 !important; color: #282F33 !important; font-size: 1rem !important;"> |
|||
We can send whatsapp message in Sales , Purchase and in |
|||
Transfer. |
|||
</p> |
|||
<p |
|||
style="font-family: 'Roboto', sans-serif !important; font-weight: 400 !important; color: #282F33 !important; font-size: 1rem !important;"> |
|||
Purchase -> RFQ ->Click on the Button "SEND BY |
|||
WHATSAPP" </p> |
|||
<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;"> |
|||
Inventory -> Transfer ->Click on the Button "SEND BY |
|||
WHATSAPP" |
|||
</p> |
|||
<img src="assets/screenshots/16.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;"> |
|||
Send and Receive whatsapp message through Livechat </h4> |
|||
<p |
|||
style="font-family: 'Roboto', sans-serif !important; font-weight: 400 !important; color: #282F33 !important; font-size: 1rem !important;"> |
|||
There has option to send and receive whatsapp message through |
|||
Livechat. For that first we need to set |
|||
the Whatsapp Business whatsapp number to the related partner of |
|||
the user. |
|||
</p> |
|||
<img src="assets/screenshots/c11.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;"> |
|||
We can receive realtime whatsapp messages to the Business |
|||
whatsapp number through Live Chat. For that |
|||
first we need to configure Webhooks from facebook developer |
|||
account. There has 'Configuration' menu |
|||
under Whatsapp on left side, from there we configure webhook |
|||
for the realtime message chat. |
|||
</p> |
|||
<img src="assets/screenshots/c12.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;"> |
|||
We add Call back url for the webhook here. It will trigger a |
|||
response while we receive whatsapp message |
|||
to the Business whatsapp. Also need to provide a verification |
|||
token to connect it, click on 'Verify and Save' Button. |
|||
The Webhook format is "ip_address/whatsapp_message". |
|||
</p> |
|||
<img src="assets/screenshots/t88.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;"> |
|||
Then after we need to choose 'message' as webhook field by |
|||
clicking the manage button. |
|||
</p> |
|||
|
|||
<img src="assets/screenshots/c14.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;"> |
|||
We get the realtime whatsapp chats of business whatsapp through |
|||
the Live Chat. |
|||
</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;"> |
|||
We can also send messages through the LiveChat. |
|||
</p> |
|||
<img src="assets/screenshots/18.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 portal user can get the message through whatsapp that we |
|||
sent by Live Chat |
|||
</p> |
|||
<img src="assets/screenshots/19.png" |
|||
class="img-responsive img-thumbnail border" width="100%" |
|||
height="auto"/> |
|||
</div> |
|||
|
|||
</div> |
|||
<!-- SUGGESTED PRODUCTS --> |
|||
<div class="row"> |
|||
<div class="col-lg-12 d-flex flex-column justify-content-center" |
|||
style="text-align: center; padding: 2.5rem 1rem !important;"> |
|||
<h2 style="color: #212529 !important;">Suggested Products</h2> |
|||
<hr |
|||
style="border: 3px solid #714B67 !important; background-color: #714B67 !important; width: 80px !important; margin-bottom: 2rem !important;"/> |
|||
|
|||
<div id="demo1" class="row carousel slide" |
|||
data-ride="carousel"> |
|||
<!-- The slideshow --> |
|||
<div class="carousel-inner"> |
|||
<div class="carousel-item active" |
|||
style="min-height:0px"> |
|||
<div class="col-xs-12 col-sm-4 col-md-4 mb16 mt16" |
|||
style="float:left"> |
|||
<a href="https://apps.odoo.com/apps/modules/15.0/odoo_zoom_meet_integration/" |
|||
target="_blank"> |
|||
<div style="border-radius:10px"> |
|||
<img class="img img-responsive center-block" |
|||
style="border-top-left-radius:10px; border-top-right-radius:10px" |
|||
src="./assets/modules/zoom_meet.jpg"> |
|||
</div> |
|||
</a> |
|||
</div> |
|||
<div class="col-xs-12 col-sm-4 col-md-4 mb16 mt16" |
|||
style="float:left"> |
|||
<a href="https://apps.odoo.com/apps/modules/15.0/whatsapp_mail_messaging/" |
|||
target="_blank"> |
|||
<div style="border-radius:10px"> |
|||
<img class="img img-responsive center-block" |
|||
style="border-top-left-radius:10px; border-top-right-radius:10px" |
|||
src="./assets/modules/whatsapp.gif"> |
|||
</div> |
|||
</a> |
|||
</div> |
|||
<div class="col-xs-12 col-sm-4 col-md-4 mb16 mt16" |
|||
style="float:left"> |
|||
<a href="https://apps.odoo.com/apps/modules/15.0/recruitment_twitter/" |
|||
target="_blank"> |
|||
<div style="border-radius:10px"> |
|||
<img class="img img-responsive center-block" |
|||
style="border-top-left-radius:10px; border-top-right-radius:10px" |
|||
src="./assets/modules/twitter.png"> |
|||
</div> |
|||
</a> |
|||
</div> |
|||
</div> |
|||
<div class="carousel-item" style="min-height:0px"> |
|||
<div class="col-xs-12 col-sm-4 col-md-4 mb16 mt16" |
|||
style="float:left"> |
|||
<a href="https://apps.odoo.com/apps/modules/15.0/integration_whatsapp_chat_live/" |
|||
target="_blank"> |
|||
<div style="border-radius:10px"> |
|||
<img class="img img-responsive center-block" |
|||
style="border-top-left-radius:10px; border-top-right-radius:10px" |
|||
src="./assets/modules/live_chat.png"> |
|||
</div> |
|||
</a> |
|||
</div> |
|||
<div class="col-xs-12 col-sm-4 col-md-4 mb16 mt16" |
|||
style="float:left"> |
|||
<a href="https://apps.odoo.com/apps/modules/15.0/odoo_slack_connector/" |
|||
target="_blank"> |
|||
<div style="border-radius:10px"> |
|||
<img class="img img-responsive center-block" |
|||
style="border-top-left-radius:10px; border-top-right-radius:10px" |
|||
src="./assets/modules/slack.png"> |
|||
</div> |
|||
</a> |
|||
</div> |
|||
<div class="col-xs-12 col-sm-4 col-md-4 mb16 mt16" |
|||
style="float:left"> |
|||
<a href="https://apps.odoo.com/apps/modules/15.0/hr_zk_attendance/" |
|||
target="_blank"> |
|||
<div style="border-radius:10px"> |
|||
<img class="img img-responsive center-block" |
|||
style="border-top-left-radius:10px; border-top-right-radius:10px" |
|||
src="./assets/modules/1.png"> |
|||
</div> |
|||
</a> |
|||
</div> |
|||
</div> |
|||
</div> |
|||
<!-- Left and right controls --> |
|||
<a class="carousel-control-prev" href="#demo1" |
|||
data-slide="prev" |
|||
style="left:-25px;width: 35px;color: #000;"> |
|||
<span class="carousel-control-prev-icon"><i |
|||
class="fa fa-chevron-left" |
|||
style="font-size:24px"></i></span> </a> |
|||
<a class="carousel-control-next" href="#demo1" |
|||
data-slide="next" |
|||
style="right:-25px;width: 35px;color: #000;"> |
|||
<span class="carousel-control-next-icon"><i |
|||
class="fa fa-chevron-right" |
|||
style="font-size:24px"></i></span> |
|||
</a> |
|||
</div> |
|||
</div> |
|||
</div> |
|||
<!-- END OF SUGGESTED PRODUCTS --> |
|||
|
|||
<!-- OUR SERVICES --> |
|||
<section class="container" style="margin-top: 6rem !important;"> |
|||
<div class="row"> |
|||
<div class="col-lg-12 d-flex flex-column justify-content-center align-items-center"> |
|||
<h2 style="color: #212529 !important;">Our Services</h2> |
|||
<hr |
|||
style="border: 3px solid #714B67 !important; background-color: #714B67 !important; width: 80px !important; margin-bottom: 2rem !important;"/> |
|||
</div> |
|||
|
|||
<div class="col-lg-4 d-flex flex-column justify-content-center align-items-center my-4"> |
|||
<div class="d-flex justify-content-center align-items-center mx-3 my-3" |
|||
style="background-color: #1dd1a1 !important; border-radius: 15px !important; height: 80px; width: 80px;"> |
|||
<img src="assets/icons/cogs.png" class="img-responsive" |
|||
height="48px" width="48px"> |
|||
</div> |
|||
<h6 class="text-center" |
|||
style="font-family: Montserrat, 'sans-serif' !important; font-weight: bold;"> |
|||
Odoo |
|||
Customization</h6> |
|||
</div> |
|||
|
|||
<div class="col-lg-4 d-flex flex-column justify-content-center align-items-center my-4"> |
|||
<div class="d-flex justify-content-center align-items-center mx-3 my-3" |
|||
style="background-color: #ff6b6b !important; border-radius: 15px !important; height: 80px; width: 80px;"> |
|||
<img src="assets/icons/wrench.png" |
|||
class="img-responsive" |
|||
height="48px" width="48px"> |
|||
</div> |
|||
<h6 class="text-center" |
|||
style="font-family: Montserrat, 'sans-serif' !important; font-weight: bold;"> |
|||
Odoo |
|||
Implementation</h6> |
|||
</div> |
|||
|
|||
<div class="col-lg-4 d-flex flex-column justify-content-center align-items-center my-4"> |
|||
<div class="d-flex justify-content-center align-items-center mx-3 my-3" |
|||
style="background-color: #6462CD !important; border-radius: 15px !important; height: 80px; width: 80px;"> |
|||
<img src="assets/icons/lifebuoy.png" |
|||
class="img-responsive" |
|||
height="48px" width="48px"> |
|||
</div> |
|||
<h6 class="text-center" |
|||
style="font-family: Montserrat, 'sans-serif' !important; font-weight: bold;"> |
|||
Odoo |
|||
Support</h6> |
|||
</div> |
|||
|
|||
|
|||
<div class="col-lg-4 d-flex flex-column justify-content-center align-items-center my-4"> |
|||
<div class="d-flex justify-content-center align-items-center mx-3 my-3" |
|||
style="background-color: #ffa801 !important; border-radius: 15px !important; height: 80px; width: 80px;"> |
|||
<img src="assets/icons/user.png" class="img-responsive" |
|||
height="48px" width="48px"> |
|||
</div> |
|||
<h6 class="text-center" |
|||
style="font-family: Montserrat, 'sans-serif' !important; font-weight: bold;"> |
|||
Hire |
|||
Odoo |
|||
Developer</h6> |
|||
</div> |
|||
|
|||
<div class="col-lg-4 d-flex flex-column justify-content-center align-items-center my-4"> |
|||
<div class="d-flex justify-content-center align-items-center mx-3 my-3" |
|||
style="background-color: #54a0ff !important; border-radius: 15px !important; height: 80px; width: 80px;"> |
|||
<img src="assets/icons/puzzle.png" |
|||
class="img-responsive" |
|||
height="48px" width="48px"> |
|||
</div> |
|||
<h6 class="text-center" |
|||
style="font-family: Montserrat, 'sans-serif' !important; font-weight: bold;"> |
|||
Odoo |
|||
Integration</h6> |
|||
</div> |
|||
|
|||
<div class="col-lg-4 d-flex flex-column justify-content-center align-items-center my-4"> |
|||
<div class="d-flex justify-content-center align-items-center mx-3 my-3" |
|||
style="background-color: #6d7680 !important; border-radius: 15px !important; height: 80px; width: 80px;"> |
|||
<img src="assets/icons/update.png" |
|||
class="img-responsive" |
|||
height="48px" width="48px"> |
|||
</div> |
|||
<h6 class="text-center" |
|||
style="font-family: Montserrat, 'sans-serif' !important; font-weight: bold;"> |
|||
Odoo |
|||
Migration</h6> |
|||
</div> |
|||
|
|||
|
|||
<div class="col-lg-4 d-flex flex-column justify-content-center align-items-center my-4"> |
|||
<div class="d-flex justify-content-center align-items-center mx-3 my-3" |
|||
style="background-color: #786fa6 !important; border-radius: 15px !important; height: 80px; width: 80px;"> |
|||
<img src="assets/icons/consultation.png" |
|||
class="img-responsive" height="48px" width="48px"> |
|||
</div> |
|||
<h6 class="text-center" |
|||
style="font-family: Montserrat, 'sans-serif' !important; font-weight: bold;"> |
|||
Odoo |
|||
Consultancy</h6> |
|||
</div> |
|||
|
|||
<div class="col-lg-4 d-flex flex-column justify-content-center align-items-center my-4"> |
|||
<div class="d-flex justify-content-center align-items-center mx-3 my-3" |
|||
style="background-color: #f8a5c2 !important; border-radius: 15px !important; height: 80px; width: 80px;"> |
|||
<img src="assets/icons/training.png" |
|||
class="img-responsive" |
|||
height="48px" width="48px"> |
|||
</div> |
|||
<h6 class="text-center" |
|||
style="font-family: Montserrat, 'sans-serif' !important; font-weight: bold;"> |
|||
Odoo |
|||
Implementation</h6> |
|||
</div> |
|||
|
|||
<div class="col-lg-4 d-flex flex-column justify-content-center align-items-center my-4"> |
|||
<div class="d-flex justify-content-center align-items-center mx-3 my-3" |
|||
style="background-color: #e6be26 !important; border-radius: 15px !important; height: 80px; width: 80px;"> |
|||
<img src="assets/icons/license.png" |
|||
class="img-responsive" |
|||
height="48px" width="48px"> |
|||
</div> |
|||
<h6 class="text-center" |
|||
style="font-family: Montserrat, 'sans-serif' !important; font-weight: bold;"> |
|||
Odoo |
|||
Licensing Consultancy</h6> |
|||
</div> |
|||
</div> |
|||
</section> |
|||
<!-- END OF OUR SERVICES --> |
|||
|
|||
<!-- OUR INDUSTRIES --> |
|||
<section class="container" style="margin-top: 6rem !important;"> |
|||
<div class="row"> |
|||
<div class="col-lg-12 d-flex flex-column justify-content-center align-items-center"> |
|||
<h2 style="color: #212529 !important;">Our Industries</h2> |
|||
<hr |
|||
style="border: 3px solid #714B67 !important; background-color: #714B67 !important; width: 80px !important; margin-bottom: 2rem !important;"/> |
|||
</div> |
|||
|
|||
<div class="col-lg-3"> |
|||
<div class="my-4 d-flex flex-column justify-content-center" |
|||
style="background-color: #f6f8f9 !important; border-radius: 10px; padding: 2rem !important; height: 250px !important;"> |
|||
<img src="./assets/icons/trading-black.png" |
|||
class="img-responsive mb-3" height="48px" |
|||
width="48px"> |
|||
<h5 style="font-family: Montserrat, sans-serif !important; color: #000 !important; font-weight: bold;"> |
|||
Trading |
|||
</h5> |
|||
<p style="font-family: Montserrat, sans-serif !important; font-size: 0.9rem !important;"> |
|||
Easily procure |
|||
and |
|||
sell your products</p> |
|||
</div> |
|||
</div> |
|||
|
|||
<div class="col-lg-3"> |
|||
<div class="my-4 d-flex flex-column justify-content-center" |
|||
style="background-color: #f6f8f9 !important; border-radius: 10px; padding: 2rem !important; height: 250px !important;"> |
|||
<img src="./assets/icons/pos-black.png" |
|||
class="img-responsive mb-3" height="48px" |
|||
width="48px"> |
|||
<h5 style="font-family: Montserrat, sans-serif !important; color: #000 !important; font-weight: bold;"> |
|||
POS |
|||
</h5> |
|||
<p style="font-family: Montserrat, sans-serif !important; font-size: 0.9rem !important;"> |
|||
Easy |
|||
configuration |
|||
and convivial experience</p> |
|||
</div> |
|||
</div> |
|||
|
|||
<div class="col-lg-3"> |
|||
<div class="my-4 d-flex flex-column justify-content-center" |
|||
style="background-color: #f6f8f9 !important; border-radius: 10px; padding: 2rem !important; height: 250px !important;"> |
|||
<img src="./assets/icons/education-black.png" |
|||
class="img-responsive mb-3" height="48px" |
|||
width="48px"> |
|||
<h5 style="font-family: Montserrat, sans-serif !important; color: #000 !important; font-weight: bold;"> |
|||
Education |
|||
</h5> |
|||
<p style="font-family: Montserrat, sans-serif !important; font-size: 0.9rem !important;"> |
|||
A platform for |
|||
educational management</p> |
|||
</div> |
|||
</div> |
|||
|
|||
<div class="col-lg-3"> |
|||
<div class="my-4 d-flex flex-column justify-content-center" |
|||
style="background-color: #f6f8f9 !important; border-radius: 10px; padding: 2rem !important; height: 250px !important;"> |
|||
<img src="./assets/icons/manufacturing-black.png" |
|||
class="img-responsive mb-3" height="48px" |
|||
width="48px"> |
|||
<h5 style="font-family: Montserrat, sans-serif !important; color: #000 !important; font-weight: bold;"> |
|||
Manufacturing |
|||
</h5> |
|||
<p style="font-family: Montserrat, sans-serif !important; font-size: 0.9rem !important;"> |
|||
Plan, track and |
|||
schedule your operations</p> |
|||
</div> |
|||
</div> |
|||
|
|||
<div class="col-lg-3"> |
|||
<div class="my-4 d-flex flex-column justify-content-center" |
|||
style="background-color: #f6f8f9 !important; border-radius: 10px; padding: 2rem !important; height: 250px !important;"> |
|||
<img src="./assets/icons/ecom-black.png" |
|||
class="img-responsive mb-3" height="48px" |
|||
width="48px"> |
|||
<h5 style="font-family: Montserrat, sans-serif !important; color: #000 !important; font-weight: bold;"> |
|||
E-commerce & Website |
|||
</h5> |
|||
<p style="font-family: Montserrat, sans-serif !important; font-size: 0.9rem !important;"> |
|||
Mobile |
|||
friendly, |
|||
awe-inspiring product pages</p> |
|||
</div> |
|||
</div> |
|||
|
|||
<div class="col-lg-3"> |
|||
<div class="my-4 d-flex flex-column justify-content-center" |
|||
style="background-color: #f6f8f9 !important; border-radius: 10px; padding: 2rem !important; height: 250px !important;"> |
|||
<img src="./assets/icons/service-black.png" |
|||
class="img-responsive mb-3" height="48px" |
|||
width="48px"> |
|||
<h5 style="font-family: Montserrat, sans-serif !important; color: #000 !important; font-weight: bold;"> |
|||
Service Management |
|||
</h5> |
|||
<p style="font-family: Montserrat, sans-serif !important; font-size: 0.9rem !important;"> |
|||
Keep track of |
|||
services and invoice</p> |
|||
</div> |
|||
</div> |
|||
|
|||
<div class="col-lg-3"> |
|||
<div class="my-4 d-flex flex-column justify-content-center" |
|||
style="background-color: #f6f8f9 !important; border-radius: 10px; padding: 2rem !important; height: 250px !important;"> |
|||
<img src="./assets/icons/restaurant-black.png" |
|||
class="img-responsive mb-3" height="48px" |
|||
width="48px"> |
|||
<h5 style="font-family: Montserrat, sans-serif !important; color: #000 !important; font-weight: bold;"> |
|||
Restaurant |
|||
</h5> |
|||
<p style="font-family: Montserrat, sans-serif !important; font-size: 0.9rem !important;"> |
|||
Run your bar or |
|||
restaurant methodically</p> |
|||
</div> |
|||
</div> |
|||
|
|||
<div class="col-lg-3"> |
|||
<div class="my-4 d-flex flex-column justify-content-center" |
|||
style="background-color: #f6f8f9 !important; border-radius: 10px; padding: 2rem !important; height: 250px !important;"> |
|||
<img src="./assets/icons/hotel-black.png" |
|||
class="img-responsive mb-3" height="48px" |
|||
width="48px"> |
|||
<h5 style="font-family: Montserrat, sans-serif !important; color: #000 !important; font-weight: bold;"> |
|||
Hotel Management |
|||
</h5> |
|||
<p style="font-family: Montserrat, sans-serif !important; font-size: 0.9rem !important;"> |
|||
An |
|||
all-inclusive |
|||
hotel management application</p> |
|||
</div> |
|||
</div> |
|||
|
|||
</div> |
|||
</section> |
|||
|
|||
<!-- END OF OUR INDUSTRIES --> |
|||
|
|||
<!-- FOOTER --> |
|||
<!-- Footer Section --> |
|||
<section class="container" style="margin: 5rem auto 2rem;"> |
|||
<div class="row" style="max-width:1540px;"> |
|||
<div class="col-lg-12 d-flex flex-column justify-content-center align-items-center"> |
|||
<h2 style="color: #212529 !important;">Need Help?</h2> |
|||
<hr |
|||
style="border: 3px solid #714B67 !important; background-color: #714B67 !important; width: 80px !important; margin-bottom: 2rem !important;"/> |
|||
</div> |
|||
</div> |
|||
|
|||
<!-- Contact Cards --> |
|||
<div class="row d-flex justify-content-center align-items-center" |
|||
style="max-width:1540px; margin: 0 auto 2rem auto;"> |
|||
|
|||
<div class="col-lg-12" |
|||
style="padding: 0rem 3rem 2rem; border-radius: 10px; margin-right: 3rem; "> |
|||
|
|||
<div class="row mt-4"> |
|||
<div class="col-lg-6"> |
|||
<a href="mailto:odoo@cybrosys.com" target="_blank" |
|||
class="btn btn-block mb-2 deep_hover" |
|||
style="text-decoration: none; background-color: #4d4d4d; color: #FFF; border-radius: 4px;"><i |
|||
class="fa fa-envelope mr-2"></i>odoo@cybrosys.com</a> |
|||
</div> |
|||
<div class="col-lg-6"> |
|||
<a href="https://api.whatsapp.com/send?phone=918606827707" |
|||
target="_blank" |
|||
class="btn btn-block mb-2 deep_hover" |
|||
style="text-decoration: none; background-color: #25D366; color: #FFF; border-radius: 4px;"><i |
|||
class="fa fa-whatsapp mr-2"></i>+91 86068 |
|||
27707</a> |
|||
</div> |
|||
</div> |
|||
</div> |
|||
|
|||
</div> |
|||
<!-- End of Contact Cards --> |
|||
</section> |
|||
<!-- Footer --> |
|||
<section class="oe_container" style="padding: 2rem 3rem 1rem;"> |
|||
<div class="row" |
|||
style="max-width:1540px; margin: 0 auto; margin-right: 3rem; "> |
|||
<!-- Logo --> |
|||
<div class="col-lg-12 d-flex justify-content-center align-items-center" |
|||
style="margin-top: 3rem;"> |
|||
<img src="https://www.cybrosys.com/images/logo.png" |
|||
width="200px" height="auto"/> |
|||
</div> |
|||
<!-- End of Logo --> |
|||
<div class="col-lg-12"> |
|||
<hr |
|||
style="margin-top: 3rem;background: linear-gradient(90deg, rgba(2,0,36,0) 0%, rgba(229,229,229,1) 33%, rgba(229,229,229,1) 58%, rgba(0,212,255,0) 100%); height: 2px; border-style: none;"> |
|||
<!-- End of Footer Section --> |
|||
</div> |
|||
</div> |
|||
</section> |
|||
<!-- END OF FOOTER --> |
@ -0,0 +1,20 @@ |
|||
<?xml version="1.0" encoding="UTF-8" ?> |
|||
<odoo> |
|||
<!-- This XML defines a new view that inherits from 'account.view_move_form'. |
|||
It adds a button for sending by Whatsapp after the 'Draft' button in the form header. --> |
|||
<record id="view_move_form" model="ir.ui.view"> |
|||
<field name="name"> |
|||
account.move.view.form.inherit.whatsapp.integration.odoo |
|||
</field> |
|||
<field name="model">account.move</field> |
|||
<field name="inherit_id" ref="account.view_move_form"/> |
|||
<field name="arch" type="xml"> |
|||
<xpath expr="//form/header/button[@name='button_draft']" |
|||
position="after"> |
|||
<button name="action_send_by_whatsapp" type="object" |
|||
class="oe_highlight" string="Send By Whatsapp" |
|||
icon="fa-whatsapp"/> |
|||
</xpath> |
|||
</field> |
|||
</record> |
|||
</odoo> |
@ -0,0 +1,17 @@ |
|||
<?xml version="1.0" encoding="UTF-8"?> |
|||
<odoo> |
|||
<!-- This XML defines a new view that inherits from 'mail.mail_channel_view_form'. |
|||
It adds a fields for the phone number in the form view. --> |
|||
<record id="mail_channel_view_form" model="ir.ui.view"> |
|||
<field name="name"> |
|||
mail.channel.view.form.inherit.whatsapp.integration.odoo |
|||
</field> |
|||
<field name="model">mail.channel</field> |
|||
<field name="inherit_id" ref="mail.mail_channel_view_form"/> |
|||
<field name="arch" type="xml"> |
|||
<field name="description" position="after"> |
|||
<field name="phone"/> |
|||
</field> |
|||
</field> |
|||
</record> |
|||
</odoo> |
@ -0,0 +1,75 @@ |
|||
<?xml version="1.0" encoding="UTF-8" ?> |
|||
<odoo> |
|||
<!-- Define the email template form view --> |
|||
<record id="email_template_form" model="ir.ui.view"> |
|||
<field name="name"> |
|||
mail.template.view.form.inherit.whatsapp.integration.odoo |
|||
</field> |
|||
<field name="model">mail.template</field> |
|||
<field name="inherit_id" ref="mail.email_template_form"/> |
|||
<field name="arch" type="xml"> |
|||
<field name="model_id" position="after"> |
|||
<field name="is_sale_template"/> |
|||
<field name="is_purchase_template"/> |
|||
<field name="is_delivery_template"/> |
|||
<field name="is_invoice_template"/> |
|||
</field> |
|||
</field> |
|||
</record> |
|||
<record id="mail_template_sale_action" |
|||
model="ir.actions.act_window"> |
|||
<field name="name">Whatsapp Templates for Sale</field> |
|||
<field name="res_model">mail.template</field> |
|||
<field name="view_mode">form,tree</field> |
|||
<field name="view_id" ref="mail.email_template_tree"/> |
|||
<field name="search_view_id" ref="mail.view_email_template_search"/> |
|||
<field name="domain">[('is_sale_template','=', True)]</field> |
|||
</record> |
|||
<record model="ir.actions.act_window" |
|||
id="mail_template_purchase_action"> |
|||
<field name="name">Whatsapp Templates for Purchase</field> |
|||
<field name="res_model">mail.template</field> |
|||
<field name="view_mode">form,tree</field> |
|||
<field name="view_id" ref="mail.email_template_tree"/> |
|||
<field name="search_view_id" ref="mail.view_email_template_search"/> |
|||
<field name="domain">[('is_purchase_template','=', True)]</field> |
|||
</record> |
|||
<record model="ir.actions.act_window" |
|||
id="mail_template_delivery_action"> |
|||
<field name="name">Whatsapp Templates for Delivery</field> |
|||
<field name="res_model">mail.template</field> |
|||
<field name="view_mode">form,tree</field> |
|||
<field name="view_id" ref="mail.email_template_tree"/> |
|||
<field name="search_view_id" ref="mail.view_email_template_search"/> |
|||
<field name="domain">[('is_delivery_template','=', True)]</field> |
|||
</record> |
|||
<record model="ir.actions.act_window" |
|||
id="mail_template_invoice_action"> |
|||
<field name="name">Whatsapp Templates for Invoice</field> |
|||
<field name="res_model">mail.template</field> |
|||
<field name="view_mode">form,tree</field> |
|||
<field name="view_id" ref="mail.email_template_tree"/> |
|||
<field name="search_view_id" ref="mail.view_email_template_search"/> |
|||
<field name="domain">[('is_invoice_template','=', True)]</field> |
|||
</record> |
|||
<menuitem id="sale_order_menu" |
|||
name="Whatsapp Templates" |
|||
parent="sale.menu_sale_config" |
|||
action="all_in_one_whatsapp_integration.mail_template_sale_action" |
|||
sequence="100"/> |
|||
<menuitem id="purchase_order_menu" |
|||
name="Whatsapp Templates" |
|||
parent="purchase.menu_purchase_config" |
|||
action="all_in_one_whatsapp_integration.mail_template_purchase_action" |
|||
sequence="100"/> |
|||
<menuitem id="stock_picking_menu" |
|||
name="Whatsapp Templates" |
|||
parent="stock.menu_stock_config_settings" |
|||
action="all_in_one_whatsapp_integration.mail_template_delivery_action" |
|||
sequence="100"/> |
|||
<menuitem id="account_move_menu" |
|||
name="Whatsapp Templates" |
|||
parent="account.menu_finance_configuration" |
|||
action="all_in_one_whatsapp_integration.mail_template_invoice_action" |
|||
sequence="100"/> |
|||
</odoo> |
@ -0,0 +1,20 @@ |
|||
<?xml version="1.0" encoding="UTF-8" ?> |
|||
<odoo> |
|||
<!-- This XML defines a new view that inherits from 'purchase.purchase_order_form'. |
|||
It adds a button for sending by Whatsapp after the 'Cancel' button in the form header. --> |
|||
<record id="purchase_order_form" model="ir.ui.view"> |
|||
<field name="name"> |
|||
purchase.order.view.form.inherit.whatsapp.integration.odoo |
|||
</field> |
|||
<field name="model">purchase.order</field> |
|||
<field name="inherit_id" ref="purchase.purchase_order_form"/> |
|||
<field name="arch" type="xml"> |
|||
<xpath expr="//form/header/button[@name='button_cancel']" |
|||
position="after"> |
|||
<button name="action_send_by_whatsapp" type="object" |
|||
class="oe_highlight" string="Send By Whatsapp" |
|||
icon="fa-whatsapp"/> |
|||
</xpath> |
|||
</field> |
|||
</record> |
|||
</odoo> |
@ -0,0 +1,109 @@ |
|||
<?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.whatsapp.integration.odoo |
|||
</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>Twilio 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="Twilio Whatsapp Number" |
|||
for="twilio_whatsapp"/> |
|||
<div class="text-muted"> |
|||
Twilio Whatsapp Number |
|||
</div> |
|||
<div class="content-group"> |
|||
<div class="mt16"> |
|||
<field name="twilio_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="Account SID" for="account_sid"/> |
|||
<div class="text-muted"> |
|||
Account SID |
|||
</div> |
|||
<div class="content-group"> |
|||
<div class="mt16"> |
|||
<field name="account_sid" |
|||
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="Auth Token" for="auth_token"/> |
|||
<div class="text-muted"> |
|||
Auth Token |
|||
</div> |
|||
<div class="content-group"> |
|||
<div class="mt16"> |
|||
<field name="auth_token" |
|||
class="o_light_label"/> |
|||
</div> |
|||
</div> |
|||
</div> |
|||
</div> |
|||
</div> |
|||
</div> |
|||
<div id="companies" position="after"> |
|||
<h2>Whatsapp Cloud API Credentials</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="Your Registered Whatsapp Cloud API Phone number ID" |
|||
for="whatsapp_no"/> |
|||
<div class="text-muted">Your Registered Whatsapp |
|||
Cloud API Phone number ID |
|||
</div> |
|||
<div class="content-group"> |
|||
<div class="mt16"> |
|||
<field name="whatsapp_no" |
|||
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="Whatsapp Business Account ID" |
|||
for="whatsapp_business"/> |
|||
<div class="text-muted">Whatsapp Business Account |
|||
ID |
|||
</div> |
|||
<div class="content-group"> |
|||
<div class="mt16"> |
|||
<field name="whatsapp_business" |
|||
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="Whatsapp Access Token" |
|||
for="bearer_token"/> |
|||
<div class="text-muted">Whatsapp Access Token</div> |
|||
<div class="content-group"> |
|||
<div class="mt16"> |
|||
<field name="bearer_token" |
|||
class="o_light_label"/> |
|||
</div> |
|||
</div> |
|||
</div> |
|||
</div> |
|||
</div> |
|||
</div> |
|||
</field> |
|||
</record> |
|||
</odoo> |