目前我正在创建一个自定义模块,我需要在创建客户发票时创建演示记录。
这是我的自定义模型。
class csm(models.Model):
_name= 'csm'
invoice_date = fields.Datetime('Invoice date',readonly=True)
delivery_date = fields.Datetime('Delivery date',readonly=True)
在account.invoice中我添加了as,
class invoice_csm(models.Model):
_inherit = 'account.invoice'
delivery_date = fields.Datetime('Delivery date')
date_invoice= fields.Datetime('Invoice date')
@api.multi
def write(self,values):
record = super(invoice_csm, self).write(values)
if self.state == 'paid':
if self.delivery_date and self.installation_date:
self.env['csm'].write({
'invoice_date': record .date_invoice,
'delivery_date': record .delivery_date,
})
return record
我想要的是当客户发票的状态付清时,我需要在我的csm模型中创建一条记录。但它并没有创造。但是,如果我直接使用创建功能,那么记录是在csm中创建的,但是condtion状态=='付费'不会工作,因为我们甚至可以在创建发票后更改状态。这就是我使用write方法的原因,但这里没有创建记录。
(交货和发票日期有值)
############ CODE FOR REFERENCE #########
class customer(models.Model):
_name = "csm"
_inherit = ['mail.thread']
name = fields.Char(string='Subject', required=True)
## RETAIL ##
invoice_date = fields.Datetime('Invoice date',readonly=True)
delivery_date = fields.Datetime('Delivery date',readonly=True)
installation_date = fields.Datetime('Installation date',readonly=True)
service1_date = fields.Datetime('First service date',readonly=True)
service2_date = fields.Datetime('Second service date',readonly=True)
service3_date = fields.Datetime('Third service date',readonly=True)
@api.multi
def unlink(self):
if self.pool['res.users'].has_group(self._cr, self.env.user.id, 'customer_service_management.group_managerz'):
pass
elif self.create_uid == self.env.user:
pass
else:
if self.create_uid != self.env.user:
raise Warning('You are not authorized to delete this record. Contact administrator/manager')
return super(customer, self).unlink()
发票
class invoice_csm(models.Model):
_inherit = 'account.invoice'
delivery_date = fields.Datetime('Delivery date')
installation_date = fields.Datetime('Installation date')
service1_date = fields.Datetime('First service date')
service2_date = fields.Datetime('Second service date')
service3_date = fields.Datetime('Third service date')
@api.multi
def write(self,values):
record = super(invoice_csm, self).write(values)
if 'state' in values and values['state'] == 'paid':
self.env['csm'].create({
'name': values['number'],
'delivery_date': values['delivery_date'],
'installation_date': values['installation_date'],
'service1_date': values['service1_date'],
'service2_date': values['service2_date'],
'service3_date': values['service3_date'],
})
return record
答案 0 :(得分:2)
self.env ['csm']。创建,而不是self.env ['csm']。写
@api.multi
def write(self,values):
record = super(invoice_csm, self).write(values)
if 'state' in values and values['state'] == 'paid':
if values.get('date_invoice') and values.get('delivery_date'):
self.env['csm'].create({
'invoice_date': values['date_invoice'],
'delivery_date': values['delivery_date'],
})
return record