odex25_standard/odex25_donation/p_donation_gift/models/sale.py

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