跳至内容
菜单
此问题已终结
3 回复
1352 查看

Hi can someone help me please with a automated action to check if my field is over or under current date based on the result set field status

Situation:
model = stock.move

x_so_dispatch_date = date field

x_status = select field


so_x_dispatch_date if after now set x_status late

this condition to be only evaluated for moves not done 


thank you

形象
丢弃
最佳答案

Hi,

You can try this code


Let us assume the field property is the given format


x_so_dispatch_date = fields.Date(string="Dispatch Date")

x_status = fields.Selection([('on_time', 'On Time'), ('late', 'Late')], string="Status")


then add the method like


@api.model

    def update_move_status(self):

        # Find moves that are not done and have a dispatch date after the current date

        late_moves = self.env['stock.move'].search([

            ('state', '!=', 'done'),

            ('x_so_dispatch_date', '>', fields.Date.today())

        ])


        # Update the status for late moves

        for move in late_moves:

            move.x_status = 'late'


        # Update the status for on-time moves

        on_time_moves = self.env['stock.move'].search([

            ('state', '!=', 'done'),

            ('x_so_dispatch_date', '        ])

        for move in on_time_moves:

            move.x_status = 'on_time'


Hope it helps

形象
丢弃
编写者 最佳答案

After fixing some indents errors and filed mismatchs i get the  "forbidden opcode(s) in 'lambda': STORE_ATTR" error on action save 
any idea why?

thank you 

形象
丢弃
最佳答案

class StockMove(models.Model):

    _inherit = 'stock.move'


    x_so_dispatch_date = fields.Date(string='Dispatch Date')

    x_status = fields.Selection([

        ('on_time', 'On Time'),

        ('late', 'Late'),

    ], string='Status', compute='_compute_status', store=True)


    def _compute_status(self):

        for move in self:

            if move.state != 'done' and move.x_so_dispatch_date:

                if move.x_so_dispatch_date > fields.Date.today():

                    move.x_status = 'on_time'

                else:

                    move.x_status = 'late'

            else:

                move.x_status = False


形象
丢弃
相关帖文 回复 查看 活动
1
9月 23
1346
5
7月 20
5279
0
3月 17
2383
1
9月 24
729
0
10月 21
1342