67 lines
2.6 KiB
Python
67 lines
2.6 KiB
Python
from odoo import models, fields, api
|
|
from odoo.tools.json import scriptsafe as json_scriptsafe
|
|
|
|
|
|
class SaleOrder_Inherit(models.Model):
|
|
_inherit = 'sale.order'
|
|
|
|
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)
|
|
|
|
@api.depends('donators_ids')
|
|
def _compute_receiver_details(self):
|
|
for rec in self:
|
|
first_receiver_number = ''
|
|
first_receiver_name = ''
|
|
if rec.donators_ids:
|
|
gift_donators_id = rec.donators_ids.filtered(lambda l:l.product_id.product_tmpl_id.is_gift)
|
|
if not gift_donators_id:
|
|
gift_donators_id = rec.donators_ids
|
|
gift_donators_id = gift_donators_id[0]
|
|
first_receiver_number = gift_donators_id.donator_mobile_number
|
|
first_receiver_name = gift_donators_id.donator_name
|
|
rec.first_receiver_number = first_receiver_number
|
|
rec.first_receiver_name = first_receiver_name
|
|
|
|
@api.depends('order_line.is_gift')
|
|
def compute_gift_order(self):
|
|
for rec in self:
|
|
if rec.order_line.filtered(lambda l: l.is_gift):
|
|
rec.is_gift = True
|
|
else:
|
|
rec.is_gift = False
|
|
|
|
def _cart_update(self, *args, **kwargs):
|
|
donate_list = kwargs.get('donate_list', [])
|
|
if donate_list:
|
|
donate_list = json_scriptsafe.loads(donate_list)
|
|
donate_dict = donate_list[0]
|
|
gift_sender_name = donate_dict.get("gift_sender_name")
|
|
gift_sender_mobile = donate_dict.get("gift_sender_mobile")
|
|
kwargs.pop('donate_list')
|
|
kwargs.update({
|
|
'donators_ids': json_scriptsafe.dumps([donate_dict])
|
|
})
|
|
self.write({
|
|
'order_mobile_number': gift_sender_mobile,
|
|
'order_name': gift_sender_name
|
|
})
|
|
|
|
call_super = super(SaleOrder_Inherit, self)._cart_update(*args, **kwargs)
|
|
return call_super
|
|
|
|
|
|
class SaleOrderLineInherit(models.Model):
|
|
_inherit = 'sale.order.line'
|
|
|
|
is_gift = fields.Boolean("Is Gift Product?", store=True)
|
|
|
|
@api.model_create_multi
|
|
def create(self, vals_list):
|
|
call_super = super(SaleOrderLineInherit, self).create(vals_list)
|
|
for line in call_super:
|
|
if line.product_id:
|
|
line.is_gift = line.product_id.is_gift
|
|
return call_super
|