Odoo18-Base/addons/l10n_my_edi/models/account_edi_proxy_user.py

63 lines
2.3 KiB
Python
Raw Permalink Normal View History

2025-01-06 10:57:38 +07:00
# Part of Odoo. See LICENSE file for full copyright and licensing details.
import logging
from werkzeug.urls import url_join
from odoo import _, fields, models
from odoo.addons.account_edi_proxy_client.models.account_edi_proxy_user import AccountEdiProxyError
from odoo.exceptions import UserError
_logger = logging.getLogger(__name__)
class AccountEdiProxyClientUser(models.Model):
_inherit = 'account_edi_proxy_client.user'
# ------------------
# Fields declaration
# ------------------
proxy_type = fields.Selection(selection_add=[('l10n_my_edi', 'Malaysian EDI')], ondelete={'l10n_my_edi': 'cascade'})
# -----------------------
# CRUD, inherited methods
# -----------------------
def _get_proxy_urls(self):
# EXTENDS 'account_edi_proxy_client'
urls = super()._get_proxy_urls()
# We do not use demo with MyInvois as during a demo, showing the invoice on the pre-prod platform will be better.
urls['l10n_my_edi'] = {
'demo': False,
'prod': 'https://l10n-my-edi.api.odoo.com',
'test': self.env['ir.config_parameter'].get_param('l10n_my_edi_test_server_url', 'https://l10n-my-edi.test.odoo.com'),
}
return urls
def _get_proxy_identification(self, company, proxy_type):
# EXTENDS 'account_edi_proxy_client'
if proxy_type == 'l10n_my_edi':
if not company.vat:
raise UserError(_('Please fill the TIN of company "%(company_name)s" before enabling the integration with MyInvois.',
company_name=company.display_name))
return company.vat
return super()._get_proxy_identification(company, proxy_type)
# ----------------
# Business methods
# ----------------
def _l10n_my_edi_contact_proxy(self, endpoint, params):
self.ensure_one()
try:
response = self._make_request(
url=url_join(self._get_server_url(), endpoint),
params=params,
)
except AccountEdiProxyError as _error:
# Request error while contacting the IAP server. We assume it is a temporary error.
raise UserError(_("Failed to contact the E-Invoicing service. Please try again later."))
return response