diff --git a/odex30_base/whatsapp_mail_messaging/__init__.py b/odex30_base/whatsapp_mail_messaging/__init__.py new file mode 100644 index 0000000..1188422 --- /dev/null +++ b/odex30_base/whatsapp_mail_messaging/__init__.py @@ -0,0 +1,24 @@ +# -*- coding: utf-8 -*- +############################################################################# +# +# Cybrosys Technologies Pvt. Ltd. +# +# Copyright (C) 2020-TODAY Cybrosys Technologies() +# Author: Sayooj A O () +# +# You can modify it under the terms of the GNU LESSER +# GENERAL PUBLIC LICENSE (LGPL v3), Version 3. +# +# This program is distributed in the hope that it will be useful, +# but WITHOUT ANY WARRANTY; without even the implied warranty of +# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +# GNU LESSER GENERAL PUBLIC LICENSE (LGPL v3) for more details. +# +# You should have received a copy of the GNU LESSER GENERAL PUBLIC LICENSE +# (LGPL v3) along with this program. +# If not, see . +# +############################################################################# + +from . import model +from . import wizard diff --git a/odex30_base/whatsapp_mail_messaging/__manifest__.py b/odex30_base/whatsapp_mail_messaging/__manifest__.py new file mode 100644 index 0000000..3ce5cc8 --- /dev/null +++ b/odex30_base/whatsapp_mail_messaging/__manifest__.py @@ -0,0 +1,45 @@ +{ + 'name': 'Odoo Whatsapp Integration', + 'version': '18.0.1.0.0', + 'category': 'Sales', + 'summary': """Odoo 18 Whatsapp Integration For Sales,Contacts,Crm,Stock,Purchase,Invoice, and Floating button in Website""", + 'description': """Odoo 18 Version: Added options for sending Whatsapp messages and Mails in systray bar,sale order, invoices, + website portal view and share the access url of documents using share option available in each records through + Whatsapp web..""", + 'author': 'Expert (Migrated by you)', + 'website': "https://www.cybrosys.com", + 'company': 'Expert', + 'depends': ['base', 'contacts', 'crm', 'stock', 'sale_management', 'purchase', 'account', 'website'], + + 'data': [ + 'security/ir.model.access.csv', + 'views/portal_whatsapp_view.xml', + 'views/sale_order_inherited.xml', + 'views/purchase_order_inherited.xml', + 'views/stock_picking_inherit.xml', + 'views/crm_lead.xml', + 'views/account_move_inherited.xml', + 'views/contacts.xml', + 'views/website_inherited.xml', + 'wizard/wh_message_wizard.xml', + 'wizard/portal_share_inherited.xml', + ], + + 'assets': { + 'web.assets_backend': [ + '/whatsapp_mail_messaging/static/src/js/whatsapp_button.js', + '/whatsapp_mail_messaging/static/src/js/mail_button.js', + '/whatsapp_mail_messaging/static/src/xml/whatsapp_button.xml', + '/whatsapp_mail_messaging/static/src/xml/mail_button.xml', + '/whatsapp_mail_messaging/static/src/css/systray_icons.css', + ], + 'web.assets_frontend': [ + '/whatsapp_mail_messaging/static/src/css/whatsapp.css', + ], + }, + + 'license': 'LGPL-3', + 'installable': True, + 'auto_install': False, + 'application': False, +} diff --git a/odex30_base/whatsapp_mail_messaging/model/__init__.py b/odex30_base/whatsapp_mail_messaging/model/__init__.py new file mode 100644 index 0000000..1e15b6c --- /dev/null +++ b/odex30_base/whatsapp_mail_messaging/model/__init__.py @@ -0,0 +1,7 @@ +from . import website +from . import sale_order +from . import purchase_order +from . import account_move +from . import stock_picking +from . import crm_lead +from . import res_partner diff --git a/odex30_base/whatsapp_mail_messaging/model/account_move.py b/odex30_base/whatsapp_mail_messaging/model/account_move.py new file mode 100644 index 0000000..737f31a --- /dev/null +++ b/odex30_base/whatsapp_mail_messaging/model/account_move.py @@ -0,0 +1,100 @@ +# -*- coding: utf-8 -*- +############################################################################# +# +# Cybrosys Technologies Pvt. Ltd. +# +# Copyright (C) 2020-TODAY Cybrosys Technologies() +# Author: Sayooj A O () +# +# You can modify it under the terms of the GNU LESSER +# GENERAL PUBLIC LICENSE (LGPL v3), Version 3. +# +# This program is distributed in the hope that it will be useful, +# but WITHOUT ANY WARRANTY; without even the implied warranty of +# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +# GNU LESSER GENERAL PUBLIC LICENSE (LGPL v3) for more details. +# +# You should have received a copy of the GNU LESSER GENERAL PUBLIC LICENSE +# (LGPL v3) along with this program. +# If not, see . +# +############################################################################# + +from itertools import groupby + +from odoo import models, _ +from odoo.exceptions import UserError + + +class Account(models.Model): + _inherit = 'account.move' + + def action_send_whatsapp(self): + compose_form_id = self.env.ref('whatsapp_mail_messaging.whatsapp_message_wizard_form').id + ctx = dict(self.env.context) + + partner_name = self.partner_id.name or '' + invoice_name = self.name or '' + total_amount = self.amount_total or 0.0 + currency_symbol = self.currency_id.symbol or '' + company_name = self.company_id.name or '' + + message = ( + f"Hi {partner_name},\n" + f"Here is your invoice {invoice_name} amounting {total_amount}{currency_symbol} " + f"from {company_name}. Please remit payment at your earliest convenience.\n" + f"Please use the following communication for your payment: {invoice_name}" + ) + + ctx.update({ + 'default_message': message, + 'default_partner_id': self.partner_id.id, + 'default_mobile': self.partner_id.mobile, + 'default_image_1920': self.partner_id.image_1920, + }) + return { + 'type': 'ir.actions.act_window', + 'view_mode': 'form', + 'res_model': 'whatsapp.message.wizard', + 'views': [(compose_form_id, 'form')], + 'view_id': compose_form_id, + 'target': 'new', + 'context': ctx, + } + + def check_customers(self, partner_ids): + partners = groupby(partner_ids) + return next(partners, True) and not next(partners, False) + + def action_whatsapp_multi(self): + account_move_ids = self.env['account.move'].browse(self.env.context.get('active_ids')) + partner_ids = [] + for account_move in account_move_ids: + partner_ids.append(account_move.partner_id.id) + partner_check = self.check_customers(partner_ids) + if partner_check: + account_move_numbers = account_move_ids.mapped('name') + account_move_numbers = "\n".join(account_move_numbers) + compose_form_id = self.env.ref('whatsapp_mail_messaging.whatsapp_message_wizard_form').id + ctx = dict(self.env.context) + message = "Hi" + " " + self.partner_id.name + ',' + '\n' + "Your Orders are" + '\n' + account_move_numbers + \ + ' ' + "is ready for review.Do not hesitate to contact us if you have any questions." + ctx.update({ + 'default_message': message, + 'default_partner_id': account_move_ids[0].partner_id.id, + 'default_mobile': account_move_ids[0].partner_id.mobile, + 'default_image_1920': account_move_ids[0].partner_id.image_1920, + }) + return { + 'type': 'ir.actions.act_window', + 'view_mode': 'form', + 'res_model': 'whatsapp.message.wizard', + 'views': [(compose_form_id, 'form')], + 'view_id': compose_form_id, + 'target': 'new', + 'context': ctx, + } + else: + raise UserError(_( + 'It seems that you have selected Invoices of more than one customer.' + 'Try select Invoices of an unique customer')) diff --git a/odex30_base/whatsapp_mail_messaging/model/crm_lead.py b/odex30_base/whatsapp_mail_messaging/model/crm_lead.py new file mode 100644 index 0000000..ddc237d --- /dev/null +++ b/odex30_base/whatsapp_mail_messaging/model/crm_lead.py @@ -0,0 +1,64 @@ +from itertools import groupby +from odoo import models, _ +from odoo.exceptions import UserError + + +class Sale(models.Model): + _inherit = 'crm.lead' + + def action_send_whatsapp(self): + compose_form_id = self.env.ref('whatsapp_mail_messaging.whatsapp_message_wizard_form').id + ctx = dict(self.env.context) + message = "Hi" + " " + self.partner_id.name + ',' + '\n' + "Your Lead" + ' ' + self.name + " is ready for review.Do not hesitate to contact us if you have any Leads." + ctx.update({ + 'default_message': message, + 'default_partner_id': self.partner_id.id, + 'default_mobile': self.partner_id.mobile, + 'default_image_1920': self.partner_id.image_1920, + }) + return { + 'type': 'ir.actions.act_window', + 'view_mode': 'form', + 'res_model': 'whatsapp.message.wizard', + 'views': [(compose_form_id, 'form')], + 'view_id': compose_form_id, + 'target': 'new', + 'context': ctx, + } + + def check_customers(self, partner_ids): + partners = groupby(partner_ids) + return next(partners, True) and not next(partners, False) + + def action_whatsapp_multi(self): + sale_order_ids = self.env['crm.lead'].browse(self.env.context.get('active_ids')) + partner_ids = [] + for sale in sale_order_ids: + partner_ids.append(sale.partner_id.id) + partner_check = self.check_customers(partner_ids) + if partner_check: + sale_numbers = sale_order_ids.mapped('name') + sale_numbers = "\n".join(sale_numbers) + compose_form_id = self.env.ref('whatsapp_mail_messaging.whatsapp_message_wizard_form').id + ctx = dict(self.env.context) + message = "Hi" + " " + self.partner_id.name + ',' + '\n' + "Your Orders are" + '\n' + sale_numbers + \ + ' ' + '\n' + "is ready for review.Do not hesitate to contact us if you have any Leads." + ctx.update({ + 'default_message': message, + 'default_partner_id': sale_order_ids[0].partner_id.id, + 'default_mobile': sale_order_ids[0].partner_id.mobile, + 'default_image_1920': sale_order_ids[0].partner_id.image_1920, + }) + return { + 'type': 'ir.actions.act_window', + 'view_mode': 'form', + 'res_model': 'whatsapp.message.wizard', + 'views': [(compose_form_id, 'form')], + 'view_id': compose_form_id, + 'target': 'new', + 'context': ctx, + } + else: + raise UserError(_( + 'It seems that you have selected orders of more than one customer.' + 'Try select orders of an unique customer')) diff --git a/odex30_base/whatsapp_mail_messaging/model/purchase_order.py b/odex30_base/whatsapp_mail_messaging/model/purchase_order.py new file mode 100644 index 0000000..c5dc25c --- /dev/null +++ b/odex30_base/whatsapp_mail_messaging/model/purchase_order.py @@ -0,0 +1,64 @@ +from itertools import groupby + +from odoo import models, _ +from odoo.exceptions import UserError +class Sale(models.Model): + _inherit = 'purchase.order' + + def action_send_whatsapp(self): + compose_form_id = self.env.ref('whatsapp_mail_messaging.whatsapp_message_wizard_form').id + ctx = dict(self.env.context) + message = "Hi" + " " + self.partner_id.name + ',' + '\n' + "Your quotation" + ' ' + self.name + ' ' + "amounting" + ' ' + str( + self.amount_total) + self.currency_id.symbol + ' ' + "is ready for review.Do not hesitate to contact us if you have any questions." + ctx.update({ + 'default_message': message, + 'default_partner_id': self.partner_id.id, + 'default_mobile': self.partner_id.mobile, + 'default_image_1920': self.partner_id.image_1920, + }) + return { + 'type': 'ir.actions.act_window', + 'view_mode': 'form', + 'res_model': 'whatsapp.message.wizard', + 'views': [(compose_form_id, 'form')], + 'view_id': compose_form_id, + 'target': 'new', + 'context': ctx, + } + + def check_customers(self, partner_ids): + partners = groupby(partner_ids) + return next(partners, True) and not next(partners, False) + + def action_whatsapp_multi(self): + sale_order_ids = self.env['purchase.order'].browse(self.env.context.get('active_ids')) + partner_ids = [] + for sale in sale_order_ids: + partner_ids.append(sale.partner_id.id) + partner_check = self.check_customers(partner_ids) + if partner_check: + sale_numbers = sale_order_ids.mapped('name') + sale_numbers = "\n".join(sale_numbers) + compose_form_id = self.env.ref('whatsapp_mail_messaging.whatsapp_message_wizard_form').id + ctx = dict(self.env.context) + message = "Hi" + " " + self.partner_id.name + ',' + '\n' + "Your Orders are" + '\n' + sale_numbers + \ + ' ' + '\n' + "is ready for review.Do not hesitate to contact us if you have any questions." + ctx.update({ + 'default_message': message, + 'default_partner_id': sale_order_ids[0].partner_id.id, + 'default_mobile': sale_order_ids[0].partner_id.mobile, + 'default_image_1920': sale_order_ids[0].partner_id.image_1920, + }) + return { + 'type': 'ir.actions.act_window', + 'view_mode': 'form', + 'res_model': 'whatsapp.message.wizard', + 'views': [(compose_form_id, 'form')], + 'view_id': compose_form_id, + 'target': 'new', + 'context': ctx, + } + else: + raise UserError(_( + 'It seems that you have selected orders of more than one customer.' + 'Try select orders of an unique customer')) diff --git a/odex30_base/whatsapp_mail_messaging/model/res_partner.py b/odex30_base/whatsapp_mail_messaging/model/res_partner.py new file mode 100644 index 0000000..2071c13 --- /dev/null +++ b/odex30_base/whatsapp_mail_messaging/model/res_partner.py @@ -0,0 +1,63 @@ +from itertools import groupby +from odoo import models, _ +from odoo.exceptions import UserError + + +class Sale(models.Model): + _inherit = 'res.partner' + + def action_send_whatsapp(self): + compose_form_id = self.env.ref('whatsapp_mail_messaging.whatsapp_message_wizard_form').id + ctx = dict(self.env.context) + message = "Hi" + " " + self.name + ' ,' + '\n' + ctx.update({ + 'default_message': message, + 'default_partner_id': self.id, + 'default_mobile': self.mobile, + 'default_image_1920': self.image_1920, + }) + return { + 'type': 'ir.actions.act_window', + 'view_mode': 'form', + 'res_model': 'whatsapp.message.wizard', + 'views': [(compose_form_id, 'form')], + 'view_id': compose_form_id, + 'target': 'new', + 'context': ctx, + } + + def check_customers(self, partner_ids): + partners = groupby(partner_ids) + return next(partners, True) and not next(partners, False) + + def action_whatsapp_multi(self): + sale_order_ids = self.env['res.partner'].browse(self.env.context.get('active_ids')) + partner_ids = [] + for sale in sale_order_ids: + partner_ids.append(sale.id) + partner_check = self.check_customers(partner_ids) + if partner_check: + sale_numbers = sale_order_ids.mapped('name') + sale_numbers = "\n".join(sale_numbers) + compose_form_id = self.env.ref('whatsapp_mail_messaging.whatsapp_message_wizard_form').id + ctx = dict(self.env.context) + message = "Hi" +'' + self.name + ctx.update({ + 'default_message': message, + 'default_partner_id': sale_order_ids[0].id, + 'default_mobile': sale_order_ids[0].mobile, + 'default_image_1920': sale_order_ids[0].image_1920, + }) + return { + 'type': 'ir.actions.act_window', + 'view_mode': 'form', + 'res_model': 'whatsapp.message.wizard', + 'views': [(compose_form_id, 'form')], + 'view_id': compose_form_id, + 'target': 'new', + 'context': ctx, + } + else: + raise UserError(_( + 'It seems that you have selected orders of more than one customer.' + 'Try select orders of an unique Name')) diff --git a/odex30_base/whatsapp_mail_messaging/model/sale_order.py b/odex30_base/whatsapp_mail_messaging/model/sale_order.py new file mode 100644 index 0000000..dd5ff52 --- /dev/null +++ b/odex30_base/whatsapp_mail_messaging/model/sale_order.py @@ -0,0 +1,88 @@ +# -*- coding: utf-8 -*- +############################################################################# +# +# Cybrosys Technologies Pvt. Ltd. +# +# Copyright (C) 2020-TODAY Cybrosys Technologies() +# Author: Sayooj A O() +# +# You can modify it under the terms of the GNU LESSER +# GENERAL PUBLIC LICENSE (LGPL v3), Version 3. +# +# This program is distributed in the hope that it will be useful, +# but WITHOUT ANY WARRANTY; without even the implied warranty of +# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +# GNU LESSER GENERAL PUBLIC LICENSE (LGPL v3) for more details. +# +# You should have received a copy of the GNU LESSER GENERAL PUBLIC LICENSE +# (LGPL v3) along with this program. +# If not, see . +# +############################################################################# + +from itertools import groupby + +from odoo import models, _ +from odoo.exceptions import UserError + + +class Sale(models.Model): + _inherit = 'sale.order' + + def action_send_whatsapp(self): + compose_form_id = self.env.ref('whatsapp_mail_messaging.whatsapp_message_wizard_form').id + ctx = dict(self.env.context) + message = "Hi" + " " + self.partner_id.name + ',' + '\n' + "Your quotation" + ' ' + self.name + ' ' + "amounting" + ' ' + str( + self.amount_total) + self.currency_id.symbol + ' ' + "is ready for review.Do not hesitate to contact us if you have any questions." + ctx.update({ + 'default_message': message, + 'default_partner_id': self.partner_id.id, + 'default_mobile': self.partner_id.mobile, + 'default_image_1920': self.partner_id.image_1920, + }) + return { + 'type': 'ir.actions.act_window', + 'view_mode': 'form', + 'res_model': 'whatsapp.message.wizard', + 'views': [(compose_form_id, 'form')], + 'view_id': compose_form_id, + 'target': 'new', + 'context': ctx, + } + + def check_customers(self, partner_ids): + partners = groupby(partner_ids) + return next(partners, True) and not next(partners, False) + + def action_whatsapp_multi(self): + sale_order_ids = self.env['sale.order'].browse(self.env.context.get('active_ids')) + partner_ids = [] + for sale in sale_order_ids: + partner_ids.append(sale.partner_id.id) + partner_check = self.check_customers(partner_ids) + if partner_check: + sale_numbers = sale_order_ids.mapped('name') + sale_numbers = "\n".join(sale_numbers) + compose_form_id = self.env.ref('whatsapp_mail_messaging.whatsapp_message_wizard_form').id + ctx = dict(self.env.context) + message = "Hi" + " " + self.partner_id.name + ',' + '\n' + "Your Orders are" + '\n' + sale_numbers + \ + ' ' + '\n' + "is ready for review.Do not hesitate to contact us if you have any questions." + ctx.update({ + 'default_message': message, + 'default_partner_id': sale_order_ids[0].partner_id.id, + 'default_mobile': sale_order_ids[0].partner_id.mobile, + 'default_image_1920': sale_order_ids[0].partner_id.image_1920, + }) + return { + 'type': 'ir.actions.act_window', + 'view_mode': 'form', + 'res_model': 'whatsapp.message.wizard', + 'views': [(compose_form_id, 'form')], + 'view_id': compose_form_id, + 'target': 'new', + 'context': ctx, + } + else: + raise UserError(_( + 'It seems that you have selected orders of more than one customer.' + 'Try select orders of an unique customer')) diff --git a/odex30_base/whatsapp_mail_messaging/model/stock_picking.py b/odex30_base/whatsapp_mail_messaging/model/stock_picking.py new file mode 100644 index 0000000..73aa46d --- /dev/null +++ b/odex30_base/whatsapp_mail_messaging/model/stock_picking.py @@ -0,0 +1,64 @@ +from itertools import groupby +from odoo import models, _ +from odoo.exceptions import UserError + + +class Sale(models.Model): + _inherit = 'stock.picking' + + def action_send_whatsapp(self): + compose_form_id = self.env.ref('whatsapp_mail_messaging.whatsapp_message_wizard_form').id + ctx = dict(self.env.context) + message = "Hi" + " " + self.partner_id.name + ',' + '\n' + "Your Transfer" + ' ' + self.name + ' '+ "is ready for review.Do not hesitate to contact us if you have any questions." + ctx.update({ + 'default_message': message, + 'default_partner_id': self.partner_id.id, + 'default_mobile': self.partner_id.mobile, + 'default_image_1920': self.partner_id.image_1920, + }) + return { + 'type': 'ir.actions.act_window', + 'view_mode': 'form', + 'res_model': 'whatsapp.message.wizard', + 'views': [(compose_form_id, 'form')], + 'view_id': compose_form_id, + 'target': 'new', + 'context': ctx, + } + + def check_customers(self, partner_ids): + partners = groupby(partner_ids) + return next(partners, True) and not next(partners, False) + + def action_whatsapp_multi(self): + sale_order_ids = self.env['stock.picking'].browse(self.env.context.get('active_ids')) + partner_ids = [] + for sale in sale_order_ids: + partner_ids.append(sale.partner_id.id) + partner_check = self.check_customers(partner_ids) + if partner_check: + sale_numbers = sale_order_ids.mapped('name') + sale_numbers = "\n".join(sale_numbers) + compose_form_id = self.env.ref('whatsapp_mail_messaging.whatsapp_message_wizard_form').id + ctx = dict(self.env.context) + message = "Hi" + " " + self.partner_id.name + ',' + '\n' + "Your Orders are" + '\n' + sale_numbers + \ + ' ' + '\n' + "is ready for review.Do not hesitate to contact us if you have any transfer." + ctx.update({ + 'default_message': message, + 'default_partner_id': sale_order_ids[0].partner_id.id, + 'default_mobile': sale_order_ids[0].partner_id.mobile, + 'default_image_1920': sale_order_ids[0].partner_id.image_1920, + }) + return { + 'type': 'ir.actions.act_window', + 'view_mode': 'form', + 'res_model': 'whatsapp.message.wizard', + 'views': [(compose_form_id, 'form')], + 'view_id': compose_form_id, + 'target': 'new', + 'context': ctx, + } + else: + raise UserError(_( + 'It seems that you have selected orders of more than one customer.' + 'Try select orders of an unique customer')) diff --git a/odex30_base/whatsapp_mail_messaging/model/website.py b/odex30_base/whatsapp_mail_messaging/model/website.py new file mode 100644 index 0000000..158a140 --- /dev/null +++ b/odex30_base/whatsapp_mail_messaging/model/website.py @@ -0,0 +1,29 @@ +# -*- coding: utf-8 -*- +############################################################################# +# +# Cybrosys Technologies Pvt. Ltd. +# +# Copyright (C) 2020-TODAY Cybrosys Technologies() +# Author: Sayooj A O() +# +# You can modify it under the terms of the GNU LESSER +# GENERAL PUBLIC LICENSE (LGPL v3), Version 3. +# +# This program is distributed in the hope that it will be useful, +# but WITHOUT ANY WARRANTY; without even the implied warranty of +# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +# GNU LESSER GENERAL PUBLIC LICENSE (LGPL v3) for more details. +# +# You should have received a copy of the GNU LESSER GENERAL PUBLIC LICENSE +# (LGPL v3) along with this program. +# If not, see . +# +############################################################################# + +from odoo import fields, models + + +class Website(models.Model): + _inherit = 'website' + + mobile_number = fields.Char(string='Mobile Number') diff --git a/odex30_base/whatsapp_mail_messaging/security/ir.model.access.csv b/odex30_base/whatsapp_mail_messaging/security/ir.model.access.csv new file mode 100644 index 0000000..df424fd --- /dev/null +++ b/odex30_base/whatsapp_mail_messaging/security/ir.model.access.csv @@ -0,0 +1,3 @@ +id,name,model_id:id,group_id:id,perm_read,perm_write,perm_create,perm_unlink +access_whatsapp_message_wizard,access.whatsapp.message.wizard,model_whatsapp_message_wizard,base.group_user,1,1,1,1 + diff --git a/odex30_base/whatsapp_mail_messaging/static/description/assets/hero.gif b/odex30_base/whatsapp_mail_messaging/static/description/assets/hero.gif new file mode 100644 index 0000000..9b03e57 Binary files /dev/null and b/odex30_base/whatsapp_mail_messaging/static/description/assets/hero.gif differ diff --git a/odex30_base/whatsapp_mail_messaging/static/description/assets/icons/01.png b/odex30_base/whatsapp_mail_messaging/static/description/assets/icons/01.png new file mode 100644 index 0000000..96116b2 Binary files /dev/null and b/odex30_base/whatsapp_mail_messaging/static/description/assets/icons/01.png differ diff --git a/odex30_base/whatsapp_mail_messaging/static/description/assets/icons/02.png b/odex30_base/whatsapp_mail_messaging/static/description/assets/icons/02.png new file mode 100644 index 0000000..9dd8a71 Binary files /dev/null and b/odex30_base/whatsapp_mail_messaging/static/description/assets/icons/02.png differ diff --git a/odex30_base/whatsapp_mail_messaging/static/description/assets/icons/03.png b/odex30_base/whatsapp_mail_messaging/static/description/assets/icons/03.png new file mode 100644 index 0000000..efefc08 Binary files /dev/null and b/odex30_base/whatsapp_mail_messaging/static/description/assets/icons/03.png differ diff --git a/odex30_base/whatsapp_mail_messaging/static/description/assets/icons/04.png b/odex30_base/whatsapp_mail_messaging/static/description/assets/icons/04.png new file mode 100644 index 0000000..d4697d2 Binary files /dev/null and b/odex30_base/whatsapp_mail_messaging/static/description/assets/icons/04.png differ diff --git a/odex30_base/whatsapp_mail_messaging/static/description/assets/icons/chevron.png b/odex30_base/whatsapp_mail_messaging/static/description/assets/icons/chevron.png new file mode 100644 index 0000000..2089293 Binary files /dev/null and b/odex30_base/whatsapp_mail_messaging/static/description/assets/icons/chevron.png differ diff --git a/odex30_base/whatsapp_mail_messaging/static/description/assets/icons/cogs.png b/odex30_base/whatsapp_mail_messaging/static/description/assets/icons/cogs.png new file mode 100644 index 0000000..95d0bad Binary files /dev/null and b/odex30_base/whatsapp_mail_messaging/static/description/assets/icons/cogs.png differ diff --git a/odex30_base/whatsapp_mail_messaging/static/description/assets/icons/consultation.png b/odex30_base/whatsapp_mail_messaging/static/description/assets/icons/consultation.png new file mode 100644 index 0000000..8319d4b Binary files /dev/null and b/odex30_base/whatsapp_mail_messaging/static/description/assets/icons/consultation.png differ diff --git a/odex30_base/whatsapp_mail_messaging/static/description/assets/icons/ecom-black.png b/odex30_base/whatsapp_mail_messaging/static/description/assets/icons/ecom-black.png new file mode 100644 index 0000000..a9385ff Binary files /dev/null and b/odex30_base/whatsapp_mail_messaging/static/description/assets/icons/ecom-black.png differ diff --git a/odex30_base/whatsapp_mail_messaging/static/description/assets/icons/education-black.png b/odex30_base/whatsapp_mail_messaging/static/description/assets/icons/education-black.png new file mode 100644 index 0000000..3eb09b2 Binary files /dev/null and b/odex30_base/whatsapp_mail_messaging/static/description/assets/icons/education-black.png differ diff --git a/odex30_base/whatsapp_mail_messaging/static/description/assets/icons/feature-icons/document.png b/odex30_base/whatsapp_mail_messaging/static/description/assets/icons/feature-icons/document.png new file mode 100644 index 0000000..4054e84 Binary files /dev/null and b/odex30_base/whatsapp_mail_messaging/static/description/assets/icons/feature-icons/document.png differ diff --git a/odex30_base/whatsapp_mail_messaging/static/description/assets/icons/feature-icons/down.png b/odex30_base/whatsapp_mail_messaging/static/description/assets/icons/feature-icons/down.png new file mode 100644 index 0000000..65a94a2 Binary files /dev/null and b/odex30_base/whatsapp_mail_messaging/static/description/assets/icons/feature-icons/down.png differ diff --git a/odex30_base/whatsapp_mail_messaging/static/description/assets/icons/feature-icons/lifebuoy.png b/odex30_base/whatsapp_mail_messaging/static/description/assets/icons/feature-icons/lifebuoy.png new file mode 100644 index 0000000..658d56c Binary files /dev/null and b/odex30_base/whatsapp_mail_messaging/static/description/assets/icons/feature-icons/lifebuoy.png differ diff --git a/odex30_base/whatsapp_mail_messaging/static/description/assets/icons/hotel-black.png b/odex30_base/whatsapp_mail_messaging/static/description/assets/icons/hotel-black.png new file mode 100644 index 0000000..130f613 Binary files /dev/null and b/odex30_base/whatsapp_mail_messaging/static/description/assets/icons/hotel-black.png differ diff --git a/odex30_base/whatsapp_mail_messaging/static/description/assets/icons/license.png b/odex30_base/whatsapp_mail_messaging/static/description/assets/icons/license.png new file mode 100644 index 0000000..a586979 Binary files /dev/null and b/odex30_base/whatsapp_mail_messaging/static/description/assets/icons/license.png differ diff --git a/odex30_base/whatsapp_mail_messaging/static/description/assets/icons/lifebuoy.png b/odex30_base/whatsapp_mail_messaging/static/description/assets/icons/lifebuoy.png new file mode 100644 index 0000000..658d56c Binary files /dev/null and b/odex30_base/whatsapp_mail_messaging/static/description/assets/icons/lifebuoy.png differ diff --git a/odex30_base/whatsapp_mail_messaging/static/description/assets/icons/manufacturing-black.png b/odex30_base/whatsapp_mail_messaging/static/description/assets/icons/manufacturing-black.png new file mode 100644 index 0000000..697eb0e Binary files /dev/null and b/odex30_base/whatsapp_mail_messaging/static/description/assets/icons/manufacturing-black.png differ diff --git a/odex30_base/whatsapp_mail_messaging/static/description/assets/icons/pos-black.png b/odex30_base/whatsapp_mail_messaging/static/description/assets/icons/pos-black.png new file mode 100644 index 0000000..97c0f90 Binary files /dev/null and b/odex30_base/whatsapp_mail_messaging/static/description/assets/icons/pos-black.png differ diff --git a/odex30_base/whatsapp_mail_messaging/static/description/assets/icons/puzzle.png b/odex30_base/whatsapp_mail_messaging/static/description/assets/icons/puzzle.png new file mode 100644 index 0000000..65cf854 Binary files /dev/null and b/odex30_base/whatsapp_mail_messaging/static/description/assets/icons/puzzle.png differ diff --git a/odex30_base/whatsapp_mail_messaging/static/description/assets/icons/restaurant-black.png b/odex30_base/whatsapp_mail_messaging/static/description/assets/icons/restaurant-black.png new file mode 100644 index 0000000..4a35eb9 Binary files /dev/null and b/odex30_base/whatsapp_mail_messaging/static/description/assets/icons/restaurant-black.png differ diff --git a/odex30_base/whatsapp_mail_messaging/static/description/assets/icons/service-black.png b/odex30_base/whatsapp_mail_messaging/static/description/assets/icons/service-black.png new file mode 100644 index 0000000..301ab51 Binary files /dev/null and b/odex30_base/whatsapp_mail_messaging/static/description/assets/icons/service-black.png differ diff --git a/odex30_base/whatsapp_mail_messaging/static/description/assets/icons/trading-black.png b/odex30_base/whatsapp_mail_messaging/static/description/assets/icons/trading-black.png new file mode 100644 index 0000000..9398ba2 Binary files /dev/null and b/odex30_base/whatsapp_mail_messaging/static/description/assets/icons/trading-black.png differ diff --git a/odex30_base/whatsapp_mail_messaging/static/description/assets/icons/training.png b/odex30_base/whatsapp_mail_messaging/static/description/assets/icons/training.png new file mode 100644 index 0000000..884ca02 Binary files /dev/null and b/odex30_base/whatsapp_mail_messaging/static/description/assets/icons/training.png differ diff --git a/odex30_base/whatsapp_mail_messaging/static/description/assets/icons/update.png b/odex30_base/whatsapp_mail_messaging/static/description/assets/icons/update.png new file mode 100644 index 0000000..ecbc5a0 Binary files /dev/null and b/odex30_base/whatsapp_mail_messaging/static/description/assets/icons/update.png differ diff --git a/odex30_base/whatsapp_mail_messaging/static/description/assets/icons/user.png b/odex30_base/whatsapp_mail_messaging/static/description/assets/icons/user.png new file mode 100644 index 0000000..6ffb23d Binary files /dev/null and b/odex30_base/whatsapp_mail_messaging/static/description/assets/icons/user.png differ diff --git a/odex30_base/whatsapp_mail_messaging/static/description/assets/icons/wrench.png b/odex30_base/whatsapp_mail_messaging/static/description/assets/icons/wrench.png new file mode 100644 index 0000000..6c04dea Binary files /dev/null and b/odex30_base/whatsapp_mail_messaging/static/description/assets/icons/wrench.png differ diff --git a/odex30_base/whatsapp_mail_messaging/static/description/assets/modules/discount.png b/odex30_base/whatsapp_mail_messaging/static/description/assets/modules/discount.png new file mode 100644 index 0000000..2901d6e Binary files /dev/null and b/odex30_base/whatsapp_mail_messaging/static/description/assets/modules/discount.png differ diff --git a/odex30_base/whatsapp_mail_messaging/static/description/assets/modules/dynamic_financial_report.jpg b/odex30_base/whatsapp_mail_messaging/static/description/assets/modules/dynamic_financial_report.jpg new file mode 100644 index 0000000..c79986a Binary files /dev/null and b/odex30_base/whatsapp_mail_messaging/static/description/assets/modules/dynamic_financial_report.jpg differ diff --git a/odex30_base/whatsapp_mail_messaging/static/description/assets/modules/invoice.jpg b/odex30_base/whatsapp_mail_messaging/static/description/assets/modules/invoice.jpg new file mode 100644 index 0000000..26fb9d3 Binary files /dev/null and b/odex30_base/whatsapp_mail_messaging/static/description/assets/modules/invoice.jpg differ diff --git a/odex30_base/whatsapp_mail_messaging/static/description/assets/modules/payroll_accounting.png b/odex30_base/whatsapp_mail_messaging/static/description/assets/modules/payroll_accounting.png new file mode 100644 index 0000000..488b05c Binary files /dev/null and b/odex30_base/whatsapp_mail_messaging/static/description/assets/modules/payroll_accounting.png differ diff --git a/odex30_base/whatsapp_mail_messaging/static/description/assets/modules/pos_dashboard.png b/odex30_base/whatsapp_mail_messaging/static/description/assets/modules/pos_dashboard.png new file mode 100644 index 0000000..a915fe4 Binary files /dev/null and b/odex30_base/whatsapp_mail_messaging/static/description/assets/modules/pos_dashboard.png differ diff --git a/odex30_base/whatsapp_mail_messaging/static/description/assets/modules/shopify.png b/odex30_base/whatsapp_mail_messaging/static/description/assets/modules/shopify.png new file mode 100644 index 0000000..f2751c6 Binary files /dev/null and b/odex30_base/whatsapp_mail_messaging/static/description/assets/modules/shopify.png differ diff --git a/odex30_base/whatsapp_mail_messaging/static/description/assets/screenshots/whatsapp_mail_messaging_1.png b/odex30_base/whatsapp_mail_messaging/static/description/assets/screenshots/whatsapp_mail_messaging_1.png new file mode 100644 index 0000000..22932fd Binary files /dev/null and b/odex30_base/whatsapp_mail_messaging/static/description/assets/screenshots/whatsapp_mail_messaging_1.png differ diff --git a/odex30_base/whatsapp_mail_messaging/static/description/assets/screenshots/whatsapp_mail_messaging_10.png b/odex30_base/whatsapp_mail_messaging/static/description/assets/screenshots/whatsapp_mail_messaging_10.png new file mode 100644 index 0000000..9789c0e Binary files /dev/null and b/odex30_base/whatsapp_mail_messaging/static/description/assets/screenshots/whatsapp_mail_messaging_10.png differ diff --git a/odex30_base/whatsapp_mail_messaging/static/description/assets/screenshots/whatsapp_mail_messaging_11.png b/odex30_base/whatsapp_mail_messaging/static/description/assets/screenshots/whatsapp_mail_messaging_11.png new file mode 100644 index 0000000..a379496 Binary files /dev/null and b/odex30_base/whatsapp_mail_messaging/static/description/assets/screenshots/whatsapp_mail_messaging_11.png differ diff --git a/odex30_base/whatsapp_mail_messaging/static/description/assets/screenshots/whatsapp_mail_messaging_12.png b/odex30_base/whatsapp_mail_messaging/static/description/assets/screenshots/whatsapp_mail_messaging_12.png new file mode 100644 index 0000000..abe982a Binary files /dev/null and b/odex30_base/whatsapp_mail_messaging/static/description/assets/screenshots/whatsapp_mail_messaging_12.png differ diff --git a/odex30_base/whatsapp_mail_messaging/static/description/assets/screenshots/whatsapp_mail_messaging_13.png b/odex30_base/whatsapp_mail_messaging/static/description/assets/screenshots/whatsapp_mail_messaging_13.png new file mode 100644 index 0000000..9adcb97 Binary files /dev/null and b/odex30_base/whatsapp_mail_messaging/static/description/assets/screenshots/whatsapp_mail_messaging_13.png differ diff --git a/odex30_base/whatsapp_mail_messaging/static/description/assets/screenshots/whatsapp_mail_messaging_14.png b/odex30_base/whatsapp_mail_messaging/static/description/assets/screenshots/whatsapp_mail_messaging_14.png new file mode 100644 index 0000000..73f78d0 Binary files /dev/null and b/odex30_base/whatsapp_mail_messaging/static/description/assets/screenshots/whatsapp_mail_messaging_14.png differ diff --git a/odex30_base/whatsapp_mail_messaging/static/description/assets/screenshots/whatsapp_mail_messaging_15.png b/odex30_base/whatsapp_mail_messaging/static/description/assets/screenshots/whatsapp_mail_messaging_15.png new file mode 100644 index 0000000..5f84c9b Binary files /dev/null and b/odex30_base/whatsapp_mail_messaging/static/description/assets/screenshots/whatsapp_mail_messaging_15.png differ diff --git a/odex30_base/whatsapp_mail_messaging/static/description/assets/screenshots/whatsapp_mail_messaging_16.png b/odex30_base/whatsapp_mail_messaging/static/description/assets/screenshots/whatsapp_mail_messaging_16.png new file mode 100644 index 0000000..4f961c5 Binary files /dev/null and b/odex30_base/whatsapp_mail_messaging/static/description/assets/screenshots/whatsapp_mail_messaging_16.png differ diff --git a/odex30_base/whatsapp_mail_messaging/static/description/assets/screenshots/whatsapp_mail_messaging_17.png b/odex30_base/whatsapp_mail_messaging/static/description/assets/screenshots/whatsapp_mail_messaging_17.png new file mode 100644 index 0000000..507317a Binary files /dev/null and b/odex30_base/whatsapp_mail_messaging/static/description/assets/screenshots/whatsapp_mail_messaging_17.png differ diff --git a/odex30_base/whatsapp_mail_messaging/static/description/assets/screenshots/whatsapp_mail_messaging_18.png b/odex30_base/whatsapp_mail_messaging/static/description/assets/screenshots/whatsapp_mail_messaging_18.png new file mode 100644 index 0000000..4b1d8a9 Binary files /dev/null and b/odex30_base/whatsapp_mail_messaging/static/description/assets/screenshots/whatsapp_mail_messaging_18.png differ diff --git a/odex30_base/whatsapp_mail_messaging/static/description/assets/screenshots/whatsapp_mail_messaging_19.png b/odex30_base/whatsapp_mail_messaging/static/description/assets/screenshots/whatsapp_mail_messaging_19.png new file mode 100644 index 0000000..54d45f9 Binary files /dev/null and b/odex30_base/whatsapp_mail_messaging/static/description/assets/screenshots/whatsapp_mail_messaging_19.png differ diff --git a/odex30_base/whatsapp_mail_messaging/static/description/assets/screenshots/whatsapp_mail_messaging_2.png b/odex30_base/whatsapp_mail_messaging/static/description/assets/screenshots/whatsapp_mail_messaging_2.png new file mode 100644 index 0000000..2aa1215 Binary files /dev/null and b/odex30_base/whatsapp_mail_messaging/static/description/assets/screenshots/whatsapp_mail_messaging_2.png differ diff --git a/odex30_base/whatsapp_mail_messaging/static/description/assets/screenshots/whatsapp_mail_messaging_20.png b/odex30_base/whatsapp_mail_messaging/static/description/assets/screenshots/whatsapp_mail_messaging_20.png new file mode 100644 index 0000000..9b9c6c3 Binary files /dev/null and b/odex30_base/whatsapp_mail_messaging/static/description/assets/screenshots/whatsapp_mail_messaging_20.png differ diff --git a/odex30_base/whatsapp_mail_messaging/static/description/assets/screenshots/whatsapp_mail_messaging_21.png b/odex30_base/whatsapp_mail_messaging/static/description/assets/screenshots/whatsapp_mail_messaging_21.png new file mode 100644 index 0000000..9144353 Binary files /dev/null and b/odex30_base/whatsapp_mail_messaging/static/description/assets/screenshots/whatsapp_mail_messaging_21.png differ diff --git a/odex30_base/whatsapp_mail_messaging/static/description/assets/screenshots/whatsapp_mail_messaging_22.png b/odex30_base/whatsapp_mail_messaging/static/description/assets/screenshots/whatsapp_mail_messaging_22.png new file mode 100644 index 0000000..8708076 Binary files /dev/null and b/odex30_base/whatsapp_mail_messaging/static/description/assets/screenshots/whatsapp_mail_messaging_22.png differ diff --git a/odex30_base/whatsapp_mail_messaging/static/description/assets/screenshots/whatsapp_mail_messaging_3.png b/odex30_base/whatsapp_mail_messaging/static/description/assets/screenshots/whatsapp_mail_messaging_3.png new file mode 100644 index 0000000..7af8d56 Binary files /dev/null and b/odex30_base/whatsapp_mail_messaging/static/description/assets/screenshots/whatsapp_mail_messaging_3.png differ diff --git a/odex30_base/whatsapp_mail_messaging/static/description/assets/screenshots/whatsapp_mail_messaging_4.png b/odex30_base/whatsapp_mail_messaging/static/description/assets/screenshots/whatsapp_mail_messaging_4.png new file mode 100644 index 0000000..54f0007 Binary files /dev/null and b/odex30_base/whatsapp_mail_messaging/static/description/assets/screenshots/whatsapp_mail_messaging_4.png differ diff --git a/odex30_base/whatsapp_mail_messaging/static/description/assets/screenshots/whatsapp_mail_messaging_5.png b/odex30_base/whatsapp_mail_messaging/static/description/assets/screenshots/whatsapp_mail_messaging_5.png new file mode 100644 index 0000000..1686435 Binary files /dev/null and b/odex30_base/whatsapp_mail_messaging/static/description/assets/screenshots/whatsapp_mail_messaging_5.png differ diff --git a/odex30_base/whatsapp_mail_messaging/static/description/assets/screenshots/whatsapp_mail_messaging_6.png b/odex30_base/whatsapp_mail_messaging/static/description/assets/screenshots/whatsapp_mail_messaging_6.png new file mode 100644 index 0000000..11b2f2f Binary files /dev/null and b/odex30_base/whatsapp_mail_messaging/static/description/assets/screenshots/whatsapp_mail_messaging_6.png differ diff --git a/odex30_base/whatsapp_mail_messaging/static/description/assets/screenshots/whatsapp_mail_messaging_7.png b/odex30_base/whatsapp_mail_messaging/static/description/assets/screenshots/whatsapp_mail_messaging_7.png new file mode 100644 index 0000000..8a93b4d Binary files /dev/null and b/odex30_base/whatsapp_mail_messaging/static/description/assets/screenshots/whatsapp_mail_messaging_7.png differ diff --git a/odex30_base/whatsapp_mail_messaging/static/description/assets/screenshots/whatsapp_mail_messaging_8.png b/odex30_base/whatsapp_mail_messaging/static/description/assets/screenshots/whatsapp_mail_messaging_8.png new file mode 100644 index 0000000..630aa4c Binary files /dev/null and b/odex30_base/whatsapp_mail_messaging/static/description/assets/screenshots/whatsapp_mail_messaging_8.png differ diff --git a/odex30_base/whatsapp_mail_messaging/static/description/assets/screenshots/whatsapp_mail_messaging_9.png b/odex30_base/whatsapp_mail_messaging/static/description/assets/screenshots/whatsapp_mail_messaging_9.png new file mode 100644 index 0000000..6a62dd8 Binary files /dev/null and b/odex30_base/whatsapp_mail_messaging/static/description/assets/screenshots/whatsapp_mail_messaging_9.png differ diff --git a/odex30_base/whatsapp_mail_messaging/static/description/banner.gif b/odex30_base/whatsapp_mail_messaging/static/description/banner.gif new file mode 100644 index 0000000..4c0c529 Binary files /dev/null and b/odex30_base/whatsapp_mail_messaging/static/description/banner.gif differ diff --git a/odex30_base/whatsapp_mail_messaging/static/description/icon.png b/odex30_base/whatsapp_mail_messaging/static/description/icon.png new file mode 100644 index 0000000..c43c5aa Binary files /dev/null and b/odex30_base/whatsapp_mail_messaging/static/description/icon.png differ diff --git a/odex30_base/whatsapp_mail_messaging/static/description/index.html b/odex30_base/whatsapp_mail_messaging/static/description/index.html new file mode 100644 index 0000000..d0b33ff --- /dev/null +++ b/odex30_base/whatsapp_mail_messaging/static/description/index.html @@ -0,0 +1,711 @@ + +
+
+
+
+

+ Odoo Whatsapp Connector +

+

+ Added options for sending Whatsapp messages and Mails in systray bar,sale order, invoices, website portal view and share the access url of + documents using share option available in each records through Whatsapp web.

+ +
+
+
+ +
+
+
+
+ +

+ Whatsapp/Mail Icon in systray bar

+

+ Using these icons we can send quick messages to any contacts through mail and whatsapp web.

+
+
+
+
+ +

+ Whatsapp floating icon in website

+

+ Added a whatsapp icon in website in which the customers can communicate with website through whatsapp.

+
+
+
+ +
+
+
+ +

+ Whatsapp button in Sales and Invoice

+

+ Using this button we can send the order/invoice details to the customer of the + corresponding documents..

+
+
+
+
+ +

+ Added Whatsapp as a share option

+

+ With this we can share the access link of document to customers through whatsapp web.

+
+
+
+ + + +
+ + + + + +
+
+
+

+ Screenshots

+
+ +
+
+
+
1
+
+
Added Whatsapp and Mail icon in the systray bar
+
+ +
+
+
+
+
2
+
+
By clicking on the mail icon we will have a mail composing screen like below + which we can specify the content,customer,subject and attachments.
+
+ +
+
+
+
+
3
+
+
After click on send from the composing wizard the corresponding recipients will receive the mail.
+
+ +
+
+
+
+
4
+
+
We have to specify the mobile field in contact form along with the country code for filling + the mobile number automatically in the whatsapp message composing wizard.
+
+ +
+
+
+
+
5
+
+
After click on the whatsapp icon in systray, we will have a message composing screen like this.
+
+ +
+
+
+
+
6
+
+
We can use the below emojis in our message
+
+ +
+
+
+
+
6
+
+
After click on send , we will redirected to the whatsapp web along with our message
+
+ +
+
+
+
+
7
+
+
The message we entered in odoo will carried to the corresponding number in our contact.
+
+ +
+
+
+
+
8
+
+
In Invoice form view we will have a button "Send by Whatsapp"
+
+ +
+
+
+
+
9
+
+
By clicking on "Send by Whatsapp" button ,a popup will arrive with auto filled details such as recipient,number and required content, + we can edit those details if required.
+
+ +
+
+
+
+
10
+
+
The message will redirect to the whatsapp web with the details in the popup.
+
+ +
+
+
+
+
11
+
+
In Sale Order form view we will have a button "Send by Whatsapp"
+
+ +
+
+
+
+
12
+
+
By clicking on "Send by Whatsapp" button ,a popup will arrive with auto filled details such as recipient,number and required content, + we can edit those details if required.
+
+ +
+
+
+
+
13
+
+
The message will redirect to the whatsapp web with the details in the popup
+
+ +
+
+
+
+
14
+
+
In the website form view we can define the number along with country code required for communicating with the + website responsible.
+
+ +
+
+
+
+
15
+
+
There will be a whatsapp icon present in the website.
+
+ +
+
+
+
+
16
+
+
By clicking on the whatsapp floating icon it will redirect to whatsapp web with the recipient as the number specified in corresponding website
+
+ +
+
+
+
+
17
+
+
We will have a share menu in documents like sales order, invoices, purchase etc..
+
+ +
+
+
+
+
18
+
+
By clicking on that there will be an additional option 'Whatsapp" in the popup screen where we can add the customer + and additional contents if we need.
+
+ +
+
+
+
+
19
+
+
After click on send first it will redirected to then whatsapp web and then to corresponding contact in our whatsapp + along with the custom message and link for accessing the document.
+
+ +
+
+
+
+
19
+
+
In the sales and invoice list view, we will have an option after selecting the records in the list view.
+
+ +
+
+
+
+
19
+
+
We can send multiple document references to a single customer using this option, + we can only send documents of a single customer at a time.
+
+ +
+ +
+
+ + + + +
+
+
+

+ Suggested Products

+

+ Check out our other products

+
+
+ +
+
+
+ + + +
+
+
+

+ Our Services

+

+ We provide following services

+
+ +
+
+ +
+
Odoo + Customization
+
+ +
+
+ +
+
Odoo + Implementation
+
+ +
+
+ +
+
Odoo + Support
+
+ + +
+
+ +
+
Hire + Odoo + Developer
+
+ +
+
+ +
+
Odoo + Integration
+
+ +
+
+ +
+
Odoo + Migration
+
+ + +
+
+ +
+
Odoo + Consultancy
+
+ +
+
+ +
+
Odoo + Implementation
+
+ +
+
+ +
+
Odoo + Licensing Consultancy
+
+
+
+ + + +
+
+
+

+ Our Industries

+

+ Our Industry Specifics And Process Segments To Solve Your Complex Business Barriers.

+
+ +
+
+ +
+ Trading +
+

Easily procure + and + sell your products

+
+
+ +
+
+ +
+ POS +
+

Easy + configuration + and convivial experience

+
+
+ +
+
+ +
+ Education +
+

A platform for + educational management

+
+
+ +
+
+ +
+ Manufacturing +
+

Plan, track and + schedule your operations

+
+
+ +
+
+ +
+ E-commerce & Website +
+

Mobile + friendly, + awe-inspiring product pages

+
+
+ +
+
+ +
+ Service Management +
+

Keep track of + services and invoice

+
+
+ +
+
+ +
+ Restaurant +
+

Run your bar or + restaurant methodically

+
+
+ +
+
+ +
+ Hotel Management +
+

An + all-inclusive + hotel management application

+
+
+ +
+
+ + + + + +
+
+
+

+ Need Help?

+

+ Do you have any queries regarding our products & services? Let us know.

+
+
+ + +
+ +
+ + +
+ +
+ +
+ +
+
+ +
+ +
+ +
+
+ +
+
+
+ \ No newline at end of file diff --git a/odex30_base/whatsapp_mail_messaging/static/src/css/systray_icons.css b/odex30_base/whatsapp_mail_messaging/static/src/css/systray_icons.css new file mode 100644 index 0000000..a3061ef --- /dev/null +++ b/odex30_base/whatsapp_mail_messaging/static/src/css/systray_icons.css @@ -0,0 +1,4 @@ +.o_systray_item .fa-whatsapp, +.o_systray_item .fa-envelope { + margin: 0 5px; +} diff --git a/odex30_base/whatsapp_mail_messaging/static/src/css/whatsapp.css b/odex30_base/whatsapp_mail_messaging/static/src/css/whatsapp.css new file mode 100644 index 0000000..91dd355 --- /dev/null +++ b/odex30_base/whatsapp_mail_messaging/static/src/css/whatsapp.css @@ -0,0 +1,22 @@ +.cy_whatsapp_web{ + position:fixed; + width:60px; + height:60px; + bottom:40px; + right:40px; + background-color:#25d366; + color:#FFF; + border-radius:50px; + text-align:center; + font-size:30px; + z-index:100; +} + +.cy-icon{ + margin-top:16px; + color: white; +} + +.fa-whatsapp { + color:#FFF; +} \ No newline at end of file diff --git a/odex30_base/whatsapp_mail_messaging/static/src/js/mail_button.js b/odex30_base/whatsapp_mail_messaging/static/src/js/mail_button.js new file mode 100644 index 0000000..3f407a5 --- /dev/null +++ b/odex30_base/whatsapp_mail_messaging/static/src/js/mail_button.js @@ -0,0 +1,22 @@ +import { registry } from "@web/core/registry"; +import { useService } from "@web/core/utils/hooks"; +import { Component } from "@odoo/owl"; +class SystrayMail extends Component { + static template = "whatsapp_mail_messaging.mail_icon"; + setup() { + this.action = useService("action"); + } + _onClick() { + this.action.doAction({ + name: "Compose Mail", + res_model: "mail.compose.message", + views: [[false, "form"]], + type: "ir.actions.act_window", + target: "new", + }); + } +} +export const systrayItem = { + Component: SystrayMail, +}; +registry.category("systray").add("whatsapp_mail_messaging.mail_button", systrayItem, { sequence: 98 }); diff --git a/odex30_base/whatsapp_mail_messaging/static/src/js/whatsapp_button.js b/odex30_base/whatsapp_mail_messaging/static/src/js/whatsapp_button.js new file mode 100644 index 0000000..1582fe3 --- /dev/null +++ b/odex30_base/whatsapp_mail_messaging/static/src/js/whatsapp_button.js @@ -0,0 +1,24 @@ +import { registry } from "@web/core/registry"; +import { useService } from "@web/core/utils/hooks"; +import { Component } from "@odoo/owl"; +class SystrayWhatsapp extends Component { + static template = "whatsapp_mail_messaging.whatsapp_icon"; // اسم القالب + setup() { + this.action = useService("action"); + } + _onClick() { + this.action.doAction({ + name: "Compose Whatsapp Message", + res_model: "whatsapp.message.wizard", + views: [[false, "form"]], + type: "ir.actions.act_window", + target: "new", + }); + } +} + +export const systrayItem = { + Component: SystrayWhatsapp, +}; + +registry.category("systray").add("whatsapp_mail_messaging.whatsapp_button", systrayItem, { sequence: 99 }); diff --git a/odex30_base/whatsapp_mail_messaging/static/src/xml/mail_button.xml b/odex30_base/whatsapp_mail_messaging/static/src/xml/mail_button.xml new file mode 100644 index 0000000..36510e1 --- /dev/null +++ b/odex30_base/whatsapp_mail_messaging/static/src/xml/mail_button.xml @@ -0,0 +1,8 @@ + + + +
+ +
+
+
diff --git a/odex30_base/whatsapp_mail_messaging/static/src/xml/whatsapp_button.xml b/odex30_base/whatsapp_mail_messaging/static/src/xml/whatsapp_button.xml new file mode 100644 index 0000000..d48805b --- /dev/null +++ b/odex30_base/whatsapp_mail_messaging/static/src/xml/whatsapp_button.xml @@ -0,0 +1,8 @@ + + + +
+ +
+
+
diff --git a/odex30_base/whatsapp_mail_messaging/views/account_move_inherited.xml b/odex30_base/whatsapp_mail_messaging/views/account_move_inherited.xml new file mode 100644 index 0000000..ba0299a --- /dev/null +++ b/odex30_base/whatsapp_mail_messaging/views/account_move_inherited.xml @@ -0,0 +1,26 @@ + + + + account.move.form.view.inherited + account.move + + + +
+ + + + + + Send by Whatsapp + + + list + code + + if records: + action = records.action_whatsapp_multi() + + + diff --git a/odex30_base/whatsapp_mail_messaging/views/crm_lead.xml b/odex30_base/whatsapp_mail_messaging/views/crm_lead.xml new file mode 100644 index 0000000..40314d6 --- /dev/null +++ b/odex30_base/whatsapp_mail_messaging/views/crm_lead.xml @@ -0,0 +1,26 @@ + + + + whatsapp.view.form.inherit.crm + crm.lead + + + +