[IMP] sale: Write create methods in api_create_multi mode
This commit is contained in:
@@ -7,6 +7,7 @@ from itertools import groupby
|
||||
import json
|
||||
|
||||
from odoo import api, fields, models, SUPERUSER_ID, _
|
||||
from odoo.fields import Datetime
|
||||
from odoo.exceptions import AccessError, UserError, ValidationError
|
||||
from odoo.tools.misc import formatLang
|
||||
from odoo.osv import expression
|
||||
@@ -336,7 +337,7 @@ class SaleOrder(models.Model):
|
||||
dt = line._expected_date()
|
||||
dates_list.append(dt)
|
||||
if dates_list:
|
||||
order.expected_date = fields.Datetime.to_string(min(dates_list))
|
||||
order.expected_date = Datetime.to_string(min(dates_list))
|
||||
else:
|
||||
order.expected_date = False
|
||||
|
||||
@@ -535,25 +536,26 @@ class SaleOrder(models.Model):
|
||||
self.show_update_pricelist = False
|
||||
self.message_post(body=_("Product prices have been recomputed according to pricelist <b>%s<b> ", self.pricelist_id.display_name))
|
||||
|
||||
@api.model
|
||||
def create(self, vals):
|
||||
if 'company_id' in vals:
|
||||
self = self.with_company(vals['company_id'])
|
||||
if vals.get('name', _('New')) == _('New'):
|
||||
seq_date = None
|
||||
if 'date_order' in vals:
|
||||
seq_date = fields.Datetime.context_timestamp(self, fields.Datetime.to_datetime(vals['date_order']))
|
||||
vals['name'] = self.env['ir.sequence'].next_by_code('sale.order', sequence_date=seq_date) or _('New')
|
||||
@api.model_create_multi
|
||||
def create(self, vals_list):
|
||||
for vals in vals_list:
|
||||
if 'company_id' in vals:
|
||||
self = self.with_company(vals['company_id'])
|
||||
if vals.get('name', _('New')) == _('New'):
|
||||
seq_date = Datetime.context_timestamp(
|
||||
self, Datetime.to_datetime(vals['date_order'])
|
||||
) if 'date_order' in vals else None
|
||||
vals['name'] = self.env['ir.sequence'].next_by_code(
|
||||
'sale.order', sequence_date=seq_date) or _('New')
|
||||
|
||||
# Makes sure partner_invoice_id', 'partner_shipping_id' and 'pricelist_id' are defined
|
||||
if any(f not in vals for f in ['partner_invoice_id', 'partner_shipping_id', 'pricelist_id']):
|
||||
partner = self.env['res.partner'].browse(vals.get('partner_id'))
|
||||
addr = partner.address_get(['delivery', 'invoice'])
|
||||
vals['partner_invoice_id'] = vals.setdefault('partner_invoice_id', addr['invoice'])
|
||||
vals['partner_shipping_id'] = vals.setdefault('partner_shipping_id', addr['delivery'])
|
||||
vals['pricelist_id'] = vals.setdefault('pricelist_id', partner.property_product_pricelist.id)
|
||||
result = super(SaleOrder, self).create(vals)
|
||||
return result
|
||||
# Makes sure partner_invoice_id', 'partner_shipping_id' and 'pricelist_id' are defined
|
||||
if any(f not in vals for f in ['partner_invoice_id', 'partner_shipping_id', 'pricelist_id']):
|
||||
partner = self.env['res.partner'].browse(vals.get('partner_id'))
|
||||
addr = partner.address_get(['delivery', 'invoice'])
|
||||
vals['partner_invoice_id'] = vals.setdefault('partner_invoice_id', addr['invoice'])
|
||||
vals['partner_shipping_id'] = vals.setdefault('partner_shipping_id', addr['delivery'])
|
||||
vals['pricelist_id'] = vals.setdefault('pricelist_id', partner.property_product_pricelist.id)
|
||||
return super(SaleOrder, self).create(vals_list)
|
||||
|
||||
def _compute_field_value(self, field):
|
||||
if field.name == 'invoice_status' and not self.env.context.get('mail_activity_automation_skip'):
|
||||
|
||||
@@ -42,10 +42,10 @@ class SaleOrderLine(models.Model):
|
||||
|
||||
website_description = fields.Html('Website Description', sanitize=False, translate=html_translate, sanitize_form=False)
|
||||
|
||||
@api.model
|
||||
def create(self, values):
|
||||
values = self._inject_quotation_description(values)
|
||||
return super(SaleOrderLine, self).create(values)
|
||||
@api.model_create_multi
|
||||
def create(self, vals_list):
|
||||
vals_list = [self._inject_quotation_description(vals) for vals in vals_list]
|
||||
return super(SaleOrderLine, self).create(vals_list)
|
||||
|
||||
def write(self, values):
|
||||
values = self._inject_quotation_description(values)
|
||||
|
||||
@@ -31,10 +31,10 @@ class SaleOrderTemplateLine(models.Model):
|
||||
self.website_description = self.product_id.quotation_description
|
||||
return ret
|
||||
|
||||
@api.model
|
||||
def create(self, values):
|
||||
values = self._inject_quotation_description(values)
|
||||
return super(SaleOrderTemplateLine, self).create(values)
|
||||
@api.model_create_multi
|
||||
def create(self, vals_list):
|
||||
vals_list = [self._inject_quotation_description(vals) for vals in vals_list]
|
||||
return super(SaleOrderTemplateLine, self).create(vals_list)
|
||||
|
||||
def write(self, values):
|
||||
values = self._inject_quotation_description(values)
|
||||
|
||||
@@ -88,12 +88,14 @@ class SaleOrder(models.Model):
|
||||
expected_date = min(dates_list) if order.picking_policy == 'direct' else max(dates_list)
|
||||
order.expected_date = fields.Datetime.to_string(expected_date)
|
||||
|
||||
@api.model
|
||||
def create(self, vals):
|
||||
if 'warehouse_id' not in vals and 'company_id' in vals:
|
||||
user = self.env['res.users'].browse(vals.get('user_id', False))
|
||||
vals['warehouse_id'] = user.with_company(vals.get('company_id'))._get_default_warehouse_id().id
|
||||
return super().create(vals)
|
||||
@api.model_create_multi
|
||||
def create(self, vals_list):
|
||||
# YTI TODO: Achieve this with a compute method
|
||||
for vals in vals_list:
|
||||
if 'warehouse_id' not in vals and 'company_id' in vals:
|
||||
user = self.env['res.users'].browse(vals.get('user_id', False))
|
||||
vals['warehouse_id'] = user.with_company(vals.get('company_id'))._get_default_warehouse_id().id
|
||||
return super().create(vals_list)
|
||||
|
||||
def write(self, values):
|
||||
if values.get('order_line') and self.state == 'sale':
|
||||
|
||||
Reference in New Issue
Block a user