# -*- coding: utf-8 -*- from odoo import models, fields, api from datetime import date import base64 class SOS_Shelflife_Material_Register(models.Model): _name = 'sos_shelflife_register' _description = 'Shelf Life Register' name = fields.Many2one('sos_material',string="Material Name", required=True) quantity = fields.Float(string="Quantity") expiry_date = fields.Date(string="Expiry Date") ir_ref_no = fields.Many2one('sos_ir',string="Inward Ref No") remaining_days = fields.Integer(string="Remaining days to expire", compute="_compute_remaining_days", store=True) @api.depends('expiry_date') def _compute_remaining_days(self): today = date.today() for record in self: if record.expiry_date: delta = (record.expiry_date - today).days record.remaining_days = max(0, delta) # don't show negative days else: record.remaining_days = 0 def action_generate_expiry_report(self): expiring_materials = self.search([ ('remaining_days', '<', 7), ('remaining_days', '>', 0) ]) if not expiring_materials: return # Build HTML table table_rows = ''.join([ f"""
Dear Team,
Below is the weekly report of materials expiring within 7 days:
| Material Name | Expiry Date | Remaining Days to Expire |
|---|
Regards,
Slink Admin