commit
a3919bb30b
|
|
@ -21,13 +21,11 @@ from odoo.exceptions import UserError
|
|||
import logging
|
||||
_logger = logging.getLogger(__name__)
|
||||
class ResPartnerInherit(models.Model):
|
||||
|
||||
_inherit = 'res.partner'
|
||||
_description = "ResPartner Inherit Model"
|
||||
|
||||
is_affiliate = fields.Boolean(default=False)
|
||||
res_affiliate_key = fields.Char(string="Affiliate key")
|
||||
affiliate_program_id = fields.Many2one("affiliate.program", string="Program")
|
||||
affiliate_program_id = fields.Many2one("affiliate.program", string="Program", groups="affiliate_management.affiliate_security_user_group")
|
||||
pending_amt = fields.Float(compute='_compute_pending_amt', string='Pending Amount')
|
||||
approved_amt = fields.Float(compute='_compute_approved_amt', string='Approved Amount')
|
||||
|
||||
|
|
@ -64,7 +62,8 @@ class ResPartnerInherit(models.Model):
|
|||
aff_prgm = None
|
||||
new_res_partner = None
|
||||
for vals in vals_list:
|
||||
aff_prgm = self.env['affiliate.program'].search([])[-1].id if len(self.env['affiliate.program'].search([])) > 0 else ''
|
||||
programs = self.env['affiliate.program'].sudo().search([])
|
||||
aff_prgm = programs[-1].id if len(programs) > 0 else ''
|
||||
if vals.get('is_affiliate'):
|
||||
vals.update({
|
||||
'affiliate_program_id': aff_prgm
|
||||
|
|
|
|||
|
|
@ -7,7 +7,7 @@
|
|||
'website': 'https://ensan.com',
|
||||
'license': 'LGPL-3',
|
||||
'category': 'Sales',
|
||||
'depends': ['base', 'website_sale', 'sms'],
|
||||
'depends': ['base', 'website_sale', 'sms', 'phone_validation'],
|
||||
'data': [
|
||||
'security/ir.model.access.csv',
|
||||
'data/sms_data.xml',
|
||||
|
|
|
|||
|
|
@ -4,3 +4,5 @@ from . import sale_report
|
|||
from . import res_config_settings
|
||||
from . import sms_composer
|
||||
from . import website
|
||||
from . import res_partner
|
||||
from . import phone_validation_mixin
|
||||
|
|
|
|||
|
|
@ -0,0 +1,17 @@
|
|||
from odoo import models
|
||||
from odoo.addons.phone_validation.tools import phone_validation
|
||||
|
||||
class PhoneValidationMixin(models.AbstractModel):
|
||||
_inherit = 'phone.validation.mixin'
|
||||
|
||||
def phone_format(self, number, country=None, company=None):
|
||||
country = country or self._phone_get_country()
|
||||
if not country:
|
||||
return number
|
||||
return phone_validation.phone_format(
|
||||
number,
|
||||
country.code if country else None,
|
||||
country.phone_code if country else None,
|
||||
force_format='E164',
|
||||
raise_exception=False
|
||||
).replace('+', '')
|
||||
|
|
@ -0,0 +1,18 @@
|
|||
from odoo import models, fields, api
|
||||
from odoo.addons.phone_validation.tools import phone_validation
|
||||
|
||||
|
||||
class ResPartner(models.Model):
|
||||
_inherit = 'res.partner'
|
||||
|
||||
@api.model_create_multi
|
||||
def create(self, vals_list):
|
||||
res = super().create(vals_list)
|
||||
order_ids = self.env['sale.order'].search([])
|
||||
portal_user_id = self.env.ref('base.public_partner').id
|
||||
for rec in res:
|
||||
phone = rec.phone or rec.mobile
|
||||
partner_orders = order_ids.filtered(lambda o: o.order_mobile_number == phone and o.partner_id.id == portal_user_id)
|
||||
partner_orders.write({'partner_id': rec.id})
|
||||
return res
|
||||
|
||||
|
|
@ -1,34 +1,11 @@
|
|||
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):
|
||||
if phone[0] == '+' and phone[1] != '0':
|
||||
if phone[1:4] == '966':
|
||||
if len(phone[4:]) >= 8:
|
||||
return phone
|
||||
else:
|
||||
phone = phone[0] + '966' + phone[1:]
|
||||
elif phone[0] == '+' and phone[1] == '0':
|
||||
phone = phone[0] + '966' + phone[2:]
|
||||
elif phone[0] == '0' and phone[1] == '5':
|
||||
phone = '+966' + phone[1:]
|
||||
elif phone[0:2] == '00': # 00966555555555
|
||||
if phone[2:5] == '966':
|
||||
phone = '+' + '966' + phone[5:]
|
||||
elif phone[0] == '0': # 0966555555555
|
||||
if phone[1:4] == '966':
|
||||
phone = '+' + '966' + phone[4:]
|
||||
else:
|
||||
if phone[0:3] == '966':
|
||||
phone = '+' + phone
|
||||
else:
|
||||
phone = '+' + '966' + phone
|
||||
return phone
|
||||
|
||||
from odoo.addons.phone_validation.tools import phone_validation
|
||||
|
||||
class SaleOrder(models.Model):
|
||||
_inherit = 'sale.order'
|
||||
_name = 'sale.order'
|
||||
_inherit = ['sale.order', 'phone.validation.mixin']
|
||||
|
||||
done_with_quick_donation = fields.Boolean(default=False)
|
||||
order_mobile_number = fields.Char("Donor Number")
|
||||
|
|
@ -39,7 +16,18 @@ class SaleOrder(models.Model):
|
|||
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')
|
||||
is_first_time = fields.Boolean('First Time Donation')
|
||||
|
||||
def write(self, vals):
|
||||
if 'order_mobile_number' in vals:
|
||||
vals['order_mobile_number'] = self.phone_format(vals['order_mobile_number'])
|
||||
numbers = set(self.search([('state', '=', 'sale'), ('id', 'not in', self.ids)]).mapped('order_mobile_number'))
|
||||
if vals['order_mobile_number'] in numbers:
|
||||
vals['is_first_time'] = False
|
||||
else:
|
||||
vals['is_first_time'] = True
|
||||
return super().write(vals)
|
||||
|
||||
def get_sale_order_portal_url(self):
|
||||
for sale in self:
|
||||
sale.sale_order_portal_url = self.env['ir.config_parameter'].sudo().get_param('web.base.url') + sale.get_portal_url()
|
||||
|
|
@ -69,7 +57,7 @@ class SaleOrder(models.Model):
|
|||
'product_id': int(i.get('product_id')),
|
||||
'donated_amount': float(i.get('donated_amount')),
|
||||
'donator_name': i.get('donator_name'),
|
||||
'donator_mobile_number': check_mobile_number_validation(i.get('donator_mobile_number')).replace('+', '')
|
||||
'donator_mobile_number': self.phone_format(i.get('donator_mobile_number'))
|
||||
}))
|
||||
gift_sender_name = i.get("gift_sender_name")
|
||||
gift_sender_mobile = i.get("gift_sender_mobile")
|
||||
|
|
|
|||
|
|
@ -10,6 +10,7 @@ class SaleReport(models.Model):
|
|||
first_receiver_name = fields.Char("Receiver Name", readonly=True)
|
||||
order_mobile_number = fields.Char("Donor Number", readonly=True)
|
||||
order_name = fields.Char("Donor Name", readonly=True)
|
||||
is_first_time = fields.Boolean("First Time Donation", readonly=True)
|
||||
|
||||
def _select_additional_fields(self, fields):
|
||||
fields['is_gift'] = ", s.is_gift"
|
||||
|
|
@ -17,10 +18,11 @@ class SaleReport(models.Model):
|
|||
fields['first_receiver_name'] = ", s.first_receiver_name"
|
||||
fields['order_mobile_number'] = ", s.order_mobile_number"
|
||||
fields['order_name'] = ", s.order_name"
|
||||
fields['is_first_time'] = ", s.is_first_time"
|
||||
return super()._select_additional_fields(fields)
|
||||
|
||||
def _group_by_sale(self, groupby=''):
|
||||
res = super()._group_by_sale(groupby)
|
||||
res += """, s.is_gift, s.first_receiver_number,s.first_receiver_name,s.order_mobile_number,s.order_name"""
|
||||
res += """, s.is_gift, s.first_receiver_number,s.first_receiver_name,s.order_mobile_number,s.order_name,s.is_first_time"""
|
||||
return res
|
||||
|
||||
|
|
@ -9,6 +9,7 @@
|
|||
<xpath expr="//field[@name='partner_id']" position="before">
|
||||
<field name="order_name" />
|
||||
<field name="order_mobile_number" />
|
||||
<field name="is_first_time" readonly="1" />
|
||||
<field name="done_with_quick_donation" readonly="1" />
|
||||
<field name="is_gift" string="Order Contains Gift?" />
|
||||
</xpath>
|
||||
|
|
|
|||
Loading…
Reference in New Issue