Skip to Content
Menu
You need to be registered to interact with the community.
This question has been flagged
1 Odgovori
119 Prikazi

I'm integrating Malaysia's LHDN MyInvois (e-Invoicing) into Odoo 18 Community Edition. When triggering the action_l10n_my_edi_send_invoice() method on a posted invoice, I receive a vague error without any traceback or API response detail.

Core Question:

How can I debug or fix the Malaysia e-Invoicing integration in Odoo 18 Community, especially when action_l10n_my_edi_send_invoice() fails silently?

Problem:

When calling this method:

python

CopyEdit

account_move = self.env['account.move'].browse([1]) account_move.action_l10n_my_edi_send_invoice()

I encounter the following error description in the logs:

vbnet

CopyEdit

Invalid Operation Error when sending the invoices to the E-invoicing service. - Server error; If the problem persists, please contact the Odoo support.

There is no traceback or JSON error payload logged — even with log_level = debug.

The HTTP access log shows a 200 response:

swift

CopyEdit

192.168.80.1 - - [10/May/2025 18:38:47] "POST /web/dataset/call_button/account.move/action_l10n_my_edi_send_invoice HTTP/1.1" 200 -

Clues:

  • Using Odoo 18 Community, not Enterprise.
  • The invoice is already posted and valid.
  • I suspect:
    • The Community version lacks support for MyInvois or skips the actual request.
    • Response from LHDN is malformed or contains a rejection with no handling.
    • Missing authentication (access token not set correctly).

What I Need Help With:

  1. Where in Odoo 18 Community is the MyInvois POST request constructed?
    I’d like to manually inspect and possibly log the payload and response.
  2. How to extend or monkey-patch action_l10n_my_edi_send_invoice() to:
    • Log the raw request/response.
    • Handle and display errors from LHDN clearly.
  3. Is Malaysia EDI (l10n_my_edi) officially supported in Odoo Community 18?
    If not, are there any working open-source alternatives?

Would you like a ready-made debug patch to add logging to the EDI call and capture the HTTP response from MyInvois?

Error Description:

Invalid Operation

Error when sending the invoices to the E-invoicing service. - Server error; If the problem persists, please contact the Odoo support.

Avatar
Opusti
Avtor

If I using Odoo 18 community then I have my own api server to connect to lhdn?

Does this api support the community version also?
https://l10n-my-edi.api.odoo.com/

Best Answer

How to log:

Define the logger:

import logging
_logger = logging.getLogger(__name__)


Using the logger:

_logger.info(f'Value of whatever: {var_name}')


Now, with that out of the way, action_l10n_my_edi_send_invoice is defined in a module named l10n_my_edi_extended.


The error message "Error when sending the invoices to the E-invoicing service." is generated in two modules:

  • l10n_my_edi (account.move.send: _call_web_service_before_invoice_pdf_render())
  • l10n_my_edi_extended (account.move x3: _l10n_my_edi_send_to_myinvois(), _l10n_my_edi_get_status())


Now, explaining how to create a custom module would go beyond the scope of a answer here, see https://www.odoo.com/documentation/18.0/developer/tutorials/backend.html. You can also see how to extend an existing method quite often in the core, as a matter of fact, even in _call_web_service_before_invoice_pdf_render() itself - i.e. super()._call_web_service_before_invoice_pdf_render(invoices_data) - so "super()" it is what you're looking for to extend a method.

As a temporary approach you could however always try to add the logging (import logging, _logger = ... and _logger.info(...)) to the core files, get the insights from the log file, verify them and finally revert your changes in the core once you know what is going on.

Avatar
Opusti