TIP: You can type at any time to perform a new search.

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 info_outline

Views touched (17)
XML IDNameModelTypeStatus
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_reference Char
    help='Reference Number of Customs Form No.1, 9, etc.' string='Customs Form Reference Number'
  • l10n_my_edi_display_tax_exemption_reason Boolean
    compute='_compute_l10n_my_edi_display_tax_exemption_reason' export_string_translation=False string='Display Tax Exemption Reason'
  • l10n_my_edi_document_ids Many2many → myinvois.document
    column1='invoice_id' column2='document_id' comodel_name='myinvois.document' copy=False name='MyInvois Documents' relation='myinvois_document_invoice_rel'
  • l10n_my_edi_exemption_reason Char
    help="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_applicable Boolean
    compute='_compute_l10n_my_edi_is_applicable' export_string_translation=False
  • l10n_my_edi_state Selection
    compute='_compute_l10n_my_edi_state' export_string_translation=False help='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=True string='MyInvois State' tracking=True
Public methods (6)
  • 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_code Selection
    compute='_compute_l10n_my_edi_classification_code' copy=False readonly=False selection=CLASSIFICATION_CODES_LIST store=True string='Malaysian classification code'
Public methods (0)

No public methods.

New fields (0)

No new fields.

Public methods (0)

No public methods.

New fields (2)
  • l10n_my_tax_exemption_reason Char
    help='The reason for tax exemption, used when submitting consolidated invoices including this tax.' string='Malaysian Tax Exemption Reason'
  • l10n_my_tax_type Selection
    compute='_compute_l10n_my_tax_type' readonly=False selection=[('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=True string='Malaysian Tax Type'
Public methods (0)

No public methods.

New fields (1)
  • proxy_type Selection
    ondelete={'l10n_my_edi': 'cascade'} selection_add=[('l10n_my_edi', 'Malaysian EDI')]
Public methods (0)

No public methods.

New fields (2)
  • code Char
    required=True
  • name Char
    required=True
Public methods (0)

No public methods.

New fields (3)
  • consolidation_type Selection
    required=True selection=[('invoice', 'Invoice')]
  • date_from Date
    required=True string='Date From'
  • date_to Date
    required=True string='Date To'
Public methods (1)
  • 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)
  • active Boolean
    default=True string='Active'
  • company_currency_id Many2one
    related='company_id.currency_id' string='Company Currency'
  • company_id Many2one → res.company
    comodel_name='res.company' default=<expr> readonly=True required=True
  • currency_id Many2one → res.currency
    comodel_name='res.currency' required=True
  • invoice_ids Many2many → account.move
    check_company=True column1='document_id' column2='invoice_id' comodel_name='account.move' name='Invoices' relation='myinvois_document_invoice_rel'
  • is_consolidated_invoice Boolean
    help='Set to true when a document is created through the consolidation wizard. Affects the sequence and way of generating the xml data.'
  • is_debit_note Boolean
    readonly=True
  • is_superseded Boolean
    copy=False export_string_translation=False help="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_id Many2one → account.journal
    check_company=True comodel_name='account.journal' index=True readonly=True required=True string='Journal'
  • linked_invoice_count Integer
    compute='_compute_linked_invoice_count'
  • move_type Selection
    index=True readonly=True required=True selection=[('out_invoice', 'Customer Invoice'), ('out_refund', 'Customer Credit Note'), ('in_invoice', 'Vendor Bill'), ('in_refund', 'Vendor Credit Note')] string='Type'
  • myinvois_custom_form_reference Char
    help='Reference Number of Customs Form No.1, 9, etc.' string='Customs Form Reference Number'
  • myinvois_document_long_id Char
    copy=False readonly=True string='MyInvois Long ID'
  • myinvois_error_document_hash Char
    copy=False export_string_translation=False readonly=True string='Document Hash'
  • myinvois_exemption_reason Char
    help="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_uuid Char
    copy=False help='Unique ID assigned to a specific document when sent to MyInvois.' index=True readonly=True string='MyInvois ID'
  • myinvois_file Binary
    copy=False export_string_translation=False readonly=True string='MyInvois XML File'
  • myinvois_file_id Many2one → ir.attachment
    comodel_name='ir.attachment' compute=<expr> copy=False depends=['myinvois_file'] export_string_translation=False
  • myinvois_issuance_date Date
    copy=False readonly=True string='Issuance Date'
  • myinvois_retry_at Char
    copy=False export_string_translation=False readonly=True string='Document Retry At'
  • myinvois_state Selection
    copy=False help='State of this document on the MyInvois portal.\nA document awaiting validation will be automatically updated once the validation status is available.' readonly=True selection=[('in_progress', 'Validation In Progress'), ('valid', 'Valid'), ('rejected', 'Rejected'), ('invalid', 'Invalid'), ('cancelled', 'Cancelled')] string='MyInvois State' tracking=True
  • myinvois_submission_uid Char
    copy=False help='Unique ID assigned to a batch of documents when sent to MyInvois.' readonly=True string='Submission UID'
  • myinvois_validation_time Datetime
    copy=False readonly=True string='Validation Time'
  • name Char
    compute='_compute_name' copy=False index='trigram' store=True
Public methods (8)
  • 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_id Many2one → myinvois.document
    comodel_name='myinvois.document' readonly=True required=True string='Document To Update'
  • new_status Char
    help='New status to set on the document.' readonly=True required=True
  • reason Char
    help='Reason for updating the document.' required=True
Public methods (1)
  • button_request_update(self)

New fields (1)
  • l10n_my_edi_classification_code Selection
    selection=CLASSIFICATION_CODES_LIST string='Malaysian classification code'
Public methods (0)

No public methods.

New fields (9)
  • l10n_my_edi_default_import_journal_id Many2one → account.journal
    comodel_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_classification Many2one
    readonly=False related='partner_id.l10n_my_edi_industrial_classification'
  • l10n_my_edi_is_branch Boolean
    compute='_compute_l10n_my_edi_is_branch' export_string_translation=False
  • l10n_my_edi_is_sole_proprietor Boolean
  • l10n_my_edi_mode Selection
    default='test' selection=[('test', 'Pre-Production'), ('prod', 'Production')]
  • l10n_my_edi_proxy_user_id Many2one → account_edi_proxy_client.user
    comodel_name='account_edi_proxy_client.user' compute='_compute_l10n_my_edi_proxy_user_id' recursive=True
  • l10n_my_identification_number Char
    readonly=False related='partner_id.l10n_my_identification_number'
  • l10n_my_identification_number_placeholder Char
    compute='_compute_l10n_my_identification_number_placeholder'
  • l10n_my_identification_type Selection
    readonly=False related='partner_id.l10n_my_identification_type'
Public methods (0)

No public methods.

New fields (10)
  • l10n_my_accept_processing Boolean
  • l10n_my_edi_company_vat Char
    related='company_id.vat'
  • l10n_my_edi_default_import_journal_id Many2one
    readonly=False related='company_id.l10n_my_edi_default_import_journal_id'
  • l10n_my_edi_identification_number Char
    related='company_id.l10n_my_identification_number'
  • l10n_my_edi_is_branch Boolean
    related='company_id.l10n_my_edi_is_branch'
  • l10n_my_edi_is_sole_proprietor Boolean
    readonly=False related='company_id.l10n_my_edi_is_sole_proprietor'
  • l10n_my_edi_mode Selection
    readonly=False related='company_id.l10n_my_edi_mode'
  • l10n_my_edi_parent_mode Selection
    related='company_id.parent_id.l10n_my_edi_mode' string='Parent MyInvois mode'
  • l10n_my_edi_proxy_user_id Many2one
    related='company_id.l10n_my_edi_proxy_user_id'
  • l10n_my_edi_show_sole_proprietor Boolean
    compute='_compute_l10n_my_edi_show_sole_proprietor'
Public methods (3)
  • 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_warning Boolean
    compute='_compute_l10n_my_edi_display_tin_warning'
  • l10n_my_edi_industrial_classification Many2one → l10n_my_edi.industry_classification
    comodel_name='l10n_my_edi.industry_classification' compute='_compute_l10n_my_edi_industrial_classification' readonly=False store=True string='Ind. Classification'
  • l10n_my_edi_malaysian_tin Char
    help='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_number Char
    string='ID Number'
  • l10n_my_identification_number_placeholder Char
    compute='_compute_l10n_my_identification_number_placeholder'
  • l10n_my_identification_type Selection
    default='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_state Selection
    compute='_compute_l10n_my_tin_validation_state' export_string_translation=False help='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=False selection=[('valid', 'Valid'), ('invalid', 'Invalid')] store=True string='Tin Validation State'
Public methods (1)
  • 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…