在odoo中创建记录时,记录不是在另一个模型中创建的

时间:2016-06-03 10:08:41

标签: python odoo-8

目前我正在创建一个自定义模块,我需要在创建客户发票时创建演示记录。

这是我的自定义模型。

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

1 个答案:

答案 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