Odoo18-Base/addons/l10n_mt_pos/wizards/compliance_letter.py
2025-01-06 10:57:38 +07:00

34 lines
1.4 KiB
Python

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