Skip to content

[IMP] Localizations/Malaysia: improve doc #13963

New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Closed
Closed
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
146 changes: 120 additions & 26 deletions content/applications/finance/fiscal_localizations/malaysia.rst
Original file line number Diff line number Diff line change
Expand Up @@ -58,8 +58,6 @@ and select it. Then configure the following fields:
- :guilabel:`TTx`: Malaysian Tourism Tax Number, if applicable
- :guilabel:`Phone`

.. _malaysia/myinvois:

E-invoicing integration with MyInvois
=====================================

Expand Down Expand Up @@ -134,31 +132,45 @@ Configuration in Odoo

.. _malaysia/myinvois/setup/odoo/einvoicing:

Company
*******

Open the Settings app, navigate to the :guilabel:`Companies` section, and click
:guilabel:`Update Info`. Make sure the :guilabel:`Tax ID` is entered and complete the following
fields in the :guilabel:`E-invoicing` section:

- :guilabel:`Identification`: Select the :guilabel:`ID Type` and enter the associated
:guilabel:`Identification number` used to register for the digital certificate.
- :guilabel:`Ind. Classification`: Input the 5-digit numeric code that represents the nature and
activity of the business.

Electronic invoicing
********************

Go to :menuselection:`Accounting --> Configuration --> Settings`. In the
:guilabel:`Malaysian Electronic Invoicing` section, choose the relevant :guilabel:`MyInvois mode`
based on the environment you used to register on MyInvois.
:guilabel:`Malaysian Electronic Invoicing` section, select the relevant :guilabel:`MyInvois mode`
based on the environment used for the company's MyInvois registration.

Make sure to allow Odoo to process e-invoices by checking the box, then click :guilabel:`Register`.

.. note::
To change the TIN reference, click :guilabel:`Unregister`, change the company's information and
make sure the number registered on MyInvois matches, then :guilabel:`Register` again.
To change the :abbr:`TIN (tax identification number)` reference, click :guilabel:`Unregister`,
change the company's information and make sure the number registered on MyInvois matches, then
:guilabel:`Register` again.

.. _malaysia/myinvois/setup/odoo/company:
.. important::
For taxpayers with a :abbr:`TIN (tax identification number)` starting with "IG" and a
:abbr:`ROB (registration of business)` number, combine the TIN and ROB in the **TIN:ROB** format
for the :guilabel:`Tax ID` field.

Company
*******
To register, go to :menuselection:`Accounting --> Configuration --> Settings`, and in the
:guilabel:`Malaysian Electronic Invoicing` section, click :guilabel:`Register`. Once the
registration is complete, the **:ROB** can be removed from the :guilabel:`Tax ID`.

Open the Settings app, and in the :guilabel:`Companies` section, click :guilabel:`Update Info`. Then,
in the :guilabel:`E-invoicing` section, fill in the following fields:
Additionally, remember to log into `MyTax account <https://mytax.hasil.gov.my/>`_ and set the
:guilabel:`Type of Role` as :guilabel:`Business Owner`.

- :guilabel:`Identification`: The :guilabel:`ID Type` and associated :guilabel:`Identification
number` used to register for the digital certificate.
- :guilabel:`Ind. Classification`: The 5-digit numeric code that represents the nature and
activity of the business.
.. _malaysia/myinvois/setup/odoo/company:

Contacts
********
Expand All @@ -181,6 +193,20 @@ All products to be included in e-invoices require a Malaysian classification cod
access the :guilabel:`Product` form and in the :guilabel:`General Information` tab, fill in the
:guilabel:`Malaysian classification code` field.

Malaysian tax type
******************

To configure a tax's :guilabel:`Malaysian Tax Type` field, go to :menuselection:`Accounting -->
Configuration --> Accounting --> Taxes` and open the relevant tax in the :guilabel:`Taxes` list
view.

When an invoice or bill includes a tax with the :guilabel:`Malaysian Tax Type` set to
**Tax Exempt**, a :guilabel:`Tax Exemption Reason` must be specified in the :guilabel:`MyInvois`
tab before the document is sent.

.. image:: malaysia/myinvois-tax-exemption-reason.png
:alt: MyInvois tax exemption reason

.. _malaysia/myinvois/workflow:

Workflow
Expand All @@ -191,34 +217,102 @@ Workflow
Send invoices to MyInvois
~~~~~~~~~~~~~~~~~~~~~~~~~

Invoices can be sent to MyInvois once they have been confirmed. To do so, follow the
:ref:`invoice sending <accounting/invoice/sending>` steps, and in the :guilabel:`Send` window,
enable the :guilabel:`Send to MyInvois` option and click :guilabel:`Print & Send`.
Invoices can be sent to MyInvois once they have been confirmed. To do so, click
:guilabel:`Send to MyInvois`.

Send bills to MyInvois
~~~~~~~~~~~~~~~~~~~~~~

Sending a bill to MyInvois is necessary when issuing an e-Invoice on behalf of a supplier. Once a
bill is confirmed, click :guilabel:`Send To MyInvois`.

.. note::
- In `MyInvois <https://preprod.myinvois.hasil.gov.my/content>`_, these vendor bills are
categorized as :guilabel:`Self-billed Invoice`.

- If a :guilabel:`Bill Reference` field is empty, Odoo's vendor bill number is used as the
MyInvois number. If a reference is entered in the :guilabel:`Bill Reference` field, that
reference is used instead.

.. _malaysia/myinvois/workflow/sending/status:

MyInvois status
***************

In the :guilabel:`MyInvois` tab of the invoice, the :guilabel:`MyInvois State` is updated to
:guilabel:`Valid` when the submission to MyInvois is successful. The :guilabel:`Submission UID`,
:guilabel:`MyInvois` and :guilabel:`Validation Time` are also updated.
The same information is available on MyInvois.
The current MyInvois status of an invoice or bill is shown in the :guilabel:`MyInvois State` field
within the :guilabel:`MyInvois` tab.

- :guilabel:`Validation in Progress`: the validation is being processed by MyInvois. A blue
:guilabel:`Processing` banner is also displayed.
- :guilabel:`Valid`: it is validated by MyInvois. The :guilabel:`Submission UID`,
:guilabel:`MyInvois` and :guilabel:`Validation Time` are automatically updated with information
from MyInvois.

.. note::
If no information is received from the MyInvois portal, the :guilabel:`MyInvois State` is
:guilabel:`In Progress`. In this case, Odoo automatically checks and updates the status.
Odoo :doc:`automatically checks and updates <../../sales/subscriptions/scheduled_actions>` the
status every hour. To update it manually at any time, click :guilabel:`Update MyInvois Status`.

.. _malaysia/myinvois/workflow/cancellation:

Invoice cancellation
~~~~~~~~~~~~~~~~~~~~

Sent invoices can be canceled within 72 hours from :guilabel:`Validation time`. In this case, open
the invoice and click :guilabel:`Request Cancel`. In the :guilabel:`Cancel document` window, include
the cancellation :guilabel:`Reason`, then click :guilabel:`Update Invoice`. The
the invoice and click :guilabel:`Request Cancel`. In the :guilabel:`Cancel document` window,
include the cancellation :guilabel:`Reason`, then click :guilabel:`Update Invoice`. The
:guilabel:`MyInvois State` is updated to :guilabel:`cancelled`.

Send credit notes to MyInvois
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~

Before sending a credit note, the original invoice must be successfully submitted to MyInvois.
Otherwise, the credit note's :guilabel:`MyInvois State` is updated to :guilabel:`Invalid`.

While Odoo uses a single :guilabel:`credit note` document, MyInvois categorizes these into two
types: :guilabel:`credit note` and :guilabel:`refund note`, depending on how they are reconciled.

- :guilabel:`MyInvois Credit Note`: This is created when an Odoo credit note is reconciled with the
original invoice.
- :guilabel:`MyInvois Refund Note`: This is created when an Odoo credit note is reconciled with a
full payment instead of the original invoice.

.. note::
If a credit note is reconciled with only a partial payment before being sent, it is still
categorized as a :guilabel:`credit note` in MyInvois.

.. tip::
To issue both a credit note and a refund note for the same original invoice:
- Create two separate credit notes in Odoo from the original invoice.
- For a MyInvois :guilabel:`Refund Note`: Register a payment before sending it.
- For a MyInvois :guilabel:`Credit Note`: Do not register a payment before sending it.

.. note::
The same logic applies to credit notes created from bills: if reconciled with a full payment,
the credit note becomes a :guilabel:`Self-billed Refund Note`; otherwise, it becomes a
:guilabel:`Self-billed Credit Note`.

Send debit notes to MyInvois
~~~~~~~~~~~~~~~~~~~~~~~~~~~~

:ref:`Issue a debit note from an existing bill or invoice <accounting/credit_notes/issue-debit-note>`
and click :guilabel:`Send To MyInvois`. In MyInvois, it appears then as a :guilabel:`Debit Note` if
issued from an invoice or a :guilabel:`Self-billed Debit Note` from a vendor bill.

Access invoices via QR code
---------------------------

When a document is successfully submitted to MyInvois, a QR code is added to its PDF version.
Scanning this code links directly to the validated document in MyInvois.

To download the PDF from an invoice or bill:

#. Click the :icon:`fa-cog` :guilabel:`(gear)` icon
#. Select :guilabel:`Download`
#. Choose either :guilabel:`PDF` or :guilabel:`PDF without Payment`

.. image:: malaysia/myinvois-qr-code.png
:alt: MyInvois QR code

.. _malaysia/employment-hero:

Employment Hero payroll
Expand Down
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.