from odoo import models, fields, release, _ from datetime import datetime from odoo.exceptions import UserError class ComplianceLetter(models.TransientModel): _name = 'compliance.letter.wizard' _description = 'Compliance Letter for EXO Number' company_id = fields.Many2one('res.company', string='Company', required=True, default=lambda self: self.env.company) def generate_letter(self): if self.company_id.country_id.code != 'MT': raise UserError(_("Compliance letters can only be created for companies registered in Malta. Please ensure the company's country is set to Malta.")) data = { "version": self._get_odoo_version(), "date": self._get_formatted_date(), "name": self.company_id.name, "vat": self.company_id.vat, "address": self.company_id.partner_id.contact_address, } return self.env.ref('l10n_mt_pos.report_compliance_letter').report_action([], data=data) def _get_formatted_date(self): """Returns the formatted date as 'Date (Month, xxth, 20XX)'.""" date_obj = datetime.strptime(str(fields.Date.today()), '%Y-%m-%d') day = date_obj.day day_suffix = 'th' if 11 <= day <= 13 else {1: 'st', 2: 'nd', 3: 'rd'}.get(day % 10, 'th') formatted_date = date_obj.strftime(f"%B {day}{day_suffix}, %Y") return formatted_date def _get_odoo_version(self): return release.major_version