Skip to Content
Меню
Вам необхідно зареєструватися, щоб взаємодіяти зі спільнотою.
Це запитання позначене
3 Відповіді
2075 Переглядів

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


Аватар
Відмінити
Related Posts Відповіді Переглядів Дія
1
вер. 23
1952
5
лип. 20
5871
0
бер. 17
3050
1
вер. 24
1310
0
жовт. 21
1870