Zum Inhalt springen
Menü
Sie müssen registriert sein, um mit der Community zu interagieren.
Diese Frage wurde gekennzeichnet
2 Antworten
3593 Ansichten

class SaleOrder(models.Model):

    _inherit = 'sale.order'

    

    history_ids = fields.One2many('sale.order','odr_id')

    odr_id = fields.Many2one('sale.order')

    

    @api.onchange('partner_id')

    def onchange_partner_id(self):

        res = super(SaleOrder, self).onchange_partner_id()

        order_ids = self.env['sale.order'].search([('partner_id', '=', self.partner_id.id)])

 


        order_history = []

        for record in order_ids:

            if record.state in ('sale', 'done'):

                order_history.append((0, 0, {

                                      'name': record.name,

                                      'amount_total': record.amount_total, 

                                      'state': record.state,

                                      'user_id': record.user_id.id, 

                                      'confirmation_date': record.confirmation_date,

                                      'invoice_status': record.invoice_status

                                      }))

        if order_history:

            self.update({'history_ids': order_history})

            

        return res

##############################################

This is my code.There is a one2many relation to sale order.

I am using this module for save the previous history of customers.

When save the sale order there is a warning will be happend.

How to solve this issue??


Avatar
Verwerfen
Autor

i change my code like this

# program

class SaleOrder(models.Model):

_inherit = 'sale.order'

history_ids = fields.One2many('sale.order','odr_id')

odr_id = fields.Many2one('sale.order')

@api.onchange('partner_id')

def onchange_partner_id(self):

res = super(SaleOrder, self).onchange_partner_id()

order_ids = self.env['sale.order'].search([('partner_id', '=', self.partner_id.id),

('state', 'not in', ['draft', 'sent'])])

self.create({'history_ids': [(6, 0, order_ids)]})

return res

Notes

---------

Get an attribute error on delete(name). How to solve these issue.?

the model sale order and i want to insert values to the same model.so don't need to append like (0,0). I think (6,0, ids) is correct. Please help me how to solve this issue??

Beste Antwort

Still, your res contains the return value of the original method. Please try update res as

if order_history:
res.update({
'history_ids': order_history
})
Avatar
Verwerfen
Beste Antwort

Hello,

If I have good understanding, you would create a One2Many line in the onchange.

You can do this:

class SaleOrder(models.Model):
 _inherit = 'sale.order'

history_ids = fields.One2many('sale.order','odr_id')
odr_id = fields.Many2one('sale.order')

@api.onchange('partner_id')
def onchange_partner_id(self):
res = super(SaleOrder, self).onchange_partner_id()
order_ids = self.env['sale.order'].search([('partner_id', '=', self.partner_id.id)])

order_history = []
for record in order_ids:
if record.state in ('sale', 'done'):
order_history.append((0, 0, {
'name': record.name,
'amount_total': record.amount_total,
'state': record.state,
'user_id': record.user_id.id,
'confirmation_date': record.confirmation_date,
'invoice_status': record.invoice_status
}))
if order_history:
self.history_ids = order_history
return res
Avatar
Verwerfen