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

Security findings

Repository
odoo/odoo · module folder
Module version
1.4
Category
Accounting/Localizations/Account Charts
Folder size
0.51 MB
License
LGPL-3
Application
No
Auto-installable
Yes
Website
https://www.odoo.com/documentation/latest/applications/finance/fiscal_localizations.html
Last tracking update
2026-09-28 18:31:19
Authors
Odoo House ApS, VK DATA ApS, FlexERP ApS
Maintainers
Odoo House ApS, VK DATA ApS, FlexERP ApS
Committers
Raphael Collet, Thibault Delavallée, Odoo Translation Bot, Christophe Matthieu, Géry Debongnie, Sébastien Theys, oco-odoo, Julien Mougenot, Tiffany Chang (tic), Miquel Raïch, william-andre, John Laterre (jol), Pierrot (prro), Gauthier Wala (gawa), Dylan Kiss (dyki), Chong Wang (cwg), Sven Fuehr, Martin Trigaux (mat), Louis Gobert, asno-odoo, hatr-odoo, Claire (clbr), Léo Gizard, Hesham Saleh, Saif (segn), Pierre Pulinckx, Anton Romanova (roan), Michaël Mattiello, Krzysztof Magusiak (krma), dvsh-odoo, igbe, Mongy (abmn), Laurent Smet (LAS), steji, h4818, Ayush Modi, malb, Nisarg (nipl), matd-odoo, smjo-odoo, Akash, soza-odoo, Adham Abdeltawab
Odoo dependencies
Python dependencies
None
System dependencies
None
Required by
l10n_dk_fik
Description

Localization Module for Denmark
===============================

This is the module to manage the **accounting chart for Denmark**. Cover both one-man business as well as I/S, IVS, ApS and A/S
Also provides Nemhandel registration and invoice sending throught the Odoo Access Point

    

Code Analysis info_outline

Views touched (11)
XML IDNameModelTypeStatus
l10n_dk_nemhandel_view_move_form l10n.dk.nemhandel.view.move.form account.move form Inherits account.view_move_form
l10n_dk_view_account_journal_form_inherited l10n.dk.account.journal.form.inherited account.journal form Inherits account.view_account_journal_form
nemhandel_registration_form nemhandel.registration.form nemhandel.registration form New
nemhandel_rejection_wizard_view_form nemhandel.rejection.wizard.view.form nemhandel.rejection.wizard form New
nemhandel_response_view_form nemhandel.response.view.form nemhandel.response form New
nemhandel_response_view_list nemhandel.response.view.list nemhandel.response list New
nemhandel_view_account_invoice_filter account.invoice.select.inherit account.move Inherits account.view_account_invoice_filter
nemhandel_view_out_credit_note_tree_inherit account.move.credit.note.tree.inherit account.move tree Inherits account.view_out_credit_note_tree
nemhandel_view_out_invoice_tree_inherit account.move.out.invoice.tree.inherit account.move tree Inherits account.view_out_invoice_tree
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_partner_form_inherit_l10n_dk res.partner.form.inherit.l10n_dk res.partner form Inherits account_edi_ubl_cii.view_partner_property_form
HTTP endpoints (3)
Route(s)HandlerAuthTypeMethodsFlags
/nemhandel/webhook/message-state-update NemhandelWebhookController.webhook_nemhandel_message_update public http POST csrf off sudo
/nemhandel/webhook/new-message NemhandelWebhookController.webhook_nemhandel_new_message public http POST csrf off sudo
/nemhandel/webhook/user-state-update NemhandelWebhookController.webhook_nemhandel_user_update public http POST csrf off sudo
Models touched (15)

New fields (0)

No new fields.

Public methods (0)

No public methods.

New fields (0)

No new fields.

Public methods (0)

No public methods.

New fields (0)

No new fields.

Public methods (0)

No public methods.

New fields (2)
  • is_nemhandel_journal Boolean
    string='Journal used for Nemhandel'
  • l10n_dk_nemhandel_proxy_state Selection
    related='company_id.l10n_dk_nemhandel_proxy_state'
Public methods (2)
  • button_fetch_in_einvoices(self)
  • button_refresh_out_einvoices_status(self)

New fields (4)
  • nemhandel_can_send_response Boolean
    compute='_compute_nemhandel_can_send_response'
  • nemhandel_message_uuid Char
    copy=False string='Nemhandel message ID'
  • nemhandel_move_state Selection
    compute='_compute_nemhandel_move_state' copy=False init_storage=<expr> selection=[('ready', 'Ready to send'), ('to_send', 'Queued'), ('processing', 'Pending Reception'), ('done', 'Done'), ('BusinessAccept', 'Approved'), ('BusinessReject', 'Rejected'), ('error', 'Error')] store=True string='Nemhandel status'
  • nemhandel_response_ids One2many → nemhandel.response
    args: 'nemhandel.response', 'move_id'
Public methods (6)
  • action_cancel_nemhandel_documents(self)
  • action_nemhandel_open_rejection_wizard(self)
  • action_nemhandel_send_approval_response(self)
  • action_open_nemhandel_reponses(self)
  • action_send_and_print(self)
  • button_cancel(self)

New fields (0)

No new fields.

Public methods (0)

No public methods.

New fields (0)

No new fields.

Public methods (1)
  • action_send_and_print(self, force_synchronous=False, allow_fallback_pdf=False)

New fields (0)

No new fields.

Public methods (1)
  • action_send_and_print(self, allow_fallback_pdf=False)

New fields (2)
  • nemhandel_verification_code Char
    string='Nemhandel SMS verification code'
  • proxy_type Selection
    ondelete={'nemhandel': 'cascade'} selection_add=[('nemhandel', 'Nemhandel')]
Public methods (0)

No public methods.

New fields (9)
  • company_id Many2one → res.company
    comodel_name='res.company' default=<expr> required=True
  • contact_email Char
    readonly=False related='company_id.nemhandel_contact_email' required=True
  • edi_mode Selection
    compute='_compute_edi_mode' inverse='_inverse_edi_mode' readonly=False selection=[('demo', 'Demo'), ('test', 'Test'), ('prod', 'Live')] string='EDI mode'
  • edi_user_id Many2one → account_edi_proxy_client.user
    comodel_name='account_edi_proxy_client.user' compute='_compute_edi_user_id' string='EDI user'
  • identifier_type Selection
    readonly=False related='company_id.nemhandel_identifier_type' required=True
  • identifier_value Char
    readonly=False related='company_id.nemhandel_identifier_value' required=True
  • l10n_dk_nemhandel_proxy_state Selection
    readonly=False related='company_id.l10n_dk_nemhandel_proxy_state'
  • phone_number Char
    readonly=False related='company_id.nemhandel_phone_number'
  • verification_code Char
    readonly=False related='edi_user_id.nemhandel_verification_code'
Public methods (6)
  • button_check_nemhandel_verification_code(self)
    @handle_demo
    Calls /verify_phone_number to compare user's input and the code generated on the IAP server
  • button_deregister_nemhandel_participant(self)
    @handle_demo
    Deregister the edi user from Nemhandel network
  • button_nemhandel_receiver_registration(self)
    @handle_demo
    The user is registered on the Nemhandel network, i.e. can receive documents from other Nemhandel participants.
  • button_nemhandel_registration_sms(self)
    @handle_demo
    The first step of the Nemhandel onboarding. - Creates an EDI proxy user on the iap side, then the client side - Calls /activate_participant to mark the EDI user as nemhandel user - Sends an SMS code
  • button_update_nemhandel_user_data(self)
    @handle_demo
    Action for the user to be able to update their contact details any time Calls /update_user on the iap server
  • send_nemhandel_verification_code(self)
    Request user verification via SMS Calls the /send_verification_code to activate the participant and send the 6-digit verification code

New fields (2)
  • move_ids Many2many → account.move
    comodel_name='account.move' required=True
  • note Text
    args: 'Additional note'
Public methods (1)
  • button_send(self)

New fields (5)
  • company_id Many2one
    related='move_id.company_id'
  • move_id Many2one → account.move
    index='btree_not_null' ondelete='cascade' args: 'account.move'
  • nemhandel_message_uuid Char
    args: 'Nemhandel UUID'
  • nemhandel_state Selection
    selection=[('processing', 'Pending Reception'), ('done', 'Done'), ('error', 'Error'), ('not_serviced', 'Not Serviced')] string='Nemhandel status'
  • response_code Selection
    required=True selection=[('BusinessAccept', 'Approval'), ('BusinessReject', 'Rejection')]
Public methods (0)

No public methods.

New fields (7)
  • l10n_dk_nemhandel_proxy_state Selection
    default='not_registered' required=True selection=[('not_registered', 'Not registered'), ('in_verification', 'In verification'), ('receiver', 'Can send and receive'), ('rejected', 'Rejected')] string='Nemhandel status'
  • nemhandel_contact_email Char
    compute='_compute_nemhandel_contact_email' help='Primary contact email for Nemhandel-related communication' readonly=False store=True string='Nemhandel Contact email'
  • nemhandel_edi_user Many2one → account_edi_proxy_client.user
    comodel_name='account_edi_proxy_client.user' compute='_compute_nemhandel_edi_user'
  • nemhandel_identifier_type Selection
    readonly=False related='partner_id.nemhandel_identifier_type'
  • nemhandel_identifier_value Char
    readonly=False related='partner_id.nemhandel_identifier_value'
  • nemhandel_phone_number Char
    compute='_compute_nemhandel_phone_number' help='You will receive a verification code to this phone number' readonly=False store=True string='Nemhandel Phone number (for validation)'
  • nemhandel_purchase_journal_id Many2one → account.journal
    comodel_name='account.journal' compute='_compute_nemhandel_purchase_journal_id' domain=[('type', '=', 'purchase')] readonly=False store=True string='Nemhandel Purchase Journal'
Public methods (0)

No public methods.

New fields (9)
  • l10n_dk_nemhandel_proxy_state Selection
    readonly=False related='company_id.l10n_dk_nemhandel_proxy_state'
  • nemhandel_contact_email Char
    readonly=False related='company_id.nemhandel_contact_email'
  • nemhandel_edi_identification Char
    related='nemhandel_edi_user.edi_identification' string='Nemhandel identification'
  • nemhandel_edi_mode Selection
    related='nemhandel_edi_user.edi_mode' string='Nemhandel EDI operating mode'
  • nemhandel_edi_user Many2one
    related='company_id.nemhandel_edi_user'
  • nemhandel_identifier_type Selection
    readonly=False related='company_id.nemhandel_identifier_type'
  • nemhandel_identifier_value Char
    readonly=False related='company_id.nemhandel_identifier_value'
  • nemhandel_phone_number Char
    readonly=False related='company_id.nemhandel_phone_number'
  • nemhandel_purchase_journal_id Many2one
    readonly=False related='company_id.nemhandel_purchase_journal_id'
Public methods (3)
  • action_open_nemhandel_form(self)
  • button_deregister_nemhandel_participant(self)
    @handle_demo
    Deregister the edi user from Nemhandel network
  • button_update_nemhandel_user_data(self)
    @handle_demo
    Action for the user to be able to update their contact details any time Calls /update_user on the iap server

New fields (8)
  • invoice_edi_format Selection
    selection_add=[('oioubl_21', 'OIOUBL 2.1')]
  • invoice_sending_method Selection
    selection_add=[('nemhandel', 'By Nemhandel')]
  • is_using_nemhandel Boolean
    compute='_compute_is_using_nemhandel'
  • nemhandel_identifier_type Selection
    compute='_compute_nemhandel_identifier_type' help='Unique identifier used by OIOUBL and Nemhandel' init_storage='_init_column_nemhandel_identifier' readonly=False selection=[('0088', 'EAN/GLN'), ('0184', 'CVR'), ('9918', 'IBAN'), ('0198', 'SE')] store=True string='Nemhandel Endpoint Type' tracking=True
  • nemhandel_identifier_value Char
    compute='_compute_nemhandel_identifier_value' help='Code used to identify the Endpoint on Nemhandel' init_storage='_init_column_nemhandel_identifier' readonly=False store=True string='Nemhandel Endpoint' tracking=True
  • nemhandel_response_support Boolean
    compute='_compute_nemhandel_response_support' args: 'Nemhandel Response Service'
  • nemhandel_supported_documents Json
    args: 'Supported Nemhandel Documents'
  • nemhandel_verification_state Selection
    company_dependent=True selection=[('not_verified', 'Not verified yet'), ('not_valid', 'Not on Nemhandel'), ('valid', 'Valid')] string='Nemhandel endpoint verification'
Public methods (3)
  • button_nemhandel_check_partner_endpoint(self, company=None)
    @handle_demo
    A basic check for whether a participant is reachable at the given identifier_type and identifier_value
  • create(self, vals_list)
    @api.model_create_multi
  • write(self, vals)

Loading…

Loading…

Loading…

Loading…

Loading…

Loading…

Loading…

Loading…