from odoo import fields, models, api, _ from odoo.exceptions import AccessError, UserError, ValidationError from odoo.tools import DEFAULT_SERVER_DATETIME_FORMAT import logging _logger = logging.getLogger(__name__) class SalesOrderReject(models.Model): _name = 'sales.order.reject' sale_order_id = fields.Many2one('sale.order', string='Sale Order') product_id = fields.Many2one('product.product', string='Product') qty_reject = fields.Float(string='Qty') reason_reject = fields.Char(string='Reason Reject') def write(self, vals): # Check if reason_reject is being updated if 'reason_reject' in vals: for record in self: old_reason = record.reason_reject new_reason = vals['reason_reject'] # Only post a message if the reason actually changed if old_reason != new_reason: now = fields.Datetime.now() # Create the log note for the updated reason log_note = (f"
  • Product '{record.product_id.name}' rejection reason updated:
  • " f"
  • From: {old_reason}
  • " f"
  • To: {new_reason}
  • " f"
  • Updated on: {now.strftime('%d-%m-%Y')} at {now.strftime('%H:%M:%S')}
  • ") # Post ke lognote if record.sale_order_id: record.sale_order_id.message_post( body=log_note, author_id=self.env.user.partner_id.id, ) # Call the original write method return super(SalesOrderReject, self).write(vals)