34 lines
1.4 KiB
Python
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
|