TIP: You can type at any time to perform a new search.
Sistema de comprobación y contraste de facturas enviadas al SII
l10n_es_aeat_sii_match · OCA/l10n-spain
- Repository
- OCA/l10n-spain · module folder · Try on Runboat
- Module version
- 1.0.0
- Category
- Accounting & Finance
- Folder size
- 0.13 MB
- License
- AGPL-3
- Application
- No
- Auto-installable
- No
- Website
- https://github.com/OCA/l10n-spain
- Last tracking update
- 2026-08-07 09:06:22
- Authors
- Odoo Community Association (OCA), Tecnativa, Studio73
- Maintainers
- Odoo Community Association (OCA), Tecnativa, Studio73
- Committers
- Emilio Pascual, OCA-git-bot, oca-ci
- Odoo dependencies
- Python dependencies
- deepdiff<8, requests, zeep, unidecode
- System dependencies
- None
- Required by
- None
- Description
- El módulo recupera los datos enviados a la AEAT mediante peticiones unitarias o por meses (como una declaración AEAT) - Los datos recibidos se procesan intentando asociarlos mediante su CSV (Código Seguro de Verificación) y si no encuentra el CSV, busca por número de factura/fecha/partner - El módulo muestra aquellos registros que no han conseguido asociarse, así como aquellas facturas en Odoo que no tienen su correspondiente registro en los datos recibidos. - En segundo lugar se exponen los registros que tienen diferencias entre Odoo y AEAT - Por último se muestran por separado facturas 'No contrastadas' o 'Parcialmente contrastadas', es decir, las que la propia AEAT no haya podido cotejar entre el emisor de la factura y el receptor, siendo los dos obligados a declarar en el sistema SII.
Code Analysis ⓘ
Views touched (8)
| XML ID | Name | Model | Type | Status |
|---|---|---|---|---|
invoice_sii_match_form |
account.invoice.sii.match.form | account.move | form | Inherits l10n_es_aeat_sii_oca.invoice_sii_form |
view_account_invoice_sii_match_filter |
account.invoice.sii.match.filter | account.move | Inherits account.view_account_invoice_filter | |
view_l10n_es_aeat_sii_match_report_filter |
l10n_es.aeat.sii.match.report.filter | l10n.es.aeat.sii.match.report | search | New |
view_l10n_es_aeat_sii_match_report_form |
l10n_es.aeat.sii.match.report.form | l10n.es.aeat.sii.match.report | form | New |
view_l10n_es_aeat_sii_match_report_tree |
l10n_es.aeat.sii.match.report.list | l10n.es.aeat.sii.match.report | list | New |
view_l10n_es_aeat_sii_match_result_filter |
l10n_es.aeat.sii.match.result.filter | l10n.es.aeat.sii.match.result | search | New |
view_l10n_es_aeat_sii_match_result_form |
l10n_es.aeat.sii.match.result.form | l10n.es.aeat.sii.match.result | form | New |
view_l10n_es_aeat_sii_match_result_tree |
l10n_es.aeat.sii.match.result.list | l10n.es.aeat.sii.match.result | list | New |
HTTP endpoints (0)
No HTTP endpoints found for this module.
Models touched (5)
New fields (0)
No new fields.
Public methods (1)-
contrast_aeat(self)
New fields (6)
-
invoice_idMany2oneReferenceindex=Truemodel_field='model'readonly=Truestring='Document' -
modelChardefault='account.move' -
report_idMany2one → l10n.es.aeat.sii.match.resultcomodel_name='l10n.es.aeat.sii.match.result'index=Trueondelete='cascade'string='Related SII match report' -
sii_fieldCharcopy=Falsestring='SII field name' -
sii_return_field_valueCharcopy=Falsestring='SII return field value' -
sii_sent_field_valueCharcopy=Falsestring='SII sent field value'
No public methods.
New fields (20)
-
calculate_dateDatetimestring='Calculate date' -
company_idMany2one → res.companycomodel_name='res.company'default=<expr>required=Truestring='Company' -
fiscalyearIntegerdefault=fields.Date.today().yearrequired=Truestring='Fiscal year' -
invoice_typeSelectionrequired=Trueselection=[('out', 'Out invoice/refund'), ('in', 'In invoice/refund')]string='Invoice type' -
nameCharrequired=Truestring='Report identifier' -
number_recordsIntegerreadonly=Truestring='Total records' -
number_records_bothIntegerreadonly=Truestring='Records in Odoo and SII' -
number_records_contrastedIntegerreadonly=Truestring='Records contrasted' -
number_records_correctIntegerreadonly=Truestring='Records correctly contrasted' -
number_records_in_processIntegerreadonly=Truestring='Records in process of contrast' -
number_records_no_existIntegerreadonly=Truestring='Records without contrast' -
number_records_no_testIntegerreadonly=Truestring='Records no testables' -
number_records_not_contrastedIntegerreadonly=Truestring='Records not contasted' -
number_records_odooIntegerreadonly=Truestring='Records only in Odoo' -
number_records_partiallyIntegerreadonly=Truestring='Records partially correct' -
number_records_partially_contrastedIntegerreadonly=Truestring='Records partially contrasted' -
number_records_siiIntegerreadonly=Truestring='Records only in SII' -
period_typeSelectionrequired=Trueselection=[('01', '01 - January'), ('02', '02 - February'), ('03', '03 - March'), ('04', '04 - April'), ('05', '05 - May'), ('06', '06 - June'), ('07', '07 - July'), ('08', '08 - August'), ('09', '09 - September'), ('10', '10 - October'), ('11', '11 - November'), ('12', '12 - December')]string='Period type' -
result_idsOne2many → l10n.es.aeat.sii.match.resultcomodel_name='l10n.es.aeat.sii.match.result'inverse_name='report_id'readonly=Truestring='SII Match Result' -
stateSelectiondefault='draft'selection=[('draft', 'Draft'), ('calculated', 'Calculated'), ('done', 'Done'), ('error', 'Error'), ('cancelled', 'Cancelled')]
-
button_calculate(self) -
button_cancel(self) -
button_confirm(self) -
button_recover(self) -
open_result(self)
New fields (9)
-
csvCharstring='CSV' -
invoiceChar -
invoice_idMany2oneReferenceindex=Truemodel_field='model'readonly=Truerequired=Truestring='Document' -
invoice_locationSelectioncopy=Falsereadonly=Trueselection=[('both', 'Invoice in Odoo and SII'), ('odoo', 'Invoice in Odoo'), ('sii', 'Invoice in SII')]string='Invoice location' -
modelChardefault='account.move'required=True -
report_idMany2one → l10n.es.aeat.sii.match.reportcomodel_name='l10n.es.aeat.sii.match.report'ondelete='cascade'string='AEAT SII Match Report ID' -
sii_contrast_stateSelectioncopy=Falsereadonly=Trueselection=[('correct', 'Correct'), ('no_exist', "Doesn't exist"), ('partially', 'Partially correct')]string='AEAT contrast state' -
sii_match_difference_idsOne2many → l10n.es.aeat.sii.match.differencecomodel_name='l10n.es.aeat.sii.match.difference'copy=Falseinverse_name='report_id'readonly=Truestring='SII match differences' -
sii_match_stateSelectioncopy=Falsereadonly=Trueselection='_get_selection_sii_match_state'string='Match state'
No public methods.
New fields (5)
-
sii_contrast_stateSelectioncopy=Falsereadonly=Trueselection=[('correct', 'Correct'), ('no_exist', "Doesn't exist"), ('partially', 'Partially correct')]string='AEAT contrast state' -
sii_match_difference_idsOne2many → l10n.es.aeat.sii.match.differencecomodel_name='l10n.es.aeat.sii.match.difference'copy=Falsedomain=<expr>inverse_name='invoice_id'readonly=Truestring='SII match differences' -
sii_match_returnTextcopy=Falsereadonly=Truestring='SII match return' -
sii_match_sentTextcopy=Falsereadonly=Truestring='SII match sent' -
sii_match_stateSelectioncopy=Falsehelp='- No testable: The counterpart is not subscribed to SII the record will not be contrasted.\n- In process of contrast: AEAT is processing the data soon will be a result.\n- Not contrasted: The counterpart has not sent the invoice to SII, AEAT gives up to 4 months in order to contrast the information.\n- Partially contrasted: A invoice has been found but some data is different.\n- Contrasted: The counterpart has send the invoice to SII, all is OK.'readonly=Trueselection=[('1', 'No testable'), ('2', 'In process of contrast'), ('3', 'Not contrasted'), ('4', 'Partially contrasted'), ('5', 'Contrasted')]string='Match state'
-
contrast_aeat(self)Overridable hook for raising any error or filtering out records if needed.
Loading…
Loading…
Loading…
Loading…
Loading…