| REPOSITORY | |
|---|---|
| REPOSITORY | OCA/l10n-spain |
| GIT | |
| GIT | https://github.com/OCA/l10n-spain.git |
| GIT FOLDER | |
| GIT FOLDER | https://github.com/OCA/l10n-spain/tree/19.0/l10n_es_aeat |
| VERSION | |
| VERSION | 1.2.0 |
| CATEGORY | |
| CATEGORY | Accounting & Finance |
| LICENSE | |
| LICENSE | AGPL-3 |
| APPLICATION | |
| APPLICATION | No |
| AUTO-INSTALLABLE | |
| AUTO-INSTALLABLE | No |
| AUTHORS | |
| AUTHORS | Tecnativa, Odoo Community Association (OCA), Pexego, Acysos S.L., AvanzOSC |
| MAINTAINERS | |
| MAINTAINERS | Tecnativa, Odoo Community Association (OCA), Pexego, Acysos S.L., AvanzOSC |
| COMMITTERS | |
| COMMITTERS | Weblate, OCA-git-bot, Oihane Crucelaegui, oca-ci, Emilio Pascual, Pablo Cortés |
| WEBSITE | |
| WEBSITE | https://github.com/OCA/l10n-spain |
| LAST TRACKING UPDATE | |
| LAST TRACKING UPDATE | 2026-07-06 01:10:44 |
| ODOO DEPENDENCIES | |
| ODOO DEPENDENCIES |
OCA/account-financial-reporting: - account_tax_balance OCA/server-ux: - date_range odoo/odoo: - l10n_es - account - base_setup - base - web - onboarding - product - bus - web_tour - html_editor - uom - analytic - portal - http_routing - auth_signup - digest - resource - base_iban - base_vat - account_edi_ubl_cii |
| PYTHON DEPENDENCIES | |
| PYTHON DEPENDENCIES |
unidecode |
| SYSTEM DEPENDENCIES | |
| SYSTEM DEPENDENCIES | Not have |
| DESCRIPTION | |
| DESCRIPTION | |
| XML ID | Name | Model | Type | Status |
|---|---|---|---|---|
account_tax_view_form |
account.tax | field | Inherits account.view_tax_form | |
account_tax_view_tree |
account.tax | field | Inherits account.view_tax_tree | |
aeat_model_export_config_form |
aeat.model.export.config.form | aeat.model.export.config | form | New |
aeat_model_export_config_line_form |
aeat.model.export.config.line.form | aeat.model.export.config.line | form | New |
aeat_model_export_config_line_tree |
aeat.model.export.config.line.tree | aeat.model.export.config.line | list | New |
aeat_model_export_config_search |
aeat.model.export.config | search | New | |
aeat_model_export_config_tree |
aeat.model.export.config.tree | aeat.model.export.config | list | New |
aeat_tax_agency_form_view |
aeat.tax.agency.form | aeat.tax.agency | form | New |
aeat_tax_agency_tree_view |
aeat.tax.agency.tree | aeat.tax.agency | list | New |
l10n_es_aeat_certificate_form_view |
l10n.es.aeat.certificate.form | l10n.es.aeat.certificate | form | New |
l10n_es_aeat_certificate_password_wizard_view |
l10n.es.aeat.certificate.password.wizard | l10n.es.aeat.certificate.password | form | New |
l10n_es_aeat_map_tax_form |
l10n.es.aeat.map.tax | form | New | |
l10n_es_aeat_map_tax_line_form |
l10n.es.aeat.map.tax.line | form | New | |
l10n_es_aeat_map_tax_line_tree |
l10n.es.aeat.map.tax.line | list | New | |
l10n_es_aeat_map_tax_tree |
l10n.es.aeat.map.tax | list | New | |
l10n_es_certificate_tree_view |
l10n.es.aeat.certificate.tree | l10n.es.aeat.certificate | list | New |
view_account_journal_form |
account.journal | xpath | Inherits account.view_account_journal_form | |
view_company_aeat_form |
res.company.aeat.form | res.company | notebook | Inherits base.view_company_form |
view_l10n_es_aeat_report_form |
l10n_es.aeat.report.form | l10n.es.aeat.report | form | New |
view_l10n_es_aeat_report_search |
AEAT Model (search) | l10n.es.aeat.report | search | New |
view_l10n_es_aeat_report_tree |
l10n_es.aeat.report.tree | l10n.es.aeat.report | list | New |
view_l10n_es_aeat_tax_line_form |
l10n.es.aeat.tax.line.form | l10n.es.aeat.tax.line | form | New |
view_l10n_es_aeat_tax_line_tree |
l10n.es.aeat.tax.line.tree | l10n.es.aeat.tax.line | list | New |
view_move_form |
account.move | xpath | Inherits account.view_move_form | |
view_move_line_tree |
account.move.line | field | Inherits account.view_move_line_tree | |
view_partner_form |
res.partner | notebook | Inherits account.view_partner_property_form | |
wizard_aeat_export |
Export AEAT BOE file | l10n.es.aeat.report.export_to_boe | form | New |
wizard_compare_boe_file |
Compare BOE file wizard | l10n.es.aeat.report.compare_boe_file | form | New |
aeat_active
Boolean
copy=False
default=True
help='Enable AEAT communication for this fiscal position?'
string='AEAT Active'
No public methods.
tax_agency_id
Many2one → aeat.tax.agency
comodel_name='aeat.tax.agency'
copy=False
help='You can select a tax agency other than the one defined in the company,so you can pay taxes at different agencies.'
string='Tax Agency'
thirdparty_invoice
Boolean
copy=False
string='Third-party invoice'
No public methods.
thirdparty_invoice
Boolean
compute='_compute_thirdparty_invoice'
copy=False
readonly=False
store=True
string='Third-party invoice'
thirdparty_number
Char
copy=False
help='Número de la factura emitida por un tercero.'
index=True
string='Third-party number'
No public methods.
No new fields.
Public methods (0)No public methods.
aeat_equivalent_tax_id
Many2one → account.tax
comodel_name='account.tax'
help='This field is for manually created taxes in order to allow to map them for AEAT reports'
string='Equivalent Tax (for AEAT mapping purposes)'
copy_data(self, default=None)
create(self, vals_list)
unlink(self)
aeat_content_sent
Text
copy=False
readonly=True
string='AEAT last content sent'
aeat_header_sent
Text
copy=False
readonly=True
string='AEAT last header sent'
aeat_send_error
Text
copy=False
readonly=True
string='AEAT Send Error'
aeat_send_failed
Boolean
copy=False
help='Indicates that the last attempt to communicate this document to the SII has failed. See SII return for details'
string='SII send failed'
aeat_state
Selection
copy=False
default='not_sent'
help='Indicates the state of this document in relation with the presentation at the AEAT'
readonly=True
selection=AEAT_STATES
string='AEAT send state'
No public methods.
active
Boolean
default=True
config_line_ids
One2many → aeat.model.export.config.line
comodel_name='aeat.model.export.config.line'
inverse_name='export_config_id'
string='Lines'
date_end
Date
string='Ending date'
date_start
Date
string='Starting date'
model_id
Many2one → ir.model
comodel_name='ir.model'
string='Odoo model'
model_number
Char
size=3
name
Char
No public methods.
alignment
Selection
compute='_compute_alignment'
readonly=False
selection=[('left', 'Left'), ('right', 'Right')]
store=True
apply_sign
Boolean
compute='_compute_apply_sign'
readonly=False
store=True
bool_no
Char
default=' '
size=1
string='Value for no'
bool_yes
Char
default='X'
size=1
string='Value for yes'
conditional
Boolean
compute='_compute_conditional'
store=True
conditional_expression
Char
help='If set, this expression will be used to evaluate if this line should be added'
decimal_size
Integer
compute='_compute_decimal_size'
readonly=False
store=True
string='Number of char for decimals'
export_config_id
Many2one → aeat.model.export.config
comodel_name='aeat.model.export.config'
ondelete='cascade'
required=True
string='Config parent'
export_type
Selection
default='string'
required=True
selection=[('string', 'Alphanumeric'), ('alphabetic', 'Alphabetic'), ('float', 'Number with decimals'), ('integer', 'Number without decimals'), ('boolean', 'Boolean'), ('subconfig', 'Sub-configuration')]
string='Export field type'
expression
Char
fixed_value
Char
name
Char
required=True
negative_sign
Char
default='N'
size=1
string='Negative sign character'
position
Integer
compute='_compute_position'
positive_sign
Char
default='0'
size=1
string='Positive sign character'
repeat
Boolean
compute='_compute_repeat'
store=True
repeat_expression
Char
help='If set, this expression will be used for getting the list of elements to iterate on'
sequence
Integer
size
Integer
string='Field size'
subconfig_id
Many2one → aeat.model.export.config
comodel_name='aeat.model.export.config'
string='Sub-configuration'
value
Char
compute='_compute_value'
store=True
No public methods.
name
Char
required=True
No public methods.
No new fields.
Public methods (3)aeat_cancel_now(self)
aeat_do_now(self)
aeat_reschedule_sudo(self)
company_id
Many2one → res.company
comodel_name='res.company'
default=<expr>
required=True
string='Company'
date_end
Date
string='End Date'
date_start
Date
string='Start Date'
file
Binary
required=True
folder
Char
required=True
string='Folder Name'
name
Char
private_key
Char
readonly=True
public_key
Char
readonly=True
public_key_data
Text
readonly=True
store=False
public_key_file
Binary
attachment=False
compute='_compute_public_key'
groups='l10n_es_aeat.group_account_aeat'
readonly=True
store=False
public_key_filename
Char
compute='_compute_public_key'
groups='l10n_es_aeat.group_account_aeat'
readonly=True
store=False
show_public_key
Boolean
store=False
state
Selection
default='draft'
selection=[('draft', 'Draft'), ('active', 'Active')]
action_active(self)
get_certificates(self, company=False)
get_public_key_pem(self)
load_password_wizard(self)
onchange_public_key_data(self)
password
Char
required=True
get_keys(self)
date_from
Date
string='From Date'
date_from_search
Date
compute='_compute_date_from_search'
store=True
date_to
Date
string='To Date'
date_to_search
Date
compute='_compute_date_to_search'
store=True
map_line_ids
One2many → l10n.es.aeat.map.tax.line
comodel_name='l10n.es.aeat.map.tax.line'
inverse_name='map_parent_id'
required=True
string='Map lines'
model
Integer
required=True
string='AEAT Model'
No public methods.
account_xmlid_ids
Many2many → l10n.es.aeat.map.tax.line.account
comodel_name='l10n.es.aeat.map.tax.line.account'
string='Account Template'
exigible_type
Selection
default='yes'
required=True
selection=[('yes', 'Only exigible amounts'), ('no', 'Only non-exigible amounts'), ('both', 'Both exigible and non-exigible amounts')]
string='Exigibility'
field_number
Integer
required=True
field_type
Selection
default='amount'
required=True
selection=[('base', 'Base'), ('amount', 'Amount'), ('both', 'Both')]
inverse
Boolean
default=False
string='Inverse summarize sign'
map_parent_id
Many2one → l10n.es.aeat.map.tax
comodel_name='l10n.es.aeat.map.tax'
required=True
move_type
Selection
default='all'
required=True
selection=[('all', 'All'), ('regular', 'Regular'), ('refund', 'Refund')]
string='Operation type'
name
Char
required=True
sum_type
Selection
default='both'
required=True
selection=[('credit', 'Credit'), ('debit', 'Debit'), ('both', 'Both (Credit - Debit)')]
string='Summarize type'
tax_xmlid_ids
Many2many → l10n.es.aeat.map.tax.line.tax
comodel_name='l10n.es.aeat.map.tax.line.tax'
string='Taxes templates'
to_regularize
Boolean
get_accounts_for_company(self, company)
get_taxes_for_company(self, company)
name
Char
No public methods.
name
Char
No public methods.
allow_posting
Boolean
compute='_compute_allow_posting'
calculation_date
Datetime
company_id
Many2one → res.company
comodel_name='res.company'
default=<expr>
required=True
string='Company'
company_vat
Char
required=True
size=9
string='VAT number'
contact_email
Char
size=50
contact_name
Char
help='Must have name and surname.'
readonly=True
required=True
size=40
string='Full Name'
contact_phone
Char
required=True
size=9
string='Phone'
counterpart_account_id
Many2one → account.account
comodel_name='account.account'
help='This account will be the counterpart for all the journal items that are regularized when posting the report.'
string='Counterpart account'
currency_id
Many2one → res.currency
comodel_name='res.currency'
readonly=True
related='company_id.currency_id'
string='Currency'
date_end
Date
compute='_compute_dates'
required=True
store=True
string='Ending date'
date_start
Date
compute='_compute_dates'
required=True
store=True
string='Starting date'
error_count
Integer
compute='_compute_error_count'
export_config_id
Many2one → aeat.model.export.config
comodel_name='aeat.model.export.config'
compute='_compute_export_config_id'
domain=<expr>
readonly=False
store=True
string='Export config'
journal_id
Many2one → account.journal
comodel_name='account.journal'
default=<expr>
domain="[('type', '=', 'general'), ('company_id', '=', company_id)]"
help='Journal in which post the move.'
string='Journal'
move_id
Many2one → account.move
comodel_name='account.move'
domain=[('type', '=', 'entry')]
readonly=True
string='Account entry'
name
Char
copy=False
size=13
string='Report identifier'
number
Char
default=<expr>
readonly=True
required=True
size=3
string='Model number'
partner_bank_id
Many2one → res.partner.bank
comodel_name='res.partner.bank'
domain="[('acc_type', '=', 'iban'), ('partner_id', '=', partner_id)]"
help='Company bank account used for the presentation'
string='Bank account'
partner_id
Many2one → res.partner
comodel_name='res.partner'
readonly=True
related='company_id.partner_id'
string='Partner'
period_type
Selection
default=<expr>
required=True
selection='get_period_type_selection'
previous_number
Char
size=13
string='Previous declaration number'
representative_vat
Char
compute='_compute_representative_vat'
help='Legal Representative VAT number.'
readonly=False
size=9
store=True
string='L.R. VAT number'
state
Selection
default='draft'
readonly=True
selection=[('draft', 'Draft'), ('calculated', 'Processed'), ('done', 'Done'), ('posted', 'Posted'), ('cancelled', 'Cancelled')]
tracking=True
statement_type
Selection
default='N'
required=True
selection=[('N', 'Normal'), ('C', 'Complementary'), ('S', 'Substitutive')]
support_type
Selection
default='T'
required=True
selection=[('C', 'DVD'), ('T', 'Telematics')]
tax_agency_ids
Many2many → aeat.tax.agency
string='Tax Agency'
args: 'aeat.tax.agency'
year
Integer
default=<expr>
required=True
button_calculate(self)
button_cancel(self)
button_confirm(self)
button_export(self)
button_open_move(self)
button_post(self)
button_recalculate(self)
button_recover(self)
button_unpost(self)
calculate(self)
create(self, vals_list)
get_html(self)
get_period_type_selection(self)
onchange_company_id(self)
unlink(self)
data
Binary
required=True
string='File'
line_ids
One2many → l10n.es.aeat.report.compare_boe_file.line
comodel_name='l10n.es.aeat.report.compare_boe_file.line'
inverse_name='wizard_id'
string='Lines'
state
Selection
default='open'
selection=[('open', 'open'), ('compare', 'compare')]
button_compare_file(self)
content
Char
content_float
Float
compute='_compute_content_float'
string='Amount'
export_line_id
Many2one → aeat.model.export.config.line
comodel_name='aeat.model.export.config.line'
ondelete='cascade'
readonly=True
required=True
string='Export line'
name
Char
readonly=True
related='export_line_id.name'
string='Name'
sequence
Integer
readonly=True
related='export_line_id.sequence'
string='Sequence'
wizard_id
Many2one → l10n.es.aeat.report.compare_boe_file
comodel_name='l10n.es.aeat.report.compare_boe_file'
ondelete='cascade'
readonly=True
required=True
string='Wizard'
No public methods.
data
Binary
readonly=True
string='File'
name
Char
readonly=True
string='File name'
state
Selection
default='open'
selection=[('open', 'open'), ('get', 'get')]
action_get_file(self)
action_get_file_from_config(self, report)
tax_line_ids
One2many → l10n.es.aeat.tax.line
bypass_search_access=True
comodel_name='l10n.es.aeat.tax.line'
domain=<expr>
inverse_name='res_id'
readonly=True
string='Tax lines'
valued_tax_line_ids
One2many → l10n.es.aeat.tax.line
bypass_search_access=True
comodel_name='l10n.es.aeat.tax.line'
domain=<expr>
inverse_name='res_id'
readonly=True
string='Valued tax lines'
calculate(self)
create_regularization_move(self)
unlink(self)
No new fields.
Public methods (4)connect_soap(self, wsdl, model)
connect_wsdl(self, service, wsdl, port_name, model)
get_test_mode(self, port_name, model)
send_soap(self, service, wsdl, port_name, model, operation, *args)
amount
Float
digits='Account'
field_number
Integer
readonly=True
related='map_line_id.field_number'
store=True
string='Field number'
map_line_id
Many2one → l10n.es.aeat.map.tax.line
comodel_name='l10n.es.aeat.map.tax.line'
ondelete='cascade'
required=True
string='Map line'
model
Char
index=True
readonly=True
required=True
string='Model name'
move_line_ids
Many2many → account.move.line
comodel_name='account.move.line'
string='Journal items'
name
Char
readonly=True
related='map_line_id.name'
store=True
string='Name'
res_id
Integer
index=True
required=True
string='Resource ID'
to_regularize
Boolean
readonly=True
related='map_line_id.to_regularize'
get_calculated_move_lines(self)
representative_vat
Char
help='Legal Representative VAT number for all the AEAT reports of this company.'
size=9
string='L.R. VAT number'
tax_agency_id
Many2one → aeat.tax.agency
string='Tax Agency'
args: 'aeat.tax.agency'
create(self, vals_list)
aeat_anonymous_cash_customer
Boolean
help='Check this for anonymous cash customer. AEAT communication'
string='AEAT - Anonymous customer'
aeat_identification
Char
help='Identification for AEAT purposes'
aeat_identification_type
Selection
help="Used to specify an identification type to send to AEAT. Normally for sending national and export invoices to AEAT where the customer country is not Spain, it would calculate an identification type of 04 if the VAT field is filled and 06 if it was not. This field is to specify types of 03 through 05, in the event that the customer doesn't identify with a foreign VAT and instead with their passport or residential certificate. If there is no value it will work as before."
selection=[('03', 'Passport'), ('05', 'Residential certificate'), ('06', 'Another document')]
string='AEAT Identification type'
aeat_sending_enabled
Boolean
compute='_compute_aeat_sending_enabled'
aeat_simplified_invoice
Boolean
help='Checking this mark, invoices done to this partner will be sent to AEAT as simplified invoices.'
string='Simplified invoices in AEAT?'
No public methods.
acc_type
Selection
store=True
No public methods.
| REPOSITORY | |
|---|---|
| REPOSITORY | OCA/l10n-spain |
| GIT | |
| GIT | https://github.com/OCA/l10n-spain.git |
| GIT FOLDER | |
| GIT FOLDER | https://github.com/OCA/l10n-spain/tree/18.0/l10n_es_aeat |
| VERSION | |
| VERSION | 2.3.0 |
| CATEGORY | |
| CATEGORY | Accounting & Finance |
| LICENSE | |
| LICENSE | AGPL-3 |
| APPLICATION | |
| APPLICATION | No |
| AUTO-INSTALLABLE | |
| AUTO-INSTALLABLE | No |
| AUTHORS | |
| AUTHORS | Tecnativa, Odoo Community Association (OCA), Pexego, Acysos S.L., AvanzOSC |
| MAINTAINERS | |
| MAINTAINERS | Tecnativa, Odoo Community Association (OCA), Pexego, Acysos S.L., AvanzOSC |
| COMMITTERS | |
| COMMITTERS | Pedro M. Baeza, Enric Tobella, AaronHForgeFlow, Omar (Comunitea), Weblate, OCA-git-bot, Oihane Crucelaegui, oca-ci, Emilio Pascual, Luis Rodriguez, Carlos Sainz-Pardo |
| WEBSITE | |
| WEBSITE | https://github.com/OCA/l10n-spain |
| LAST TRACKING UPDATE | |
| LAST TRACKING UPDATE | 2026-07-05 23:09:21 |
| ODOO DEPENDENCIES | |
| ODOO DEPENDENCIES |
OCA/account-financial-reporting: - account_tax_balance OCA/server-ux: - date_range odoo/odoo: - l10n_es - account - base_setup - base - web - onboarding - product - bus - web_tour - html_editor - uom - analytic - portal - web_editor - http_routing - auth_signup - digest - resource - base_iban - base_vat |
| PYTHON DEPENDENCIES | |
| PYTHON DEPENDENCIES |
unidecode |
| SYSTEM DEPENDENCIES | |
| SYSTEM DEPENDENCIES | Not have |
| DESCRIPTION | |
| DESCRIPTION | |
| XML ID | Name | Model | Type | Status |
|---|---|---|---|---|
account_tax_view_form |
account.tax | field | Inherits account.view_tax_form | |
account_tax_view_tree |
account.tax | field | Inherits account.view_tax_tree | |
aeat_model_export_config_form |
aeat.model.export.config.form | aeat.model.export.config | form | New |
aeat_model_export_config_line_form |
aeat.model.export.config.line.form | aeat.model.export.config.line | form | New |
aeat_model_export_config_line_tree |
aeat.model.export.config.line.tree | aeat.model.export.config.line | list | New |
aeat_model_export_config_search |
aeat.model.export.config | search | New | |
aeat_model_export_config_tree |
aeat.model.export.config.tree | aeat.model.export.config | list | New |
aeat_tax_agency_form_view |
aeat.tax.agency.form | aeat.tax.agency | form | New |
aeat_tax_agency_tree_view |
aeat.tax.agency.tree | aeat.tax.agency | list | New |
l10n_es_aeat_certificate_form_view |
l10n.es.aeat.certificate.form | l10n.es.aeat.certificate | form | New |
l10n_es_aeat_certificate_password_wizard_view |
l10n.es.aeat.certificate.password.wizard | l10n.es.aeat.certificate.password | form | New |
l10n_es_aeat_map_tax_form |
l10n.es.aeat.map.tax | form | New | |
l10n_es_aeat_map_tax_line_form |
l10n.es.aeat.map.tax.line | form | New | |
l10n_es_aeat_map_tax_line_tree |
l10n.es.aeat.map.tax.line | list | New | |
l10n_es_aeat_map_tax_tree |
l10n.es.aeat.map.tax | list | New | |
l10n_es_aeat_real_estate_form |
l10n.es.aeat.real.estate.form | l10n.es.aeat.real_estate | form | New |
l10n_es_aeat_real_estate_search |
l10n.es.aeat.real.estate.search | l10n.es.aeat.real_estate | search | New |
l10n_es_aeat_real_estate_tree |
l10n.es.aeat.real.estate.tree | l10n.es.aeat.real_estate | list | New |
l10n_es_certificate_tree_view |
l10n.es.aeat.certificate.tree | l10n.es.aeat.certificate | list | New |
view_account_journal_form |
account.journal | xpath | Inherits account.view_account_journal_form | |
view_company_aeat_form |
res.company.aeat.form | res.company | notebook | Inherits base.view_company_form |
view_l10n_es_aeat_report_form |
l10n_es.aeat.report.form | l10n.es.aeat.report | form | New |
view_l10n_es_aeat_report_search |
AEAT Model (search) | l10n.es.aeat.report | search | New |
view_l10n_es_aeat_report_tree |
l10n_es.aeat.report.tree | l10n.es.aeat.report | list | New |
view_l10n_es_aeat_tax_line_form |
l10n.es.aeat.tax.line.form | l10n.es.aeat.tax.line | form | New |
view_l10n_es_aeat_tax_line_tree |
l10n.es.aeat.tax.line.tree | l10n.es.aeat.tax.line | list | New |
view_move_form |
account.move | xpath | Inherits account.view_move_form | |
view_move_line_tree |
account.move.line | field | Inherits account.view_move_line_tree | |
view_partner_form |
res.partner | notebook | Inherits account.view_partner_property_form | |
wizard_aeat_export |
Export AEAT BOE file | l10n.es.aeat.report.export_to_boe | form | New |
wizard_compare_boe_file |
Compare BOE file wizard | l10n.es.aeat.report.compare_boe_file | form | New |
aeat_active
Boolean
copy=False
default=True
help='Enable AEAT communication for this fiscal position?'
string='AEAT Active'
No public methods.
l10n_es_aeat_real_estate_id
Many2one → l10n.es.aeat.real_estate
comodel_name='l10n.es.aeat.real_estate'
readonly=True
string='Real Estate'
No public methods.
tax_agency_id
Many2one → aeat.tax.agency
comodel_name='aeat.tax.agency'
copy=False
help='You can select a tax agency other than the one defined in the company,so you can pay taxes at different agencies.'
string='Tax Agency'
thirdparty_invoice
Boolean
copy=False
string='Third-party invoice'
No public methods.
thirdparty_invoice
Boolean
compute='_compute_thirdparty_invoice'
copy=False
readonly=False
store=True
string='Third-party invoice'
thirdparty_number
Char
copy=False
help='Número de la factura emitida por un tercero.'
index=True
string='Third-party number'
No public methods.
l10n_es_aeat_real_estate_id
Many2one → l10n.es.aeat.real_estate
comodel_name='l10n.es.aeat.real_estate'
domain="[('company_id', '=', company_id), ('partner_id', '=', partner_id)]"
help='Real Estate related to this move line'
string='Real Estate'
No public methods.
aeat_equivalent_tax_id
Many2one → account.tax
comodel_name='account.tax'
help='This field is for manually created taxes in order to allow to map them for AEAT reports'
string='Equivalent Tax (for AEAT mapping purposes)'
copy_data(self, default=None)
create(self, vals_list)
unlink(self)
aeat_content_sent
Text
copy=False
readonly=True
string='AEAT last content sent'
aeat_header_sent
Text
copy=False
readonly=True
string='AEAT last header sent'
aeat_send_error
Text
copy=False
readonly=True
string='AEAT Send Error'
aeat_send_failed
Boolean
copy=False
help='Indicates that the last attempt to communicate this document to the SII has failed. See SII return for details'
string='SII send failed'
aeat_state
Selection
copy=False
default='not_sent'
help='Indicates the state of this document in relation with the presentation at the AEAT'
readonly=True
selection=AEAT_STATES
string='AEAT send state'
No public methods.
active
Boolean
default=True
config_line_ids
One2many → aeat.model.export.config.line
comodel_name='aeat.model.export.config.line'
inverse_name='export_config_id'
string='Lines'
date_end
Date
string='Ending date'
date_start
Date
string='Starting date'
model_id
Many2one → ir.model
comodel_name='ir.model'
string='Odoo model'
model_number
Char
size=3
name
Char
No public methods.
alignment
Selection
compute='_compute_alignment'
readonly=False
selection=[('left', 'Left'), ('right', 'Right')]
store=True
apply_sign
Boolean
compute='_compute_apply_sign'
readonly=False
store=True
bool_no
Char
default=' '
size=1
string='Value for no'
bool_yes
Char
default='X'
size=1
string='Value for yes'
conditional
Boolean
compute='_compute_conditional'
store=True
conditional_expression
Char
help='If set, this expression will be used to evaluate if this line should be added'
decimal_size
Integer
compute='_compute_decimal_size'
readonly=False
store=True
string='Number of char for decimals'
export_config_id
Many2one → aeat.model.export.config
comodel_name='aeat.model.export.config'
ondelete='cascade'
required=True
string='Config parent'
export_type
Selection
default='string'
required=True
selection=[('string', 'Alphanumeric'), ('alphabetic', 'Alphabetic'), ('float', 'Number with decimals'), ('integer', 'Number without decimals'), ('boolean', 'Boolean'), ('subconfig', 'Sub-configuration')]
string='Export field type'
expression
Char
fixed_value
Char
name
Char
required=True
negative_sign
Char
default='N'
size=1
string='Negative sign character'
position
Integer
compute='_compute_position'
positive_sign
Char
default='0'
size=1
string='Positive sign character'
repeat
Boolean
compute='_compute_repeat'
store=True
repeat_expression
Char
help='If set, this expression will be used for getting the list of elements to iterate on'
sequence
Integer
size
Integer
string='Field size'
subconfig_id
Many2one → aeat.model.export.config
comodel_name='aeat.model.export.config'
string='Sub-configuration'
value
Char
compute='_compute_value'
store=True
No public methods.
name
Char
required=True
No public methods.
No new fields.
Public methods (3)aeat_cancel_now(self)
aeat_do_now(self)
aeat_reschedule_sudo(self)
company_id
Many2one → res.company
comodel_name='res.company'
default=<expr>
required=True
string='Company'
date_end
Date
string='End Date'
date_start
Date
string='Start Date'
file
Binary
required=True
folder
Char
required=True
string='Folder Name'
name
Char
private_key
Char
readonly=True
public_key
Char
readonly=True
public_key_data
Text
readonly=True
store=False
public_key_file
Binary
attachment=False
compute='_compute_public_key'
groups='l10n_es_aeat.group_account_aeat'
readonly=True
store=False
public_key_filename
Char
compute='_compute_public_key'
groups='l10n_es_aeat.group_account_aeat'
readonly=True
store=False
show_public_key
Boolean
store=False
state
Selection
default='draft'
selection=[('draft', 'Draft'), ('active', 'Active')]
action_active(self)
get_certificates(self, company=False)
get_public_key_pem(self)
load_password_wizard(self)
onchange_public_key_data(self)
password
Char
required=True
get_keys(self)
date_from
Date
string='From Date'
date_from_search
Date
compute='_compute_date_from_search'
store=True
date_to
Date
string='To Date'
date_to_search
Date
compute='_compute_date_to_search'
store=True
map_line_ids
One2many → l10n.es.aeat.map.tax.line
comodel_name='l10n.es.aeat.map.tax.line'
inverse_name='map_parent_id'
required=True
string='Map lines'
model
Integer
required=True
string='AEAT Model'
name_get(self)
account_xmlid_ids
Many2many → l10n.es.aeat.map.tax.line.account
comodel_name='l10n.es.aeat.map.tax.line.account'
string='Account Template'
exigible_type
Selection
default='yes'
required=True
selection=[('yes', 'Only exigible amounts'), ('no', 'Only non-exigible amounts'), ('both', 'Both exigible and non-exigible amounts')]
string='Exigibility'
field_number
Integer
required=True
field_type
Selection
default='amount'
required=True
selection=[('base', 'Base'), ('amount', 'Amount'), ('both', 'Both')]
inverse
Boolean
default=False
string='Inverse summarize sign'
map_parent_id
Many2one → l10n.es.aeat.map.tax
comodel_name='l10n.es.aeat.map.tax'
required=True
move_type
Selection
default='all'
required=True
selection=[('all', 'All'), ('regular', 'Regular'), ('refund', 'Refund')]
string='Operation type'
name
Char
required=True
sum_type
Selection
default='both'
required=True
selection=[('credit', 'Credit'), ('debit', 'Debit'), ('both', 'Both (Credit - Debit)')]
string='Summarize type'
tax_xmlid_ids
Many2many → l10n.es.aeat.map.tax.line.tax
comodel_name='l10n.es.aeat.map.tax.line.tax'
string='Taxes templates'
to_regularize
Boolean
get_accounts_for_company(self, company)
get_taxes_for_company(self, company)
name
Char
No public methods.
name
Char
No public methods.
active
Boolean
default=True
address
Char
required=True
size=50
address_type
Selection
default='CALLE'
help='Valid AEAT Address type'
required=True
selection=AEAT_ADDRESS_TYPES
block
Char
size=3
check_ok
Boolean
compute='_compute_check_ok'
help='Checked if this record is OK'
store=True
string='Record is OK'
city
Char
required=True
size=30
company_id
Many2one → res.company
comodel_name='res.company'
default=<expr>
required=True
string='Company'
complement
Char
help='Complement (urbanization, industrial park...)'
size=40
country_id
Many2one → res.country
comodel_name='res.country'
default=<expr>
string='Country'
door
Char
size=3
error_text
Char
compute='_compute_check_ok'
store=True
string='Errors'
floor
Char
size=3
name
Char
required=True
number
Integer
number_calification
Selection
selection=[('BIS', 'Bis'), ('MOD', 'Mod'), ('DUP', 'Dup'), ('ANT', 'Ant')]
number_type
Selection
default='NUM'
required=True
selection=[('NUM', 'Number'), ('KM.', 'Kilometer'), ('S/N', 'Without number')]
partner_id
Many2one → res.partner
help='Partner that owns this real estate'
required=True
string='Partner'
args: 'res.partner'
portal
Char
size=3
real_estate_situation
Selection
compute='_compute_real_estate_situation'
readonly=False
store=True
args: [('1', '01'), ('2', '02'), ('3', '03'), ('4', '04')]
reference
Char
size=25
string='Catastral Reference'
representative_vat
Char
compute='_compute_representative_vat'
help='Legal Representative VAT number of the real estate'
readonly=False
size=32
store=True
string='L.R. VAT number'
stairway
Char
size=3
state_id
Many2one → res.country.state
comodel_name='res.country.state'
zip
Char
readonly=False
required=True
size=5
No public methods.
allow_posting
Boolean
compute='_compute_allow_posting'
calculation_date
Datetime
company_id
Many2one → res.company
comodel_name='res.company'
default=<expr>
required=True
string='Company'
company_vat
Char
required=True
size=9
string='VAT number'
contact_email
Char
size=50
contact_name
Char
help='Must have name and surname.'
readonly=True
required=True
size=40
string='Full Name'
contact_phone
Char
required=True
size=9
string='Phone'
counterpart_account_id
Many2one → account.account
comodel_name='account.account'
help='This account will be the counterpart for all the journal items that are regularized when posting the report.'
string='Counterpart account'
currency_id
Many2one → res.currency
comodel_name='res.currency'
readonly=True
related='company_id.currency_id'
string='Currency'
date_end
Date
compute='_compute_dates'
required=True
store=True
string='Ending date'
date_start
Date
compute='_compute_dates'
required=True
store=True
string='Starting date'
error_count
Integer
compute='_compute_error_count'
export_config_id
Many2one → aeat.model.export.config
comodel_name='aeat.model.export.config'
compute='_compute_export_config_id'
domain=<expr>
readonly=False
store=True
string='Export config'
journal_id
Many2one → account.journal
comodel_name='account.journal'
default=_default_journal
domain="[('type', '=', 'general'), ('company_id', '=', company_id)]"
help='Journal in which post the move.'
string='Journal'
move_id
Many2one → account.move
comodel_name='account.move'
domain=[('type', '=', 'entry')]
readonly=True
string='Account entry'
name
Char
copy=False
size=13
string='Report identifier'
number
Char
default=_default_number
readonly=True
required=True
size=3
string='Model number'
partner_bank_id
Many2one → res.partner.bank
comodel_name='res.partner.bank'
domain="[('acc_type', '=', 'iban'), ('partner_id', '=', partner_id)]"
help='Company bank account used for the presentation'
string='Bank account'
partner_id
Many2one → res.partner
comodel_name='res.partner'
readonly=True
related='company_id.partner_id'
string='Partner'
period_type
Selection
default=_default_period_type
required=True
selection='get_period_type_selection'
previous_number
Char
size=13
string='Previous declaration number'
representative_vat
Char
compute='_compute_representative_vat'
help='Legal Representative VAT number.'
readonly=False
size=9
store=True
string='L.R. VAT number'
state
Selection
default='draft'
readonly=True
selection=[('draft', 'Draft'), ('calculated', 'Processed'), ('done', 'Done'), ('posted', 'Posted'), ('cancelled', 'Cancelled')]
tracking=True
statement_type
Selection
default='N'
required=True
selection=[('N', 'Normal'), ('C', 'Complementary'), ('S', 'Substitutive')]
support_type
Selection
default='T'
required=True
selection=[('C', 'DVD'), ('T', 'Telematics')]
tax_agency_ids
Many2many → aeat.tax.agency
string='Tax Agency'
args: 'aeat.tax.agency'
year
Integer
default=_default_year
required=True
button_calculate(self)
button_cancel(self)
button_confirm(self)
button_export(self)
button_open_move(self)
button_post(self)
button_recalculate(self)
button_recover(self)
button_unpost(self)
calculate(self)
create(self, vals_list)
get_html(self)
get_period_type_selection(self)
onchange_company_id(self)
unlink(self)
data
Binary
required=True
string='File'
line_ids
One2many → l10n.es.aeat.report.compare_boe_file.line
comodel_name='l10n.es.aeat.report.compare_boe_file.line'
inverse_name='wizard_id'
string='Lines'
state
Selection
default='open'
selection=[('open', 'open'), ('compare', 'compare')]
button_compare_file(self)
content
Char
content_float
Float
compute='_compute_content_float'
string='Amount'
export_line_id
Many2one → aeat.model.export.config.line
comodel_name='aeat.model.export.config.line'
ondelete='cascade'
readonly=True
required=True
string='Export line'
name
Char
readonly=True
related='export_line_id.name'
string='Name'
sequence
Integer
readonly=True
related='export_line_id.sequence'
string='Sequence'
wizard_id
Many2one → l10n.es.aeat.report.compare_boe_file
comodel_name='l10n.es.aeat.report.compare_boe_file'
ondelete='cascade'
readonly=True
required=True
string='Wizard'
No public methods.
data
Binary
readonly=True
string='File'
name
Char
readonly=True
string='File name'
state
Selection
default='open'
selection=[('open', 'open'), ('get', 'get')]
action_get_file(self)
action_get_file_from_config(self, report)
tax_line_ids
One2many → l10n.es.aeat.tax.line
auto_join=True
comodel_name='l10n.es.aeat.tax.line'
domain=<expr>
inverse_name='res_id'
readonly=True
string='Tax lines'
valued_tax_line_ids
One2many → l10n.es.aeat.tax.line
auto_join=True
comodel_name='l10n.es.aeat.tax.line'
domain=<expr>
inverse_name='res_id'
readonly=True
string='Valued tax lines'
calculate(self)
create_regularization_move(self)
unlink(self)
No new fields.
Public methods (4)connect_soap(self, wsdl, model)
connect_wsdl(self, service, wsdl, port_name, model)
get_test_mode(self, port_name, model)
send_soap(self, service, wsdl, port_name, model, operation, *args)
amount
Float
digits='Account'
field_number
Integer
readonly=True
related='map_line_id.field_number'
store=True
string='Field number'
map_line_id
Many2one → l10n.es.aeat.map.tax.line
comodel_name='l10n.es.aeat.map.tax.line'
ondelete='cascade'
required=True
string='Map line'
model
Char
index=True
readonly=True
required=True
string='Model name'
move_line_ids
Many2many → account.move.line
comodel_name='account.move.line'
string='Journal items'
name
Char
readonly=True
related='map_line_id.name'
store=True
string='Name'
res_id
Integer
index=True
required=True
string='Resource ID'
to_regularize
Boolean
readonly=True
related='map_line_id.to_regularize'
get_calculated_move_lines(self)
representative_vat
Char
help='Legal Representative VAT number for all the AEAT reports of this company.'
size=9
string='L.R. VAT number'
tax_agency_id
Many2one → aeat.tax.agency
string='Tax Agency'
args: 'aeat.tax.agency'
create(self, vals_list)
aeat_anonymous_cash_customer
Boolean
help='Check this for anonymous cash customer. AEAT communication'
string='AEAT - Anonymous customer'
aeat_identification
Char
help='Identification for AEAT purposes'
aeat_identification_type
Selection
help="Used to specify an identification type to send to AEAT. Normally for sending national and export invoices to AEAT where the customer country is not Spain, it would calculate an identification type of 04 if the VAT field is filled and 06 if it was not. This field is to specify types of 03 through 05, in the event that the customer doesn't identify with a foreign VAT and instead with their passport or residential certificate. If there is no value it will work as before."
selection=[('03', 'Passport'), ('05', 'Residential certificate'), ('06', 'Another document')]
string='AEAT Identification type'
aeat_sending_enabled
Boolean
compute='_compute_aeat_sending_enabled'
aeat_simplified_invoice
Boolean
help='Checking this mark, invoices done to this partner will be sent to AEAT as simplified invoices.'
string='Simplified invoices in AEAT?'
real_estate_ids
One2many → l10n.es.aeat.real_estate
No public methods.
acc_type
Selection
store=True
No public methods.
| REPOSITORY | |
|---|---|
| REPOSITORY | OCA/l10n-spain |
| GIT | |
| GIT | https://github.com/OCA/l10n-spain.git |
| GIT FOLDER | |
| GIT FOLDER | https://github.com/OCA/l10n-spain/tree/17.0/l10n_es_aeat |
| VERSION | |
| VERSION | 2.7.0 |
| CATEGORY | |
| CATEGORY | Accounting & Finance |
| LICENSE | |
| LICENSE | AGPL-3 |
| APPLICATION | |
| APPLICATION | No |
| AUTO-INSTALLABLE | |
| AUTO-INSTALLABLE | No |
| AUTHORS | |
| AUTHORS | Tecnativa, Odoo Community Association (OCA), Pexego, Acysos S.L., AvanzOSC |
| MAINTAINERS | |
| MAINTAINERS | Tecnativa, Odoo Community Association (OCA), Pexego, Acysos S.L., AvanzOSC |
| COMMITTERS | |
| COMMITTERS | Pedro M. Baeza, manu, sergio-teruel, Weblate, OCA-git-bot, Oihane Crucelaegui, valen, oca-ci, Emilio Pascual, EmilioPascual, Ignacio, Christian-RB, extrememicro |
| WEBSITE | |
| WEBSITE | https://github.com/OCA/l10n-spain |
| LAST TRACKING UPDATE | |
| LAST TRACKING UPDATE | 2026-07-06 00:59:24 |
| ODOO DEPENDENCIES | |
| ODOO DEPENDENCIES |
OCA/account-financial-reporting: - account_tax_balance OCA/server-ux: - date_range odoo/odoo: - l10n_es - account - base_setup - base - web - onboarding - product - bus - web_tour - uom - analytic - portal - web_editor - http_routing - auth_signup - digest - resource - base_iban - base_vat |
| PYTHON DEPENDENCIES | |
| PYTHON DEPENDENCIES |
unidecode |
| SYSTEM DEPENDENCIES | |
| SYSTEM DEPENDENCIES | Not have |
| DESCRIPTION | |
| DESCRIPTION | |
| XML ID | Name | Model | Type | Status |
|---|---|---|---|---|
account_tax_view_form |
account.tax | field | Inherits account.view_tax_form | |
account_tax_view_tree |
account.tax | field | Inherits account.view_tax_tree | |
aeat_model_export_config_form |
aeat.model.export.config.form | aeat.model.export.config | form | New |
aeat_model_export_config_line_form |
aeat.model.export.config.line.form | aeat.model.export.config.line | form | New |
aeat_model_export_config_line_tree |
aeat.model.export.config.line.tree | aeat.model.export.config.line | tree | New |
aeat_model_export_config_search |
aeat.model.export.config | search | New | |
aeat_model_export_config_tree |
aeat.model.export.config.tree | aeat.model.export.config | tree | New |
aeat_tax_agency_form_view |
aeat.tax.agency.form | aeat.tax.agency | form | New |
aeat_tax_agency_tree_view |
aeat.tax.agency.tree | aeat.tax.agency | tree | New |
l10n_es_aeat_certificate_form_view |
l10n.es.aeat.certificate.form | l10n.es.aeat.certificate | form | New |
l10n_es_aeat_certificate_password_wizard_view |
l10n.es.aeat.certificate.password.wizard | l10n.es.aeat.certificate.password | form | New |
l10n_es_aeat_map_tax_form |
l10n.es.aeat.map.tax | form | New | |
l10n_es_aeat_map_tax_line_form |
l10n.es.aeat.map.tax.line | form | New | |
l10n_es_aeat_map_tax_line_tree |
l10n.es.aeat.map.tax.line | tree | New | |
l10n_es_aeat_map_tax_tree |
l10n.es.aeat.map.tax | tree | New | |
l10n_es_certificate_tree_view |
l10n.es.aeat.certificate.tree | l10n.es.aeat.certificate | tree | New |
view_account_journal_form |
account.journal | xpath | Inherits account.view_account_journal_form | |
view_company_aeat_form |
res.company.aeat.form | res.company | notebook | Inherits base.view_company_form |
view_l10n_es_aeat_report_form |
l10n_es.aeat.report.form | l10n.es.aeat.report | form | New |
view_l10n_es_aeat_report_search |
AEAT Model (search) | l10n.es.aeat.report | search | New |
view_l10n_es_aeat_report_tree |
l10n_es.aeat.report.tree | l10n.es.aeat.report | tree | New |
view_l10n_es_aeat_tax_line_form |
l10n.es.aeat.tax.line.form | l10n.es.aeat.tax.line | form | New |
view_l10n_es_aeat_tax_line_tree |
l10n.es.aeat.tax.line.tree | l10n.es.aeat.tax.line | tree | New |
view_move_form |
account.move | xpath | Inherits account.view_move_form | |
view_move_line_tree |
account.move.line | field | Inherits account.view_move_line_tree | |
view_partner_form |
res.partner | notebook | Inherits account.view_partner_property_form | |
wizard_aeat_export |
Export AEAT BOE file | l10n.es.aeat.report.export_to_boe | form | New |
wizard_compare_boe_file |
Compare BOE file wizard | l10n.es.aeat.report.compare_boe_file | form | New |
aeat_active
Boolean
copy=False
default=True
help='Enable AEAT communication for this fiscal position?'
string='AEAT Active'
No public methods.
tax_agency_id
Many2one → aeat.tax.agency
comodel_name='aeat.tax.agency'
copy=False
help='You can select a tax agency other than the one defined in the company,so you can pay taxes at different agencies.'
string='Tax Agency'
thirdparty_invoice
Boolean
copy=False
string='Third-party invoice'
No public methods.
thirdparty_invoice
Boolean
compute='_compute_thirdparty_invoice'
copy=False
readonly=False
store=True
string='Third-party invoice'
thirdparty_number
Char
copy=False
help='Número de la factura emitida por un tercero.'
index=True
string='Third-party number'
No public methods.
No new fields.
Public methods (0)No public methods.
aeat_equivalent_tax_id
Many2one → account.tax
comodel_name='account.tax'
help='This field is for manually created taxes in order to allow to map them for AEAT reports'
string='Equivalent Tax (for AEAT mapping purposes)'
copy_data(self, default=None)
create(self, vals_list)
unlink(self)
aeat_content_sent
Text
copy=False
readonly=True
string='AEAT last content sent'
aeat_header_sent
Text
copy=False
readonly=True
string='AEAT last header sent'
aeat_send_error
Text
copy=False
readonly=True
string='AEAT Send Error'
aeat_send_failed
Boolean
copy=False
help='Indicates that the last attempt to communicate this document to the SII has failed. See SII return for details'
string='SII send failed'
aeat_state
Selection
copy=False
default='not_sent'
help='Indicates the state of this document in relation with the presentation at the AEAT'
readonly=True
selection=AEAT_STATES
string='AEAT send state'
No public methods.
active
Boolean
default=True
config_line_ids
One2many → aeat.model.export.config.line
comodel_name='aeat.model.export.config.line'
inverse_name='export_config_id'
string='Lines'
date_end
Date
string='Ending date'
date_start
Date
string='Starting date'
model_id
Many2one → ir.model
comodel_name='ir.model'
string='Odoo model'
model_number
Char
size=3
name
Char
No public methods.
alignment
Selection
compute='_compute_alignment'
readonly=False
selection=[('left', 'Left'), ('right', 'Right')]
store=True
apply_sign
Boolean
compute='_compute_apply_sign'
readonly=False
store=True
bool_no
Char
default=' '
size=1
string='Value for no'
bool_yes
Char
default='X'
size=1
string='Value for yes'
conditional
Boolean
compute='_compute_conditional'
store=True
conditional_expression
Char
help='If set, this expression will be used to evaluate if this line should be added'
decimal_size
Integer
compute='_compute_decimal_size'
readonly=False
store=True
string='Number of char for decimals'
export_config_id
Many2one → aeat.model.export.config
comodel_name='aeat.model.export.config'
ondelete='cascade'
required=True
string='Config parent'
export_type
Selection
default='string'
required=True
selection=[('string', 'Alphanumeric'), ('alphabetic', 'Alphabetic'), ('float', 'Number with decimals'), ('integer', 'Number without decimals'), ('boolean', 'Boolean'), ('subconfig', 'Sub-configuration')]
string='Export field type'
expression
Char
fixed_value
Char
name
Char
required=True
negative_sign
Char
default='N'
size=1
string='Negative sign character'
position
Integer
compute='_compute_position'
positive_sign
Char
default='0'
size=1
string='Positive sign character'
repeat
Boolean
compute='_compute_repeat'
store=True
repeat_expression
Char
help='If set, this expression will be used for getting the list of elements to iterate on'
sequence
Integer
size
Integer
string='Field size'
subconfig_id
Many2one → aeat.model.export.config
comodel_name='aeat.model.export.config'
string='Sub-configuration'
value
Char
compute='_compute_value'
store=True
No public methods.
name
Char
required=True
No public methods.
company_id
Many2one → res.company
comodel_name='res.company'
default=<expr>
required=True
string='Company'
date_end
Date
string='End Date'
date_start
Date
string='Start Date'
file
Binary
required=True
folder
Char
required=True
string='Folder Name'
name
Char
private_key
Char
readonly=True
public_key
Char
readonly=True
state
Selection
default='draft'
selection=[('draft', 'Draft'), ('active', 'Active')]
action_active(self)
get_certificates(self, company=False)
load_password_wizard(self)
password
Char
required=True
get_keys(self)
date_from
Date
string='From Date'
date_from_search
Date
compute='_compute_date_from_search'
store=True
date_to
Date
string='To Date'
date_to_search
Date
compute='_compute_date_to_search'
store=True
map_line_ids
One2many → l10n.es.aeat.map.tax.line
comodel_name='l10n.es.aeat.map.tax.line'
inverse_name='map_parent_id'
required=True
string='Map lines'
model
Integer
required=True
string='AEAT Model'
name_get(self)
account_xmlid_ids
Many2many → l10n.es.aeat.map.tax.line.account
comodel_name='l10n.es.aeat.map.tax.line.account'
string='Account Template'
exigible_type
Selection
default='yes'
required=True
selection=[('yes', 'Only exigible amounts'), ('no', 'Only non-exigible amounts'), ('both', 'Both exigible and non-exigible amounts')]
string='Exigibility'
field_number
Integer
required=True
field_type
Selection
default='amount'
required=True
selection=[('base', 'Base'), ('amount', 'Amount'), ('both', 'Both')]
inverse
Boolean
default=False
string='Inverse summarize sign'
map_parent_id
Many2one → l10n.es.aeat.map.tax
comodel_name='l10n.es.aeat.map.tax'
required=True
move_type
Selection
default='all'
required=True
selection=[('all', 'All'), ('regular', 'Regular'), ('refund', 'Refund')]
string='Operation type'
name
Char
required=True
sum_type
Selection
default='both'
required=True
selection=[('credit', 'Credit'), ('debit', 'Debit'), ('both', 'Both (Credit - Debit)')]
string='Summarize type'
tax_xmlid_ids
Many2many → l10n.es.aeat.map.tax.line.tax
comodel_name='l10n.es.aeat.map.tax.line.tax'
string='Taxes templates'
to_regularize
Boolean
get_accounts_for_company(self, company)
get_taxes_for_company(self, company)
name
Char
No public methods.
name
Char
No public methods.
allow_posting
Boolean
compute='_compute_allow_posting'
calculation_date
Datetime
company_id
Many2one → res.company
comodel_name='res.company'
default=<expr>
required=True
string='Company'
company_vat
Char
required=True
size=9
string='VAT number'
contact_email
Char
size=50
contact_name
Char
help='Must have name and surname.'
readonly=True
required=True
size=40
string='Full Name'
contact_phone
Char
required=True
size=9
string='Phone'
counterpart_account_id
Many2one → account.account
comodel_name='account.account'
help='This account will be the counterpart for all the journal items that are regularized when posting the report.'
string='Counterpart account'
currency_id
Many2one → res.currency
comodel_name='res.currency'
readonly=True
related='company_id.currency_id'
string='Currency'
date_end
Date
compute='_compute_dates'
required=True
store=True
string='Ending date'
date_start
Date
compute='_compute_dates'
required=True
store=True
string='Starting date'
error_count
Integer
compute='_compute_error_count'
export_config_id
Many2one → aeat.model.export.config
comodel_name='aeat.model.export.config'
compute='_compute_export_config_id'
domain=<expr>
readonly=False
store=True
string='Export config'
journal_id
Many2one → account.journal
comodel_name='account.journal'
default=_default_journal
domain="[('type', '=', 'general'), ('company_id', '=', company_id)]"
help='Journal in which post the move.'
string='Journal'
move_id
Many2one → account.move
comodel_name='account.move'
domain=[('type', '=', 'entry')]
readonly=True
string='Account entry'
name
Char
copy=False
size=13
string='Report identifier'
number
Char
default=_default_number
readonly=True
required=True
size=3
string='Model number'
partner_bank_id
Many2one → res.partner.bank
comodel_name='res.partner.bank'
domain="[('acc_type', '=', 'iban'), ('partner_id', '=', partner_id)]"
help='Company bank account used for the presentation'
string='Bank account'
partner_id
Many2one → res.partner
comodel_name='res.partner'
readonly=True
related='company_id.partner_id'
string='Partner'
period_type
Selection
default=_default_period_type
required=True
selection='get_period_type_selection'
previous_number
Char
size=13
string='Previous declaration number'
representative_vat
Char
compute='_compute_representative_vat'
help='Legal Representative VAT number.'
readonly=False
size=9
store=True
string='L.R. VAT number'
state
Selection
default='draft'
readonly=True
selection=[('draft', 'Draft'), ('calculated', 'Processed'), ('done', 'Done'), ('posted', 'Posted'), ('cancelled', 'Cancelled')]
tracking=True
statement_type
Selection
default='N'
required=True
selection=[('N', 'Normal'), ('C', 'Complementary'), ('S', 'Substitutive')]
support_type
Selection
default='T'
required=True
selection=[('C', 'DVD'), ('T', 'Telematics')]
tax_agency_ids
Many2many → aeat.tax.agency
string='Tax Agency'
args: 'aeat.tax.agency'
year
Integer
default=_default_year
required=True
button_calculate(self)
button_cancel(self)
button_confirm(self)
button_export(self)
button_open_move(self)
button_post(self)
button_recalculate(self)
button_recover(self)
button_unpost(self)
calculate(self)
create(self, vals_list)
get_html(self)
get_period_type_selection(self)
onchange_company_id(self)
unlink(self)
data
Binary
required=True
string='File'
line_ids
One2many → l10n.es.aeat.report.compare_boe_file.line
comodel_name='l10n.es.aeat.report.compare_boe_file.line'
inverse_name='wizard_id'
string='Lines'
state
Selection
default='open'
selection=[('open', 'open'), ('compare', 'compare')]
button_compare_file(self)
content
Char
content_float
Float
compute='_compute_content_float'
string='Amount'
export_line_id
Many2one → aeat.model.export.config.line
comodel_name='aeat.model.export.config.line'
ondelete='cascade'
readonly=True
required=True
string='Export line'
name
Char
readonly=True
related='export_line_id.name'
string='Name'
sequence
Integer
readonly=True
related='export_line_id.sequence'
string='Sequence'
wizard_id
Many2one → l10n.es.aeat.report.compare_boe_file
comodel_name='l10n.es.aeat.report.compare_boe_file'
ondelete='cascade'
readonly=True
required=True
string='Wizard'
No public methods.
data
Binary
readonly=True
string='File'
name
Char
readonly=True
string='File name'
state
Selection
default='open'
selection=[('open', 'open'), ('get', 'get')]
action_get_file(self)
action_get_file_from_config(self, report)
tax_line_ids
One2many → l10n.es.aeat.tax.line
auto_join=True
comodel_name='l10n.es.aeat.tax.line'
domain=<expr>
inverse_name='res_id'
readonly=True
string='Tax lines'
valued_tax_line_ids
One2many → l10n.es.aeat.tax.line
auto_join=True
comodel_name='l10n.es.aeat.tax.line'
domain=<expr>
inverse_name='res_id'
readonly=True
string='Valued tax lines'
calculate(self)
create_regularization_move(self)
unlink(self)
No new fields.
Public methods (4)connect_soap(self, wsdl, model)
connect_wsdl(self, service, wsdl, port_name, model)
get_test_mode(self, port_name, model)
send_soap(self, service, wsdl, port_name, model, operation, *args)
amount
Float
digits='Account'
field_number
Integer
readonly=True
related='map_line_id.field_number'
store=True
string='Field number'
map_line_id
Many2one → l10n.es.aeat.map.tax.line
comodel_name='l10n.es.aeat.map.tax.line'
ondelete='cascade'
required=True
string='Map line'
model
Char
index=True
readonly=True
required=True
string='Model name'
move_line_ids
Many2many → account.move.line
comodel_name='account.move.line'
string='Journal items'
name
Char
readonly=True
related='map_line_id.name'
store=True
string='Name'
res_id
Integer
index=True
required=True
string='Resource ID'
to_regularize
Boolean
readonly=True
related='map_line_id.to_regularize'
get_calculated_move_lines(self)
representative_vat
Char
help='Legal Representative VAT number for all the AEAT reports of this company.'
size=9
string='L.R. VAT number'
tax_agency_id
Many2one → aeat.tax.agency
string='Tax Agency'
args: 'aeat.tax.agency'
create(self, vals_list)
aeat_anonymous_cash_customer
Boolean
help='Check this for anonymous cash customer. AEAT communication'
string='AEAT - Anonymous customer'
aeat_identification
Char
help='Identification for AEAT purposes'
aeat_identification_type
Selection
help="Used to specify an identification type to send to AEAT. Normally for sending national and export invoices to AEAT where the customer country is not Spain, it would calculate an identification type of 04 if the VAT field is filled and 06 if it was not. This field is to specify types of 03 through 05, in the event that the customer doesn't identify with a foreign VAT and instead with their passport or residential certificate. If there is no value it will work as before."
selection=[('03', 'Passport'), ('05', 'Residential certificate'), ('06', 'Another document')]
string='AEAT Identification type'
aeat_sending_enabled
Boolean
compute='_compute_aeat_sending_enabled'
aeat_simplified_invoice
Boolean
help='Checking this mark, invoices done to this partner will be sent to AEAT as simplified invoices.'
string='Simplified invoices in AEAT?'
No public methods.
acc_type
Selection
store=True
No public methods.
| REPOSITORY | |
|---|---|
| REPOSITORY | OCA/l10n-spain |
| GIT | |
| GIT | https://github.com/OCA/l10n-spain.git |
| GIT FOLDER | |
| GIT FOLDER | https://github.com/OCA/l10n-spain/tree/16.0/l10n_es_aeat |
| VERSION | |
| VERSION | 3.3.1 |
| CATEGORY | |
| CATEGORY | Accounting & Finance |
| LICENSE | |
| LICENSE | AGPL-3 |
| APPLICATION | |
| APPLICATION | No |
| AUTO-INSTALLABLE | |
| AUTO-INSTALLABLE | No |
| AUTHORS | |
| AUTHORS | Tecnativa, Odoo Community Association (OCA), Pexego, Acysos S.L., AvanzOSC |
| MAINTAINERS | |
| MAINTAINERS | Tecnativa, Odoo Community Association (OCA), Pexego, Acysos S.L., AvanzOSC |
| COMMITTERS | |
| COMMITTERS | Pedro M. Baeza, GitHub, Enric Tobella, Víctor Martínez, Hugo Santos, Weblate, OCA-git-bot, Rodrigo, oca-ci, Aritz Olea, Alejandro Ji Cheung, David Ramia, Emilio Pascual, Luis Rodriguez, Jose Zambudio, extrememicro, nicolasramos-com |
| WEBSITE | |
| WEBSITE | https://github.com/OCA/l10n-spain |
| LAST TRACKING UPDATE | |
| LAST TRACKING UPDATE | 2026-07-06 00:53:39 |
| ODOO DEPENDENCIES | |
| ODOO DEPENDENCIES |
OCA/account-financial-reporting: - account_tax_balance OCA/server-ux: - date_range odoo/odoo: - l10n_es - account - base_setup - base - web - product - bus - web_tour - uom - analytic - portal - web_editor - http_routing - auth_signup - digest - resource - base_iban - base_vat |
| PYTHON DEPENDENCIES | |
| PYTHON DEPENDENCIES |
unidecode |
| SYSTEM DEPENDENCIES | |
| SYSTEM DEPENDENCIES | Not have |
| DESCRIPTION | |
| DESCRIPTION | |
| XML ID | Name | Model | Type | Status |
|---|---|---|---|---|
account_tax_view_form |
account.tax | field | Inherits account.view_tax_form | |
account_tax_view_tree |
account.tax | field | Inherits account.view_tax_tree | |
aeat_model_export_config_form |
aeat.model.export.config.form | aeat.model.export.config | form | New |
aeat_model_export_config_line_form |
aeat.model.export.config.line.form | aeat.model.export.config.line | form | New |
aeat_model_export_config_line_tree |
aeat.model.export.config.line.tree | aeat.model.export.config.line | tree | New |
aeat_model_export_config_search |
aeat.model.export.config | search | New | |
aeat_model_export_config_tree |
aeat.model.export.config.tree | aeat.model.export.config | tree | New |
aeat_tax_agency_form_view |
aeat.tax.agency.form | aeat.tax.agency | form | New |
aeat_tax_agency_tree_view |
aeat.tax.agency.tree | aeat.tax.agency | tree | New |
l10n_es_aeat_certificate_form_view |
l10n.es.aeat.certificate.form | l10n.es.aeat.certificate | form | New |
l10n_es_aeat_certificate_password_wizard_view |
l10n.es.aeat.certificate.password.wizard | l10n.es.aeat.certificate.password | form | New |
l10n_es_aeat_map_tax_form |
l10n.es.aeat.map.tax | form | New | |
l10n_es_aeat_map_tax_line_form |
l10n.es.aeat.map.tax.line | form | New | |
l10n_es_aeat_map_tax_line_tree |
l10n.es.aeat.map.tax.line | tree | New | |
l10n_es_aeat_map_tax_tree |
l10n.es.aeat.map.tax | tree | New | |
l10n_es_certificate_tree_view |
l10n.es.aeat.certificate.tree | l10n.es.aeat.certificate | tree | New |
view_account_journal_form |
account.journal | xpath | Inherits account.view_account_journal_form | |
view_company_aeat_form |
res.company.aeat.form | res.company | notebook | Inherits base.view_company_form |
view_l10n_es_aeat_report_form |
l10n_es.aeat.report.form | l10n.es.aeat.report | form | New |
view_l10n_es_aeat_report_search |
AEAT Model (search) | l10n.es.aeat.report | search | New |
view_l10n_es_aeat_report_tree |
l10n_es.aeat.report.tree | l10n.es.aeat.report | tree | New |
view_l10n_es_aeat_tax_line_form |
l10n.es.aeat.tax.line.form | l10n.es.aeat.tax.line | form | New |
view_l10n_es_aeat_tax_line_tree |
l10n.es.aeat.tax.line.tree | l10n.es.aeat.tax.line | tree | New |
view_move_form |
account.move | xpath | Inherits account.view_move_form | |
view_move_line_tree |
account.move.line | field | Inherits account.view_move_line_tree | |
view_partner_form |
res.partner | notebook | Inherits account.view_partner_property_form | |
wizard_aeat_export |
Export AEAT BOE file | l10n.es.aeat.report.export_to_boe | form | New |
wizard_compare_boe_file |
Compare BOE file wizard | l10n.es.aeat.report.compare_boe_file | form | New |
aeat_active
Boolean
copy=False
default=True
help='Enable AEAT communication for this fiscal position?'
string='AEAT Active'
No public methods.
thirdparty_invoice
Boolean
copy=False
string='Third-party invoice'
No public methods.
thirdparty_invoice
Boolean
compute='_compute_thirdparty_invoice'
copy=False
readonly=False
store=True
string='Third-party invoice'
thirdparty_number
Char
copy=False
help='Número de la factura emitida por un tercero.'
index=True
readonly=True
states={'draft': [('readonly', False)]}
string='Third-party number'
No public methods.
No new fields.
Public methods (0)No public methods.
aeat_equivalent_tax_id
Many2one → account.tax
comodel_name='account.tax'
help='This field is for manually created taxes in order to allow to map them for AEAT reports'
string='Equivalent Tax (for AEAT mapping purposes)'
copy_data(self, default=None)
create(self, vals_list)
unlink(self)
aeat_content_sent
Text
copy=False
readonly=True
string='AEAT last content sent'
aeat_header_sent
Text
copy=False
readonly=True
string='AEAT last header sent'
aeat_send_error
Text
copy=False
readonly=True
string='AEAT Send Error'
aeat_send_failed
Boolean
copy=False
help='Indicates that the last attempt to communicate this document to the SII has failed. See SII return for details'
string='SII send failed'
aeat_state
Selection
copy=False
default='not_sent'
help='Indicates the state of this document in relation with the presentation at the AEAT'
readonly=True
selection=AEAT_STATES
string='AEAT send state'
No public methods.
active
Boolean
default=True
config_line_ids
One2many → aeat.model.export.config.line
comodel_name='aeat.model.export.config.line'
inverse_name='export_config_id'
string='Lines'
date_end
Date
string='Ending date'
date_start
Date
string='Starting date'
model_id
Many2one → ir.model
comodel_name='ir.model'
string='Odoo model'
model_number
Char
size=3
name
Char
No public methods.
alignment
Selection
compute='_compute_alignment'
readonly=False
selection=[('left', 'Left'), ('right', 'Right')]
store=True
apply_sign
Boolean
compute='_compute_apply_sign'
readonly=False
store=True
bool_no
Char
default=' '
size=1
string='Value for no'
bool_yes
Char
default='X'
size=1
string='Value for yes'
conditional
Boolean
compute='_compute_conditional'
store=True
conditional_expression
Char
help='If set, this expression will be used to evaluate if this line should be added'
decimal_size
Integer
compute='_compute_decimal_size'
readonly=False
store=True
string='Number of char for decimals'
export_config_id
Many2one → aeat.model.export.config
comodel_name='aeat.model.export.config'
ondelete='cascade'
required=True
string='Config parent'
export_type
Selection
default='string'
required=True
selection=[('string', 'Alphanumeric'), ('alphabetic', 'Alphabetic'), ('float', 'Number with decimals'), ('integer', 'Number without decimals'), ('boolean', 'Boolean'), ('subconfig', 'Sub-configuration')]
string='Export field type'
expression
Char
fixed_value
Char
name
Char
required=True
negative_sign
Char
default='N'
size=1
string='Negative sign character'
position
Integer
compute='_compute_position'
positive_sign
Char
default='0'
size=1
string='Positive sign character'
repeat
Boolean
compute='_compute_repeat'
store=True
repeat_expression
Char
help='If set, this expression will be used for getting the list of elements to iterate on'
sequence
Integer
size
Integer
string='Field size'
subconfig_id
Many2one → aeat.model.export.config
comodel_name='aeat.model.export.config'
string='Sub-configuration'
value
Char
compute='_compute_value'
store=True
No public methods.
name
Char
required=True
No public methods.
company_id
Many2one → res.company
comodel_name='res.company'
default=<expr>
required=True
string='Company'
date_end
Date
string='End Date'
date_start
Date
string='Start Date'
file
Binary
required=True
folder
Char
required=True
string='Folder Name'
name
Char
private_key
Char
readonly=True
public_key
Char
readonly=True
public_key_data
Text
readonly=True
store=False
public_key_file
Binary
attachment=False
compute='_compute_public_key'
groups='l10n_es_aeat.group_account_aeat'
readonly=True
store=False
public_key_filename
Char
compute='_compute_public_key'
groups='l10n_es_aeat.group_account_aeat'
readonly=True
store=False
show_public_key
Boolean
store=False
state
Selection
default='draft'
selection=[('draft', 'Draft'), ('active', 'Active')]
action_active(self)
get_certificates(self, company=False)
get_public_key_pem(self)
load_password_wizard(self)
onchange_public_key_data(self)
password
Char
required=True
get_keys(self)
date_from
Date
string='From Date'
date_from_search
Date
compute='_compute_date_from_search'
store=True
date_to
Date
string='To Date'
date_to_search
Date
compute='_compute_date_to_search'
store=True
map_line_ids
One2many → l10n.es.aeat.map.tax.line
comodel_name='l10n.es.aeat.map.tax.line'
inverse_name='map_parent_id'
required=True
string='Map lines'
model
Integer
required=True
string='AEAT Model'
name_get(self)
account_id
Many2one → account.account.template
comodel_name='account.account.template'
string='Account Template'
exigible_type
Selection
default='yes'
required=True
selection=[('yes', 'Only exigible amounts'), ('no', 'Only non-exigible amounts'), ('both', 'Both exigible and non-exigible amounts')]
string='Exigibility'
field_number
Integer
required=True
field_type
Selection
default='amount'
required=True
selection=[('base', 'Base'), ('amount', 'Amount'), ('both', 'Both')]
inverse
Boolean
default=False
string='Inverse summarize sign'
map_parent_id
Many2one → l10n.es.aeat.map.tax
comodel_name='l10n.es.aeat.map.tax'
required=True
move_type
Selection
default='all'
required=True
selection=[('all', 'All'), ('regular', 'Regular'), ('refund', 'Refund')]
string='Operation type'
name
Char
required=True
sum_type
Selection
default='both'
required=True
selection=[('credit', 'Credit'), ('debit', 'Debit'), ('both', 'Both (Credit - Debit)')]
string='Summarize type'
tax_ids
Many2many → account.tax.template
comodel_name='account.tax.template'
string='Taxes templates'
to_regularize
Boolean
No public methods.
allow_posting
Boolean
compute='_compute_allow_posting'
calculation_date
Datetime
company_id
Many2one → res.company
comodel_name='res.company'
default=<expr>
readonly=True
required=True
states={'draft': [('readonly', False)]}
string='Company'
company_vat
Char
readonly=True
required=True
size=9
states={'draft': [('readonly', False)]}
string='VAT number'
contact_email
Char
readonly=True
size=50
states={'draft': [('readonly', False)]}
contact_name
Char
help='Must have name and surname.'
readonly=True
required=True
size=40
states={'draft': [('readonly', False)]}
string='Full Name'
contact_phone
Char
readonly=True
required=True
size=9
states={'draft': [('readonly', False)]}
string='Phone'
counterpart_account_id
Many2one → account.account
comodel_name='account.account'
help='This account will be the counterpart for all the journal items that are regularized when posting the report.'
string='Counterpart account'
currency_id
Many2one → res.currency
comodel_name='res.currency'
readonly=True
related='company_id.currency_id'
string='Currency'
date_end
Date
compute='_compute_dates'
readonly=True
required=True
states={'draft': [('readonly', False)]}
store=True
string='Ending date'
date_start
Date
compute='_compute_dates'
readonly=True
required=True
states={'draft': [('readonly', False)]}
store=True
string='Starting date'
error_count
Integer
compute='_compute_error_count'
export_config_id
Many2one → aeat.model.export.config
comodel_name='aeat.model.export.config'
compute='_compute_export_config_id'
domain=<expr>
readonly=False
store=True
string='Export config'
journal_id
Many2one → account.journal
comodel_name='account.journal'
default=_default_journal
domain="[('type', '=', 'general'), ('company_id', '=', company_id)]"
help='Journal in which post the move.'
states={'done': [('readonly', True)]}
string='Journal'
move_id
Many2one → account.move
comodel_name='account.move'
domain=[('type', '=', 'entry')]
readonly=True
string='Account entry'
name
Char
copy=False
size=13
string='Report identifier'
number
Char
default=_default_number
readonly=True
required=True
size=3
string='Model number'
partner_bank_id
Many2one → res.partner.bank
comodel_name='res.partner.bank'
domain="[('acc_type', '=', 'iban'), ('partner_id', '=', partner_id)]"
help='Company bank account used for the presentation'
string='Bank account'
partner_id
Many2one → res.partner
comodel_name='res.partner'
readonly=True
related='company_id.partner_id'
string='Partner'
period_type
Selection
default=_default_period_type
readonly=True
required=True
selection='get_period_type_selection'
states={'draft': [('readonly', False)]}
previous_number
Char
size=13
states={'done': [('readonly', True)]}
string='Previous declaration number'
representative_vat
Char
compute='_compute_representative_vat'
help='Legal Representative VAT number.'
readonly=False
size=9
store=True
string='L.R. VAT number'
state
Selection
default='draft'
readonly=True
selection=[('draft', 'Draft'), ('calculated', 'Processed'), ('done', 'Done'), ('posted', 'Posted'), ('cancelled', 'Cancelled')]
tracking=True
statement_type
Selection
default='N'
readonly=True
required=True
selection=[('N', 'Normal'), ('C', 'Complementary'), ('S', 'Substitutive')]
states={'draft': [('readonly', False)]}
support_type
Selection
default='T'
readonly=True
required=True
selection=[('C', 'DVD'), ('T', 'Telematics')]
states={'draft': [('readonly', False)]}
tax_agency_ids
Many2many → aeat.tax.agency
string='Tax Agency'
args: 'aeat.tax.agency'
year
Integer
default=_default_year
readonly=True
required=True
states={'draft': [('readonly', False)]}
button_calculate(self)
button_cancel(self)
button_confirm(self)
button_export(self)
button_open_move(self)
button_post(self)
button_recalculate(self)
button_recover(self)
button_unpost(self)
calculate(self)
create(self, vals_list)
get_account_from_template(self, account_template)
get_html(self)
get_period_type_selection(self)
get_taxes_from_templates(self, tax_templates)
onchange_company_id(self)
unlink(self)
data
Binary
required=True
string='File'
line_ids
One2many → l10n.es.aeat.report.compare_boe_file.line
comodel_name='l10n.es.aeat.report.compare_boe_file.line'
inverse_name='wizard_id'
string='Lines'
state
Selection
default='open'
selection=[('open', 'open'), ('compare', 'compare')]
button_compare_file(self)
content
Char
content_float
Float
compute='_compute_content_float'
string='Amount'
export_line_id
Many2one → aeat.model.export.config.line
comodel_name='aeat.model.export.config.line'
ondelete='cascade'
readonly=True
required=True
string='Export line'
name
Char
readonly=True
related='export_line_id.name'
string='Name'
sequence
Integer
readonly=True
related='export_line_id.sequence'
string='Sequence'
wizard_id
Many2one → l10n.es.aeat.report.compare_boe_file
comodel_name='l10n.es.aeat.report.compare_boe_file'
ondelete='cascade'
readonly=True
required=True
string='Wizard'
No public methods.
data
Binary
readonly=True
string='File'
name
Char
readonly=True
string='File name'
state
Selection
default='open'
selection=[('open', 'open'), ('get', 'get')]
action_get_file(self)
action_get_file_from_config(self, report)
tax_line_ids
One2many → l10n.es.aeat.tax.line
auto_join=True
comodel_name='l10n.es.aeat.tax.line'
domain=<expr>
inverse_name='res_id'
readonly=True
string='Tax lines'
valued_tax_line_ids
One2many → l10n.es.aeat.tax.line
auto_join=True
comodel_name='l10n.es.aeat.tax.line'
domain=<expr>
inverse_name='res_id'
readonly=True
string='Valued tax lines'
calculate(self)
create_regularization_move(self)
get_taxes_from_map(self, map_line)
unlink(self)
No new fields.
Public methods (4)connect_soap(self, wsdl, model)
connect_wsdl(self, service, wsdl, port_name, model)
get_test_mode(self, port_name, model)
send_soap(self, service, wsdl, port_name, model, operation, *args)
amount
Float
digits='Account'
field_number
Integer
readonly=True
related='map_line_id.field_number'
store=True
string='Field number'
map_line_id
Many2one → l10n.es.aeat.map.tax.line
comodel_name='l10n.es.aeat.map.tax.line'
ondelete='cascade'
required=True
string='Map line'
model
Char
index=True
readonly=True
required=True
string='Model name'
move_line_ids
Many2many → account.move.line
comodel_name='account.move.line'
string='Journal items'
name
Char
readonly=True
related='map_line_id.name'
store=True
string='Name'
res_id
Integer
index=True
required=True
string='Resource ID'
to_regularize
Boolean
readonly=True
related='map_line_id.to_regularize'
get_calculated_move_lines(self)
representative_vat
Char
help='Legal Representative VAT number for all the AEAT reports of this company.'
size=9
string='L.R. VAT number'
tax_agency_id
Many2one → aeat.tax.agency
string='Tax Agency'
args: 'aeat.tax.agency'
create(self, vals_list)
get_account_from_template(self, account_template)
get_taxes_from_templates(self, tax_templates)
aeat_anonymous_cash_customer
Boolean
help='Check this for anonymous cash customer. AEAT communication'
string='AEAT - Anonymous customer'
aeat_identification
Char
help='Identification for AEAT purposes'
aeat_identification_type
Selection
help="Used to specify an identification type to send to AEAT. Normally for sending national and export invoices to AEAT where the customer country is not Spain, it would calculate an identification type of 04 if the VAT field is filled and 06 if it was not. This field is to specify types of 03 through 05, in the event that the customer doesn't identify with a foreign VAT and instead with their passport or residential certificate. If there is no value it will work as before."
selection=[('03', 'Passport'), ('05', 'Residential certificate'), ('06', 'Another document')]
string='AEAT Identification type'
aeat_sending_enabled
Boolean
compute='_compute_aeat_sending_enabled'
aeat_simplified_invoice
Boolean
help='Checking this mark, invoices done to this partner will be sent to AEAT as simplified invoices.'
string='Simplified invoices in AEAT?'
No public methods.
acc_type
Selection
store=True
No public methods.
| REPOSITORY | |
|---|---|
| REPOSITORY | OCA/l10n-spain |
| GIT | |
| GIT | https://github.com/OCA/l10n-spain.git |
| GIT FOLDER | |
| GIT FOLDER | https://github.com/OCA/l10n-spain/tree/15.0/l10n_es_aeat |
| VERSION | |
| VERSION | 3.4.0 |
| CATEGORY | |
| CATEGORY | Accounting & Finance |
| LICENSE | |
| LICENSE | AGPL-3 |
| APPLICATION | |
| APPLICATION | No |
| AUTO-INSTALLABLE | |
| AUTO-INSTALLABLE | No |
| AUTHORS | |
| AUTHORS | Tecnativa, Odoo Community Association (OCA), Pexego, Acysos S.L., AvanzOSC |
| MAINTAINERS | |
| MAINTAINERS | Tecnativa, Odoo Community Association (OCA), Pexego, Acysos S.L., AvanzOSC |
| COMMITTERS | |
| COMMITTERS | Pedro M. Baeza, GitHub, Jairo Llopis, Enric Tobella, Lois Rilo, manu, OCA Transbot, Miquel Raïch, Víctor Martínez, Weblate, OCA-git-bot, oca-ci, Eduardo De Miguel, David Ramia, Emilio Pascual, Valentin Vinagre Urteaga, oca-git-bot, almumu, josep-tecnativa |
| WEBSITE | |
| WEBSITE | https://github.com/OCA/l10n-spain |
| LAST TRACKING UPDATE | |
| LAST TRACKING UPDATE | 2026-07-06 00:46:29 |
| ODOO DEPENDENCIES | |
| ODOO DEPENDENCIES |
OCA/account-financial-reporting: - account_tax_balance OCA/server-ux: - date_range odoo/odoo: - l10n_es - account - base_setup - base - web - product - bus - web_tour - uom - analytic - portal - web_editor - http_routing - auth_signup - digest - resource - base_iban - base_vat |
| PYTHON DEPENDENCIES | |
| PYTHON DEPENDENCIES |
cryptography unidecode |
| SYSTEM DEPENDENCIES | |
| SYSTEM DEPENDENCIES | Not have |
| DESCRIPTION | |
| DESCRIPTION | |
| XML ID | Name | Model | Type | Status |
|---|---|---|---|---|
aeat_model_export_config_form |
aeat.model.export.config.form | aeat.model.export.config | form | New |
aeat_model_export_config_line_form |
aeat.model.export.config.line.form | aeat.model.export.config.line | form | New |
aeat_model_export_config_line_tree |
aeat.model.export.config.line.tree | aeat.model.export.config.line | tree | New |
aeat_model_export_config_search |
aeat.model.export.config | search | New | |
aeat_model_export_config_tree |
aeat.model.export.config.tree | aeat.model.export.config | tree | New |
aeat_tax_agency_form_view |
aeat.tax.agency.form | aeat.tax.agency | form | New |
aeat_tax_agency_tree_view |
aeat.tax.agency.tree | aeat.tax.agency | tree | New |
l10n_es_aeat_certificate_form_view |
l10n.es.aeat.certificate.form | l10n.es.aeat.certificate | form | New |
l10n_es_aeat_certificate_password_wizard_view |
l10n.es.aeat.certificate.password.wizard | l10n.es.aeat.certificate.password | form | New |
l10n_es_aeat_map_tax_form |
l10n.es.aeat.map.tax | form | New | |
l10n_es_aeat_map_tax_line_form |
l10n.es.aeat.map.tax.line | form | New | |
l10n_es_aeat_map_tax_line_tree |
l10n.es.aeat.map.tax.line | tree | New | |
l10n_es_aeat_map_tax_tree |
l10n.es.aeat.map.tax | tree | New | |
l10n_es_certificate_tree_view |
l10n.es.aeat.certificate.tree | l10n.es.aeat.certificate | tree | New |
view_account_journal_form |
account.journal | xpath | Inherits account.view_account_journal_form | |
view_company_aeat_form |
res.company.aeat.form | res.company | notebook | Inherits base.view_company_form |
view_l10n_es_aeat_report_form |
l10n_es.aeat.report.form | l10n.es.aeat.report | form | New |
view_l10n_es_aeat_report_search |
AEAT Model (search) | l10n.es.aeat.report | search | New |
view_l10n_es_aeat_report_tree |
l10n_es.aeat.report.tree | l10n.es.aeat.report | tree | New |
view_l10n_es_aeat_tax_line_form |
l10n.es.aeat.tax.line.form | l10n.es.aeat.tax.line | form | New |
view_l10n_es_aeat_tax_line_tree |
l10n.es.aeat.tax.line.tree | l10n.es.aeat.tax.line | tree | New |
view_move_form |
account.move | xpath | Inherits account.view_move_form | |
view_move_line_tree |
account.move.line | field | Inherits account.view_move_line_tree | |
view_partner_form |
res.partner | notebook | Inherits account.view_partner_property_form | |
wizard_aeat_export |
Export AEAT BOE file | l10n.es.aeat.report.export_to_boe | form | New |
wizard_compare_boe_file |
Compare BOE file wizard | l10n.es.aeat.report.compare_boe_file | form | New |
thirdparty_invoice
Boolean
copy=False
string='Third-party invoice'
No public methods.
thirdparty_invoice
Boolean
compute='_compute_thirdparty_invoice'
copy=False
readonly=False
store=True
string='Third-party invoice'
thirdparty_number
Char
copy=False
help='Número de la factura emitida por un tercero.'
index=True
readonly=True
states={'draft': [('readonly', False)]}
string='Third-party number'
No public methods.
No new fields.
Public methods (0)No public methods.
No new fields.
Public methods (2)create(self, vals_list)
unlink(self)
active
Boolean
default=True
config_line_ids
One2many → aeat.model.export.config.line
comodel_name='aeat.model.export.config.line'
inverse_name='export_config_id'
string='Lines'
date_end
Date
string='Ending date'
date_start
Date
string='Starting date'
model_id
Many2one → ir.model
comodel_name='ir.model'
string='Odoo model'
model_number
Char
size=3
name
Char
No public methods.
alignment
Selection
compute='_compute_alignment'
readonly=False
selection=[('left', 'Left'), ('right', 'Right')]
store=True
apply_sign
Boolean
compute='_compute_apply_sign'
readonly=False
store=True
bool_no
Char
default=' '
size=1
string='Value for no'
bool_yes
Char
default='X'
size=1
string='Value for yes'
conditional
Boolean
compute='_compute_conditional'
store=True
conditional_expression
Char
help='If set, this expression will be used to evaluate if this line should be added'
decimal_size
Integer
compute='_compute_decimal_size'
readonly=False
store=True
string='Number of char for decimals'
export_config_id
Many2one → aeat.model.export.config
comodel_name='aeat.model.export.config'
ondelete='cascade'
required=True
string='Config parent'
export_type
Selection
default='string'
required=True
selection=[('string', 'Alphanumeric'), ('alphabetic', 'Alphabetic'), ('float', 'Number with decimals'), ('integer', 'Number without decimals'), ('boolean', 'Boolean'), ('subconfig', 'Sub-configuration')]
string='Export field type'
expression
Char
fixed_value
Char
name
Char
required=True
negative_sign
Char
default='N'
size=1
string='Negative sign character'
position
Integer
compute='_compute_position'
positive_sign
Char
default='0'
size=1
string='Positive sign character'
repeat
Boolean
compute='_compute_repeat'
store=True
repeat_expression
Char
help='If set, this expression will be used for getting the list of elements to iterate on'
sequence
Integer
size
Integer
string='Field size'
subconfig_id
Many2one → aeat.model.export.config
comodel_name='aeat.model.export.config'
string='Sub-configuration'
value
Char
compute='_compute_value'
store=True
No public methods.
name
Char
required=True
No public methods.
company_id
Many2one → res.company
comodel_name='res.company'
default=<expr>
required=True
string='Company'
date_end
Date
string='End Date'
date_start
Date
string='Start Date'
file
Binary
required=True
folder
Char
required=True
string='Folder Name'
name
Char
private_key
Char
readonly=True
public_key
Char
readonly=True
state
Selection
default='draft'
selection=[('draft', 'Draft'), ('active', 'Active')]
action_active(self)
get_certificates(self, company=False)
load_password_wizard(self)
password
Char
required=True
get_keys(self)
date_from
Date
string='From Date'
date_from_search
Date
compute='_compute_date_from_search'
store=True
date_to
Date
string='To Date'
date_to_search
Date
compute='_compute_date_to_search'
store=True
map_line_ids
One2many → l10n.es.aeat.map.tax.line
comodel_name='l10n.es.aeat.map.tax.line'
inverse_name='map_parent_id'
required=True
string='Map lines'
model
Integer
required=True
string='AEAT Model'
name_get(self)
account_id
Many2one → account.account.template
comodel_name='account.account.template'
string='Account Template'
exigible_type
Selection
default='yes'
required=True
selection=[('yes', 'Only exigible amounts'), ('no', 'Only non-exigible amounts'), ('both', 'Both exigible and non-exigible amounts')]
string='Exigibility'
field_number
Integer
required=True
field_type
Selection
default='amount'
required=True
selection=[('base', 'Base'), ('amount', 'Amount'), ('both', 'Both')]
inverse
Boolean
default=False
string='Inverse summarize sign'
map_parent_id
Many2one → l10n.es.aeat.map.tax
comodel_name='l10n.es.aeat.map.tax'
required=True
move_type
Selection
default='all'
required=True
selection=[('all', 'All'), ('regular', 'Regular'), ('refund', 'Refund')]
string='Operation type'
name
Char
required=True
sum_type
Selection
default='both'
required=True
selection=[('credit', 'Credit'), ('debit', 'Debit'), ('both', 'Both (Credit - Debit)')]
string='Summarize type'
tax_ids
Many2many → account.tax.template
comodel_name='account.tax.template'
string='Taxes templates'
to_regularize
Boolean
No public methods.
allow_posting
Boolean
compute='_compute_allow_posting'
calculation_date
Datetime
company_id
Many2one → res.company
comodel_name='res.company'
default=<expr>
readonly=True
required=True
states={'draft': [('readonly', False)]}
string='Company'
company_vat
Char
readonly=True
required=True
size=9
states={'draft': [('readonly', False)]}
string='VAT number'
contact_email
Char
readonly=True
size=50
states={'draft': [('readonly', False)]}
contact_name
Char
help='Must have name and surname.'
readonly=True
required=True
size=40
states={'draft': [('readonly', False)]}
string='Full Name'
contact_phone
Char
readonly=True
required=True
size=9
states={'draft': [('readonly', False)]}
string='Phone'
counterpart_account_id
Many2one → account.account
comodel_name='account.account'
help='This account will be the counterpart for all the journal items that are regularized when posting the report.'
string='Counterpart account'
currency_id
Many2one → res.currency
comodel_name='res.currency'
readonly=True
related='company_id.currency_id'
string='Currency'
date_end
Date
compute='_compute_dates'
readonly=True
required=True
states={'draft': [('readonly', False)]}
store=True
string='Ending date'
date_start
Date
compute='_compute_dates'
readonly=True
required=True
states={'draft': [('readonly', False)]}
store=True
string='Starting date'
error_count
Integer
compute='_compute_error_count'
export_config_id
Many2one → aeat.model.export.config
comodel_name='aeat.model.export.config'
compute='_compute_export_config_id'
domain=<expr>
readonly=False
store=True
string='Export config'
journal_id
Many2one → account.journal
comodel_name='account.journal'
default=_default_journal
domain="[('type', '=', 'general'), ('company_id', '=', company_id)]"
help='Journal in which post the move.'
states={'done': [('readonly', True)]}
string='Journal'
move_id
Many2one → account.move
comodel_name='account.move'
domain=[('type', '=', 'entry')]
readonly=True
string='Account entry'
name
Char
copy=False
size=13
string='Report identifier'
number
Char
default=_default_number
readonly=True
required=True
size=3
string='Model number'
partner_bank_id
Many2one → res.partner.bank
comodel_name='res.partner.bank'
domain="[('acc_type', '=', 'iban'), ('partner_id', '=', partner_id)]"
help='Company bank account used for the presentation'
string='Bank account'
partner_id
Many2one → res.partner
comodel_name='res.partner'
readonly=True
related='company_id.partner_id'
string='Partner'
period_type
Selection
default=_default_period_type
readonly=True
required=True
selection='get_period_type_selection'
states={'draft': [('readonly', False)]}
previous_number
Char
size=13
states={'done': [('readonly', True)]}
string='Previous declaration number'
representative_vat
Char
help='Legal Representative VAT number.'
readonly=True
size=9
states={'draft': [('readonly', False)]}
string='L.R. VAT number'
state
Selection
default='draft'
readonly=True
selection=[('draft', 'Draft'), ('calculated', 'Processed'), ('done', 'Done'), ('posted', 'Posted'), ('cancelled', 'Cancelled')]
tracking=True
statement_type
Selection
default='N'
readonly=True
required=True
selection=[('N', 'Normal'), ('C', 'Complementary'), ('S', 'Substitutive')]
states={'draft': [('readonly', False)]}
support_type
Selection
default='T'
readonly=True
required=True
selection=[('C', 'DVD'), ('T', 'Telematics')]
states={'draft': [('readonly', False)]}
tax_agency_ids
Many2many → aeat.tax.agency
string='Tax Agency'
args: 'aeat.tax.agency'
year
Integer
default=_default_year
readonly=True
required=True
states={'draft': [('readonly', False)]}
button_calculate(self)
button_cancel(self)
button_confirm(self)
button_export(self)
button_open_move(self)
button_post(self)
button_recalculate(self)
button_recover(self)
button_unpost(self)
calculate(self)
create(self, vals)
get_account_from_template(self, account_template)
get_html(self)
get_period_type_selection(self)
get_taxes_from_templates(self, tax_templates)
onchange_company_id(self)
unlink(self)
data
Binary
required=True
string='File'
line_ids
One2many → l10n.es.aeat.report.compare_boe_file.line
comodel_name='l10n.es.aeat.report.compare_boe_file.line'
inverse_name='wizard_id'
string='Lines'
state
Selection
default='open'
selection=[('open', 'open'), ('compare', 'compare')]
button_compare_file(self)
content
Char
content_float
Float
compute='_compute_content_float'
string='Amount'
export_line_id
Many2one → aeat.model.export.config.line
comodel_name='aeat.model.export.config.line'
ondelete='cascade'
readonly=True
required=True
string='Export line'
name
Char
readonly=True
related='export_line_id.name'
string='Name'
sequence
Integer
readonly=True
related='export_line_id.sequence'
string='Sequence'
wizard_id
Many2one → l10n.es.aeat.report.compare_boe_file
comodel_name='l10n.es.aeat.report.compare_boe_file'
ondelete='cascade'
readonly=True
required=True
string='Wizard'
No public methods.
data
Binary
readonly=True
string='File'
name
Char
readonly=True
string='File name'
state
Selection
default='open'
selection=[('open', 'open'), ('get', 'get')]
action_get_file(self)
action_get_file_from_config(self, report)
tax_line_ids
One2many → l10n.es.aeat.tax.line
auto_join=True
comodel_name='l10n.es.aeat.tax.line'
domain=<expr>
inverse_name='res_id'
readonly=True
string='Tax lines'
valued_tax_line_ids
One2many → l10n.es.aeat.tax.line
auto_join=True
comodel_name='l10n.es.aeat.tax.line'
domain=<expr>
inverse_name='res_id'
readonly=True
string='Valued tax lines'
calculate(self)
create_regularization_move(self)
get_taxes_from_map(self, map_line)
unlink(self)
No new fields.
Public methods (4)connect_soap(self, wsdl, model)
connect_wsdl(self, service, wsdl, port_name, model)
get_test_mode(self, port_name, model)
send_soap(self, service, wsdl, port_name, model, operation, *args)
amount
Float
digits='Account'
field_number
Integer
readonly=True
related='map_line_id.field_number'
store=True
string='Field number'
map_line_id
Many2one → l10n.es.aeat.map.tax.line
comodel_name='l10n.es.aeat.map.tax.line'
ondelete='cascade'
required=True
string='Map line'
model
Char
index=True
readonly=True
required=True
string='Model name'
move_line_ids
Many2many → account.move.line
comodel_name='account.move.line'
string='Journal items'
name
Char
readonly=True
related='map_line_id.name'
store=True
string='Name'
res_id
Integer
index=True
required=True
string='Resource ID'
to_regularize
Boolean
readonly=True
related='map_line_id.to_regularize'
get_calculated_move_lines(self)
tax_agency_id
Many2one → aeat.tax.agency
string='Tax Agency'
args: 'aeat.tax.agency'
create(self, vals_list)
get_account_from_template(self, account_template)
get_taxes_from_templates(self, tax_templates)
aeat_anonymous_cash_customer
Boolean
help='Check this for anonymous cash customer. AEAT communication'
string='AEAT - Anonymous customer'
aeat_identification
Char
help='Identification for AEAT purposes'
aeat_identification_type
Selection
help="Used to specify an identification type to send to SII. Normally for sending national and export invoices to SII where the customer country is not Spain, it would calculate an identification type of 04 if the VAT field is filled and 06 if it was not. This field is to specify types of 03 through 05, in the event that the customer doesn't identify with a foreign VAT and instead with their passport or residential certificate. If there is no value it will work as before."
selection=[('03', 'Passport'), ('05', 'Residential certificate'), ('06', 'Another document')]
string='AEAT Identification type'
No public methods.
acc_type
Selection
store=True
No public methods.
| REPOSITORY | |
|---|---|
| REPOSITORY | OCA/l10n-spain |
| GIT | |
| GIT | https://github.com/OCA/l10n-spain.git |
| GIT FOLDER | |
| GIT FOLDER | https://github.com/OCA/l10n-spain/tree/14.0/l10n_es_aeat |
| VERSION | |
| VERSION | 3.0.5 |
| CATEGORY | |
| CATEGORY | Accounting & Finance |
| LICENSE | |
| LICENSE | AGPL-3 |
| APPLICATION | |
| APPLICATION | No |
| AUTO-INSTALLABLE | |
| AUTO-INSTALLABLE | No |
| AUTHORS | |
| AUTHORS | Tecnativa, Odoo Community Association (OCA), Pexego, Acysos S.L., AvanzOSC |
| MAINTAINERS | |
| MAINTAINERS | Tecnativa, Odoo Community Association (OCA), Pexego, Acysos S.L., AvanzOSC |
| COMMITTERS | |
| COMMITTERS | Pedro M. Baeza, Enric Tobella, Lois Rilo, manu, OCA Transbot, Miquel Raïch, Víctor Martínez, oca-travis, Weblate, OCA-git-bot, Eric Antones, Ethan Hildick, oca-ci, Jon Erik Ceberio, Eduardo De Miguel, Xavier Bouquiaux, Kevin Luna, oca-git-bot, KNVx, EmilioPascual |
| WEBSITE | |
| WEBSITE | https://github.com/OCA/l10n-spain |
| LAST TRACKING UPDATE | |
| LAST TRACKING UPDATE | 2026-07-06 00:40:48 |
| ODOO DEPENDENCIES | |
| ODOO DEPENDENCIES |
OCA/account-financial-reporting: - account_tax_balance OCA/server-ux: - date_range odoo/odoo: - l10n_es - account - base_setup - base - web - product - bus - web_tour - uom - analytic - portal - web_editor - http_routing - auth_signup - digest - resource - base_iban - base_vat |
| PYTHON DEPENDENCIES | |
| PYTHON DEPENDENCIES |
cryptography<39 unidecode |
| SYSTEM DEPENDENCIES | |
| SYSTEM DEPENDENCIES | Not have |
| DESCRIPTION | |
| DESCRIPTION | |
| XML ID | Name | Model | Type | Status |
|---|---|---|---|---|
aeat_model_export_config_form |
aeat.model.export.config.form | aeat.model.export.config | form | New |
aeat_model_export_config_line_form |
aeat.model.export.config.line.form | aeat.model.export.config.line | form | New |
aeat_model_export_config_line_tree |
aeat.model.export.config.line.tree | aeat.model.export.config.line | tree | New |
aeat_model_export_config_search |
aeat.model.export.config | search | New | |
aeat_model_export_config_tree |
aeat.model.export.config.tree | aeat.model.export.config | tree | New |
aeat_tax_agency_form_view |
aeat.tax.agency.form | aeat.tax.agency | form | New |
aeat_tax_agency_tree_view |
aeat.tax.agency.tree | aeat.tax.agency | tree | New |
l10n_es_aeat_certificate_form_view |
l10n.es.aeat.certificate.form | l10n.es.aeat.certificate | form | New |
l10n_es_aeat_certificate_password_wizard_view |
l10n.es.aeat.certificate.password.wizard | l10n.es.aeat.certificate.password | form | New |
l10n_es_aeat_map_tax_form |
l10n.es.aeat.map.tax | form | New | |
l10n_es_aeat_map_tax_line_form |
l10n.es.aeat.map.tax.line | form | New | |
l10n_es_aeat_map_tax_line_tree |
l10n.es.aeat.map.tax.line | tree | New | |
l10n_es_aeat_map_tax_tree |
l10n.es.aeat.map.tax | tree | New | |
l10n_es_certificate_tree_view |
l10n.es.aeat.certificate.tree | l10n.es.aeat.certificate | tree | New |
view_account_journal_form |
account.journal | xpath | Inherits account.view_account_journal_form | |
view_company_aeat_form |
res.company.aeat.form | res.company | notebook | Inherits base.view_company_form |
view_l10n_es_aeat_report_form |
l10n_es.aeat.report.form | l10n.es.aeat.report | form | New |
view_l10n_es_aeat_report_search |
AEAT Model (search) | l10n.es.aeat.report | search | New |
view_l10n_es_aeat_report_tree |
l10n_es.aeat.report.tree | l10n.es.aeat.report | tree | New |
view_l10n_es_aeat_tax_line_form |
l10n.es.aeat.tax.line.form | l10n.es.aeat.tax.line | form | New |
view_l10n_es_aeat_tax_line_tree |
l10n.es.aeat.tax.line.tree | l10n.es.aeat.tax.line | tree | New |
view_move_form |
account.move | xpath | Inherits account.view_move_form | |
view_move_line_tree |
account.move.line | field | Inherits account.view_move_line_tree | |
view_partner_form |
res.partner | notebook | Inherits account.view_partner_property_form | |
wizard_aeat_export |
Export AEAT BOE file | l10n.es.aeat.report.export_to_boe | form | New |
wizard_compare_boe_file |
Compare BOE file wizard | l10n.es.aeat.report.compare_boe_file | form | New |
thirdparty_invoice
Boolean
copy=False
string='Third-party invoice'
No public methods.
thirdparty_invoice
Boolean
compute='_compute_thirdparty_invoice'
copy=False
readonly=False
store=True
string='Third-party invoice'
thirdparty_number
Char
copy=False
help='Número de la factura emitida por un tercero.'
index=True
readonly=True
states={'draft': [('readonly', False)]}
string='Third-party number'
No public methods.
No new fields.
Public methods (0)No public methods.
No new fields.
Public methods (2)create(self, vals_list)
unlink(self)
active
Boolean
default=True
config_line_ids
One2many → aeat.model.export.config.line
comodel_name='aeat.model.export.config.line'
inverse_name='export_config_id'
string='Lines'
date_end
Date
string='Ending date'
date_start
Date
string='Starting date'
model_id
Many2one → ir.model
comodel_name='ir.model'
string='Odoo model'
model_number
Char
size=3
string='Model number'
name
Char
string='Name'
No public methods.
alignment
Selection
compute='_compute_alignment'
readonly=False
selection=[('left', 'Left'), ('right', 'Right')]
store=True
string='Alignment'
apply_sign
Boolean
compute='_compute_apply_sign'
readonly=False
store=True
string='Apply sign'
bool_no
Char
default=' '
size=1
string='Value for no'
bool_yes
Char
default='X'
size=1
string='Value for yes'
conditional
Boolean
compute='_compute_conditional'
store=True
conditional_expression
Char
help='If set, this expression will be used to evaluate if this line should be added'
string='Conditional expression'
decimal_size
Integer
compute='_compute_decimal_size'
readonly=False
store=True
string='Number of char for decimals'
export_config_id
Many2one → aeat.model.export.config
comodel_name='aeat.model.export.config'
ondelete='cascade'
required=True
string='Config parent'
export_type
Selection
default='string'
required=True
selection=[('string', 'Alphanumeric'), ('alphabetic', 'Alphabetic'), ('float', 'Number with decimals'), ('integer', 'Number without decimals'), ('boolean', 'Boolean'), ('subconfig', 'Sub-configuration')]
string='Export field type'
expression
Char
string='Expression'
fixed_value
Char
string='Fixed value'
name
Char
required=True
string='Name'
negative_sign
Char
default='N'
size=1
string='Negative sign character'
position
Integer
compute='_compute_position'
positive_sign
Char
default='0'
size=1
string='Positive sign character'
repeat
Boolean
compute='_compute_repeat'
store=True
repeat_expression
Char
help='If set, this expression will be used for getting the list of elements to iterate on'
string='Repeat expression'
sequence
Integer
string='Sequence'
size
Integer
string='Field size'
subconfig_id
Many2one → aeat.model.export.config
comodel_name='aeat.model.export.config'
string='Sub-configuration'
value
Char
compute='_compute_value'
store=True
No public methods.
name
Char
required=True
string='Name'
No public methods.
company_id
Many2one → res.company
comodel_name='res.company'
default=<expr>
required=True
string='Company'
date_end
Date
string='End Date'
date_start
Date
string='Start Date'
file
Binary
required=True
string='File'
folder
Char
required=True
string='Folder Name'
name
Char
string='Name'
private_key
Char
readonly=True
string='Private Key'
public_key
Char
readonly=True
string='Public Key'
state
Selection
default='draft'
selection=[('draft', 'Draft'), ('active', 'Active')]
string='State'
action_active(self)
get_certificates(self, company=False)
load_password_wizard(self)
password
Char
required=True
string='Password'
get_keys(self)
date_from
Date
string='From Date'
date_from_search
Date
compute='_compute_date_from_search'
store=True
date_to
Date
string='To Date'
date_to_search
Date
compute='_compute_date_to_search'
store=True
map_line_ids
One2many → l10n.es.aeat.map.tax.line
comodel_name='l10n.es.aeat.map.tax.line'
inverse_name='map_parent_id'
required=True
string='Map lines'
model
Integer
required=True
string='AEAT Model'
name_get(self)
account_id
Many2one → account.account.template
comodel_name='account.account.template'
string='Account Template'
exigible_type
Selection
default='yes'
required=True
selection=[('yes', 'Only exigible amounts'), ('no', 'Only non-exigible amounts'), ('both', 'Both exigible and non-exigible amounts')]
string='Exigibility'
field_number
Integer
required=True
string='Field number'
field_type
Selection
default='amount'
required=True
selection=[('base', 'Base'), ('amount', 'Amount'), ('both', 'Both')]
string='Field type'
fiscal_position_ids
Many2many → account.fiscal.position.template
comodel_name='account.fiscal.position.template'
compute='_compute_fiscal_position_ids'
compute_sudo=True
help='Taxes mapped with different source tax on this Fiscal Position Templates'
store=True
string='Fiscal Position Templates'
inverse
Boolean
default=False
string='Inverse summarize sign'
map_parent_id
Many2one → l10n.es.aeat.map.tax
comodel_name='l10n.es.aeat.map.tax'
required=True
move_type
Selection
default='all'
required=True
selection=[('all', 'All'), ('regular', 'Regular'), ('refund', 'Refund')]
string='Operation type'
name
Char
required=True
string='Name'
sum_type
Selection
default='both'
required=True
selection=[('credit', 'Credit'), ('debit', 'Debit'), ('both', 'Both (Credit - Debit)')]
string='Summarize type'
tax_ids
Many2many → account.tax.template
comodel_name='account.tax.template'
string='Taxes templates'
to_regularize
Boolean
string='To regularize'
No public methods.
allow_posting
Boolean
compute='_compute_allow_posting'
calculation_date
Datetime
string='Calculation date'
company_id
Many2one → res.company
comodel_name='res.company'
default=<expr>
readonly=True
required=True
states={'draft': [('readonly', False)]}
string='Company'
company_vat
Char
readonly=True
required=True
size=9
states={'draft': [('readonly', False)]}
string='VAT number'
contact_email
Char
readonly=True
size=50
states={'draft': [('readonly', False)]}
string='Contact email'
contact_name
Char
help='Must have name and surname.'
readonly=True
required=True
size=40
states={'draft': [('readonly', False)]}
string='Full Name'
contact_phone
Char
readonly=True
required=True
size=9
states={'draft': [('readonly', False)]}
string='Phone'
counterpart_account_id
Many2one → account.account
comodel_name='account.account'
help='This account will be the counterpart for all the journal items that are regularized when posting the report.'
string='Counterpart account'
currency_id
Many2one → res.currency
comodel_name='res.currency'
readonly=True
related='company_id.currency_id'
string='Currency'
date_end
Date
compute='_compute_dates'
readonly=True
required=True
states={'draft': [('readonly', False)]}
store=True
string='Ending date'
date_start
Date
compute='_compute_dates'
readonly=True
required=True
states={'draft': [('readonly', False)]}
store=True
string='Starting date'
error_count
Integer
compute='_compute_error_count'
export_config_id
Many2one → aeat.model.export.config
comodel_name='aeat.model.export.config'
compute='_compute_export_config_id'
domain=<expr>
readonly=False
store=True
string='Export config'
journal_id
Many2one → account.journal
comodel_name='account.journal'
default=_default_journal
domain="[('type', '=', 'general'), ('company_id', '=', company_id)]"
help='Journal in which post the move.'
states={'done': [('readonly', True)]}
string='Journal'
model_id
Many2one → ir.model
comodel_name='ir.model'
compute='_compute_report_model'
string='Model'
move_id
Many2one → account.move
comodel_name='account.move'
domain=[('type', '=', 'entry')]
readonly=True
string='Account entry'
name
Char
copy=False
size=13
string='Report identifier'
number
Char
default=_default_number
readonly=True
required=True
size=3
string='Model number'
partner_bank_id
Many2one → res.partner.bank
comodel_name='res.partner.bank'
domain="[('acc_type', '=', 'iban'), ('partner_id', '=', partner_id)]"
help='Company bank account used for the presentation'
string='Bank account'
partner_id
Many2one → res.partner
comodel_name='res.partner'
readonly=True
related='company_id.partner_id'
string='Partner'
period_type
Selection
default=_default_period_type
readonly=True
required=True
selection='get_period_type_selection'
states={'draft': [('readonly', False)]}
string='Period type'
previous_number
Char
size=13
states={'done': [('readonly', True)]}
string='Previous declaration number'
representative_vat
Char
help='Legal Representative VAT number.'
readonly=True
size=9
states={'draft': [('readonly', False)]}
string='L.R. VAT number'
state
Selection
default='draft'
readonly=True
selection=[('draft', 'Draft'), ('calculated', 'Processed'), ('done', 'Done'), ('posted', 'Posted'), ('cancelled', 'Cancelled')]
string='State'
tracking=True
statement_type
Selection
default='N'
readonly=True
required=True
selection=[('N', 'Normal'), ('C', 'Complementary'), ('S', 'Substitutive')]
states={'draft': [('readonly', False)]}
string='Statement Type'
support_type
Selection
default='T'
readonly=True
required=True
selection=[('C', 'DVD'), ('T', 'Telematics')]
states={'draft': [('readonly', False)]}
string='Support Type'
year
Integer
default=_default_year
readonly=True
required=True
states={'draft': [('readonly', False)]}
string='Year'
button_calculate(self)
button_cancel(self)
button_confirm(self)
button_export(self)
button_open_move(self)
button_post(self)
button_recalculate(self)
button_recover(self)
button_unpost(self)
calculate(self)
create(self, vals)
get_account_from_template(self, account_template)
get_html(self)
get_period_type_selection(self)
get_taxes_from_templates(self, tax_templates)
onchange_company_id(self)
unlink(self)
data
Binary
required=True
string='File'
line_ids
One2many → l10n.es.aeat.report.compare_boe_file.line
comodel_name='l10n.es.aeat.report.compare_boe_file.line'
inverse_name='wizard_id'
string='Lines'
state
Selection
default='open'
selection=[('open', 'open'), ('compare', 'compare')]
string='State'
button_compare_file(self)
content
Char
string='Content'
content_float
Float
compute='_compute_content_float'
string='Amount'
export_line_id
Many2one → aeat.model.export.config.line
comodel_name='aeat.model.export.config.line'
ondelete='cascade'
readonly=True
required=True
string='Export line'
name
Char
readonly=True
related='export_line_id.name'
string='Name'
sequence
Integer
readonly=True
related='export_line_id.sequence'
string='Sequence'
wizard_id
Many2one → l10n.es.aeat.report.compare_boe_file
comodel_name='l10n.es.aeat.report.compare_boe_file'
ondelete='cascade'
readonly=True
required=True
string='Wizard'
No public methods.
data
Binary
readonly=True
string='File'
name
Char
readonly=True
string='File name'
state
Selection
default='open'
selection=[('open', 'open'), ('get', 'get')]
string='State'
action_get_file(self)
action_get_file_from_config(self, report)
tax_line_ids
One2many → l10n.es.aeat.tax.line
auto_join=True
comodel_name='l10n.es.aeat.tax.line'
domain=<expr>
inverse_name='res_id'
readonly=True
string='Tax lines'
calculate(self)
create_regularization_move(self)
get_taxes_from_map(self, map_line)
unlink(self)
No new fields.
Public methods (4)connect_soap(self, wsdl, model, settings=None)
connect_wsdl(self, service, wsdl, port_name, model, settings=None)
get_test_mode(self, port_name, model)
send_soap(self, service, wsdl, port_name, model, operation, *args, settings=None)
amount
Float
digits='Account'
field_number
Integer
readonly=True
related='map_line_id.field_number'
store=True
string='Field number'
map_line_id
Many2one → l10n.es.aeat.map.tax.line
comodel_name='l10n.es.aeat.map.tax.line'
ondelete='cascade'
required=True
string='Map line'
model
Char
index=True
readonly=True
required=True
string='Model name'
model_id
Many2one → ir.model
comodel_name='ir.model'
compute='_compute_model_id'
store=True
string='Model'
move_line_ids
Many2many → account.move.line
comodel_name='account.move.line'
string='Journal items'
name
Char
readonly=True
related='map_line_id.name'
store=True
string='Name'
res_id
Integer
index=True
required=True
string='Resource ID'
to_regularize
Boolean
readonly=True
related='map_line_id.to_regularize'
get_calculated_move_lines(self)
tax_agency_id
Many2one → aeat.tax.agency
string='Tax Agency'
args: 'aeat.tax.agency'
create(self, vals_list)
get_account_from_template(self, account_template)
get_taxes_from_templates(self, tax_templates)
aeat_anonymous_cash_customer
Boolean
help='Check this for anonymous cash customer. AEAT communication'
string='AEAT - Anonymous customer'
aeat_identification
Char
help='Identification for AEAT purposes'
aeat_identification_type
Selection
help="Used to specify an identification type to send to SII. Normally for sending national and export invoices to SII where the customer country is not Spain, it would calculate an identification type of 04 if the VAT field is filled and 06 if it was not. This field is to specify types of 03 through 05, in the event that the customer doesn't identify with a foreign VAT and instead with their passport or residential certificate. If there is no value it will work as before."
selection=[('03', 'Passport'), ('05', 'Residential certificate'), ('06', 'Another document')]
string='AEAT Identification type'
No public methods.
acc_type
Selection
store=True
No public methods.
| REPOSITORY | |
|---|---|
| REPOSITORY | OCA/l10n-spain |
| GIT | |
| GIT | https://github.com/OCA/l10n-spain.git |
| GIT FOLDER | |
| GIT FOLDER | https://github.com/OCA/l10n-spain/tree/13.0/l10n_es_aeat |
| VERSION | |
| VERSION | 4.0.0 |
| CATEGORY | |
| CATEGORY | Accounting & Finance |
| LICENSE | |
| LICENSE | AGPL-3 |
| APPLICATION | |
| APPLICATION | No |
| AUTO-INSTALLABLE | |
| AUTO-INSTALLABLE | No |
| AUTHORS | |
| AUTHORS | Tecnativa, Odoo Community Association (OCA), Pexego, Acysos S.L., AvanzOSC |
| MAINTAINERS | |
| MAINTAINERS | Tecnativa, Odoo Community Association (OCA), Pexego, Acysos S.L., AvanzOSC |
| COMMITTERS | |
| COMMITTERS | Pedro M. Baeza, mreficent, Enric Tobella, Jordi Ballester Alomar, manu, OCA Transbot, Víctor Martínez, oca-travis, Weblate, OCA-git-bot, valen, oca-ci, rolando, Olga Marco |
| WEBSITE | |
| WEBSITE | https://github.com/OCA/l10n-spain |
| LAST TRACKING UPDATE | |
| LAST TRACKING UPDATE | 2026-07-06 00:34:09 |
| ODOO DEPENDENCIES | |
| ODOO DEPENDENCIES |
OCA/account-financial-reporting: - account_tax_balance OCA/server-ux: - date_range odoo/odoo: - l10n_es - account - base_setup - base - web - product - bus - web_tour - uom - analytic - portal - web_editor - http_routing - auth_signup - digest - resource - base_iban - base_vat |
| PYTHON DEPENDENCIES | |
| PYTHON DEPENDENCIES |
pyOpenSSL unidecode |
| SYSTEM DEPENDENCIES | |
| SYSTEM DEPENDENCIES | Not have |
| DESCRIPTION | |
| DESCRIPTION | |
| XML ID | Name | Model | Type | Status |
|---|---|---|---|---|
aeat_model_export_config_form |
aeat.model.export.config.form | aeat.model.export.config | form | New |
aeat_model_export_config_line_form |
aeat.model.export.config.line.form | aeat.model.export.config.line | form | New |
aeat_model_export_config_line_tree |
aeat.model.export.config.line.tree | aeat.model.export.config.line | tree | New |
aeat_model_export_config_search |
aeat.model.export.config | search | New | |
aeat_model_export_config_tree |
aeat.model.export.config.tree | aeat.model.export.config | tree | New |
aeat_tax_agency_form_view |
aeat.tax.agency.form | aeat.tax.agency | form | New |
aeat_tax_agency_tree_view |
aeat.tax.agency.tree | aeat.tax.agency | tree | New |
l10n_es_aeat_certificate_form_view |
l10n.es.aeat.certificate.form | l10n.es.aeat.certificate | form | New |
l10n_es_aeat_certificate_password_wizard_view |
l10n.es.aeat.certificate.password.wizard | l10n.es.aeat.certificate.password | form | New |
l10n_es_aeat_map_tax_form |
l10n.es.aeat.map.tax | form | New | |
l10n_es_aeat_map_tax_line_form |
l10n.es.aeat.map.tax.line | form | New | |
l10n_es_aeat_map_tax_line_tree |
l10n.es.aeat.map.tax.line | tree | New | |
l10n_es_aeat_map_tax_tree |
l10n.es.aeat.map.tax | tree | New | |
l10n_es_certificate_tree_view |
l10n.es.aeat.certificate.tree | l10n.es.aeat.certificate | tree | New |
view_account_journal_form |
account.journal | xpath | Inherits account.view_account_journal_form | |
view_company_aeat_form |
res.company.aeat.form | res.company | notebook | Inherits base.view_company_form |
view_l10n_es_aeat_report_form |
l10n_es.aeat.report.form | l10n.es.aeat.report | form | New |
view_l10n_es_aeat_report_search |
AEAT Model (search) | l10n.es.aeat.report | search | New |
view_l10n_es_aeat_report_tree |
l10n_es.aeat.report.tree | l10n.es.aeat.report | tree | New |
view_l10n_es_aeat_tax_line_form |
l10n.es.aeat.tax.line.form | l10n.es.aeat.tax.line | form | New |
view_l10n_es_aeat_tax_line_tree |
l10n.es.aeat.tax.line.tree | l10n.es.aeat.tax.line | tree | New |
view_move_form |
account.move | xpath | Inherits account.view_move_form | |
view_move_line_tree |
account.move.line | field | Inherits account.view_move_line_tree | |
view_partner_form |
res.partner | notebook | Inherits account.view_partner_property_form | |
wizard_aeat_export |
Export AEAT BOE file | l10n.es.aeat.report.export_to_boe | form | New |
wizard_compare_boe_file |
Compare BOE file wizard | l10n.es.aeat.report.compare_boe_file | form | New |
thirdparty_invoice
Boolean
copy=False
string='Third-party invoice'
No public methods.
thirdparty_invoice
Boolean
compute='_compute_thirdparty_invoice'
copy=False
readonly=False
store=True
string='Third-party invoice'
thirdparty_number
Char
copy=False
help='Número de la factura emitida por un tercero.'
index=True
readonly=True
states={'draft': [('readonly', False)]}
string='Third-party number'
No public methods.
No new fields.
Public methods (2)create(self, vals_list)
unlink(self)
active
Boolean
default=True
config_line_ids
One2many → aeat.model.export.config.line
comodel_name='aeat.model.export.config.line'
inverse_name='export_config_id'
string='Lines'
date_end
Date
string='Ending date'
date_start
Date
string='Starting date'
model_id
Many2one → ir.model
comodel_name='ir.model'
string='Odoo model'
model_number
Char
size=3
string='Model number'
name
Char
string='Name'
No public methods.
alignment
Selection
compute='_compute_alignment'
readonly=False
selection=[('left', 'Left'), ('right', 'Right')]
store=True
string='Alignment'
apply_sign
Boolean
compute='_compute_apply_sign'
readonly=False
store=True
string='Apply sign'
bool_no
Char
default=' '
size=1
string='Value for no'
bool_yes
Char
default='X'
size=1
string='Value for yes'
conditional
Boolean
compute='_compute_conditional'
store=True
conditional_expression
Char
help='If set, this expression will be used to evaluate if this line should be added'
string='Conditional expression'
decimal_size
Integer
compute='_compute_decimal_size'
readonly=False
store=True
string='Number of char for decimals'
export_config_id
Many2one → aeat.model.export.config
comodel_name='aeat.model.export.config'
ondelete='cascade'
required=True
string='Config parent'
export_type
Selection
default='string'
required=True
selection=[('string', 'Alphanumeric'), ('alphabetic', 'Alphabetic'), ('float', 'Number with decimals'), ('integer', 'Number without decimals'), ('boolean', 'Boolean'), ('subconfig', 'Sub-configuration')]
string='Export field type'
expression
Char
string='Expression'
fixed_value
Char
string='Fixed value'
name
Char
required=True
string='Name'
negative_sign
Char
default='N'
size=1
string='Negative sign character'
position
Integer
compute='_compute_position'
positive_sign
Char
default='0'
size=1
string='Positive sign character'
repeat
Boolean
compute='_compute_repeat'
store=True
repeat_expression
Char
help='If set, this expression will be used for getting the list of elements to iterate on'
string='Repeat expression'
sequence
Integer
string='Sequence'
size
Integer
string='Field size'
subconfig_id
Many2one → aeat.model.export.config
comodel_name='aeat.model.export.config'
string='Sub-configuration'
value
Char
compute='_compute_value'
store=True
No public methods.
name
Char
required=True
string='Name'
No public methods.
company_id
Many2one → res.company
comodel_name='res.company'
default=<expr>
required=True
string='Company'
date_end
Date
string='End Date'
date_start
Date
string='Start Date'
file
Binary
required=True
string='File'
folder
Char
required=True
string='Folder Name'
name
Char
string='Name'
private_key
Char
readonly=True
string='Private Key'
public_key
Char
readonly=True
string='Public Key'
state
Selection
default='draft'
selection=[('draft', 'Draft'), ('active', 'Active')]
string='State'
action_active(self)
get_certificates(self, company=False)
load_password_wizard(self)
password
Char
required=True
string='Password'
get_keys(self)
date_from
Date
string='From Date'
date_from_search
Date
compute='_compute_date_from_search'
store=True
date_to
Date
string='To Date'
date_to_search
Date
compute='_compute_date_to_search'
store=True
map_line_ids
One2many → l10n.es.aeat.map.tax.line
comodel_name='l10n.es.aeat.map.tax.line'
inverse_name='map_parent_id'
required=True
string='Map lines'
model
Integer
required=True
string='AEAT Model'
name_get(self)
account_id
Many2one → account.account.template
comodel_name='account.account.template'
string='Account Template'
exigible_type
Selection
default='yes'
required=True
selection=[('yes', 'Only exigible amounts'), ('no', 'Only non-exigible amounts'), ('both', 'Both exigible and non-exigible amounts')]
string='Exigibility'
field_number
Integer
required=True
string='Field number'
field_type
Selection
default='amount'
required=True
selection=[('base', 'Base'), ('amount', 'Amount'), ('both', 'Both')]
string='Field type'
inverse
Boolean
default=False
string='Inverse summarize sign'
map_parent_id
Many2one → l10n.es.aeat.map.tax
comodel_name='l10n.es.aeat.map.tax'
required=True
move_type
Selection
default='all'
required=True
selection=[('all', 'All'), ('regular', 'Regular'), ('refund', 'Refund')]
string='Operation type'
name
Char
required=True
string='Name'
sum_type
Selection
default='both'
required=True
selection=[('credit', 'Credit'), ('debit', 'Debit'), ('both', 'Both (Credit - Debit)')]
string='Summarize type'
tax_ids
Many2many → account.tax.template
comodel_name='account.tax.template'
string='Taxes templates'
to_regularize
Boolean
string='To regularize'
No public methods.
allow_posting
Boolean
compute='_compute_allow_posting'
calculation_date
Datetime
string='Calculation date'
company_id
Many2one → res.company
comodel_name='res.company'
default=<expr>
readonly=True
required=True
states={'draft': [('readonly', False)]}
string='Company'
company_vat
Char
readonly=True
required=True
size=9
states={'draft': [('readonly', False)]}
string='VAT number'
contact_email
Char
readonly=True
size=50
states={'draft': [('readonly', False)]}
string='Contact email'
contact_name
Char
help='Must have name and surname.'
readonly=True
required=True
size=40
states={'draft': [('readonly', False)]}
string='Full Name'
contact_phone
Char
readonly=True
required=True
size=9
states={'draft': [('readonly', False)]}
string='Phone'
counterpart_account_id
Many2one → account.account
comodel_name='account.account'
help='This account will be the counterpart for all the journal items that are regularized when posting the report.'
string='Counterpart account'
currency_id
Many2one → res.currency
comodel_name='res.currency'
default=<expr>
readonly=True
related='company_id.currency_id'
string='Currency'
date_end
Date
compute='_compute_dates'
readonly=True
required=True
states={'draft': [('readonly', False)]}
store=True
string='Ending date'
date_start
Date
compute='_compute_dates'
readonly=True
required=True
states={'draft': [('readonly', False)]}
store=True
string='Starting date'
error_count
Integer
compute='_compute_error_count'
export_config_id
Many2one → aeat.model.export.config
comodel_name='aeat.model.export.config'
compute='_compute_export_config_id'
domain=<expr>
readonly=False
store=True
string='Export config'
journal_id
Many2one → account.journal
comodel_name='account.journal'
default=_default_journal
domain=[('type', '=', 'general')]
help='Journal in which post the move.'
states={'done': [('readonly', True)]}
string='Journal'
model_id
Many2one → ir.model
comodel_name='ir.model'
compute='_compute_report_model'
string='Model'
move_id
Many2one → account.move
comodel_name='account.move'
domain=[('type', '=', 'entry')]
readonly=True
string='Account entry'
name
Char
copy=False
size=13
string='Report identifier'
number
Char
default=_default_number
readonly=True
required=True
size=3
string='Model number'
partner_bank_id
Many2one → res.partner.bank
comodel_name='res.partner.bank'
domain="[('acc_type', '=', 'iban'), ('partner_id', '=', partner_id)]"
help='Company bank account used for the presentation'
string='Bank account'
partner_id
Many2one → res.partner
comodel_name='res.partner'
readonly=True
related='company_id.partner_id'
string='Partner'
period_type
Selection
default=_default_period_type
readonly=True
required=True
selection='get_period_type_selection'
states={'draft': [('readonly', False)]}
string='Period type'
previous_number
Char
size=13
states={'done': [('readonly', True)]}
string='Previous declaration number'
representative_vat
Char
help='Legal Representative VAT number.'
readonly=True
size=9
states={'draft': [('readonly', False)]}
string='L.R. VAT number'
state
Selection
default='draft'
readonly=True
selection=[('draft', 'Draft'), ('calculated', 'Processed'), ('done', 'Done'), ('posted', 'Posted'), ('cancelled', 'Cancelled')]
string='State'
tracking=True
statement_type
Selection
default='N'
readonly=True
required=True
selection=[('N', 'Normal'), ('C', 'Complementary'), ('S', 'Substitutive')]
states={'draft': [('readonly', False)]}
string='Statement Type'
support_type
Selection
default='T'
readonly=True
required=True
selection=[('C', 'DVD'), ('T', 'Telematics')]
states={'draft': [('readonly', False)]}
string='Support Type'
year
Integer
default=_default_year
readonly=True
required=True
states={'draft': [('readonly', False)]}
string='Year'
button_calculate(self)
button_cancel(self)
button_confirm(self)
button_export(self)
button_open_move(self)
button_post(self)
button_recalculate(self)
button_recover(self)
button_unpost(self)
calculate(self)
create(self, vals)
get_account_from_template(self, account_template)
get_html(self)
get_period_type_selection(self)
get_taxes_from_templates(self, tax_templates)
onchange_company_id(self)
unlink(self)
data
Binary
required=True
string='File'
line_ids
One2many → l10n.es.aeat.report.compare_boe_file.line
comodel_name='l10n.es.aeat.report.compare_boe_file.line'
inverse_name='wizard_id'
string='Lines'
state
Selection
default='open'
selection=[('open', 'open'), ('compare', 'compare')]
string='State'
button_compare_file(self)
content
Char
string='Content'
content_float
Float
compute='_compute_content_float'
string='Amount'
export_line_id
Many2one → aeat.model.export.config.line
comodel_name='aeat.model.export.config.line'
ondelete='cascade'
readonly=True
required=True
string='Export line'
name
Char
readonly=True
related='export_line_id.name'
string='Name'
sequence
Integer
readonly=True
related='export_line_id.sequence'
string='Sequence'
wizard_id
Many2one → l10n.es.aeat.report.compare_boe_file
comodel_name='l10n.es.aeat.report.compare_boe_file'
ondelete='cascade'
readonly=True
required=True
string='Wizard'
No public methods.
data
Binary
readonly=True
string='File'
name
Char
readonly=True
string='File name'
state
Selection
default='open'
selection=[('open', 'open'), ('get', 'get')]
string='State'
action_get_file(self)
action_get_file_from_config(self, report)
tax_line_ids
One2many → l10n.es.aeat.tax.line
auto_join=True
comodel_name='l10n.es.aeat.tax.line'
domain=<expr>
inverse_name='res_id'
readonly=True
string='Tax lines'
calculate(self)
create_regularization_move(self)
get_taxes_from_map(self, map_line)
unlink(self)
No new fields.
Public methods (4)connect_soap(self, wsdl, model)
connect_wsdl(self, service, wsdl, port_name, model)
get_test_mode(self, port_name, model)
send_soap(self, service, wsdl, port_name, model, operation, *args)
amount
Float
digits='Account'
field_number
Integer
readonly=True
related='map_line_id.field_number'
store=True
string='Field number'
map_line_id
Many2one → l10n.es.aeat.map.tax.line
comodel_name='l10n.es.aeat.map.tax.line'
ondelete='cascade'
required=True
string='Map line'
model
Char
index=True
readonly=True
required=True
string='Model name'
model_id
Many2one → ir.model
comodel_name='ir.model'
compute='_compute_model_id'
store=True
string='Model'
move_line_ids
Many2many → account.move.line
comodel_name='account.move.line'
string='Journal items'
name
Char
readonly=True
related='map_line_id.name'
store=True
string='Name'
res_id
Integer
index=True
ondelete='cascade'
required=True
string='Resource ID'
to_regularize
Boolean
readonly=True
related='map_line_id.to_regularize'
get_calculated_move_lines(self)
tax_agency_id
Many2one → aeat.tax.agency
string='Tax Agency'
args: 'aeat.tax.agency'
create(self, vals_list)
get_account_from_template(self, account_template)
get_taxes_from_templates(self, tax_templates)
aeat_anonymous_cash_customer
Boolean
help='Check this for anonymous cash customer. AEAT communication'
string='AEAT - Anonymous customer'
aeat_identification
Char
help='Identification for AEAT purposes'
aeat_identification_type
Selection
help="Used to specify an identification type to send to SII. Normally for sending national and export invoices to SII where the customer country is not Spain, it would calculate an identification type of 04 if the VAT field is filled and 06 if it was not. This field is to specify types of 03 through 05, in the event that the customer doesn't identify with a foreign VAT and instead with their passport or residential certificate. If there is no value it will work as before."
selection=[('03', 'Passport'), ('05', 'Residential certificate'), ('06', 'Another document')]
string='AEAT Identification type'
No public methods.
acc_type
Selection
store=True
No public methods.
| REPOSITORY | |
|---|---|
| REPOSITORY | OCA/l10n-spain |
| GIT | |
| GIT | https://github.com/OCA/l10n-spain.git |
| GIT FOLDER | |
| GIT FOLDER | https://github.com/OCA/l10n-spain/tree/12.0/l10n_es_aeat |
| VERSION | |
| VERSION | 3.0.0 |
| CATEGORY | |
| CATEGORY | Accounting & Finance |
| LICENSE | |
| LICENSE | AGPL-3 |
| APPLICATION | |
| APPLICATION | No |
| AUTO-INSTALLABLE | |
| AUTO-INSTALLABLE | No |
| AUTHORS | |
| AUTHORS | Tecnativa, Odoo Community Association (OCA), Pexego, Acysos S.L., AvanzOSC |
| MAINTAINERS | |
| MAINTAINERS | Tecnativa, Odoo Community Association (OCA), Pexego, Acysos S.L., AvanzOSC |
| COMMITTERS | |
| COMMITTERS | Pedro M. Baeza, GitHub, mreficent, Carlos Dauden, Ignacio Ibeas - Acysos S.L, OCA Transbot, Sergio Teruel, oca-travis, Weblate, OCA-git-bot, Ethan Hildick, oca-ci, xAdrianC, Enrique |
| WEBSITE | |
| WEBSITE | https://github.com/OCA/l10n-spain |
| LAST TRACKING UPDATE | |
| LAST TRACKING UPDATE | 2026-07-06 00:29:12 |
| ODOO DEPENDENCIES | |
| ODOO DEPENDENCIES |
OCA/account-financial-reporting: - account_tax_balance OCA/server-ux: - date_range odoo/odoo: - account - base_setup - base - web - product - decimal_precision - bus - web_tour - uom - analytic - portal - http_routing - digest - base_iban - l10n_es - base_vat |
| PYTHON DEPENDENCIES | |
| PYTHON DEPENDENCIES |
OpenSSL requests unidecode zeep |
| SYSTEM DEPENDENCIES | |
| SYSTEM DEPENDENCIES | Not have |
| DESCRIPTION | |
| DESCRIPTION | |
| XML ID | Name | Model | Type | Status |
|---|---|---|---|---|
aeat_model_export_config_form |
aeat.model.export.config.form | aeat.model.export.config | form | New |
aeat_model_export_config_line_form |
aeat.model.export.config.line.form | aeat.model.export.config.line | form | New |
aeat_model_export_config_line_tree |
aeat.model.export.config.line.tree | aeat.model.export.config.line | tree | New |
aeat_model_export_config_search |
aeat.model.export.config | search | New | |
aeat_model_export_config_tree |
aeat.model.export.config.tree | aeat.model.export.config | tree | New |
aeat_report_assets_backend |
aeat assets | ir.ui.view | qweb | Inherits web.assets_backend |
aeat_tax_agency_form_view |
aeat.tax.agency.form | aeat.tax.agency | form | New |
aeat_tax_agency_tree_view |
aeat.tax.agency.tree | aeat.tax.agency | tree | New |
l10n_es_aeat_certificate_form_view |
l10n.es.aeat.certificate.form | l10n.es.aeat.certificate | form | New |
l10n_es_aeat_certificate_password_wizard_view |
l10n.es.aeat.certificate.password.wizard | l10n.es.aeat.certificate.password | form | New |
l10n_es_aeat_map_tax_form |
l10n.es.aeat.map.tax | form | New | |
l10n_es_aeat_map_tax_line_form |
l10n.es.aeat.map.tax.line | form | New | |
l10n_es_aeat_map_tax_line_tree |
l10n.es.aeat.map.tax.line | tree | New | |
l10n_es_aeat_map_tax_tree |
l10n.es.aeat.map.tax | tree | New | |
l10n_es_certificate_tree_view |
l10n.es.aeat.certificate.tree | l10n.es.aeat.certificate | tree | New |
view_company_aeat_form |
res.company.aeat.form | res.company | notebook | Inherits base.view_company_form |
view_l10n_es_aeat_report_form |
l10n_es.aeat.report.form | l10n.es.aeat.report | form | New |
view_l10n_es_aeat_report_search |
AEAT Model (search) | l10n.es.aeat.report | search | New |
view_l10n_es_aeat_report_tree |
l10n_es.aeat.report.tree | l10n.es.aeat.report | tree | New |
view_l10n_es_aeat_tax_line_form |
l10n.es.aeat.tax.line.form | l10n.es.aeat.tax.line | form | New |
view_l10n_es_aeat_tax_line_tree |
l10n.es.aeat.tax.line.tree | l10n.es.aeat.tax.line | tree | New |
view_move_line_tree |
account.move.line | field | Inherits account.view_move_line_tree | |
view_partner_form |
res.partner | group | Inherits account.view_partner_property_form | |
wizard_aeat_export |
Export AEAT BOE file | l10n.es.aeat.report.export_to_boe | form | New |
wizard_compare_boe_file |
Compare BOE file wizard | l10n.es.aeat.report.compare_boe_file | form | New |
active
Boolean
default=True
config_line_ids
One2many → aeat.model.export.config.line
comodel_name='aeat.model.export.config.line'
inverse_name='export_config_id'
oldname='config_lines'
string='Lines'
date_end
Date
string='Ending date'
date_start
Date
string='Starting date'
model_id
Many2one → ir.model
comodel_name='ir.model'
oldname='model'
string='Odoo model'
model_number
Char
size=3
string='Model number'
name
Char
string='Name'
No public methods.
alignment
Selection
default='left'
string='Alignment'
args: [('left', 'Left'), ('right', 'Right')]
apply_sign
Boolean
default=True
string='Apply sign'
bool_no
Char
default=' '
size=1
string='Value for no'
bool_yes
Char
default='X'
size=1
string='Value for yes'
conditional
Boolean
compute='_compute_conditional'
store=True
conditional_expression
Char
help='If set, this expression will be used to evaluate if this line should be added'
string='Conditional expression'
decimal_size
Integer
default=0
string='Number of char for decimals'
export_config_id
Many2one → aeat.model.export.config
comodel_name='aeat.model.export.config'
ondelete='cascade'
required=True
string='Config parent'
export_type
Selection
default='string'
required=True
selection=[('string', 'Alphanumeric'), ('alphabetic', 'Alphabetic'), ('float', 'Number with decimals'), ('integer', 'Number without decimals'), ('boolean', 'Boolean'), ('subconfig', 'Sub-configuration')]
string='Export field type'
expression
Char
string='Expression'
fixed_value
Char
string='Fixed value'
name
Char
required=True
string='Name'
negative_sign
Char
default='N'
oldname='sign'
size=1
string='Negative sign character'
position
Integer
compute='_compute_position'
positive_sign
Char
default='0'
size=1
string='Positive sign character'
repeat
Boolean
compute='_compute_repeat'
store=True
repeat_expression
Char
help='If set, this expression will be used for getting the list of elements to iterate on'
string='Repeat expression'
sequence
Integer
string='Sequence'
size
Integer
string='Field size'
subconfig_id
Many2one → aeat.model.export.config
comodel_name='aeat.model.export.config'
oldname='sub_config'
string='Sub-configuration'
value
Char
compute='_compute_value'
store=True
onchange_subconfig(self)
onchange_type(self)
name
Char
required=True
string='Name'
No public methods.
company_id
Many2one → res.company
comodel_name='res.company'
default=<expr>
required=True
string='Compañía'
date_end
Date
string='End Date'
date_start
Date
string='Start Date'
file
Binary
required=True
string='File'
folder
Char
required=True
string='Folder Name'
name
Char
string='Name'
private_key
Char
readonly=True
string='Private Key'
public_key
Char
readonly=True
string='Public Key'
state
Selection
default='draft'
string='State'
args: [('draft', 'Draft'), ('active', 'Active')]
action_active(self)
get_certificates(self, company=False)
load_password_wizard(self)
password
Char
required=True
string='Password'
get_keys(self)
date_from
Date
string='From Date'
date_from_search
Date
compute='_compute_date_from_search'
store=True
date_to
Date
string='To Date'
date_to_search
Date
compute='_compute_date_to_search'
store=True
map_line_ids
One2many → l10n.es.aeat.map.tax.line
comodel_name='l10n.es.aeat.map.tax.line'
inverse_name='map_parent_id'
required=True
string='Map lines'
model
Integer
required=True
string='AEAT Model'
name_get(self)
exigible_type
Selection
default='yes'
required=True
selection=[('yes', 'Only exigible amounts'), ('no', 'Only non-exigible amounts'), ('both', 'Both exigible and non-exigible amounts')]
string='Exigibility'
field_number
Integer
required=True
string='Field number'
field_type
Selection
default='amount'
required=True
selection=[('base', 'Base'), ('amount', 'Amount'), ('both', 'Both')]
string='Field type'
inverse
Boolean
default=False
string='Inverse summarize sign'
map_parent_id
Many2one → l10n.es.aeat.map.tax
comodel_name='l10n.es.aeat.map.tax'
required=True
move_type
Selection
default='all'
required=True
selection=[('all', 'All'), ('regular', 'Regular'), ('refund', 'Refund')]
string='Operation type'
name
Char
required=True
string='Name'
sum_type
Selection
default='both'
required=True
selection=[('credit', 'Credit'), ('debit', 'Debit'), ('both', 'Both (Credit - Debit)')]
string='Summarize type'
tax_ids
Many2many → account.tax.template
comodel_name='account.tax.template'
string='Taxes templates'
to_regularize
Boolean
string='To regularize'
No public methods.
allow_posting
Boolean
compute='_compute_allow_posting'
calculation_date
Datetime
string='Calculation date'
company_id
Many2one → res.company
comodel_name='res.company'
default=_default_company_id
readonly=True
required=True
states={'draft': [('readonly', False)]}
string='Company'
company_vat
Char
readonly=True
required=True
size=9
states={'draft': [('readonly', False)]}
string='VAT number'
contact_email
Char
readonly=True
size=50
states={'draft': [('readonly', False)]}
string='Contact email'
contact_name
Char
help='Must have name and surname.'
readonly=True
required=True
size=40
states={'draft': [('readonly', False)]}
string='Full Name'
contact_phone
Char
readonly=True
required=True
size=9
states={'draft': [('readonly', False)]}
string='Phone'
counterpart_account_id
Many2one → account.account
comodel_name='account.account'
help='This account will be the counterpart for all the journal items that are regularized when posting the report.'
oldname='counterpart_account'
string='Counterpart account'
currency_id
Many2one → res.currency
comodel_name='res.currency'
readonly=True
related='company_id.currency_id'
string='Currency'
date_end
Date
readonly=True
required=True
states={'draft': [('readonly', False)]}
string='Ending date'
date_start
Date
readonly=True
required=True
states={'draft': [('readonly', False)]}
string='Starting date'
export_config_id
Many2one → aeat.model.export.config
comodel_name='aeat.model.export.config'
default=_default_export_config_id
domain=<expr>
oldname='export_config'
string='Export config'
journal_id
Many2one → account.journal
comodel_name='account.journal'
default=_default_journal
domain=[('type', '=', 'general')]
help='Journal in which post the move.'
states={'done': [('readonly', True)]}
string='Journal'
model_id
Many2one → ir.model
comodel_name='ir.model'
compute='_compute_report_model'
oldname='model'
string='Model'
move_id
Many2one → account.move
comodel_name='account.move'
readonly=True
string='Account entry'
name
Char
copy=False
oldname='sequence'
size=13
string='Report identifier'
number
Char
default=_default_number
readonly=True
required=True
size=3
string='Model number'
partner_bank_id
Many2one → res.partner.bank
comodel_name='res.partner.bank'
domain="[('acc_type', '=', 'iban'), ('partner_id', '=', partner_id)]"
help='Company bank account used for the presentation'
string='Bank account'
partner_id
Many2one → res.partner
comodel_name='res.partner'
readonly=True
related='company_id.partner_id'
string='Partner'
period_type
Selection
default=_default_period_type
readonly=True
required=True
selection='get_period_type_selection'
states={'draft': [('readonly', False)]}
string='Period type'
previous_number
Char
size=13
states={'done': [('readonly', True)]}
string='Previous declaration number'
representative_vat
Char
help='Legal Representative VAT number.'
readonly=True
size=9
states={'draft': [('readonly', False)]}
string='L.R. VAT number'
state
Selection
default='draft'
readonly=True
selection=[('draft', 'Draft'), ('calculated', 'Processed'), ('done', 'Done'), ('posted', 'Posted'), ('cancelled', 'Cancelled')]
string='State'
track_visibility='onchange'
support_type
Selection
default='T'
readonly=True
required=True
selection=[('C', 'DVD'), ('T', 'Telematics')]
states={'draft': [('readonly', False)]}
string='Support Type'
type
Selection
default='N'
readonly=True
required=True
selection=[('N', 'Normal'), ('C', 'Complementary'), ('S', 'Substitutive')]
states={'draft': [('readonly', False)]}
string='Statement Type'
year
Integer
default=_default_year
readonly=True
required=True
states={'draft': [('readonly', False)]}
string='Year'
button_calculate(self)
button_cancel(self)
button_confirm(self)
button_export(self)
button_open_move(self)
button_post(self)
button_recalculate(self)
button_recover(self)
button_unpost(self)
calculate(self)
create(self, vals)
get_html(self)
get_period_type_selection(self)
get_taxes_from_templates(self, tax_templates)
onchange_company_id(self)
onchange_period_type(self)
unlink(self)
data
Binary
required=True
string='File'
line_ids
One2many → l10n.es.aeat.report.compare_boe_file.line
comodel_name='l10n.es.aeat.report.compare_boe_file.line'
inverse_name='wizard_id'
string='Lines'
state
Selection
default='open'
selection=[('open', 'open'), ('compare', 'compare')]
string='State'
button_compare_file(self)
content
Char
string='Content'
content_float
Float
compute='_compute_content_float'
string='Amount'
export_line_id
Many2one → aeat.model.export.config.line
comodel_name='aeat.model.export.config.line'
ondelete='cascade'
readonly=True
required=True
string='Export line'
name
Char
readonly=True
related='export_line_id.name'
string='Name'
sequence
Integer
readonly=True
related='export_line_id.sequence'
string='Sequence'
wizard_id
Many2one → l10n.es.aeat.report.compare_boe_file
comodel_name='l10n.es.aeat.report.compare_boe_file'
ondelete='cascade'
readonly=True
required=True
string='Wizard'
No public methods.
data
Binary
readonly=True
string='File'
name
Char
readonly=True
string='File name'
state
Selection
default='open'
selection=[('open', 'open'), ('get', 'get')]
string='State'
action_get_file(self)
action_get_file_from_config(self, report)
tax_line_ids
One2many → l10n.es.aeat.tax.line
auto_join=True
comodel_name='l10n.es.aeat.tax.line'
domain=<expr>
inverse_name='res_id'
oldname='tax_lines'
readonly=True
string='Tax lines'
calculate(self)
create_regularization_move(self)
get_taxes_from_map(self, map_line)
unlink(self)
No new fields.
Public methods (4)connect_soap(self, wsdl, model)
connect_wsdl(self, service, wsdl, port_name, model)
get_test_mode(self, port_name, model)
send_soap(self, service, wsdl, port_name, model, operation, *args)
amount
Float
digits=dp.get_precision('Account')
field_number
Integer
readonly=True
related='map_line_id.field_number'
store=True
string='Field number'
map_line_id
Many2one → l10n.es.aeat.map.tax.line
comodel_name='l10n.es.aeat.map.tax.line'
oldname='map_line'
ondelete='cascade'
required=True
string='Map line'
model
Char
index=True
readonly=True
required=True
string='Model name'
model_id
Many2one → ir.model
comodel_name='ir.model'
compute='_compute_model_id'
store=True
string='Model'
move_line_ids
Many2many → account.move.line
comodel_name='account.move.line'
oldname='move_lines'
string='Journal items'
name
Char
readonly=True
related='map_line_id.name'
store=True
string='Name'
res_id
Integer
index=True
ondelete='cascade'
required=True
string='Resource ID'
to_regularize
Boolean
readonly=True
related='map_line_id.to_regularize'
get_calculated_move_lines(self)
tax_agency_id
Many2one → aeat.tax.agency
string='Tax Agency'
args: 'aeat.tax.agency'
create(self, values)
get_taxes_from_templates(self, tax_templates)
aeat_anonymous_cash_customer
Boolean
help='Check this for anonymous cash customer. AEAT communication'
string='AEAT - Anonymous customer'
No public methods.
acc_type
Selection
store=True
No public methods.
| REPOSITORY | |
|---|---|
| REPOSITORY | OCA/l10n-spain |
| GIT | |
| GIT | https://github.com/OCA/l10n-spain.git |
| GIT FOLDER | |
| GIT FOLDER | https://github.com/OCA/l10n-spain/tree/11.0/l10n_es_aeat |
| VERSION | |
| VERSION | 3.1.0 |
| CATEGORY | |
| CATEGORY | Accounting & Finance |
| LICENSE | |
| LICENSE | AGPL-3 |
| APPLICATION | |
| APPLICATION | No |
| AUTO-INSTALLABLE | |
| AUTO-INSTALLABLE | No |
| AUTHORS | |
| AUTHORS | Tecnativa, Odoo Community Association (OCA), Pexego, AvanzOSC, Acysos |
| MAINTAINERS | |
| MAINTAINERS | Tecnativa, Odoo Community Association (OCA), Pexego, AvanzOSC, Acysos |
| COMMITTERS | |
| COMMITTERS | Pedro M. Baeza, GitHub, Carlos Dauden, Stéphane Bidoul (ACSONE), OCA Transbot, Hugo Santos, oca-travis, Weblate, OCA-git-bot, oihane, Luis J. Salvatierra, Rodrigo, oca-ci |
| WEBSITE | |
| WEBSITE | https://github.com/OCA/l10n-spain |
| LAST TRACKING UPDATE | |
| LAST TRACKING UPDATE | 2026-07-06 00:23:55 |
| ODOO DEPENDENCIES | |
| ODOO DEPENDENCIES |
OCA/account-financial-reporting: - account_tax_balance OCA/server-ux: - date_range odoo/odoo: - account_invoicing - account - base_setup - base - web - product - decimal_precision - bus - web_tour - analytic - web_planner - portal - http_routing - base_iban - l10n_es - base_vat |
| PYTHON DEPENDENCIES | |
| PYTHON DEPENDENCIES |
unidecode |
| SYSTEM DEPENDENCIES | |
| SYSTEM DEPENDENCIES | Not have |
| DESCRIPTION | |
| DESCRIPTION | |
| XML ID | Name | Model | Type | Status |
|---|---|---|---|---|
aeat_model_export_config_form |
aeat.model.export.config.form | aeat.model.export.config | form | New |
aeat_model_export_config_line_form |
aeat.model.export.config.line.form | aeat.model.export.config.line | form | New |
aeat_model_export_config_line_tree |
aeat.model.export.config.line.tree | aeat.model.export.config.line | tree | New |
aeat_model_export_config_search |
aeat.model.export.config | search | New | |
aeat_model_export_config_tree |
aeat.model.export.config.tree | aeat.model.export.config | tree | New |
aeat_report_assets_backend |
aeat assets | ir.ui.view | qweb | Inherits web.assets_backend |
l10n_es_aeat_map_tax_form |
l10n.es.aeat.map.tax | form | New | |
l10n_es_aeat_map_tax_line_form |
l10n.es.aeat.map.tax.line | form | New | |
l10n_es_aeat_map_tax_line_tree |
l10n.es.aeat.map.tax.line | tree | New | |
l10n_es_aeat_map_tax_tree |
l10n.es.aeat.map.tax | tree | New | |
view_l10n_es_aeat_report_form |
l10n_es.aeat.report.form | l10n.es.aeat.report | form | New |
view_l10n_es_aeat_report_search |
AEAT Model (search) | l10n.es.aeat.report | search | New |
view_l10n_es_aeat_report_tree |
l10n_es.aeat.report.tree | l10n.es.aeat.report | tree | New |
view_l10n_es_aeat_tax_line_form |
l10n.es.aeat.tax.line.form | l10n.es.aeat.tax.line | form | New |
view_l10n_es_aeat_tax_line_tree |
l10n.es.aeat.tax.line.tree | l10n.es.aeat.tax.line | tree | New |
view_move_line_tree |
account.move.line | field | Inherits account.view_move_line_tree | |
view_partner_form |
res.partner | group | Inherits account.view_partner_property_form | |
wizard_aeat_export |
Export AEAT BOE file | l10n.es.aeat.report.export_to_boe | form | New |
wizard_compare_boe_file |
Compare BOE file wizard | l10n.es.aeat.report.compare_boe_file | form | New |
active
Boolean
default=True
config_line_ids
One2many → aeat.model.export.config.line
comodel_name='aeat.model.export.config.line'
inverse_name='export_config_id'
oldname='config_lines'
string='Lines'
date_end
Date
string='Ending date'
date_start
Date
string='Starting date'
model_id
Many2one → ir.model
comodel_name='ir.model'
oldname='model'
string='Odoo model'
model_number
Char
size=3
string='Model number'
name
Char
string='Name'
No public methods.
alignment
Selection
default='left'
string='Alignment'
args: [('left', 'Left'), ('right', 'Right')]
apply_sign
Boolean
default=True
string='Apply sign'
bool_no
Char
default=' '
size=1
string='Value for no'
bool_yes
Char
default='X'
size=1
string='Value for yes'
conditional
Boolean
compute='_compute_conditional'
store=True
conditional_expression
Char
help='If set, this expression will be used to evaluate if this line should be added'
string='Conditional expression'
decimal_size
Integer
default=0
string='Number of char for decimals'
export_config_id
Many2one → aeat.model.export.config
comodel_name='aeat.model.export.config'
ondelete='cascade'
required=True
string='Config parent'
export_type
Selection
default='string'
required=True
selection=[('string', 'Alphanumeric'), ('alphabetic', 'Alphabetic'), ('float', 'Number with decimals'), ('integer', 'Number without decimals'), ('boolean', 'Boolean'), ('subconfig', 'Sub-configuration')]
string='Export field type'
expression
Char
string='Expression'
fixed_value
Char
string='Fixed value'
name
Char
required=True
string='Name'
negative_sign
Char
default='N'
oldname='sign'
size=1
string='Negative sign character'
position
Integer
compute='_compute_position'
positive_sign
Char
default='0'
size=1
string='Positive sign character'
repeat
Boolean
compute='_compute_repeat'
store=True
repeat_expression
Char
help='If set, this expression will be used for getting the list of elements to iterate on'
string='Repeat expression'
sequence
Integer
string='Sequence'
size
Integer
string='Field size'
subconfig_id
Many2one → aeat.model.export.config
comodel_name='aeat.model.export.config'
oldname='sub_config'
string='Sub-configuration'
value
Char
compute='_compute_value'
store=True
onchange_subconfig(self)
onchange_type(self)
date_from
Date
string='From Date'
date_from_search
Date
compute='_compute_date_from_search'
store=True
date_to
Date
string='To Date'
date_to_search
Date
compute='_compute_date_to_search'
store=True
map_line_ids
One2many → l10n.es.aeat.map.tax.line
comodel_name='l10n.es.aeat.map.tax.line'
inverse_name='map_parent_id'
required=True
string='Map lines'
model
Integer
required=True
string='AEAT Model'
name_get(self)
exigible_type
Selection
default='yes'
required=True
selection=[('yes', 'Only exigible amounts'), ('no', 'Only non-exigible amounts'), ('both', 'Both exigible and non-exigible amounts')]
string='Exigibility'
field_number
Integer
required=True
string='Field number'
field_type
Selection
default='amount'
required=True
selection=[('base', 'Base'), ('amount', 'Amount'), ('both', 'Both')]
string='Field type'
inverse
Boolean
default=False
string='Inverse summarize sign'
map_parent_id
Many2one → l10n.es.aeat.map.tax
comodel_name='l10n.es.aeat.map.tax'
required=True
move_type
Selection
default='all'
required=True
selection=[('all', 'All'), ('regular', 'Regular'), ('refund', 'Refund')]
string='Operation type'
name
Char
required=True
string='Name'
sum_type
Selection
default='both'
required=True
selection=[('credit', 'Credit'), ('debit', 'Debit'), ('both', 'Both (Credit - Debit)')]
string='Summarize type'
tax_ids
Many2many → account.tax.template
comodel_name='account.tax.template'
string='Taxes templates'
to_regularize
Boolean
string='To regularize'
No public methods.
allow_posting
Boolean
compute='_compute_allow_posting'
calculation_date
Datetime
string='Calculation date'
company_id
Many2one → res.company
comodel_name='res.company'
default=_default_company_id
readonly=True
required=True
states={'draft': [('readonly', False)]}
string='Company'
company_vat
Char
readonly=True
required=True
size=9
states={'draft': [('readonly', False)]}
string='VAT number'
contact_email
Char
readonly=True
size=50
states={'draft': [('readonly', False)]}
string='Contact email'
contact_name
Char
help='Must have name and surname.'
readonly=True
required=True
size=40
states={'draft': [('readonly', False)]}
string='Full Name'
contact_phone
Char
readonly=True
required=True
size=9
states={'draft': [('readonly', False)]}
string='Phone'
counterpart_account_id
Many2one → account.account
comodel_name='account.account'
help='This account will be the counterpart for all the journal items that are regularized when posting the report.'
oldname='counterpart_account'
string='Counterpart account'
currency_id
Many2one → res.currency
comodel_name='res.currency'
readonly=True
related='company_id.currency_id'
string='Currency'
date_end
Date
readonly=True
required=True
states={'draft': [('readonly', False)]}
string='Ending date'
date_start
Date
readonly=True
required=True
states={'draft': [('readonly', False)]}
string='Starting date'
export_config_id
Many2one → aeat.model.export.config
comodel_name='aeat.model.export.config'
default=_default_export_config_id
domain=<expr>
oldname='export_config'
string='Export config'
journal_id
Many2one → account.journal
comodel_name='account.journal'
default=_default_journal
domain=[('type', '=', 'general')]
help='Journal in which post the move.'
states={'done': [('readonly', True)]}
string='Journal'
model_id
Many2one → ir.model
comodel_name='ir.model'
compute='_compute_report_model'
oldname='model'
string='Model'
move_id
Many2one → account.move
comodel_name='account.move'
readonly=True
string='Account entry'
name
Char
copy=False
oldname='sequence'
size=13
string='Report identifier'
number
Char
default=_default_number
readonly=True
required=True
size=3
string='Model number'
partner_bank_id
Many2one → res.partner.bank
comodel_name='res.partner.bank'
domain="[('acc_type', '=', 'iban'), ('partner_id', '=', partner_id)]"
help='Company bank account used for the presentation'
string='Bank account'
partner_id
Many2one → res.partner
comodel_name='res.partner'
readonly=True
related='company_id.partner_id'
string='Partner'
period_type
Selection
default=_default_period_type
readonly=True
required=True
selection='get_period_type_selection'
states={'draft': [('readonly', False)]}
string='Period type'
previous_number
Char
size=13
states={'done': [('readonly', True)]}
string='Previous declaration number'
representative_vat
Char
help='Legal Representative VAT number.'
readonly=True
size=9
states={'draft': [('readonly', False)]}
string='L.R. VAT number'
state
Selection
default='draft'
readonly=True
selection=[('draft', 'Draft'), ('calculated', 'Processed'), ('done', 'Done'), ('posted', 'Posted'), ('cancelled', 'Cancelled')]
string='State'
support_type
Selection
default='T'
readonly=True
required=True
selection=[('C', 'DVD'), ('T', 'Telematics')]
states={'draft': [('readonly', False)]}
string='Support Type'
type
Selection
default='N'
readonly=True
required=True
selection=[('N', 'Normal'), ('C', 'Complementary'), ('S', 'Substitutive')]
states={'draft': [('readonly', False)]}
string='Statement Type'
year
Integer
default=_default_year
readonly=True
required=True
states={'draft': [('readonly', False)]}
string='Year'
button_calculate(self)
button_cancel(self)
button_confirm(self)
button_export(self)
button_open_move(self)
button_post(self)
button_recalculate(self)
button_recover(self)
button_unpost(self)
calculate(self)
create(self, vals)
get_html(self)
get_period_type_selection(self)
get_taxes_from_templates(self, tax_templates)
onchange_company_id(self)
onchange_period_type(self)
unlink(self)
data
Binary
required=True
string='File'
line_ids
One2many → l10n.es.aeat.report.compare_boe_file.line
comodel_name='l10n.es.aeat.report.compare_boe_file.line'
inverse_name='wizard_id'
string='Lines'
state
Selection
default='open'
selection=[('open', 'open'), ('compare', 'compare')]
string='State'
button_compare_file(self)
content
Char
string='Content'
content_float
Float
compute='_compute_content_float'
string='Amount'
export_line_id
Many2one → aeat.model.export.config.line
comodel_name='aeat.model.export.config.line'
ondelete='cascade'
readonly=True
required=True
string='Export line'
name
Char
readonly=True
related='export_line_id.name'
string='Name'
sequence
Integer
readonly=True
related='export_line_id.sequence'
string='Sequence'
wizard_id
Many2one → l10n.es.aeat.report.compare_boe_file
comodel_name='l10n.es.aeat.report.compare_boe_file'
ondelete='cascade'
readonly=True
required=True
string='Name'
No public methods.
data
Binary
readonly=True
string='File'
name
Char
readonly=True
string='File name'
state
Selection
default='open'
selection=[('open', 'open'), ('get', 'get')]
string='State'
action_get_file(self)
action_get_file_from_config(self, report)
tax_line_ids
One2many → l10n.es.aeat.tax.line
auto_join=True
comodel_name='l10n.es.aeat.tax.line'
domain=<expr>
inverse_name='res_id'
oldname='tax_lines'
readonly=True
string='Tax lines'
calculate(self)
create_regularization_move(self)
get_taxes_from_map(self, map_line)
unlink(self)
amount
Float
digits=dp.get_precision('Account')
field_number
Integer
readonly=True
related='map_line_id.field_number'
store=True
string='Field number'
map_line_id
Many2one → l10n.es.aeat.map.tax.line
comodel_name='l10n.es.aeat.map.tax.line'
oldname='map_line'
ondelete='cascade'
required=True
string='Map line'
model
Char
index=True
readonly=True
required=True
model_id
Many2one → ir.model
comodel_name='ir.model'
compute='_compute_model_id'
store=True
string='Model'
move_line_ids
Many2many → account.move.line
comodel_name='account.move.line'
oldname='move_lines'
string='Journal items'
name
Char
readonly=True
related='map_line_id.name'
store=True
string='Name'
res_id
Integer
index=True
ondelete='cascade'
required=True
string='Resource ID'
to_regularize
Boolean
readonly=True
related='map_line_id.to_regularize'
get_calculated_move_lines(self)
No new fields.
Public methods (1)create(self, values)
aeat_anonymous_cash_customer
Boolean
help='Check this for anonymous cash customer. AEAT communication'
string='AEAT - Anonymous customer'
No public methods.
acc_type
Char
store=True
No public methods.
| REPOSITORY | |
|---|---|
| REPOSITORY | OCA/l10n-spain |
| GIT | |
| GIT | https://github.com/OCA/l10n-spain.git |
| GIT FOLDER | |
| GIT FOLDER | https://github.com/OCA/l10n-spain/tree/10.0/l10n_es_aeat |
| VERSION | |
| VERSION | 3.0.0 |
| CATEGORY | |
| CATEGORY | Accounting & Finance |
| LICENSE | |
| LICENSE | AGPL-3 |
| APPLICATION | |
| APPLICATION | No |
| AUTO-INSTALLABLE | |
| AUTO-INSTALLABLE | No |
| AUTHORS | |
| AUTHORS | Tecnativa, Odoo Community Association (OCA), Pexego, AvanzOSC, Acysos |
| MAINTAINERS | |
| MAINTAINERS | Tecnativa, Odoo Community Association (OCA), Pexego, AvanzOSC, Acysos |
| COMMITTERS | |
| COMMITTERS | Alexandre Fayolle, Pedro M. Baeza, GitHub, Jairo Llopis, Jordi Ballester, OCA Transbot, oca-travis, Weblate, OCA-git-bot, Marçal, Isaac Gallart Bochons, Abranes, rgarnau |
| WEBSITE | |
| WEBSITE | https://odoo-community.org/ |
| LAST TRACKING UPDATE | |
| LAST TRACKING UPDATE | 2026-07-06 00:19:53 |
| ODOO DEPENDENCIES | |
| ODOO DEPENDENCIES |
OCA/account-financial-reporting: - account_tax_balance OCA/server-tools: - date_range odoo/odoo: - account - base_setup - base - web_kanban - web - product - decimal_precision - bus - web_tour - report - analytic - web_planner - base_iban |
| PYTHON DEPENDENCIES | |
| PYTHON DEPENDENCIES |
unidecode |
| SYSTEM DEPENDENCIES | |
| SYSTEM DEPENDENCIES | Not have |
| DESCRIPTION | |
| DESCRIPTION | |
| XML ID | Name | Model | Type | Status |
|---|---|---|---|---|
aeat_model_export_config_form |
aeat.model.export.config.form | aeat.model.export.config | form | New |
aeat_model_export_config_line_form |
aeat.model.export.config.line.form | aeat.model.export.config.line | form | New |
aeat_model_export_config_line_tree |
aeat.model.export.config.line.tree | aeat.model.export.config.line | tree | New |
aeat_model_export_config_search |
aeat.model.export.config | search | New | |
aeat_model_export_config_tree |
aeat.model.export.config.tree | aeat.model.export.config | tree | New |
aeat_report_assets_backend |
aeat assets | ir.ui.view | qweb | Inherits web.assets_backend |
l10n_es_aeat_map_tax_form |
l10n.es.aeat.map.tax | form | New | |
l10n_es_aeat_map_tax_line_form |
l10n.es.aeat.map.tax.line | form | New | |
l10n_es_aeat_map_tax_line_tree |
l10n.es.aeat.map.tax.line | tree | New | |
l10n_es_aeat_map_tax_tree |
l10n.es.aeat.map.tax | tree | New | |
view_l10n_es_aeat_report_form |
l10n_es.aeat.report.form | l10n.es.aeat.report | form | New |
view_l10n_es_aeat_report_search |
AEAT Model (search) | l10n.es.aeat.report | search | New |
view_l10n_es_aeat_report_tree |
l10n_es.aeat.report.tree | l10n.es.aeat.report | tree | New |
view_l10n_es_aeat_tax_line_form |
l10n.es.aeat.tax.line.form | l10n.es.aeat.tax.line | form | New |
view_l10n_es_aeat_tax_line_tree |
l10n.es.aeat.tax.line.tree | l10n.es.aeat.tax.line | tree | New |
view_move_line_tree |
account.move.line | field | Inherits account.view_move_line_tree | |
view_partner_form |
res.partner | group | Inherits account.view_partner_property_form | |
wizard_aeat_export |
Export AEAT BOE file | l10n.es.aeat.report.export_to_boe | form | New |
wizard_compare_boe_file |
Compare BOE file wizard | l10n.es.aeat.report.compare_boe_file | form | New |
active
Boolean
default=True
config_line_ids
One2many → aeat.model.export.config.line
comodel_name='aeat.model.export.config.line'
inverse_name='export_config_id'
oldname='config_lines'
string='Lines'
date_end
Date
string='Ending date'
date_start
Date
string='Starting date'
model_id
Many2one → ir.model
comodel_name='ir.model'
oldname='model'
string='Odoo model'
model_number
Char
size=3
string='Model number'
name
Char
string='Name'
No public methods.
alignment
Selection
default='left'
string='Alignment'
args: [('left', 'Left'), ('right', 'Right')]
apply_sign
Boolean
default=True
string='Apply sign'
bool_no
Char
default=' '
size=1
string='Value for no'
bool_yes
Char
default='X'
size=1
string='Value for yes'
conditional
Boolean
compute='_compute_conditional'
store=True
conditional_expression
Char
help='If set, this expression will be used to evaluate if this line should be added'
string='Conditional expression'
decimal_size
Integer
default=0
string='Number of char for decimals'
export_config_id
Many2one → aeat.model.export.config
comodel_name='aeat.model.export.config'
ondelete='cascade'
required=True
string='Config parent'
export_type
Selection
default='string'
required=True
selection=[('string', 'Alphanumeric'), ('alphabetic', 'Alphabetic'), ('float', 'Number with decimals'), ('integer', 'Number without decimals'), ('boolean', 'Boolean'), ('subconfig', 'Sub-configuration')]
string='Export field type'
expression
Char
string='Expression'
fixed_value
Char
string='Fixed value'
name
Char
required=True
string='Name'
negative_sign
Char
default='N'
oldname='sign'
size=1
string='Negative sign character'
position
Integer
compute='_compute_position'
positive_sign
Char
default='0'
size=1
string='Positive sign character'
repeat
Boolean
compute='_compute_repeat'
store=True
repeat_expression
Char
help='If set, this expression will be used for getting the list of elements to iterate on'
string='Repeat expression'
sequence
Integer
string='Sequence'
size
Integer
string='Field size'
subconfig_id
Many2one → aeat.model.export.config
comodel_name='aeat.model.export.config'
oldname='sub_config'
string='Sub-configuration'
value
Char
compute='_compute_value'
store=True
onchange_subconfig(self)
onchange_type(self)
date_from
Date
string='From Date'
date_to
Date
string='To Date'
map_line_ids
One2many → l10n.es.aeat.map.tax.line
comodel_name='l10n.es.aeat.map.tax.line'
inverse_name='map_parent_id'
required=True
string='Map lines'
model
Integer
required=True
string='AEAT Model'
name_get(self)
exigible_type
Selection
default='yes'
required=True
selection=[('yes', 'Only exigible amounts'), ('no', 'Only non-exigible amounts'), ('both', 'Both exigible and non-exigible amounts')]
string='Exigibility'
field_number
Integer
required=True
string='Field number'
field_type
Selection
default='amount'
required=True
selection=[('base', 'Base'), ('amount', 'Amount'), ('both', 'Both')]
string='Field type'
inverse
Boolean
default=False
string='Inverse summarize sign'
map_parent_id
Many2one → l10n.es.aeat.map.tax
comodel_name='l10n.es.aeat.map.tax'
required=True
move_type
Selection
default='all'
required=True
selection=[('all', 'All'), ('regular', 'Regular'), ('refund', 'Refund')]
string='Operation type'
name
Char
required=True
string='Name'
sum_type
Selection
default='both'
required=True
selection=[('credit', 'Credit'), ('debit', 'Debit'), ('both', 'Both (Credit - Debit)')]
string='Summarize type'
tax_ids
Many2many → account.tax.template
comodel_name='account.tax.template'
string='Taxes templates'
to_regularize
Boolean
string='To regularize'
No public methods.
allow_posting
Boolean
compute='_compute_allow_posting'
calculation_date
Datetime
string='Calculation date'
company_id
Many2one → res.company
comodel_name='res.company'
default=_default_company_id
readonly=True
required=True
states={'draft': [('readonly', False)]}
string='Company'
company_vat
Char
readonly=True
required=True
size=9
states={'draft': [('readonly', False)]}
string='VAT number'
contact_name
Char
help='Must have name and surname.'
readonly=True
required=True
size=40
states={'draft': [('readonly', False)]}
string='Full Name'
contact_phone
Char
readonly=True
required=True
size=9
states={'draft': [('readonly', False)]}
string='Phone'
counterpart_account_id
Many2one → account.account
comodel_name='account.account'
help='This account will be the counterpart for all the journal items that are regularized when posting the report.'
oldname='counterpart_account'
string='Counterpart account'
currency_id
Many2one → res.currency
comodel_name='res.currency'
readonly=True
related='company_id.currency_id'
string='Currency'
date_end
Date
readonly=True
required=True
states={'draft': [('readonly', False)]}
string='Ending date'
date_start
Date
readonly=True
required=True
states={'draft': [('readonly', False)]}
string='Starting date'
exception_msg
Char
compute='_compute_exception_msg'
args: 'Exception message'
export_config_id
Many2one → aeat.model.export.config
comodel_name='aeat.model.export.config'
default=_default_export_config_id
domain=<expr>
oldname='export_config'
string='Export config'
journal_id
Many2one → account.journal
comodel_name='account.journal'
default=_default_journal
domain=[('type', '=', 'general')]
help='Journal in which post the move.'
states={'done': [('readonly', True)]}
string='Journal'
model_id
Many2one → ir.model
comodel_name='ir.model'
compute='_compute_report_model'
oldname='model'
string='Model'
move_id
Many2one → account.move
comodel_name='account.move'
readonly=True
string='Account entry'
name
Char
copy=False
oldname='sequence'
size=13
string='Report identifier'
number
Char
default=_default_number
readonly=True
required=True
size=3
string='Model number'
partner_bank_id
Many2one → res.partner.bank
comodel_name='res.partner.bank'
domain="[('acc_type', '=', 'iban'), ('partner_id', '=', partner_id)]"
help='Company bank account used for the presentation'
string='Bank account'
partner_id
Many2one → res.partner
comodel_name='res.partner'
readonly=True
related='company_id.partner_id'
string='Partner'
period_type
Selection
default=_default_period_type
readonly=True
required=True
selection='get_period_type_selection'
states={'draft': [('readonly', False)]}
string='Period type'
previous_number
Char
size=13
states={'done': [('readonly', True)]}
string='Previous declaration number'
representative_vat
Char
help='Legal Representative VAT number.'
readonly=True
size=9
states={'draft': [('readonly', False)]}
string='L.R. VAT number'
state
Selection
default='draft'
readonly=True
selection=[('draft', 'Draft'), ('calculated', 'Processed'), ('done', 'Done'), ('posted', 'Posted'), ('cancelled', 'Cancelled')]
string='State'
support_type
Selection
default='T'
readonly=True
required=True
selection=[('C', 'DVD'), ('T', 'Telematics')]
states={'draft': [('readonly', False)]}
string='Support Type'
type
Selection
default='N'
readonly=True
required=True
selection=[('N', 'Normal'), ('C', 'Complementary'), ('S', 'Substitutive')]
states={'draft': [('readonly', False)]}
string='Statement Type'
year
Integer
default=_default_year
readonly=True
required=True
states={'draft': [('readonly', False)]}
string='Year'
button_calculate(self)
button_cancel(self)
button_confirm(self)
button_export(self)
button_open_move(self)
button_post(self)
button_recalculate(self)
button_recover(self)
button_unpost(self)
calculate(self)
create(self, vals)
get_html(self, given_context=None)
get_period_type_selection(self)
get_taxes_from_templates(self, tax_templates)
onchange_company_id(self)
onchange_period_type(self)
unlink(self)
data
Binary
required=True
string='File'
line_ids
One2many → l10n.es.aeat.report.compare_boe_file.line
comodel_name='l10n.es.aeat.report.compare_boe_file.line'
inverse_name='wizard_id'
string='Lines'
state
Selection
default='open'
selection=[('open', 'open'), ('compare', 'compare')]
string='State'
button_compare_file(self)
content
Char
string='Content'
content_float
Float
compute='_compute_content_float'
string='Amount'
export_line_id
Many2one → aeat.model.export.config.line
comodel_name='aeat.model.export.config.line'
ondelete='cascade'
readonly=True
required=True
string='Export line'
name
Char
readonly=True
related='export_line_id.name'
string='Name'
sequence
Integer
readonly=True
related='export_line_id.sequence'
string='Sequence'
wizard_id
Many2one → l10n.es.aeat.report.compare_boe_file
comodel_name='l10n.es.aeat.report.compare_boe_file'
ondelete='cascade'
readonly=True
required=True
string='Name'
No public methods.
tax_line_ids
One2many → l10n.es.aeat.tax.line
auto_join=True
comodel_name='l10n.es.aeat.tax.line'
domain=<expr>
inverse_name='res_id'
oldname='tax_lines'
readonly=True
string='Tax lines'
calculate(self)
create_regularization_move(self)
unlink(self)
amount
Float
digits=dp.get_precision('Account')
field_number
Integer
readonly=True
related='map_line_id.field_number'
store=True
string='Field number'
map_line_id
Many2one → l10n.es.aeat.map.tax.line
comodel_name='l10n.es.aeat.map.tax.line'
oldname='map_line'
ondelete='cascade'
required=True
string='Map line'
model
Char
index=True
readonly=True
required=True
model_id
Many2one → ir.model
comodel_name='ir.model'
compute='_compute_model_id'
store=True
string='Model'
move_line_ids
Many2many → account.move.line
comodel_name='account.move.line'
oldname='move_lines'
string='Journal items'
name
Char
readonly=True
related='map_line_id.name'
store=True
string='Name'
res_id
Integer
index=True
ondelete='cascade'
required=True
string='Resource ID'
to_regularize
Boolean
readonly=True
related='map_line_id.to_regularize'
get_calculated_move_lines(self)
No new fields.
Public methods (1)create(self, values)
aeat_anonymous_cash_customer
Boolean
help='Check this for anonymous cash customer. AEAT communication'
string='AEAT - Anonymous customer'
No public methods.
acc_type
Char
store=True
No public methods.
| REPOSITORY | |
|---|---|
| REPOSITORY | OCA/l10n-spain |
| GIT | |
| GIT | https://github.com/OCA/l10n-spain.git |
| GIT FOLDER | |
| GIT FOLDER | https://github.com/OCA/l10n-spain/tree/9.0/l10n_es_aeat |
| VERSION | |
| VERSION | 1.0.7 |
| CATEGORY | |
| CATEGORY | Accounting & Finance |
| LICENSE | |
| LICENSE | AGPL-3 |
| APPLICATION | |
| APPLICATION | No |
| AUTO-INSTALLABLE | |
| AUTO-INSTALLABLE | No |
| AUTHORS | |
| AUTHORS | Tecnativa, Odoo Community Association (OCA), Pexego, AvanzOSC, Acysos |
| MAINTAINERS | |
| MAINTAINERS | Tecnativa, Odoo Community Association (OCA), Pexego, AvanzOSC, Acysos |
| COMMITTERS | |
| COMMITTERS | Pedro M. Baeza, GitHub, cubells, Jordi Ballester, OCA Transbot, oca-travis, Weblate |
| WEBSITE | |
| WEBSITE | https://odoo-community.org/ |
| LAST TRACKING UPDATE | |
| LAST TRACKING UPDATE | 2026-07-06 00:15:18 |
| ODOO DEPENDENCIES | |
| ODOO DEPENDENCIES |
OCA/account-financial-reporting: - account_tax_balance OCA/server-tools: - date_range odoo/odoo: - account - base_setup - base - web_kanban - web - product - decimal_precision - bus - report - analytic - web_tip - web_planner - base_iban |
| PYTHON DEPENDENCIES | |
| PYTHON DEPENDENCIES |
unidecode |
| SYSTEM DEPENDENCIES | |
| SYSTEM DEPENDENCIES | Not have |
| DESCRIPTION | |
| DESCRIPTION | |
| XML ID | Name | Model | Type | Status |
|---|---|---|---|---|
aeat_model_export_config_form |
aeat.model.export.config.form | aeat.model.export.config | form | New |
aeat_model_export_config_line_form |
aeat.model.export.config.line.form | aeat.model.export.config.line | form | New |
aeat_model_export_config_line_tree |
aeat.model.export.config.line.tree | aeat.model.export.config.line | tree | New |
aeat_model_export_config_tree |
aeat.model.export.config.tree | aeat.model.export.config | tree | New |
l10n_es_aeat_map_tax_form |
l10n.es.aeat.map.tax | form | New | |
l10n_es_aeat_map_tax_line_form |
l10n.es.aeat.map.tax.line | form | New | |
l10n_es_aeat_map_tax_line_tree |
l10n.es.aeat.map.tax.line | tree | New | |
l10n_es_aeat_map_tax_tree |
l10n.es.aeat.map.tax | tree | New | |
view_l10n_es_aeat_report_form |
l10n_es.aeat.report.form | l10n.es.aeat.report | form | New |
view_l10n_es_aeat_report_search |
AEAT Model (search) | l10n.es.aeat.report | search | New |
view_l10n_es_aeat_report_tree |
l10n_es.aeat.report.tree | l10n.es.aeat.report | tree | New |
view_l10n_es_aeat_tax_line_form |
l10n.es.aeat.tax.line.form | l10n.es.aeat.tax.line | form | New |
view_l10n_es_aeat_tax_line_tree |
l10n.es.aeat.tax.line.tree | l10n.es.aeat.tax.line | tree | New |
view_move_line_tree |
account.move.line | field | Inherits account.view_move_line_tree | |
wizard_aeat_export |
Export AEAT BOE file | l10n.es.aeat.report.export_to_boe | form | New |
config_line_ids
One2many → aeat.model.export.config.line
comodel_name='aeat.model.export.config.line'
inverse_name='export_config_id'
oldname='config_lines'
string='Lines'
date_end
Date
string='End date'
date_start
Date
string='Start date'
model_id
Many2one → ir.model
comodel_name='ir.model'
oldname='model'
string='Odoo model'
model_number
Char
size=3
string='Model number'
name
Char
string='Name'
No public methods.
alignment
Selection
default='left'
string='Alignment'
args: [('left', 'Left'), ('right', 'Right')]
apply_sign
Boolean
default=True
string='Apply sign'
bool_no
Char
default=' '
size=1
string='Value for no'
bool_yes
Char
default='X'
size=1
string='Value for yes'
conditional
Boolean
compute='_compute_conditional'
store=True
conditional_expression
Char
help='If set, this expression will be used to evaluate if this line should be added'
string='Conditional expression'
decimal_size
Integer
default=0
string='Number of char for decimals'
export_config_id
Many2one → aeat.model.export.config
comodel_name='aeat.model.export.config'
ondelete='cascade'
required=True
string='Config parent'
export_type
Selection
default='string'
required=True
selection=[('string', 'Alphanumeric'), ('alphabetic', 'Alphabetic'), ('float', 'Number with decimals'), ('integer', 'Number without decimals'), ('boolean', 'Boolean'), ('subconfig', 'Sub-configuration')]
string='Export field type'
expression
Char
string='Expression'
fixed_value
Char
string='Fixed value'
name
Char
required=True
string='Name'
negative_sign
Char
default='N'
oldname='sign'
size=1
string='Negative sign character'
position
Integer
compute='_compute_position'
positive_sign
Char
default='0'
size=1
string='Positive sign character'
repeat
Boolean
compute='_compute_repeat'
store=True
repeat_expression
Char
help='If set, this expression will be used for getting the list of elements to iterate on'
string='Repeat expression'
sequence
Integer
string='Sequence'
size
Integer
string='Field size'
subconfig_id
Many2one → aeat.model.export.config
comodel_name='aeat.model.export.config'
oldname='sub_config'
string='Sub-configuration'
value
Char
compute='_compute_value'
store=True
onchange_subconfig(self)
onchange_type(self)
date_from
Date
string='From Date'
date_to
Date
string='To Date'
map_line_ids
One2many → l10n.es.aeat.map.tax.line
comodel_name='l10n.es.aeat.map.tax.line'
inverse_name='map_parent_id'
required=True
string='Map lines'
model
Integer
required=True
string='AEAT Model'
name_get(self)
field_number
Integer
required=True
string='Field number'
field_type
Selection
default='amount'
selection=[('base', 'Base'), ('amount', 'Amount')]
string='Field type'
inverse
Boolean
default=False
string='Inverse summarize sign'
map_parent_id
Many2one → l10n.es.aeat.map.tax
comodel_name='l10n.es.aeat.map.tax'
required=True
move_type
Selection
default='all'
selection=[('all', 'All'), ('regular', 'Regular'), ('refund', 'Refund')]
string='Operation type'
name
Char
required=True
string='Name'
sum_type
Selection
default='both'
selection=[('credit', 'Credit'), ('debit', 'Debit'), ('both', 'Both (Credit - Debit)')]
string='Summarize type'
tax_ids
Many2many → account.tax.template
comodel_name='account.tax.template'
required=True
string='Taxes templates'
to_regularize
Boolean
string='To regularize'
No public methods.
allow_posting
Boolean
compute='_compute_allow_posting'
calculation_date
Datetime
string='Calculation date'
company_id
Many2one → res.company
comodel_name='res.company'
default=_default_company_id
readonly=True
required=True
states={'draft': [('readonly', False)]}
string='Company'
company_vat
Char
readonly=True
required=True
size=9
states={'draft': [('readonly', False)]}
string='VAT number'
contact_name
Char
help='Must have name and surname.'
readonly=True
required=True
size=40
states={'draft': [('readonly', False)]}
string='Full Name'
contact_phone
Char
readonly=True
required=True
size=9
states={'draft': [('readonly', False)]}
string='Phone'
counterpart_account_id
Many2one → account.account
comodel_name='account.account'
help='This account will be the counterpart for all the journal items that are regularized when posting the report.'
oldname='counterpart_account'
string='Counterpart account'
currency_id
Many2one → res.currency
comodel_name='res.currency'
readonly=True
related='company_id.currency_id'
string='Currency'
date_end
Date
readonly=True
required=True
states={'draft': [('readonly', False)]}
string='Ending date'
date_start
Date
readonly=True
required=True
states={'draft': [('readonly', False)]}
string='Starting date'
export_config_id
Many2one → aeat.model.export.config
comodel_name='aeat.model.export.config'
default=_default_export_config_id
domain=<expr>
oldname='export_config'
string='Export config'
journal_id
Many2one → account.journal
comodel_name='account.journal'
default=_default_journal
domain=[('type', '=', 'general')]
help='Journal in which post the move.'
states={'done': [('readonly', True)]}
string='Journal'
model_id
Many2one → ir.model
comodel_name='ir.model'
compute='_compute_report_model'
oldname='model'
string='Model'
move_id
Many2one → account.move
comodel_name='account.move'
readonly=True
string='Account entry'
name
Char
oldname='sequence'
size=13
string='Report identifier'
number
Char
default=_default_number
readonly=True
required=True
size=3
string='Model number'
partner_bank_id
Many2one → res.partner.bank
comodel_name='res.partner.bank'
domain="[('acc_type', '=', 'iban'), ('partner_id', '=', partner_id)]"
help='Company bank account used for the presentation'
string='Bank account'
partner_id
Many2one → res.partner
comodel_name='res.partner'
readonly=True
related='company_id.partner_id'
string='Partner'
period_type
Selection
default=_default_period_type
readonly=True
required=True
selection='get_period_type_selection'
states={'draft': [('readonly', False)]}
string='Period type'
previous_number
Char
size=13
states={'done': [('readonly', True)]}
string='Previous declaration number'
representative_vat
Char
help='Legal Representative VAT number.'
readonly=True
size=9
states={'draft': [('readonly', False)]}
string='L.R. VAT number'
state
Selection
default='draft'
readonly=True
selection=[('draft', 'Draft'), ('calculated', 'Processed'), ('done', 'Done'), ('posted', 'Posted'), ('cancelled', 'Cancelled')]
string='State'
support_type
Selection
default='T'
readonly=True
required=True
selection=[('C', 'DVD'), ('T', 'Telematics')]
states={'draft': [('readonly', False)]}
string='Support Type'
type
Selection
default='N'
readonly=True
required=True
selection=[('N', 'Normal'), ('C', 'Complementary'), ('S', 'Substitutive')]
states={'draft': [('readonly', False)]}
string='Statement Type'
year
Integer
default=_default_year
readonly=True
required=True
states={'draft': [('readonly', False)]}
string='Year'
button_calculate(self)
button_cancel(self)
button_confirm(self)
button_export(self)
button_open_move(self)
button_post(self)
button_recalculate(self)
button_recover(self)
button_unpost(self)
calculate(self)
create(self, vals)
get_period_type_selection(self)
onchange_company_id(self)
onchange_period_type(self)
unlink(self)
tax_line_ids
One2many → l10n.es.aeat.tax.line
auto_join=True
comodel_name='l10n.es.aeat.tax.line'
domain=<expr>
inverse_name='res_id'
oldname='tax_lines'
readonly=True
string='Tax lines'
calculate(self)
create_regularization_move(self)
unlink(self)
amount
Float
digits=dp.get_precision('Account')
field_number
Integer
readonly=True
related='map_line_id.field_number'
store=True
string='Field number'
map_line_id
Many2one → l10n.es.aeat.map.tax.line
comodel_name='l10n.es.aeat.map.tax.line'
oldname='map_line'
ondelete='cascade'
required=True
string='Map line'
model
Char
index=True
readonly=True
required=True
model_id
Many2one → ir.model
comodel_name='ir.model'
compute='_compute_model_id'
store=True
string='Model'
move_line_ids
Many2many → account.move.line
comodel_name='account.move.line'
oldname='move_lines'
string='Journal items'
name
Char
readonly=True
related='map_line_id.name'
store=True
string='Name'
res_id
Integer
index=True
ondelete='cascade'
required=True
string='Resource ID'
to_regularize
Boolean
readonly=True
related='map_line_id.to_regularize'
get_calculated_move_lines(self)
acc_type
Char
store=True
No public methods.
| REPOSITORY | |
|---|---|
| REPOSITORY | OCA/l10n-spain |
| GIT | |
| GIT | https://github.com/OCA/l10n-spain.git |
| GIT FOLDER | |
| GIT FOLDER | https://github.com/OCA/l10n-spain/tree/8.0/l10n_es_aeat |
| VERSION | |
| VERSION | 1.9.4 |
| CATEGORY | |
| CATEGORY | Accounting & Finance |
| LICENSE | |
| LICENSE | AGPL-3 |
| APPLICATION | |
| APPLICATION | No |
| AUTO-INSTALLABLE | |
| AUTO-INSTALLABLE | No |
| AUTHORS | |
| AUTHORS | Tecnativa, Odoo Community Association (OCA), Pexego, AvanzOSC |
| MAINTAINERS | |
| MAINTAINERS | Tecnativa, Odoo Community Association (OCA), Pexego, AvanzOSC |
| COMMITTERS | |
| COMMITTERS | Alexandre Fayolle, Pedro M. Baeza, GitHub, Stéphane Bidoul (ACSONE), cubells, OCA Transbot, Santi Argüeso, oca-travis, Roberto Lizana, Almudena, agaldona, Juan Carlos Montoya, Weblate, Antonio Espinosa, Gelu |
| WEBSITE | |
| WEBSITE | https://github.com/OCA/l10n-spain |
| LAST TRACKING UPDATE | |
| LAST TRACKING UPDATE | 2026-07-06 00:11:19 |
| ODOO DEPENDENCIES | |
| ODOO DEPENDENCIES |
odoo/odoo: - account - base_setup - base - web_kanban - web - product - decimal_precision - report - analytic - board - edi - email_template |
| PYTHON DEPENDENCIES | |
| PYTHON DEPENDENCIES |
unidecode |
| SYSTEM DEPENDENCIES | |
| SYSTEM DEPENDENCIES | Not have |
| DESCRIPTION | |
| DESCRIPTION | |
| XML ID | Name | Model | Type | Status |
|---|---|---|---|---|
aeat_mod_map_tax_code_form |
aeat.mod.map.tax.code.form | aeat.mod.map.tax.code | form | New |
aeat_mod_map_tax_code_line_form |
aeat.mod.map.tax.code.line.form | aeat.mod.map.tax.code.line | form | New |
aeat_mod_map_tax_code_line_tree |
aeat.mod.map.tax.code.line.tree | aeat.mod.map.tax.code.line | tree | New |
aeat_mod_map_tax_code_tree |
aeat.mod.map.tax.code.tree | aeat.mod.map.tax.code | tree | New |
aeat_model_export_config_form |
aeat.model.export.config.form | aeat.model.export.config | form | New |
aeat_model_export_config_line_form |
aeat.model.export.config.line.form | aeat.model.export.config.line | form | New |
aeat_model_export_config_line_tree |
aeat.model.export.config.line.tree | aeat.model.export.config.line | tree | New |
aeat_model_export_config_tree |
aeat.model.export.config.tree | aeat.model.export.config | tree | New |
view_l10n_es_aeat_report_form |
l10n_es.aeat.report.form | l10n.es.aeat.report | form | New |
view_l10n_es_aeat_report_search |
AEAT Model (search) | l10n.es.aeat.report | search | New |
view_l10n_es_aeat_report_tree |
l10n_es.aeat.report.tree | l10n.es.aeat.report | tree | New |
view_l10n_es_aeat_tax_line_tree |
l10n.es.aeat.tax.line.tree | l10n.es.aeat.tax.line | tree | New |
view_move_line_tree |
account.move.line | field | Inherits account.view_move_line_tree | |
wizard_aeat_export |
Export AEAT BOE file | l10n.es.aeat.report.export_to_boe | form | New |
date_from
Date
string='From Date'
date_to
Date
string='To Date'
map_lines
One2many → aeat.mod.map.tax.code.line
comodel_name='aeat.mod.map.tax.code.line'
inverse_name='map_parent_id'
required=True
string='Map lines'
model
Integer
required=True
string='AEAT Model'
name_get(self)
field_number
Integer
required=True
string='Field number'
map_parent_id
Many2one → aeat.mod.map.tax.code
required=True
args: 'aeat.mod.map.tax.code'
name
Char
required=True
tax_codes
Many2many → account.tax.code.template
comodel_name='account.tax.code.template'
required=True
string='Tax codes'
to_regularize
Boolean
get_taxes_amount(self, report, periods)
config_lines
One2many → aeat.model.export.config.line
comodel_name='aeat.model.export.config.line'
inverse_name='export_config_id'
string='Lines'
date_end
Date
string='End date'
date_start
Date
string='Start date'
model
Many2one → ir.model
model_number
Char
size=3
string='Model number'
name
Char
string='Name'
No public methods.
alignment
Selection
default='left'
string='Alignment'
args: [('left', 'Left'), ('right', 'Right')]
apply_sign
Boolean
default=True
args: 'Apply sign'
bool_no
Char
default=' '
size=1
args: 'Value for no'
bool_yes
Char
default='X'
size=1
args: 'Value for yes'
conditional
Boolean
compute='_compute_conditional'
store=True
conditional_expression
Char
help='If set, this expression will be used to evaluate if this line should be added'
string='Conditional expression'
decimal_size
Integer
default=0
args: 'Number of char for decimals'
export_config_id
Many2one → aeat.model.export.config
comodel_name='aeat.model.export.config'
ondelete='cascade'
required=True
string='Config parent'
export_type
Selection
default='string'
required=True
selection=[('string', 'Alphanumeric'), ('float', 'Number with decimals'), ('integer', 'Number without decimals'), ('boolean', 'Boolean'), ('subconfig', 'Sub-configuration')]
string='Export field type'
expression
Char
fixed_value
Char
name
Char
required=True
string='Name'
negative_sign
Char
default='N'
oldname='sign'
size=1
args: 'Negative sign character'
position
Integer
compute='_compute_position'
positive_sign
Char
default='0'
size=1
args: 'Positive sign character'
repeat
Boolean
compute='_compute_repeat'
store=True
repeat_expression
Char
help='If set, this expression will be used for getting the list of elements to iterate on'
string='Repeat expression'
sequence
Integer
size
Integer
sub_config
Many2one → aeat.model.export.config
comodel_name='aeat.model.export.config'
string='Sub-configuration'
value
Char
compute='_compute_value'
store=True
onchange_subconfig(self)
onchange_type(self)
allow_posting
Boolean
compute='_compute_allow_posting'
calculation_date
Datetime
string='Calculation date'
company_id
Many2one → res.company
default=_default_company
readonly=True
required=True
states={'draft': [('readonly', False)]}
string='Company'
args: 'res.company'
company_vat
Char
readonly=True
required=True
size=9
states={'draft': [('readonly', False)]}
string='VAT number'
contact_name
Char
help='Must have name and surname.'
size=40
states={'calculated': [('required', True)], 'confirmed': [('readonly', True)]}
string='Full Name'
contact_phone
Char
size=9
states={'calculated': [('required', True)], 'confirmed': [('readonly', True)]}
string='Phone'
counterpart_account
Many2one → account.account
comodel_name='account.account'
help='This account will be the counterpart for all the journal items that are regularized when posting the report.'
export_config
Many2one → aeat.model.export.config
comodel_name='aeat.model.export.config'
domain="[('model', '=', model)]"
string='Export config'
fiscalyear_id
Many2one → account.fiscalyear
readonly=True
required=True
states={'draft': [('readonly', False)]}
string='Fiscal year'
args: 'account.fiscalyear'
journal_id
Many2one → account.journal
comodel_name='account.journal'
default=_default_journal
domain=[('type', '=', 'general')]
help='Journal in which post the move.'
string='Journal'
model
Many2one → ir.model
comodel_name='ir.model'
compute='_compute_report_model'
move_id
Many2one → account.move
comodel_name='account.move'
string='Account entry'
name
Char
oldname='sequence'
size=13
string='Report identifier'
number
Char
readonly=True
required=True
size=13
string='Declaration number'
partner_bank_id
Many2one → res.partner.bank
comodel_name='res.partner.bank'
domain="[('state', '=', 'iban'), ('company_id', '=', company_id)]"
help='Company bank account used for the presentation'
string='Bank account'
period_type
Selection
default=_default_period_type
readonly=True
required=True
selection='get_period_type_selection'
states={'draft': [('readonly', False)]}
string='Period type'
periods
Many2many → account.period
comodel_name='account.period'
readonly=True
states={'draft': [('readonly', False)]}
string='Period(s)'
previous_number
Char
size=13
states={'done': [('readonly', True)]}
string='Previous declaration number'
representative_vat
Char
help='Legal Representative VAT number.'
size=9
states={'confirmed': [('readonly', True)]}
string='L.R. VAT number'
state
Selection
default='draft'
readonly=True
string='State'
args: [('draft', 'Draft'), ('calculated', 'Processed'), ('done', 'Done'), ('posted', 'Posted'), ('cancelled', 'Cancelled')]
support_type
Selection
default='T'
states={'calculated': [('required', True)], 'done': [('readonly', True)]}
string='Support Type'
args: [('C', 'DVD'), ('T', 'Telematics')]
type
Selection
default='N'
readonly=True
required=True
states={'draft': [('readonly', False)]}
string='Statement Type'
args: [('N', 'Normal'), ('C', 'Complementary'), ('S', 'Substitutive')]
button_calculate(self)
button_cancel(self)
button_confirm(self)
button_export(self)
button_open_move(self)
button_post(self)
button_recalculate(self)
button_recover(self)
button_unpost(self)
calculate(self)
create(self, vals)
get_period_type_selection(self)
init(self, cr)
on_change_company_id(self)
onchange_period_type(self)
unlink(self)
tax_lines
One2many → l10n.es.aeat.tax.line
auto_join=True
comodel_name='l10n.es.aeat.tax.line'
domain=<expr>
inverse_name='res_id'
readonly=True
calculate(self)
create_regularization_move(self)
unlink(self)
amount
Float
digits=dp.get_precision('Account')
field_number
Integer
related='map_line.field_number'
store=True
string='Field number'
map_line
Many2one → aeat.mod.map.tax.code.line
comodel_name='aeat.mod.map.tax.code.line'
ondelete='cascade'
required=True
model
Char
index=True
readonly=True
required=True
model_id
Many2one → ir.model
comodel_name='ir.model'
compute='_compute_model_id'
store=True
string='Model'
move_lines
Many2many → account.move.line
comodel_name='account.move.line'
string='Journal items'
name
Char
related='map_line.name'
store=True
string='Name'
res_id
Integer
index=True
required=True
args: 'Resource ID'
to_regularize
Boolean
related='map_line.to_regularize'
get_calculated_move_lines(self)
| REPOSITORY | |
|---|---|
| REPOSITORY | OCA/l10n-spain |
| GIT | |
| GIT | https://github.com/OCA/l10n-spain.git |
| GIT FOLDER | |
| GIT FOLDER | https://github.com/OCA/l10n-spain/tree/7.0/l10n_es_aeat |
| VERSION | |
| VERSION | 1.1 |
| CATEGORY | |
| CATEGORY | Localisation/Accounting |
| LICENSE | |
| LICENSE | AGPL-3 |
| APPLICATION | |
| APPLICATION | No |
| AUTO-INSTALLABLE | |
| AUTO-INSTALLABLE | No |
| AUTHORS | |
| AUTHORS | Odoo Community Association (OCA), Pexego |
| MAINTAINERS | |
| MAINTAINERS | Odoo Community Association (OCA), Pexego |
| COMMITTERS | |
| COMMITTERS | Alexandre Fayolle, Pedro M. Baeza, Stéphane Bidoul (ACSONE), Alejandro Santana, Ignacio Ibeas - Acysos S.L., Omar (Pexego), OCA Transbot, Launchpad Translations on behalf of openerp-spain-team |
| WEBSITE | |
| WEBSITE | http://www.pexego.es, http://www.acysos.com |
| LAST TRACKING UPDATE | |
| LAST TRACKING UPDATE | 2026-07-06 00:07:12 |
| ODOO DEPENDENCIES | |
| ODOO DEPENDENCIES |
odoo/odoo: - account - base_setup - base - web_kanban - web - product - process - decimal_precision - analytic - board - edi - email_template |
| PYTHON DEPENDENCIES | |
| PYTHON DEPENDENCIES |
unidecode |
| SYSTEM DEPENDENCIES | |
| SYSTEM DEPENDENCIES | Not have |
| DESCRIPTION | |
| DESCRIPTION |
Módulo base para declaraciones de la AEAT.
|
| XML ID | Name | Model | Type | Status |
|---|---|---|---|---|
view_l10n_es_aeat_report_form |
l10n_es.aeat.report.form | l10n.es.aeat.report | form | New |
view_l10n_es_aeat_report_search |
AEAT Model (search) | l10n.es.aeat.report | search | New |
view_l10n_es_aeat_report_tree |
l10n_es.aeat.report.tree | l10n.es.aeat.report | tree | New |
wizard_aeat_export |
Export AEAT BOE file | l10n.es.aeat.report.export_to_boe | form | New |
No new fields.
Public methods (9)button_calculate(self, cr, uid, ids, context=None)
button_cancel(self, cr, uid, ids, context=None)
button_confirm(self, cr, uid, ids, context=None)
button_export(self, cr, uid, ids, context=None)
button_recalculate(self, cr, uid, ids, context=None)
button_recover(self, cr, uid, ids, context=None)
calculate(self, cr, uid, ids, context=None)
on_change_company_id(self, cr, uid, ids, company_id)
unlink(self, cr, uid, ids, context=None)
No new fields.
Public methods (1)action_get_file(self, cr, uid, ids, context=None)
| REPOSITORY | |
|---|---|
| REPOSITORY | OCA/l10n-spain |
| GIT | |
| GIT | https://github.com/OCA/l10n-spain.git |
| GIT FOLDER | |
| GIT FOLDER | https://github.com/OCA/l10n-spain/tree/6.1/l10n_es_aeat |
| VERSION | |
| VERSION | 1.0 |
| CATEGORY | |
| CATEGORY | Localisation/Accounting |
| LICENSE | |
| LICENSE | AGPL-3 |
| APPLICATION | |
| APPLICATION | No |
| AUTO-INSTALLABLE | |
| AUTO-INSTALLABLE | No |
| AUTHORS | |
| AUTHORS | Odoo Community Association (OCA), Pexego |
| MAINTAINERS | |
| MAINTAINERS | Odoo Community Association (OCA), Pexego |
| COMMITTERS | |
| COMMITTERS | Alexandre Fayolle, Pedro M. Baeza, Iván Antón (Ozono), Omar (pexego), Alberto Martín |
| WEBSITE | |
| WEBSITE | http://www.pexego.es |
| LAST TRACKING UPDATE | |
| LAST TRACKING UPDATE | 2026-07-06 00:04:05 |
| ODOO DEPENDENCIES | |
| ODOO DEPENDENCIES |
odoo/odoo: - account - base_setup - base - product - process - decimal_precision - analytic - board - edi - email_template - base_tools |
| PYTHON DEPENDENCIES | |
| PYTHON DEPENDENCIES | Not have |
| SYSTEM DEPENDENCIES | |
| SYSTEM DEPENDENCIES | Not have |
| DESCRIPTION | |
| DESCRIPTION | |
No views found for this module.
No models found for this module.