commit
94000172a6
|
|
@ -10,7 +10,7 @@ var wpwlOptions = {
|
|||
merchantIdentifier: window.merchant_id,
|
||||
supportedCountries: ["SA"],
|
||||
buttonSource: "css",
|
||||
buttonStyle: "white",
|
||||
buttonStyle: "black",
|
||||
buttonType: "pay",
|
||||
countryCode: "SA",
|
||||
submitOnPaymentAuthorized: ["customer"],
|
||||
|
|
|
|||
|
|
@ -7,7 +7,7 @@
|
|||
'website': 'https://ensan.com',
|
||||
'license': 'LGPL-3',
|
||||
'category': 'Sales',
|
||||
'depends': ['base', 'website_sale'],
|
||||
'depends': ['base', 'website_sale', 'sms'],
|
||||
'data': [
|
||||
'security/ir.model.access.csv',
|
||||
'data/sms_data.xml',
|
||||
|
|
@ -15,5 +15,6 @@
|
|||
'views/sale_order_views.xml',
|
||||
'views/product_views.xml',
|
||||
'views/sale_report.xml',
|
||||
'views/res_config_settings_views.xml',
|
||||
],
|
||||
}
|
||||
|
|
|
|||
|
|
@ -1,3 +1,6 @@
|
|||
from . import sale_order
|
||||
from . import product
|
||||
from . import sale_report
|
||||
from . import res_config_settings
|
||||
from . import sms_composer
|
||||
from . import website
|
||||
|
|
|
|||
|
|
@ -0,0 +1,6 @@
|
|||
from odoo import models, fields
|
||||
|
||||
class ResConfigSettings(models.TransientModel):
|
||||
_inherit = 'res.config.settings'
|
||||
|
||||
cart_recovery_sms_template = fields.Many2one('sms.template', related='website_id.cart_recovery_sms_template_id', readonly=False)
|
||||
|
|
@ -1,4 +1,5 @@
|
|||
from odoo import models, fields, api
|
||||
from odoo import models, fields, api, _
|
||||
from odoo.exceptions import UserError, ValidationError
|
||||
from odoo.tools.json import scriptsafe as json_scriptsafe
|
||||
|
||||
def check_mobile_number_validation(phone):
|
||||
|
|
@ -26,7 +27,7 @@ def check_mobile_number_validation(phone):
|
|||
return phone
|
||||
|
||||
|
||||
class SaleOrder_Inherit(models.Model):
|
||||
class SaleOrder(models.Model):
|
||||
_inherit = 'sale.order'
|
||||
|
||||
done_with_quick_donation = fields.Boolean(default=False)
|
||||
|
|
@ -37,6 +38,7 @@ class SaleOrder_Inherit(models.Model):
|
|||
is_gift = fields.Boolean("Is Gift Product?", store=True, compute="compute_gift_order")
|
||||
first_receiver_number = fields.Char("Receiver Number", compute="_compute_receiver_details", store=True)
|
||||
first_receiver_name = fields.Char("Receiver Name", compute="_compute_receiver_details", store=True)
|
||||
cart_recovery_sms_sent = fields.Boolean('Cart recovery sms already sent')
|
||||
|
||||
def get_sale_order_portal_url(self):
|
||||
for sale in self:
|
||||
|
|
@ -123,6 +125,31 @@ class SaleOrder_Inherit(models.Model):
|
|||
rec.is_gift = True
|
||||
else:
|
||||
rec.is_gift = False
|
||||
|
||||
def action_recovery_sms_send(self):
|
||||
self.ensure_one()
|
||||
if not self.order_mobile_number:
|
||||
raise UserError(_("There is no phone number for this cart."))
|
||||
|
||||
context = dict(self.env.context)
|
||||
context.update(default_res_model='sale.order', default_res_id=self.id, default_composition_mode='comment', default_number_field_name='order_mobile_number')
|
||||
|
||||
template = self.website_id.cart_recovery_sms_template_id
|
||||
|
||||
if not template:
|
||||
raise ValidationError(_("There is no sms template defined in settings for abandoned carts."))
|
||||
|
||||
context['default_template_id'] = template.id
|
||||
context['website_sale_send_recovery_sms'] = True
|
||||
|
||||
return {
|
||||
"type": "ir.actions.act_window",
|
||||
"res_model": "sms.composer",
|
||||
"view_mode": 'form',
|
||||
"context": context,
|
||||
"name": "Send SMS Text Message",
|
||||
"target": "new",
|
||||
}
|
||||
|
||||
|
||||
class ExtraDonators(models.Model):
|
||||
|
|
|
|||
|
|
@ -0,0 +1,17 @@
|
|||
# -*- coding: utf-8 -*-
|
||||
from odoo import models
|
||||
|
||||
|
||||
class SMSComposer(models.TransientModel):
|
||||
_inherit = 'sms.composer'
|
||||
|
||||
def _action_send_sms(self):
|
||||
context = self._context
|
||||
if context.get('website_sale_send_recovery_sms') and self.model == 'sale.order' and context.get('active_ids'):
|
||||
self.env['sale.order'].search([
|
||||
('id', 'in', context.get('active_ids')),
|
||||
('cart_recovery_sms_sent', '=', False),
|
||||
('is_abandoned_cart', '=', True)
|
||||
]).write({'cart_recovery_sms_sent': True})
|
||||
return super(SMSComposer, self)._action_send_sms()
|
||||
|
||||
|
|
@ -0,0 +1,7 @@
|
|||
from odoo import models, fields
|
||||
|
||||
class Website(models.Model):
|
||||
_inherit = 'website'
|
||||
|
||||
cart_recovery_sms_template_id = fields.Many2one('sms.template', string='Cart Recovery SMS', domain="[('model', '=', 'sale.order')]")
|
||||
|
||||
|
|
@ -0,0 +1,22 @@
|
|||
<?xml version="1.0" encoding="utf-8"?>
|
||||
<odoo>
|
||||
|
||||
<record id="res_config_settings_view_form" model="ir.ui.view">
|
||||
<field name="name">res.config.settings.view.form</field>
|
||||
<field name="model">res.config.settings</field>
|
||||
<field name="inherit_id" ref="website.res_config_settings_view_form" />
|
||||
<field name="arch" type="xml">
|
||||
<xpath expr="//div[@id='abandoned_carts_setting']//div[hasclass('content-group')][1]" position="after">
|
||||
<div class="content-group"
|
||||
title="This email template is required when you send a recovery sms.">
|
||||
<div class="row mt16">
|
||||
<label for="cart_recovery_sms_template" string="SMS Template"
|
||||
class="col-lg-4 o_light_label" />
|
||||
<field name="cart_recovery_sms_template" class="oe_inline" />
|
||||
</div>
|
||||
</div>
|
||||
</xpath>
|
||||
</field>
|
||||
</record>
|
||||
|
||||
</odoo>
|
||||
|
|
@ -35,6 +35,22 @@
|
|||
</field>
|
||||
</record>
|
||||
|
||||
<record id="sale_order_form_add_sms_remainder" model="ir.ui.view">
|
||||
<field name="name">sale.order.form.add.sms.remainder</field>
|
||||
<field name="model">sale.order</field>
|
||||
<field name="inherit_id" ref="website_sale.sale_order_view_form_cart_recovery"/>
|
||||
<field name="arch" type="xml">
|
||||
<xpath expr="//button[@name='action_recovery_email_send']" position="after">
|
||||
<field name="cart_recovery_sms_sent" invisible="1" />
|
||||
<button name="action_recovery_sms_send"
|
||||
string="Send a Recovery SMS"
|
||||
type="object"
|
||||
class="btn-primary"
|
||||
attrs="{'invisible': ['|', ('is_abandoned_cart', '=', False), ('cart_recovery_sms_sent', '=', True)]}"/>
|
||||
</xpath>
|
||||
</field>
|
||||
</record>
|
||||
|
||||
<record id="view_sales_order_filter" model="ir.ui.view">
|
||||
<field name="name">sale.order.list.select</field>
|
||||
<field name="model">sale.order</field>
|
||||
|
|
|
|||
Loading…
Reference in New Issue