コンテンツへスキップ
メニュー
この質問にフラグが付けられました
1 返信
3028 ビュー

Hi All,

I couldn't  get the backorder and moveline in stock.picking table

Below i mentioned my code.

If have done any mistake in code plz correct me.


class StockPicking(models.Model):
    _inherit = "stock.picking"

    alert_count = fields.Integer(compute='_compute_alert', string='Quality Alerts', default=0)
    alert_ids = fields.Many2many('quality.alert', compute='_compute_alert', string='Quality Alerts', copy=False)
   
    @api.model
    def create(self, vals):
        res = super(StockPicking, self).create(vals)
        res.generate_quality_alert()
        return res

    @api.multi
    def generate_quality_alert(self):
        quality_alert = self.env['quality.alert']
        quality_measure = self.env['quality.measure']
        stockpick=self.env['stock.picking']
        for pick in self:
            backorder = stockpick.search([('backorder_id', '=', pick.id)])
            print(backorder)
            if backorder is True:
                for line in backorder.move_lines:
                    print(line)
                    measures = quality_measure.search([('product_id', '=', line.product_id.id)])
                    if measures:
                        print(measures)
                        quality_alert.create({
                            'product_id': line.product_id.id,
                            'picking_id': backorder.id,
                            'origin': backorder.name,
                            'company_id': backorder.company_id.id,
                            'order_id': False,
                            'ordered_quantity':line.product_uom_qty,
                            'pending_quantity':line.product_uom_qty,
                        })

アバター
破棄
最善の回答

Hello, 

I  ​just found some mistake into code which i corrected. Hope this will help.

Problem in code which i changed it.

1. if picking is creating. so it will contain backorder_id.but you are searching wrong like created record as reference into backorder it.

2. second search will give you browse record, or blank object. not True or False.

Please verify code. Hope this will help.

    @ api.model 
    def create (self, vals): 
        res = super (StockPicking, self) .create (vals) 
        res.generate_quality_alert () 
        return res

    @ api.multi 
    def generate_quality_alert (self): 
        quality_alert = self.env ['quality.alert'] 
        quality_measure = self.env ['quality.measure'] 
        stockpick = self.env ['stock.picking'] 
        for pick in self :  
            if pick.backorder_id:
                for line in pick.backorder_id.move_lines:
                    measures = quality_measure.search ([] ('product_id ',' = ', line.product_id.id)]) 
                    if measures:
                        quality_alert.create ({
                            product_id: line.product_id.id, 
                            picking_id: pick.backorder_id.id, 
                            origin: pick.backorder_id.name, 
                            company_id: pick.backorder_id.company_id.id, 
                            order_id: false, 
                            ordered_quantity: line.product_uom_qty, 
                            'pending_quantity': line.product_uom_qty , 
                        })


アバター
破棄
関連投稿 返信 ビュー 活動
1
11月 24
18652
0
8月 22
11999
3
12月 19
6871
1
12月 23
22466
2
12月 15
4153