TIP: You can type at any time to perform a new search.
EDI
edi · OCA/edi
- Repository
- OCA/edi · module folder · Try on Runboat
- Module version
- 1.24.0
- Category
- Uncategorized
- Folder size
- 0.2 MB
- License
- LGPL-3
- Application
- No
- Auto-installable
- No
- Website
- https://github.com/OCA/edi
- Last tracking update
- 2026-08-07 07:38:25
- Authors
- Odoo Community Association (OCA), ACSONE
- Maintainers
- Odoo Community Association (OCA), ACSONE
- Committers
- Simone Orsi, Enric Tobella, Lois Rilo, JordiMForgeFlow, OCA-git-bot, oca-travis, oca-ci, Alba Riera, Jaume Bernaus
- Odoo dependencies
- Python dependencies
- pyyaml, cachetools, requests
- System dependencies
- None
- Required by
- edi_account, edi_backend_partner, edi_bank_statement_oca, edi_exchange_template, edi_purchase_oca, edi_stock_oca, edi_storage, edi_webservice, edi_xml
- Description
Code Analysis ⓘ
Views touched (16)
| XML ID | Name | Model | Type | Status |
|---|---|---|---|---|
assets_backend |
assets_backend | ir.ui.view | qweb | Inherits web.assets_backend |
edi_backend_type_view_form |
edi.backend.type | form | New | |
edi_backend_type_view_search |
edi.backend.type | search | New | |
edi_backend_type_view_tree |
edi.backend.type | tree | New | |
edi_backend_view_form |
edi.backend | form | New | |
edi_backend_view_search |
edi.backend | search | New | |
edi_backend_view_tree |
edi.backend | tree | New | |
edi_exchange_consumer_mixin_buttons |
edi_exchange_consumer_mixin_buttons | ir.ui.view | qweb | New |
edi_exchange_record_create_form_view |
edi.exchange.record.create.form (in edi) | edi.exchange.record.create | form | New |
edi_exchange_record_view_form |
edi.exchange.record | form | New | |
edi_exchange_record_view_search |
edi.exchange.record | search | New | |
edi_exchange_record_view_tree |
edi.exchange.record | tree | New | |
edi_exchange_type_view_form |
edi.exchange.type | form | New | |
edi_exchange_type_view_search |
edi.exchange.type | search | New | |
edi_exchange_type_view_tree |
edi.exchange.type | tree | New | |
message_edi_exchange_link |
message_edi_exchange_link | ir.ui.view | qweb | New |
HTTP endpoints (0)
No HTTP endpoints found for this module.
Models touched (6)
New fields (4)
-
activeBooleandefault=True -
backend_type_idMany2one → edi.backend.typecomodel_name='edi.backend.type'ondelete='restrict'required=Truestring='EDI Backend type' -
nameCharrequired=True -
output_sent_processed_autoBooleanhelp='\n Automatically set the record as processed after sending.\n Usecase: the web service you send the file to processes it on the fly.\n '
-
create_record(self, type_code, values)Create an exchange record for current backend. :param type_code: edi.exchange.type code :param values: edi.exchange.record values :return: edi.exchange.record record -
exchange_create_ack_record(self, exchange_record) -
exchange_generate(self, exchange_record, store=True, force=False, **kw)Generate output content for given exchange record. :param exchange_record: edi.exchange.record recordset :param store: store output on the record itself :param force: allow to re-genetate the content :param kw: keyword args to be propagated to output generate handler -
exchange_process(self, exchange_record)Process an incoming document. -
exchange_receive(self, exchange_record)Retrieve an incoming document. -
exchange_record_model(self)@property -
exchange_send(self, exchange_record)Send exchange file.
New fields (2)
-
codeCharinverse='_inverse_code'required=True -
nameCharrequired=True
No public methods.
New fields (4)
-
edi_auto_disabledBooleanhelp='When marked, EDI could be avoided'readonly=True -
exchange_record_countIntegercompute='_compute_exchange_record_count' -
exchange_record_idsOne2many → edi.exchange.recorddomain=<expr>inverse_name='res_id' args: 'edi.exchange.record' -
has_expected_edi_configurationBooleancompute='_compute_expected_edi_configuration'
-
action_view_edi_records(self) -
edi_create_exchange_record(self, exchange_type_id) -
fields_view_get(self, view_id=None, view_type='form', toolbar=False, submenu=False)@api.model -
get_edi_access(self, doc_ids, operation, model_name=False)@api.modelRetrieve access policy. The behavior is similar to `mail.thread` and `mail.message` and it relies on the access rules defines on the related record. The behavior can be customized on the related model by defining `_edi_exchange_record_access`. By default `write`, otherwise the custom permission is returned.
New fields (20)
-
ack_exchange_idMany2one → edi.exchange.recordcomodel_name='edi.exchange.record'compute='_compute_ack_exchange_id'help='ACK for this exchange'store=Truestring='ACK exchange' -
ack_expectedBooleancompute='_compute_ack_expected' -
ack_received_onDatetimerelated='ack_exchange_id.exchanged_on'string='ACK received on' -
backend_idMany2one → edi.backendcomodel_name='edi.backend'required=True -
directionSelectionrelated='type_id.direction' -
edi_exchange_stateSelectiondefault='new'readonly=Trueselection=[('new', 'New'), ('validate_error', 'Error on validation'), ('output_pending', 'Waiting to be sent'), ('output_error_on_send', 'error on send'), ('output_sent', 'Sent'), ('output_sent_and_processed', 'Sent and processed'), ('output_sent_and_error', 'Sent and error'), ('input_pending', 'Waiting to be received'), ('input_received', 'Received'), ('input_receive_error', 'Error on reception'), ('input_processed', 'Processed'), ('input_processed_error', 'Error on process')]string='Exchange state' -
exchange_errorTextreadonly=Truestring='Exchange error' -
exchange_fileBinaryattachment=True -
exchange_file_auto_generateBooleanrelated='type_id.exchange_file_auto_generate' -
exchange_filenameCharcompute='_compute_exchange_filename'readonly=Falsestore=True -
exchanged_onDatetimecompute='_compute_exchanged_on'help='Sent or received on this date.'readonly=Falsestore=Truestring='Exchanged on' -
external_identifierCharindex=Truereadonly=True -
identifierCharindex=Truereadonly=Truerequired=True -
modelCharindex=Truereadonly=Truerequired=False -
nameCharcompute='_compute_name' -
parent_idMany2one → edi.exchange.recordcomodel_name='edi.exchange.record'help='Original exchange which originated this record' -
related_exchange_idsOne2many → edi.exchange.recordcomodel_name='edi.exchange.record'inverse_name='parent_id'string='Related records' -
res_idMany2oneReferenceindex=Truemodel_field='model'readonly=Truerequired=Falsestring='Record' -
retryableBooleancompute='_compute_retryable'help='The record state can be rolled back manually in case of failure.' -
type_idMany2one → edi.exchange.typeauto_join=Truecomodel_name='edi.exchange.type'ondelete='cascade'required=Truestring='Exchange type'
-
action_exchange_generate(self) -
action_exchange_process(self) -
action_exchange_receive(self) -
action_exchange_send(self) -
action_open_related_exchanges(self) -
action_open_related_record(self) -
action_retry(self) -
check_access_rule(self, operation)In order to check if we can access a record, we are checking if we can access the related document -
create(self, vals)@api.model -
name_get(self) -
needs_ack(self) -
read(self, fields=None, load='_classic_read')Override to explicitely call check_access_rule, that is not called by the ORM. It instead directly fetches ir.rules and apply them. -
record(self)@property -
write(self, vals)
New fields (5)
-
backend_idMany2one → edi.backendrequired=True args: 'edi.backend' -
backend_type_idMany2one → edi.backend.typerelated='exchange_type_id.backend_type_id' args: 'edi.backend.type' -
exchange_type_idMany2one → edi.exchange.typerequired=True args: 'edi.exchange.type' -
modelCharrequired=True -
res_idIntegerrequired=True
-
create_edi(self)
New fields (14)
-
ack_type_idMany2one → edi.exchange.typecomodel_name='edi.exchange.type'help='Identify the type of the ack. If this field is valued it means an hack is expected.'ondelete='set null'string='Ack exchange type' -
advanced_settings_editTexthelp='\n Advanced technical settings as YAML format.\n The YAML structure should reproduce a dictionary.\n The backend might use these settings for automated operations.\n\n Currently supported conf:\n\n components:\n generate:\n usage: $comp_usage\n work_ctx:\n opt1: True\n validate:\n usage: $comp_usage\n check:\n usage: $comp_usage\n send:\n usage: $comp_usage\n receive:\n usage: $comp_usage\n process:\n usage: $comp_usage\n\n In any case, you can use these settings\n to provide your own configuration for whatever need you might have.\n 'string='Advanced YAML settings' -
backend_idMany2one → edi.backendcomodel_name='edi.backend'ondelete='set null'string='Backend' -
backend_type_idMany2one → edi.backend.typecomodel_name='edi.backend.type'ondelete='restrict'required=Truestring='Backend type' -
codeCharrequired=True -
directionSelectionrequired=Trueselection=[('input', 'Input'), ('output', 'Output')] -
enable_domainCharhelp='Filter domain to be checked on Models'string='Enable on domain' -
enable_snippetCharhelp='Snippet of code to be checked on Models,\n You can use `record` and `exchange_type` here.\n It will be executed if variable result has been defined as True\n 'string='Enable on snippet' -
exchange_file_auto_generateBooleanhelp='Auto generate output for records missing their payload. If active, a cron will take care of generating the output when not set yet. ' -
exchange_file_extChar -
exchange_filename_patternChardefault='{record_name}-{type.code}-{dt}' -
job_channel_idMany2one → queue.job.channelcomodel_name='queue.job.channel' -
model_idsMany2many → ir.modelhelp='Modules to be checked for manual EDI generation' args: 'ir.model' -
nameCharrequired=True
-
get_settings(self)