Repository
OCA/l10n-italy · module folder · Try on Runboat
Module version
1.4.1
Category
Localization/Italy
Folder size
5.47 MB
License
AGPL-3
Application
No
Auto-installable
No
Website
https://github.com/OCA/l10n-italy
Last tracking update
2026-08-07 08:09:16
Authors
Odoo Community Association (OCA), Agile Business Group, Davide Corio, Innoviu, Odoo Italia Network
Maintainers
Odoo Community Association (OCA), Agile Business Group, Davide Corio, Innoviu, Odoo Italia Network
Committers
eLBati, Sergio Zanchetta, micheledic, Simone Rubino, Weblate, OCA-git-bot, oca-ci, Marco Colombo, odooNextev, Borruso, PicchiSeba, TennyMKT, Marco Marinello
Odoo dependencies
Python dependencies
asn1crypto, xmlschema, codicefiscale
System dependencies
None
Required by
l10n_it_fatturapa_auto_sale_order, l10n_it_fatturapa_in, l10n_it_fatturapa_out, l10n_it_fatturapa_out_wt, l10n_it_fatturapa_sale, l10n_it_sdi_channel, l10n_it_website_portal_fatturapa
Description
**Italiano**

Modulo base per gestire le fatture elettroniche.

<https://www.fatturapa.gov.it>

Consultare anche i file README di l10n_it_fatturapa_out e
l10n_it_fatturapa_in.

**English**

Base module to handle Electronic Invoices.

<https://www.fatturapa.gov.it>

See also l10n_it_fatturapa_out and l10n_it_fatturapa_in README files.

Code Analysis

Views touched (10)
XML IDNameModelTypeStatus
fatturapa_attachment_view_form Form view for SdI file fatturapa.attachment form New
fatturapa_related_document_type_inline_view_tree Inline editable tree view for fatturapa.related_document_type fatturapa.related_document_type tree Inherits fatturapa_related_document_type_view_tree
fatturapa_related_document_type_view_form Form view for fatturapa.related_document_type fatturapa.related_document_type form New
fatturapa_related_document_type_view_tree Tree view for fatturapa.related_document_type fatturapa.related_document_type tree New
view_account_config_settings view_account_config_settings res.config.settings form Inherits account.res_config_settings_view_form
view_company_form_e_invoice view_company_form_e_invoice res.company form Inherits base.view_company_form
view_invoice_form_fatturapa account.invoice.fatturapa account.move form Inherits account.view_move_form
view_partner_form_e_inv res.partner.form.e.invoice res.partner form Inherits base.view_partner_form
view_partner_form_fatturapa partner.form.fatturapa res.partner form Inherits account.view_partner_property_form
view_partner_ipa_form_ftpa view_partner_ipa_form_ftpa res.partner form Inherits l10n_it_ipa.view_partner_ipa_form
HTTP endpoints (1)
Route(s)HandlerAuthTypeMethodsFlags
/fatturapa/preview/<attachment_id> FatturaElettronicaController.pdf_preview user http ALL website
Models touched (19)

New fields (38)
  • activity_progress_ids One2many → fatturapa.activity.progress
    copy=False args: 'fatturapa.activity.progress', 'invoice_id', 'Phase of Activity Progress'
  • art73 Boolean
    copy=False help='Indicates whether the document has been issued according to methods and terms laid down in a ministerial decree under the terms of Article 73 of Italian Presidential Decree 633/72 (this enables the seller/provider to issue in the same year several documents with same number)' readonly=True args: 'Art. 73'
  • carrier_id Many2one → res.partner
    copy=False string='Carrier' args: 'res.partner'
  • delivery_address Text
    copy=False args: 'Delivery Address for E-invoice'
  • delivery_datetime Datetime
    copy=False args: 'Delivery Date Time'
  • description Char
    copy=False size=100
  • efatt_rounding Float
    copy=False help='Possible total amount rounding on the document (negative sign allowed)' readonly=True args: 'Rounding'
  • efatt_stabile_organizzazione_cap Char
    copy=False help='ZIP Code' readonly=True string='Organization ZIP'
  • efatt_stabile_organizzazione_civico Char
    copy=False help='Street number of the address (no need to specify if already present in the address field)' readonly=True string='Organization Street Number'
  • efatt_stabile_organizzazione_comune Char
    copy=False help='Municipality or city to which the Stable Organization refers' readonly=True string='Organization Municipality'
  • efatt_stabile_organizzazione_indirizzo Char
    copy=False help='The fields must be entered only when the seller/provider is non-resident, with a stable organization in Italy. Address of the stable organization in Italy (street name, square, etc.)' readonly=True string='Organization Address'
  • efatt_stabile_organizzazione_nazione Char
    copy=False help='Country code according to the ISO 3166-1 alpha-2 code standard' readonly=True string='Organization Country'
  • efatt_stabile_organizzazione_provincia Char
    copy=False help='Acronym of the Province to which the municipality indicated in the information element 1.2.3.4 <Comune> belongs. Must be filled if the information element 1.2.3.6 <Nazione> is equal to IT' readonly=True string='Organization Province'
  • electronic_invoice_subjected Boolean
    readonly=True related='commercial_partner_id.electronic_invoice_subjected' args: 'Subjected to Electronic Invoice'
  • fatturapa_doc_attachments One2many → fatturapa.attachments
    copy=False args: 'fatturapa.attachments', 'invoice_id', 'Electronic Invoice Attachments'
  • fatturapa_payments One2many → fatturapa.payment.data
    copy=False args: 'fatturapa.payment.data', 'invoice_id', 'Electronic Invoice Payment Data'
  • fatturapa_summary_ids One2many → fatturapa.summary.data
    copy=False args: 'fatturapa.summary.data', 'invoice_id', 'Electronic Invoice Summary Data'
  • ftpa_incoterms Char
    copy=False string='E-inv Incoterms'
  • ftpa_related_ddts One2many → fatturapa.related_ddt
    copy=False args: 'fatturapa.related_ddt', 'invoice_id', 'Related DDT'
  • ftpa_withholding_ids One2many → withholding.data.line
    copy=False args: 'withholding.data.line', 'invoice_id', 'Withholding'
  • gross_weight Float
    copy=False
  • intermediary Many2one → res.partner
    args: 'res.partner'
  • net_weight Float
    copy=False
  • number_items Integer
    copy=False args: 'Number of Items'
  • pickup_datetime Datetime
    copy=False args: 'Pick up'
  • protocol_number Char
    copy=False size=64
  • related_documents One2many → fatturapa.related_document_type
    copy=False args: 'fatturapa.related_document_type', 'invoice_id'
  • related_invoice_code Char
    copy=False
  • related_invoice_date Date
    copy=False
  • sender Selection
    args: [('CC', 'Assignee / Partner'), ('TZ', 'Third Person')]
  • tax_representative_id Many2one → res.partner
    string='Tax Representative' args: 'res.partner'
  • total_travel Char
    copy=False size=15 args: 'Travel in hours or Km'
  • transport_date Date
    copy=False
  • transport_reason Char
    copy=False size=80 args: 'Reason'
  • transport_vehicle Char
    copy=False size=80 args: 'Vehicle'
  • unit_weight Char
    copy=False size=10 args: 'Weight Unit'
  • vehicle_registration Date
    copy=False
  • welfare_fund_ids One2many → welfare.fund.data.line
    copy=False args: 'welfare.fund.data.line', 'invoice_id', 'Welfare Fund'
Public methods (1)
  • open_form_current(self)

New fields (5)
  • admin_ref Char
    copy=False size=20 args: 'Admin. ref.'
  • discount_rise_price_ids One2many → discount.rise.price
    copy=False args: 'discount.rise.price', 'invoice_line_id', 'Discount or Supplement Details'
  • ftpa_line_number Integer
    copy=False readonly=True args: 'Line Number'
  • ftpa_related_ddts One2many → fatturapa.related_ddt
    copy=False args: 'fatturapa.related_ddt', 'invoice_line_id', 'Related DDT'
  • related_documents One2many → fatturapa.related_document_type
    copy=False args: 'fatturapa.related_document_type', 'invoice_line_id', 'Related Documents Type'
Public methods (0)

No public methods.

New fields (5)
  • amount Float
    digits='Discount'
  • invoice_id Many2one → account.move
    index=True ondelete='cascade' args: 'account.move', 'Related Invoice'
  • invoice_line_id Many2one → account.move.line
    index=True ondelete='cascade' args: 'account.move.line', 'Related Invoice from line'
  • name Selection
    args: [('SC', 'Discount'), ('MG', 'Supplement')], 'Type'
  • percentage Float
Public methods (0)

No public methods.

New fields (2)
  • fatturapa_activity_progress Integer
    args: 'Activity Progress'
  • invoice_id Many2one → account.move
    index=True ondelete='cascade' args: 'account.move', 'Related Invoice'
Public methods (0)

No public methods.

New fields (4)
  • att_name Char
    related='ir_attachment_id.name' store=True string='SdI file name'
  • ftpa_preview_link Char
    compute='_compute_ftpa_preview_link' readonly=True args: 'Preview link'
  • id Id
  • ir_attachment_id Many2one → ir.attachment
    comodel_name='ir.attachment' ondelete='cascade' required=True string='Attachment'
Public methods (7)
  • cleanup_xml(self, xml_string)
    @api.model
  • extract_cades(data)
    @staticmethod
  • ftpa_preview(self)
  • get_fattura_elettronica_preview(self, attachment)
    @api.model
  • get_xml_string(self, attachment=None)
  • remove_xades_sign(self, xml)
    @api.model
  • strip_xml_content(self, xml)
    @api.model

New fields (4)
  • compression Char
    size=10
  • format Char
    size=10
  • invoice_id Many2one → account.move
    index=True ondelete='cascade' args: 'account.move', 'Related Invoice'
  • ir_attachment_id Many2one → ir.attachment
    ondelete='cascade' required=True args: 'ir.attachment', 'Attachment'
Public methods (0)

No public methods.

New fields (2)
  • code Char
    size=4
  • name Char
    size=128 args: 'Description'
Public methods (0)

No public methods.

New fields (3)
  • invoice_id Many2one → account.move
    index=True ondelete='cascade' args: 'account.move', 'Related Invoice'
  • payment_methods One2many → fatturapa.payment.detail
    args: 'fatturapa.payment.detail', 'payment_data_id', 'Payments Details'
  • payment_terms Many2one → fatturapa.payment_term
    string='Electronic Invoice Payment Method' args: 'fatturapa.payment_term'
Public methods (0)

No public methods.

New fields (24)
  • account_move_line_id Many2one → account.move.line
    string='Payment Line' args: 'account.move.line'
  • fatturapa_pm_id Many2one → fatturapa.payment_method
    string='Electronic Invoice Payment Method' args: 'fatturapa.payment_method'
  • max_payment_date Date
    args: 'Maximum Date for Payment'
  • payment_amount Float
  • payment_bank Many2one → res.partner.bank
    args: 'res.partner.bank'
  • payment_bank_abi Char
    args: 'ABI'
  • payment_bank_bic Char
    args: 'BIC'
  • payment_bank_cab Char
    args: 'CAB'
  • payment_bank_iban Char
    args: 'IBAN'
  • payment_bank_name Char
    args: 'Bank Name'
  • payment_code Char
  • payment_data_id Many2one → fatturapa.payment.data
    index=True ondelete='cascade' args: 'fatturapa.payment.data', 'Related Payments Data'
  • payment_days Integer
    args: 'Payment Term Days'
  • payment_due_date Date
  • payment_term_start Date
  • penalty_amount Float
    args: 'Amount of Penalty'
  • penalty_date Date
    args: 'Effective Date of Penalty'
  • post_office_code Char
    size=20
  • prepayment_discount Float
  • recepit_cf Char
    args: 'Receipt Issuer FC'
  • recepit_name Char
    args: 'Receipt Issuer Name'
  • recepit_surname Char
    args: 'Receipt Issuer Surname'
  • recepit_title Char
    args: 'Receipt Issuer Title'
  • recipient Char
    size=200
Public methods (0)

No public methods.

New fields (5)
  • date Date
  • invoice_id Many2one → account.move
    index=True ondelete='cascade' args: 'account.move', 'Related Invoice'
  • invoice_line_id Many2one → account.move.line
    index=True ondelete='cascade' args: 'account.move.line', 'Related Invoice Line'
  • lineRef Integer
    args: 'Line Ref.'
  • name Char
    required=True size=20 args: 'Document ID'
Public methods (1)
  • create(self, vals_list)
    @api.model_create_multi

New fields (10)
  • cig Char
    size=15 args: 'CIG Code'
  • code Char
    size=100 args: 'Order Agreement Code'
  • cup Char
    size=15 args: 'CUP Code'
  • date Date
  • invoice_id Many2one → account.move
    index=True ondelete='cascade' readonly=True args: 'account.move', 'Related Invoice'
  • invoice_line_id Many2one → account.move.line
    index=True ondelete='cascade' readonly=True args: 'account.move.line', 'Related Invoice Line'
  • lineRef Integer
    args: 'Line Ref.'
  • name Char
    required=True size=20 args: 'Document ID'
  • numitem Char
    size=20 args: 'Item Num.'
  • type Selection
    required=True args: [('order', 'Order'), ('contract', 'Contract'), ('agreement', 'Agreement'), ('reception', 'Reception'), ('invoice', 'Related Invoice')], 'Document Type'
Public methods (2)
  • create(self, vals_list)
    @api.model_create_multi
  • setlineRef(self, n)

New fields (9)
  • amount_tax Float
  • amount_untaxed Float
  • incidental_charges Float
  • invoice_id Many2one → account.move
    index=True ondelete='cascade' args: 'account.move', 'Related Invoice'
  • law_reference Char
    size=128 args: 'Law reference'
  • non_taxable_nature Selection
    selection='_get_tax_kinds' string='Non taxable nature'
  • payability Selection
    string='VAT payability' args: [('I', 'Immediate payability'), ('D', 'Deferred payability'), ('S', 'Split payment')]
  • rounding Float
  • tax_rate Float
Public methods (0)

No public methods.

New fields (0)

No new fields.

Public methods (2)
  • create(self, vals_list)
    @api.model_create_multi
  • write(self, vals)

New fields (8)
  • fatturapa_art73 Boolean
    args: 'Art. 73'
  • fatturapa_fiscal_position_id Many2one → fatturapa.fiscal_position
    help='Fiscal position used by electronic invoice' args: 'fatturapa.fiscal_position', 'Electronic Invoice Fiscal Position'
  • fatturapa_preview_style Selection
    default='Foglio_di_stile_fatturaordinaria_v1.2.2.xsl' required=True string='Preview Format Style for Fattura Ordinaria' args: [('Foglio_di_stile_fatturaordinaria_v1.2.2.xsl', 'Fattura Ordinaria'), ('FoglioStileAssoSoftware.xsl', 'AssoSoftware'), ('FoglioStileSouthTyrol-bilingue.xsl', 'South-Tyrol')]
  • fatturapa_pub_administration_ref Char
    size=20 args: 'Public Administration Reference Code'
  • fatturapa_sender_partner Many2one → res.partner
    help='Data of Third-Party Issuer Intermediary who emits the invoice on behalf of the seller/provider' args: 'res.partner', 'Third Party/Sender'
  • fatturapa_simple_preview_style Selection
    default='fatturasemplificata_v1.0.xsl' required=True string='Preview Format Style for Fattura Semplificata' args: [('fatturasemplificata_v1.0.xsl', 'Fattura Semplificata')]
  • fatturapa_stabile_organizzazione Many2one → res.partner
    help='The fields must be entered only when the seller/provider is non-resident, with a stable organization in Italy' args: 'res.partner', 'Stable Organization'
  • fatturapa_tax_representative Many2one → res.partner
    args: 'res.partner', 'Legal Tax Representative'
Public methods (0)

No public methods.

New fields (13)
  • fatturapa_art73 Boolean
    help='Indicates whether the document has been issued according to methods and terms laid down in a ministerial decree under the terms of Article 73 of Italian Presidential Decree 633/72 (this enables the company to issue in the same year several documents with same number)' readonly=False related='company_id.fatturapa_art73' string='Art. 73'
  • fatturapa_fiscal_position_id Many2one
    help='Fiscal position used by electronic invoice' readonly=False related='company_id.fatturapa_fiscal_position_id' string='Fiscal Position'
  • fatturapa_preview_style Selection
    readonly=False related='company_id.fatturapa_preview_style' required=True string='Preview Format Style for Fattura Ordinaria'
  • fatturapa_pub_administration_ref Char
    readonly=False related='company_id.fatturapa_pub_administration_ref' string='Public Administration Reference Code'
  • fatturapa_rea_capital Float
    readonly=False related='company_id.rea_capital' string='REA Capital'
  • fatturapa_rea_liquidation Selection
    readonly=False related='company_id.rea_liquidation_state' string='REA Liquidation'
  • fatturapa_rea_number Char
    readonly=False related='company_id.rea_code' string='REA Number'
  • fatturapa_rea_office Many2one
    readonly=False related='company_id.rea_office' string='REA Office'
  • fatturapa_rea_partner Selection
    readonly=False related='company_id.rea_member_type' string='REA Copartner'
  • fatturapa_sender_partner Many2one
    help='Data of Third-Party Issuer Intermediary who emits the invoice on behalf of the seller/provider' readonly=False related='company_id.fatturapa_sender_partner' string='Third Party/Sender'
  • fatturapa_simple_preview_style Selection
    default='fatturasemplificata_v1.0.xsl' readonly=False related='company_id.fatturapa_simple_preview_style' required=True string='Preview Format Style for Fattura Semplificata'
  • fatturapa_stabile_organizzazione Many2one
    help='The fields must be entered only when the seller/provider is non-resident, with a stable organization in Italy' readonly=False related='company_id.fatturapa_stabile_organizzazione' string='Stable Organization'
  • fatturapa_tax_representative Many2one
    help='The fields must be entered only when the seller/provider makes use of a tax representative in Italy' readonly=False related='company_id.fatturapa_tax_representative' string='Legal Tax Representative'
Public methods (1)
  • onchange_company_id(self)
    @api.onchange('company_id')

New fields (15)
  • codice_destinatario Char
    default=STANDARD_ADDRESSEE_CODE help=<expr> args: 'Addressee Code'
  • electronic_invoice_data_complete Boolean
    compute='_compute_electronic_invoice_data_complete'
  • electronic_invoice_no_contact_update Boolean
    args: 'Do not update the contact from Electronic Invoice Details'
  • electronic_invoice_obliged_subject Boolean
    args: 'Obliged Subject'
  • electronic_invoice_subjected Boolean
    args: 'Enable electronic invoicing'
  • electronic_invoice_use_this_address Boolean
    help='Set this when the main company has got several Addressee Codes or PEC' args: 'Use this e-invoicing data when invoicing to this address'
  • eori_code Char
    size=20 args: 'EORI Code'
  • license_number Char
    size=20 args: 'License Code'
  • pa_partner_code Char
    size=20 args: 'PA Code for Partner'
  • pec_destinatario Char
    help=<expr> args: 'Addressee PEC'
  • register Char
    size=60 args: 'Professional Register'
  • register_code Char
    size=60 args: 'Register Registration Number'
  • register_fiscalpos Many2one → fatturapa.fiscal_position
    string='Register Fiscal Position' args: 'fatturapa.fiscal_position'
  • register_province Many2one → res.country.state
    args: 'res.country.state'
  • register_regdate Date
    args: 'Register Registration Date'
Public methods (3)
  • onchange_country_id_e_inv(self)
    @api.onchange('country_id')
  • onchange_e_inv_obliged_subject(self)
    @api.onchange('electronic_invoice_obliged_subject')
  • onchange_electronic_invoice_subjected(self)
    @api.onchange('electronic_invoice_subjected')

New fields (9)
  • invoice_id Many2one → account.move
    index=True ondelete='cascade' args: 'account.move', 'Related Invoice'
  • kind_id Many2one → account.tax.kind
    string='Non taxable nature' args: 'account.tax.kind'
  • name Many2one → welfare.fund.type
    string='Welfare Fund Type' args: 'welfare.fund.type'
  • pa_line_code Char
    size=20 args: 'PA Code for this Record'
  • subjected_withholding Char
    size=2 args: 'Subjected to Withholding'
  • welfare_Iva_tax Float
    args: 'VAT Tax Rate'
  • welfare_amount_tax Float
    args: 'Welfare Tax Amount'
  • welfare_rate_tax Float
    args: 'Welfare Tax Rate'
  • welfare_taxable Float
Public methods (0)

No public methods.

New fields (2)
  • description Char
  • name Char
Public methods (1)
  • name_get(self)

New fields (3)
  • amount Float
    args: 'Withholding amount'
  • invoice_id Many2one → account.move
    index=True ondelete='cascade' args: 'account.move', 'Related Invoice'
  • name Selection
    selection=[('RT01', 'Natural Person'), ('RT02', 'Legal Person'), ('RT03', 'INPS'), ('RT04', 'ENASARCO'), ('RT05', 'ENPAM'), ('RT06', 'OTHER')] string='Withholding Type'
Public methods (0)

No public methods.

Loading…

Loading…

Loading…

Loading…

Loading…

Loading…

Loading…