TIP: You can type at any time to perform a new search.
Malaysia - E-invoicing
l10n_my_edi · odoo/odoo
Security findings
- Repository
- odoo/odoo · module folder
- Module version
- 0.1.0
- Category
- Accounting/Localizations/EDI
- Folder size
- 0.62 MB
- License
- LGPL-3
- Application
- No
- Auto-installable
- Yes
- Website
- None
- Last tracking update
- 2026-09-28 18:31:22
- Authors
- Odoo S.A.
- Maintainers
- Odoo S.A.
- Committers
- Xavier Morel, Raphael Collet, Odoo Translation Bot, Christophe Matthieu, Victor Feyens, Andrea Grazioso (agr-odoo), Tiffany Chang (tic), william-andre, Yosua Nicolaus, Dylan Kiss (dyki), Chong Wang (cwg), Harsh Modi, Nicolas Viseur (vin), kcv-odoo, dijo-odoo, hatr-odoo, Krzysztof Magusiak (krma), devp-odoo, mojem, Laurent Smet (LAS), Julien Launois (jula), adip-odoo, Uemus, Nisarg (nipl), Arnav Varshney, Woojang Pyeon, jand-odoo, erle, Angad Singh Grover (ANGRO)
- Odoo dependencies
- Python dependencies
- None
- System dependencies
- None
- Required by
- l10n_my_edi_pos
- Description
This modules allows the user to send their invoices to the MyInvois system.
Code Analysis
Views touched (17)
| XML ID | Name | Model | Type | Status |
|---|---|---|---|---|
account_journal_dashboard_kanban_view_inherit_l10n_my_myinvois |
account.journal.dashboard.kanban.inherit.l10n_my_myinvois | account.journal | kanban | Inherits account.account_journal_dashboard_kanban_view |
myinvois_consolidate_invoice_wizard_form |
myinvois.consolidate.invoice.wizard.form | myinvois.consolidate.invoice.wizard | form | New |
myinvois_document_form_view |
myinvois.document.form.view | myinvois.document | form | New |
myinvois_document_list_view |
myinvois.document.list.view | myinvois.document | list | New |
myinvois_document_search_view |
myinvois.document.search.view | myinvois.document | search | New |
myinvois_document_status_update_form |
myinvois.document.status.update.wizard.form | myinvois.document.status.update.wizard | form | New |
portal_my_details_fields |
portal_my_details_fields | ir.ui.view | qweb | Inherits account.portal_my_details |
product_template_form_view |
product.template.form.inherit | product.template | form | Inherits product.product_template_form_view |
report_invoice |
report_invoice | ir.ui.view | qweb | Inherits account.report_invoice |
report_invoice_document |
report_invoice_document | ir.ui.view | qweb | Inherits account.report_invoice_document |
res_config_settings_view_form |
res.config.settings.view.form.inherit.proxy.user | res.config.settings | form | Inherits account.res_config_settings_view_form |
view_classification_list |
l10n_my_edi.industry_classification.list | l10n_my_edi.industry_classification | list | New |
view_company_form_inherit_l10n_my_myinvois |
res.company.form.inherit.l10n_my_myinvois | res.company | form | Inherits base.view_company_form |
view_invoice_list_inherit_l10n_my_myinvois |
account.move.list.inherit.l10n_my_myinvois | account.move | list | Inherits account.view_invoice_tree |
view_move_form_inherit_l10n_my_myinvois |
account.move.form.inherit.l10n_my_myinvois | account.move | form | Inherits account.view_move_form |
view_partner_form_inherit_l10n_my_myinvois |
res.partner.form.inherit.l10n_my_myinvois | res.partner | form | Inherits account.view_partner_property_form |
view_tax_form_inherit_l10n_my_myinvois |
account.tax.form.inherit.l10n_my_myinvois | account.tax | form | Inherits account.view_tax_form |
HTTP endpoints (0)
No HTTP endpoints found for this module.
Models touched (15)
New fields (0)
No new fields.
Public methods (0)No public methods.
New fields (0)
No new fields.
Public methods (1)-
open_myinvois_document(self)Return an action to open the MyInvois Document matching this journal.
New fields (6)
-
l10n_my_edi_custom_form_referenceCharhelp='Reference Number of Customs Form No.1, 9, etc.'string='Customs Form Reference Number' -
l10n_my_edi_display_tax_exemption_reasonBooleancompute='_compute_l10n_my_edi_display_tax_exemption_reason'export_string_translation=Falsestring='Display Tax Exemption Reason' -
l10n_my_edi_document_idsMany2many → myinvois.documentcolumn1='invoice_id'column2='document_id'comodel_name='myinvois.document'copy=Falsename='MyInvois Documents'relation='myinvois_document_invoice_rel' -
l10n_my_edi_exemption_reasonCharhelp="Buyer’s sales tax exemption certificate number, special exemption as per gazette orders, etc.\nOnly applicable if you are using a tax with a type 'Exempt'."string='Tax Exemption Reason' -
l10n_my_edi_is_applicableBooleancompute='_compute_l10n_my_edi_is_applicable'export_string_translation=False -
l10n_my_edi_stateSelectioncompute='_compute_l10n_my_edi_state'export_string_translation=Falsehelp='State of this document on the MyInvois portal.\nA document awaiting validation will be automatically updated once the validation status is available.'selection=[('in_progress', 'Validation In Progress'), ('valid', 'Valid'), ('rejected', 'Rejected'), ('invalid', 'Invalid'), ('cancelled', 'Cancelled')]store=Truestring='MyInvois State'tracking=True
-
action_invoice_sent(self)The wizard should not be available for invoices sent to MyInvois but not yet validated. This is because before validation the ID used for the QR code is not available and the user should NOT send the invoice yet. -
action_l10n_my_edi_send_invoice(self, allow_raising=True)This action will create the MyInvois Document for this invoice if it does not already exist. Once done, it will trigger the sending of said document to the platform. :param allow_raising: whether the process can raise errors. -
action_l10n_my_edi_update_status(self) -
action_show_myinvois_documents(self) -
button_draft(self) -
button_request_cancel(self)
New fields (1)
-
l10n_my_edi_classification_codeSelectioncompute='_compute_l10n_my_edi_classification_code'copy=Falsereadonly=Falseselection=CLASSIFICATION_CODES_LISTstore=Truestring='Malaysian classification code'
No public methods.
New fields (0)
No new fields.
Public methods (0)No public methods.
New fields (2)
-
l10n_my_tax_exemption_reasonCharhelp='The reason for tax exemption, used when submitting consolidated invoices including this tax.'string='Malaysian Tax Exemption Reason' -
l10n_my_tax_typeSelectioncompute='_compute_l10n_my_tax_type'readonly=Falseselection=[('01', 'Sales Tax'), ('02', 'Service Tax'), ('03', 'Tourism Tax'), ('04', 'High-Value Goods Tax'), ('05', 'Sales Tax on Low Value Goods'), ('06', 'Not Applicable'), ('E', 'Tax exemption (where applicable)')]store=Truestring='Malaysian Tax Type'
No public methods.
New fields (1)
-
proxy_typeSelectionondelete={'l10n_my_edi': 'cascade'}selection_add=[('l10n_my_edi', 'Malaysian EDI')]
No public methods.
New fields (2)
-
codeCharrequired=True -
nameCharrequired=True
No public methods.
New fields (3)
-
consolidation_typeSelectionrequired=Trueselection=[('invoice', 'Invoice')] -
date_fromDaterequired=Truestring='Date From' -
date_toDaterequired=Truestring='Date To'
-
button_consolidate(self)By default, we only consolidated orders that are in the range, done and not invoiced. We do allow to also consolidate invoices linked to a cancelled consolidated invoice. Note that doing so lock the cancelled invoice into its cancelled state.
New fields (24)
-
activeBooleandefault=Truestring='Active' -
company_currency_idMany2onerelated='company_id.currency_id'string='Company Currency' -
company_idMany2one → res.companycomodel_name='res.company'default=<expr>readonly=Truerequired=True -
currency_idMany2one → res.currencycomodel_name='res.currency'required=True -
invoice_idsMany2many → account.movecheck_company=Truecolumn1='document_id'column2='invoice_id'comodel_name='account.move'name='Invoices'relation='myinvois_document_invoice_rel' -
is_consolidated_invoiceBooleanhelp='Set to true when a document is created through the consolidation wizard. Affects the sequence and way of generating the xml data.' -
is_debit_noteBooleanreadonly=True -
is_supersededBooleancopy=Falseexport_string_translation=Falsehelp="Whether the linked invoice was reset to draft after this document reached a terminal state on the platform. Superseded documents are excluded when computing the invoice's current MyInvois status."readonly=True -
journal_idMany2one → account.journalcheck_company=Truecomodel_name='account.journal'index=Truereadonly=Truerequired=Truestring='Journal' -
linked_invoice_countIntegercompute='_compute_linked_invoice_count' -
move_typeSelectionindex=Truereadonly=Truerequired=Trueselection=[('out_invoice', 'Customer Invoice'), ('out_refund', 'Customer Credit Note'), ('in_invoice', 'Vendor Bill'), ('in_refund', 'Vendor Credit Note')]string='Type' -
myinvois_custom_form_referenceCharhelp='Reference Number of Customs Form No.1, 9, etc.'string='Customs Form Reference Number' -
myinvois_document_long_idCharcopy=Falsereadonly=Truestring='MyInvois Long ID' -
myinvois_error_document_hashCharcopy=Falseexport_string_translation=Falsereadonly=Truestring='Document Hash' -
myinvois_exemption_reasonCharhelp="Buyer’s sales tax exemption certificate number, special exemption as per gazette orders, etc.\nOnly applicable if you are using a tax with a type 'Exempt'."string='Tax Exemption Reason' -
myinvois_external_uuidCharcopy=Falsehelp='Unique ID assigned to a specific document when sent to MyInvois.'index=Truereadonly=Truestring='MyInvois ID' -
myinvois_fileBinarycopy=Falseexport_string_translation=Falsereadonly=Truestring='MyInvois XML File' -
myinvois_file_idMany2one → ir.attachmentcomodel_name='ir.attachment'compute=<expr>copy=Falsedepends=['myinvois_file']export_string_translation=False -
myinvois_issuance_dateDatecopy=Falsereadonly=Truestring='Issuance Date' -
myinvois_retry_atCharcopy=Falseexport_string_translation=Falsereadonly=Truestring='Document Retry At' -
myinvois_stateSelectioncopy=Falsehelp='State of this document on the MyInvois portal.\nA document awaiting validation will be automatically updated once the validation status is available.'readonly=Trueselection=[('in_progress', 'Validation In Progress'), ('valid', 'Valid'), ('rejected', 'Rejected'), ('invalid', 'Invalid'), ('cancelled', 'Cancelled')]string='MyInvois State'tracking=True -
myinvois_submission_uidCharcopy=Falsehelp='Unique ID assigned to a batch of documents when sent to MyInvois.'readonly=Truestring='Submission UID' -
myinvois_validation_timeDatetimecopy=Falsereadonly=Truestring='Validation Time' -
nameCharcompute='_compute_name'copy=Falseindex='trigram'store=True
-
action_cancel_submission(self)Cancel the document on the platform. -
action_generate_xml_file(self, allow_raising=True)Generate a xml file for each of the MyInvois documents in self. If the document already as a file, the previous file's name is updated to include an (old) tag to avoid confusion in the attachment list. -
action_open_consolidate_invoice_wizard(self)Open the wizard, and set a default date_from/date_to based on the current date as well as already existing consolidated invoices. -
action_show_myinvois_documents(self)Open the documents in self in the correct view based on the amount of records. -
action_submit_to_myinvois(self, allow_raising=True)Submit all new documents in self to MyInvois. This can also be used on invalid documents to re-submit them after correcting the error. -
action_update_submission_status(self)Fetches the status of all the documents in self. Note that the endpoint reached to do so will differ based on the amount of documents in the recordset. -
action_view_linked_invoices(self)Return the action used to open the order(s) linked to the selected consolidated invoice. -
init(self)
New fields (3)
-
document_idMany2one → myinvois.documentcomodel_name='myinvois.document'readonly=Truerequired=Truestring='Document To Update' -
new_statusCharhelp='New status to set on the document.'readonly=Truerequired=True -
reasonCharhelp='Reason for updating the document.'required=True
-
button_request_update(self)
New fields (1)
-
l10n_my_edi_classification_codeSelectionselection=CLASSIFICATION_CODES_LISTstring='Malaysian classification code'
No public methods.
New fields (9)
-
l10n_my_edi_default_import_journal_idMany2one → account.journalcomodel_name='account.journal'domain="[('type', '=', 'purchase')]"help='The journal on which invoices imported from MyInvois will be booked. Leave empty to use the default purchase journal.'string='Default import journal' -
l10n_my_edi_industrial_classificationMany2onereadonly=Falserelated='partner_id.l10n_my_edi_industrial_classification' -
l10n_my_edi_is_branchBooleancompute='_compute_l10n_my_edi_is_branch'export_string_translation=False -
l10n_my_edi_is_sole_proprietorBoolean -
l10n_my_edi_modeSelectiondefault='test'selection=[('test', 'Pre-Production'), ('prod', 'Production')] -
l10n_my_edi_proxy_user_idMany2one → account_edi_proxy_client.usercomodel_name='account_edi_proxy_client.user'compute='_compute_l10n_my_edi_proxy_user_id'recursive=True -
l10n_my_identification_numberCharreadonly=Falserelated='partner_id.l10n_my_identification_number' -
l10n_my_identification_number_placeholderCharcompute='_compute_l10n_my_identification_number_placeholder' -
l10n_my_identification_typeSelectionreadonly=Falserelated='partner_id.l10n_my_identification_type'
No public methods.
New fields (10)
-
l10n_my_accept_processingBoolean -
l10n_my_edi_company_vatCharrelated='company_id.vat' -
l10n_my_edi_default_import_journal_idMany2onereadonly=Falserelated='company_id.l10n_my_edi_default_import_journal_id' -
l10n_my_edi_identification_numberCharrelated='company_id.l10n_my_identification_number' -
l10n_my_edi_is_branchBooleanrelated='company_id.l10n_my_edi_is_branch' -
l10n_my_edi_is_sole_proprietorBooleanreadonly=Falserelated='company_id.l10n_my_edi_is_sole_proprietor' -
l10n_my_edi_modeSelectionreadonly=Falserelated='company_id.l10n_my_edi_mode' -
l10n_my_edi_parent_modeSelectionrelated='company_id.parent_id.l10n_my_edi_mode'string='Parent MyInvois mode' -
l10n_my_edi_proxy_user_idMany2onerelated='company_id.l10n_my_edi_proxy_user_id' -
l10n_my_edi_show_sole_proprietorBooleancompute='_compute_l10n_my_edi_show_sole_proprietor'
-
action_l10n_my_edi_allow_processing(self)We always expect the user to give his consent by pressing the button, in any mode, to enable the edi. -
action_l10n_my_edi_unregister(self)Send a notification to the proxy to free the ID (vat) of the user, and archive the local proxy user. Useful if there has been a misconfiguration or the user wishes to use a new database/... -
action_open_company_form(self)This will be used to ease the configuration by allowing to quickly access the company.
New fields (7)
-
l10n_my_edi_display_tin_warningBooleancompute='_compute_l10n_my_edi_display_tin_warning' -
l10n_my_edi_industrial_classificationMany2one → l10n_my_edi.industry_classificationcomodel_name='l10n_my_edi.industry_classification'compute='_compute_l10n_my_edi_industrial_classification'readonly=Falsestore=Truestring='Ind. Classification' -
l10n_my_edi_malaysian_tinCharhelp='The value set in this field will be used as TIN for the customer/supplier.\nIf left empty, the Tax ID field will be used.'string='Malaysian TIN' -
l10n_my_identification_numberCharstring='ID Number' -
l10n_my_identification_number_placeholderCharcompute='_compute_l10n_my_identification_number_placeholder' -
l10n_my_identification_typeSelectiondefault='BRN'help='The identification type and number used by the MyTax/MyInvois system to identify the user.\nNote: For MyPR and MyKAS to use NRIC scheme'selection=[('NRIC', 'MyKad/MyTentera/MyPR/MyKAS'), ('BRN', 'Business Registration Number'), ('PASSPORT', 'Passport'), ('ARMY', 'Army')]string='ID Type' -
l10n_my_tin_validation_stateSelectioncompute='_compute_l10n_my_tin_validation_state'export_string_translation=Falsehelp='Technical field, hold the result of TIN validation using MyInvois API.\nIt is non blocking, and will simply help ensure that the customer of an invoice is valid to avoid submission errors.'readonly=Falseselection=[('valid', 'Valid'), ('invalid', 'Invalid')]store=Truestring='Tin Validation State'
-
action_validate_tin(self)Calling this action will reach our EDI proxy in order to validate the TIN against the provided identification information.
Loading…
Loading…
Loading…