@@ -36,6 +36,11 @@ localization:
36
36
* - :guilabel: `Malaysia - E-invoicing `
37
37
- `l10n_my_edi `
38
38
- This module includes the features required for integration with MyInvois under IRBM.
39
+ * - :guilabel: `Malaysia - E-invoicing Extended Features `
40
+ - `l10n_my_edi_extended `
41
+ - This module improves the MyInvois E-invoicing feature by adding proper support for self
42
+ billing, rendering the MyInvois QR code in the invoice PDF file and allows better management
43
+ of foreign customer TIN.
39
44
40
45
.. _malaysia/configuration/company :
41
46
@@ -58,8 +63,6 @@ and select it. Then configure the following fields:
58
63
- :guilabel: `TTx `: Malaysian Tourism Tax Number, if applicable
59
64
- :guilabel: `Phone `
60
65
61
- .. _malaysia/myinvois :
62
-
63
66
E-invoicing integration with MyInvois
64
67
=====================================
65
68
@@ -134,31 +137,45 @@ Configuration in Odoo
134
137
135
138
.. _malaysia/myinvois/setup/odoo/einvoicing :
136
139
140
+ Company
141
+ *******
142
+
143
+ Open the Settings app, navigate to the :guilabel: `Companies ` section, and click
144
+ :guilabel: `Update Info `. Make sure the :guilabel: `Tax ID ` is entered and complete the following
145
+ fields in the :guilabel: `E-invoicing ` section:
146
+
147
+ - :guilabel: `Identification `: Select the :guilabel: `ID Type ` and enter the associated
148
+ :guilabel: `Identification number ` used to register for the digital certificate.
149
+ - :guilabel: `Ind. Classification `: Input the 5-digit numeric code that represents the nature and
150
+ activity of the business.
151
+
137
152
Electronic invoicing
138
153
********************
139
154
140
155
Go to :menuselection: `Accounting --> Configuration --> Settings `. In the
141
- :guilabel: `Malaysian Electronic Invoicing ` section, choose the relevant :guilabel: `MyInvois mode `
142
- based on the environment you used to register on MyInvois.
156
+ :guilabel: `Malaysian Electronic Invoicing ` section, select the relevant :guilabel: `MyInvois mode `
157
+ based on the environment used for the company's MyInvois registration .
143
158
144
159
Make sure to allow Odoo to process e-invoices by checking the box, then click :guilabel: `Register `.
145
160
146
161
.. note ::
147
- To change the TIN reference, click :guilabel: `Unregister `, change the company's information and
148
- make sure the number registered on MyInvois matches, then :guilabel: `Register ` again.
162
+ To change the :abbr: `TIN ( tax identification number ) ` reference, click :guilabel: `Unregister `,
163
+ change the company's information and make sure the number registered on MyInvois matches, then
164
+ :guilabel: `Register ` again.
149
165
150
- .. _malaysia/myinvois/setup/odoo/company :
166
+ .. important ::
167
+ For taxpayers with a :abbr: `TIN ( tax identification number ) ` starting with "IG" and a
168
+ :abbr: `ROB ( registration of business ) ` number, combine the TIN and ROB in the **TIN:ROB ** format
169
+ for the :guilabel: `Tax ID ` field.
151
170
152
- Company
153
- *******
171
+ To register, go to :menuselection: `Accounting --> Configuration --> Settings `, and in the
172
+ :guilabel: `Malaysian Electronic Invoicing ` section, click :guilabel: `Register `. Once the
173
+ registration is complete, the **:ROB ** can be removed from the :guilabel: `Tax ID `.
154
174
155
- Open the Settings app, and in the :guilabel: ` Companies ` section, click :guilabel: ` Update Info `. Then,
156
- in the :guilabel: `E-invoicing ` section, fill in the following fields:
175
+ Additionally, remember to log into ` MyTax account < https://mytax.hasil.gov.my/ >`_ and set the
176
+ :guilabel: `Type of Role ` as :guilabel: ` Business Owner `.
157
177
158
- - :guilabel: `Identification `: The :guilabel: `ID Type ` and associated :guilabel: `Identification
159
- number ` used to register for the digital certificate.
160
- - :guilabel: `Ind. Classification `: The 5-digit numeric code that represents the nature and
161
- activity of the business.
178
+ .. _malaysia/myinvois/setup/odoo/company :
162
179
163
180
Contacts
164
181
********
@@ -181,6 +198,20 @@ All products to be included in e-invoices require a Malaysian classification cod
181
198
access the :guilabel: `Product ` form and in the :guilabel: `General Information ` tab, fill in the
182
199
:guilabel: `Malaysian classification code ` field.
183
200
201
+ Malaysian tax type
202
+ ******************
203
+
204
+ To configure a tax's :guilabel: `Malaysian Tax Type ` field, go to :menuselection: `Accounting -->
205
+ Configuration --> Accounting --> Taxes ` and open the relevant tax in the :guilabel: `Taxes ` list
206
+ view.
207
+
208
+ When an invoice or bill includes a tax with the :guilabel: `Malaysian Tax Type ` set to
209
+ **Tax Exempt **, a :guilabel: `Tax Exemption Reason ` must be specified in the :guilabel: `MyInvois `
210
+ tab before the document is sent.
211
+
212
+ .. image :: malaysia/myinvois-tax-exemption-reason.png
213
+ :alt: MyInvois tax exemption reason
214
+
184
215
.. _malaysia/myinvois/workflow :
185
216
186
217
Workflow
@@ -193,41 +224,97 @@ Send invoices to MyInvois
193
224
194
225
Invoices can be sent to MyInvois once they have been confirmed. To do so, follow the
195
226
:ref: `invoice sending <accounting/invoice/sending >` steps, and in the :guilabel: `Send ` window,
196
- enable the :guilabel: `Send to MyInvois ` option and click :guilabel: `Print & Send `.
227
+ enable the :guilabel: `Send To MyInvois ` option and click :guilabel: `Send & Print `.
228
+
229
+ Send bills to MyInvois
230
+ ~~~~~~~~~~~~~~~~~~~~~~
231
+
232
+ Sending a bill to MyInvois is necessary when issuing an e-Invoice on behalf of a supplier. Once a
233
+ bill is confirmed, click :guilabel: `Send To MyInvois `.
234
+
235
+ .. note ::
236
+ - In `MyInvois <https://preprod.myinvois.hasil.gov.my/content >`_, these vendor bills are
237
+ categorized as :guilabel: `Self-billed Invoice `.
238
+
239
+ - If a :guilabel: `Bill Reference ` field is empty, Odoo's vendor bill number is used as the
240
+ MyInvois number. If a reference is entered in the :guilabel: `Bill Reference ` field, that
241
+ reference is used instead.
197
242
198
243
.. _malaysia/myinvois/workflow/sending/status :
199
244
200
245
MyInvois status
201
246
***************
202
247
203
- In the :guilabel: `MyInvois ` tab of the invoice, the :guilabel: `MyInvois State ` is updated to
204
- :guilabel: `Valid ` when the submission to MyInvois is successful. The :guilabel: `Submission UID `,
205
- :guilabel: `MyInvois ` and :guilabel: `Validation Time ` are also updated.
206
- The same information is available on MyInvois.
248
+ The current MyInvois status of an invoice or bill is shown in the :guilabel: `MyInvois State ` field
249
+ within the :guilabel: `MyInvois ` tab.
250
+
251
+ - :guilabel: `Validation in Progress `: the validation is being processed by MyInvois. A blue
252
+ :guilabel: `Processing ` banner is also displayed.
253
+ - :guilabel: `Valid `: it is validated by MyInvois. The :guilabel: `Submission UID `,
254
+ :guilabel: `MyInvois ` and :guilabel: `Validation Time ` are automatically updated with information
255
+ from MyInvois.
207
256
208
257
.. note ::
209
- If no information is received from the MyInvois portal, the :guilabel: ` MyInvois State ` is
210
- :guilabel: ` In Progress `. In this case, Odoo automatically checks and updates the status .
258
+ Odoo :doc: ` automatically checks and updates < ../../sales/subscriptions/scheduled_actions >` the
259
+ status every hour. To update it manually at any time, click :guilabel: ` Update MyInvois Status ` .
211
260
212
261
.. _malaysia/myinvois/workflow/cancellation :
213
262
214
263
Invoice cancellation
215
264
~~~~~~~~~~~~~~~~~~~~
216
265
217
266
Sent invoices can be canceled within 72 hours from :guilabel: `Validation time `. In this case, open
218
- the invoice and click :guilabel: `Request Cancel `. In the :guilabel: `Cancel document ` window, include
219
- the cancellation :guilabel: `Reason `, then click :guilabel: `Update Invoice `. The
267
+ the invoice and click :guilabel: `Request Cancel `. In the :guilabel: `Cancel document ` window,
268
+ include the cancellation :guilabel: `Reason `, then click :guilabel: `Update Invoice `. The
220
269
:guilabel: `MyInvois State ` is updated to :guilabel: `cancelled `.
221
270
222
- .. _malaysia/employment-hero :
271
+ Send credit notes to MyInvois
272
+ ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
223
273
224
- Employment Hero payroll
225
- =======================
274
+ Before sending a credit note, the original invoice must be successfully submitted to MyInvois.
275
+ Otherwise, the credit note's :guilabel: ` MyInvois State ` is updated to :guilabel: ` Invalid `.
226
276
227
- If your business is already up and running with :doc: `Employment Hero
228
- <../../hr/payroll/payroll_localizations/employment_hero>`, you can use our connector as an
229
- alternative payroll solution.
277
+ While Odoo uses a single :guilabel: `credit note ` document, MyInvois categorizes these into two
278
+ types: :guilabel: `credit note ` and :guilabel: `refund note `, depending on how they are reconciled.
230
279
231
- .. important ::
232
- To :ref: `configure the Employment Hero API <employment_hero/configuration >` for **Malaysia **, use
233
- the following value as :guilabel: `Payroll URL `: `https://apimy.yourpayroll.io/ `.
280
+ - :guilabel: `MyInvois Credit Note `: This is created when an Odoo credit note is reconciled with the
281
+ original invoice.
282
+ - :guilabel: `MyInvois Refund Note `: This is created when an Odoo credit note is reconciled with a
283
+ full payment instead of the original invoice.
284
+
285
+ .. note ::
286
+ If a credit note is reconciled with only a partial payment before being sent, it is still
287
+ categorized as a :guilabel: `credit note ` in MyInvois.
288
+
289
+ .. tip ::
290
+ To issue both a credit note and a refund note for the same original invoice:
291
+ - Create two separate credit notes in Odoo from the original invoice.
292
+ - For a MyInvois :guilabel: `Refund Note `: Register a payment before sending it.
293
+ - For a MyInvois :guilabel: `Credit Note `: Do not register a payment before sending it.
294
+
295
+ .. note ::
296
+ The same logic applies to credit notes created from bills: if reconciled with a full payment,
297
+ the credit note becomes a :guilabel: `Self-billed Refund Note `; otherwise, it becomes a
298
+ :guilabel: `Self-billed Credit Note `.
299
+
300
+ Send debit notes to MyInvois
301
+ ~~~~~~~~~~~~~~~~~~~~~~~~~~~~
302
+
303
+ :ref: `Issue a debit note from an existing bill or invoice <accounting/credit_notes/issue-debit-note >`
304
+ and click :guilabel: `Send To MyInvois `. In MyInvois, it appears then as a :guilabel: `Debit Note ` if
305
+ issued from an invoice or a :guilabel: `Self-billed Debit Note ` from a vendor bill.
306
+
307
+ Access invoices via QR code
308
+ ---------------------------
309
+
310
+ When a document is successfully submitted to MyInvois, a QR code is added to its PDF version.
311
+ Scanning this code links directly to the validated document in MyInvois.
312
+
313
+ To download the PDF from an invoice or bill:
314
+
315
+ #. Click the :icon: `fa-cog ` :guilabel: `(gear) ` icon
316
+ #. Select :guilabel: `Download `
317
+ #. Choose either :guilabel: `PDF ` or :guilabel: `PDF without Payment `
318
+
319
+ .. image :: malaysia/myinvois-qr-code.png
320
+ :alt: MyInvois QR code
0 commit comments