ITA - Ritenute d'acconto

l10n_it_withholding_tax
REPOSITORY
REPOSITORYOCA/l10n-italy
GIT
GIThttps://github.com/OCA/l10n-italy.git
GIT FOLDER
GIT FOLDERhttps://github.com/OCA/l10n-italy/tree/16.0/l10n_it_withholding_tax
VERSION
VERSION 1.2.2
CATEGORY
CATEGORYAccount
LICENSE
LICENSEAGPL-3
APPLICATION
APPLICATIONNo
AUTO-INSTALLABLE
AUTO-INSTALLABLENo
AUTHORS
AUTHORSOdoo Community Association (OCA), Openforce, Odoo Italia Network
MAINTAINERS
MAINTAINERSOdoo Community Association (OCA), Openforce, Odoo Italia Network
COMMITTERS
COMMITTERSeLBati, Sergio Zanchetta, tafaRU, Weblate, OCA-git-bot, Simone Rubino, micheledic, oca-ci, Marco Colombo
WEBSITE
WEBSITEhttps://github.com/OCA/l10n-italy
LAST TRACKING UPDATE
LAST TRACKING UPDATE2026-07-06 19:11:58
ODOO DEPENDENCIES
ODOO DEPENDENCIES odoo/odoo:
    - account
    - base_setup
    - base
    - web
    - product
    - mail
    - bus
    - web_tour
    - uom
    - analytic
    - portal
    - web_editor
    - http_routing
    - auth_signup
    - digest
    - resource
PYTHON DEPENDENCIES
PYTHON DEPENDENCIES Not have
SYSTEM DEPENDENCIES
SYSTEM DEPENDENCIES Not have
DESCRIPTION
DESCRIPTION
La ritenuta d’acconto provvede a calcolare automaticamente i valori
delle diverse tipologie di ritenuta presenti nella contaiblità italiana.

Con questo modulo è possibile, tramite apposito workflow, gestire i
diversi passaggi di stato delle ritenute rilevate: dovuta, applicata,
versata

Code Analysis

Views touched (14)
XML IDNameModelTypeStatus
document_tax_totals_wt document_tax_totals_wt ir.ui.view qweb Inherits account.document_tax_totals
invoice_supplier_tree_wt view.withholding.invoice.supplier.tree account.move field Inherits account.view_invoice_tree
print_withholding_tax print_withholding_tax ir.ui.view qweb Inherits account.report_invoice_document
view_withholding_invoice_form view.withholding.invoice.form account.move xpath Inherits account.view_move_form
view_withholding_move_form view.withholding.tax.move.form withholding.tax.move form New
view_withholding_move_search view.withholding.tax.move.search withholding.tax.move search New
view_withholding_move_tree view.withholding.tax.move.tree withholding.tax.move tree New
view_withholding_statement_form view.withholding.tax.statement.form withholding.tax.statement form New
view_withholding_statement_tree view.withholding.tax.statement.tree withholding.tax.statement tree New
view_withholding_tax_fiscal_position_form view.withholding.tax.fiscal.position.form account.fiscal.position xpath Inherits account.view_account_position_form
view_withholding_tax_form view.withholding.tax.form withholding.tax form New
view_withholding_tax_statement_search view.withholding.tax.statement.search withholding.tax.statement search New
view_withholding_tax_tree view.withholding.tax.tree withholding.tax tree New
view_wt_invoice_line_form view.withholding.invoice.supplier.form account.move.line xpath Inherits account.view_move_line_form
Models touched (12)

New fields (1)
  • withholding_tax_ids Many2many → withholding.tax
    string='Withholding Tax' args: 'withholding.tax', 'account_fiscal_position_withholding_tax_rel', 'fiscal_position_id', 'withholding_tax_id'
Public methods (0)

No public methods.

New fields (0)

No new fields.

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

New fields (7)
  • base Float
  • base_coeff Float
    compute='_compute_coeff' help='Coeff used to compute amount competence in the riconciliation' store=True
  • invoice_id Many2one → account.move
    ondelete='cascade' string='Invoice' args: 'account.move'
  • sequence Integer
  • tax Float
  • tax_coeff Float
    compute='_compute_coeff' help='Coeff used to compute amount competence in the riconciliation' store=True
  • withholding_tax_id Many2one → withholding.tax
    ondelete='restrict' string='Withholding tax' args: 'withholding.tax'
Public methods (0)

No public methods.

New fields (6)
  • amount_net_pay Float
    compute='_compute_amount_withholding_tax' digits='Account' readonly=True store=True string='Net To Pay'
  • amount_net_pay_residual Float
    compute='_compute_amount_withholding_tax' digits='Account' readonly=True store=True string='Residual Net To Pay'
  • withholding_tax Boolean
  • withholding_tax_amount Float
    compute='_compute_amount_withholding_tax' digits='Account' readonly=True store=True string='Withholding tax Amount'
  • withholding_tax_in_print Boolean
    default=True args: 'Show Withholding Tax In Print'
  • withholding_tax_line_ids One2many → account.invoice.withholding.tax
    copy=True readonly=True states={'draft': [('readonly', False)]} args: 'account.invoice.withholding.tax', 'invoice_id', 'Withholding Tax Lines'
Public methods (3)
  • action_post(self)
    Split amount withholding tax on account move lines
  • create_wt_statement(self)
    Create one statement for each withholding tax
  • get_wt_taxes_values(self)

New fields (5)
  • invoice_line_tax_wt_ids Many2many → withholding.tax
    column1='invoice_line_id' column2='withholding_tax_id' comodel_name='withholding.tax' default=_default_withholding_tax relation='account_invoice_line_tax_wt' string='W.T.'
  • withholding_tax_amount Float
  • withholding_tax_base Float
  • withholding_tax_generated_by_move_id Many2one → account.move
    readonly=True string='Withholding Tax generated from' args: 'account.move'
  • withholding_tax_id Many2one → withholding.tax
    string='Withholding Tax' args: 'withholding.tax'
Public methods (1)
  • remove_move_reconcile(self)

New fields (0)

No new fields.

Public methods (4)
  • create(self, vals_list)
    @api.model_create_multi
  • generate_wt_moves(self, is_wt_move, lines=None)
    @api.model
  • reconcile_exist_account_move(self, lines, rec_line_statement, amount_wt)
    @api.model
  • unlink(self)

New fields (0)

No new fields.

Public methods (1)
  • default_get(self, fields)
    @api.model
    Compute amount to pay proportionally to amount total - wt

New fields (0)

No new fields.

Public methods (0)

No public methods.

New fields (17)
  • account_payable_id Many2one → account.account
    required=True string='Account Payable' args: 'account.account'
  • account_receivable_id Many2one → account.account
    required=True string='Account Receivable' args: 'account.account'
  • active Boolean
    default=True
  • base Float
    compute='_compute_get_rate'
  • certification Boolean
  • code Char
    required=True size=256
  • comment Text
    args: 'Text'
  • company_id Many2one → res.company
    default=<expr> required=True string='Company' args: 'res.company'
  • daticassprev_tax_id Many2one → account.tax
    args: 'account.tax'
  • journal_id Many2one → account.journal
    default=<expr> help='Journal used at invoice payment to register withholding tax' required=True string='Withholding tax journal' args: 'account.journal'
  • name Char
    required=True size=256
  • payment_term Many2one → account.payment.term
    required=True args: 'account.payment.term', 'Payment Terms'
  • rate_ids One2many → withholding.tax.rate
    required=True args: 'withholding.tax.rate', 'withholding_tax_id', 'Rates'
  • sequence Integer
  • tax Float
    compute='_compute_get_rate' string='Tax %'
  • use_daticassaprev Boolean
    help='Setting this, while exporting e-invoice XML, data will be also added to DatiCassaPrevidenziale' args: 'DatiCassa export'
  • wt_types Selection
    default='ritenuta' required=True args: [('enasarco', 'Enasarco tax'), ('ritenuta', 'Withholding tax'), ('inps', 'Inps Tax'), ('enpam', 'Enpam Tax'), ('other', 'Other Tax')], 'Withholding tax type'
Public methods (4)
  • compute_tax(self, amount)
  • copy(self, default=None)
  • get_base_from_tax(self, wt_amount)
    100 * wt_amount 1 --------------- * ------- % tax Coeff
  • get_grouping_key(self, invoice_tax_val)
    Returns a string that will be used to group account.invoice.withholding.tax sharing the same properties

New fields (16)
  • account_move_id Many2one → account.move
    ondelete='cascade' args: 'account.move', 'Payment Move'
  • amount Float
  • company_id Many2one → res.company
    related='withholding_tax_id.company_id' string='Company' args: 'res.company'
  • credit_debit_line_id Many2one → account.move.line
    ondelete='cascade' args: 'account.move.line', 'Credit/Debit Line'
  • date Date
    args: 'Date Competence'
  • date_maturity Date
  • full_reconcile_id Many2one → account.full.reconcile
    compute='_compute_full_reconcile_id' string='WT reconciliation' args: 'account.full.reconcile'
  • move_line_id Many2one → account.move.line
    help='Used from trace WT from other parts' ondelete='cascade' args: 'account.move.line', 'Account Move line'
  • partner_id Many2one → res.partner
    args: 'res.partner', 'Partner'
  • payment_line_id Many2one → account.move.line
    ondelete='cascade' args: 'account.move.line', 'Payment Line'
  • reconcile_partial_id Many2one → account.partial.reconcile
    ondelete='cascade' args: 'account.partial.reconcile', 'Invoice reconciliation'
  • state Selection
    copy=False default='due' readonly=True args: [('due', 'Due'), ('paid', 'Paid')], 'Status'
  • statement_id Many2one → withholding.tax.statement
    args: 'withholding.tax.statement', 'Statement'
  • withholding_tax_id Many2one → withholding.tax
    args: 'withholding.tax', 'Withholding Tax'
  • wt_account_move_id Many2one → account.move
    ondelete='cascade' args: 'account.move', 'WT Move'
  • wt_type Selection
    related='statement_id.wt_type' store=True string='Type'
Public methods (6)
  • action_paid(self)
  • action_set_to_draft(self)
  • check_unlink(self)
  • generate_account_move(self)
    Creation of account move to increase credit/debit vs tax authority
  • name_get(self)
  • unlink(self)

New fields (6)
  • base Float
    default=1 string='Base Coeff.'
  • comment Text
    string='Text'
  • date_start Date
  • date_stop Date
  • tax Float
    string='Tax %'
  • withholding_tax_id Many2one → withholding.tax
    ondelete='cascade' readonly=True string='Withholding Tax' args: 'withholding.tax'
Public methods (0)

No public methods.

New fields (12)
  • amount Float
    compute='_compute_total' readonly=True store=True string='WT amount applied'
  • amount_paid Float
    compute='_compute_total' readonly=True store=True string='WT amount paid'
  • base Float
  • company_id Many2one → res.company
    related='withholding_tax_id.company_id' string='Company' args: 'res.company'
  • date Date
  • invoice_id Many2one → account.move
    ondelete='cascade' args: 'account.move', 'Invoice'
  • move_id Many2one → account.move
    ondelete='cascade' args: 'account.move', 'Account move'
  • move_ids One2many → withholding.tax.move
    args: 'withholding.tax.move', 'statement_id', 'Moves'
  • partner_id Many2one → res.partner
    args: 'res.partner', 'Partner'
  • tax Float
  • withholding_tax_id Many2one → withholding.tax
    string='Withholding Tax' args: 'withholding.tax'
  • wt_type Selection
    compute='_compute_type' store=True args: [('in', 'In'), ('out', 'Out')], 'Type'
Public methods (2)
  • get_wt_competence(self, amount_reconcile)
  • name_get(self)
REPOSITORY
REPOSITORYOCA/l10n-italy
GIT
GIThttps://github.com/OCA/l10n-italy.git
GIT FOLDER
GIT FOLDERhttps://github.com/OCA/l10n-italy/tree/14.0/l10n_it_withholding_tax
VERSION
VERSION 1.3.1
CATEGORY
CATEGORYAccount
LICENSE
LICENSEAGPL-3
APPLICATION
APPLICATIONNo
AUTO-INSTALLABLE
AUTO-INSTALLABLENo
AUTHORS
AUTHORSOdoo Community Association (OCA), Openforce, Odoo Italia Network
MAINTAINERS
MAINTAINERSOdoo Community Association (OCA), Openforce, Odoo Italia Network
COMMITTERS
COMMITTERStafaRU, OCA Transbot, oca-travis, Weblate, OCA-git-bot, SimoRubi, sergiocorato, Simone Rubino, oca-ci, Giovanni, matteoopenf, Alessandro Uffreduzzi, Marco Colombo, michelerusti, Borruso
WEBSITE
WEBSITEhttps://github.com/OCA/l10n-italy
LAST TRACKING UPDATE
LAST TRACKING UPDATE2026-07-06 00:40:58
ODOO DEPENDENCIES
ODOO DEPENDENCIES OCA/account-financial-reporting:
    - account_tax_balance
OCA/account-financial-tools:
    - account_fiscal_year
OCA/l10n-italy:
    - l10n_it_fatturapa
    - l10n_it_account
    - l10n_it_fiscalcode
    - l10n_it_ipa
    - l10n_it_rea
    - l10n_it_account_tax_kind
    - l10n_it_vat_payability
    - l10n_it_fiscal_payment_term
OCA/partner-contact:
    - partner_firstname
OCA/server-ux:
    - date_range
odoo/odoo:
    - account
    - base_setup
    - base
    - web
    - product
    - mail
    - bus
    - web_tour
    - uom
    - analytic
    - portal
    - web_editor
    - http_routing
    - auth_signup
    - digest
    - resource
    - base_vat
    - attachment_indexation
    - base_iban
PYTHON DEPENDENCIES
PYTHON DEPENDENCIES asn1crypto
xmlschema
codicefiscale
openupgradelib
SYSTEM DEPENDENCIES
SYSTEM DEPENDENCIES Not have
DESCRIPTION
DESCRIPTION

Code Analysis

Views touched (13)
XML IDNameModelTypeStatus
invoice_supplier_tree_wt view.withholding.invoice.supplier.tree account.move field Inherits account.view_invoice_tree
print_withholding_tax print_withholding_tax xpath Inherits account.report_invoice_document
view_withholding_invoice_form view.withholding.invoice.form account.move xpath Inherits account.view_move_form
view_withholding_move_form view.withholding.tax.move.form withholding.tax.move form New
view_withholding_move_search view.withholding.tax.move.search withholding.tax.move search New
view_withholding_move_tree view.withholding.tax.move.tree withholding.tax.move tree New
view_withholding_statement_form view.withholding.tax.statement.form withholding.tax.statement form New
view_withholding_statement_tree view.withholding.tax.statement.tree withholding.tax.statement tree New
view_withholding_tax_fiscal_position_form view.withholding.tax.fiscal.position.form account.fiscal.position xpath Inherits account.view_account_position_form
view_withholding_tax_form view.withholding.tax.form withholding.tax form New
view_withholding_tax_statement_search view.withholding.tax.statement.search withholding.tax.statement search New
view_withholding_tax_tree view.withholding.tax.tree withholding.tax tree New
view_wt_invoice_line_form view.withholding.invoice.supplier.form account.move.line xpath Inherits account.view_move_line_form
Models touched (12)

New fields (1)
  • withholding_tax_ids Many2many → withholding.tax
    string='Withholding Tax' args: 'withholding.tax', 'account_fiscal_position_withholding_tax_rel', 'fiscal_position_id', 'withholding_tax_id'
Public methods (0)

No public methods.

New fields (0)

No new fields.

Public methods (2)
  • create(self, vals)
    @api.model
  • unlink(self)

New fields (7)
  • base Float
    args: 'Base'
  • base_coeff Float
    compute='_compute_coeff' help='Coeff used to compute amount competence in the riconciliation' store=True args: 'Base Coeff'
  • invoice_id Many2one → account.move
    ondelete='cascade' string='Invoice' args: 'account.move'
  • sequence Integer
    args: 'Sequence'
  • tax Float
    args: 'Tax'
  • tax_coeff Float
    compute='_compute_coeff' help='Coeff used to compute amount competence in the riconciliation' store=True args: 'Tax Coeff'
  • withholding_tax_id Many2one → withholding.tax
    ondelete='restrict' string='Withholding tax' args: 'withholding.tax'
Public methods (0)

No public methods.

New fields (7)
  • amount_net_pay Float
    compute='_compute_amount_withholding_tax' digits='Account' readonly=True store=True string='Net To Pay'
  • amount_net_pay_residual Float
    compute='_compute_amount_withholding_tax' digits='Account' readonly=True store=True string='Residual Net To Pay'
  • withholding_tax Boolean
    args: 'Withholding Tax'
  • withholding_tax_amount Float
    compute='_compute_amount_withholding_tax' digits='Account' readonly=True store=True string='Withholding tax Amount'
  • withholding_tax_in_print Boolean
    default=True args: 'Show Withholding Tax In Print'
  • withholding_tax_line_ids One2many → account.invoice.withholding.tax
    copy=True readonly=True states={'draft': [('readonly', False)]} args: 'account.invoice.withholding.tax', 'invoice_id', 'Withholding Tax Lines'
  • withholding_tax_no_generate_move Boolean
    help='During reconciliation, do not generate the move to be reconciled with the Withholding Tax.' string='Do not generate move for Withholding Tax'
Public methods (4)
  • action_post(self)
    Split amount withholding tax on account move lines
  • create_wt_statement(self)
    Create one statement for each withholding tax
  • get_wt_taxes_values(self)
  • write(self, vals)

New fields (5)
  • invoice_line_tax_wt_ids Many2many → withholding.tax
    column1='invoice_line_id' column2='withholding_tax_id' comodel_name='withholding.tax' default=_default_withholding_tax relation='account_invoice_line_tax_wt' string='W.T.'
  • withholding_tax_amount Float
    string='Withholding Tax Amount'
  • withholding_tax_base Float
    string='Withholding Tax Base'
  • withholding_tax_generated_by_move_id Many2one → account.move
    readonly=True string='Withholding Tax generated from' args: 'account.move'
  • withholding_tax_id Many2one → withholding.tax
    string='Withholding Tax' args: 'withholding.tax'
Public methods (1)
  • remove_move_reconcile(self)

New fields (0)

No new fields.

Public methods (4)
  • create(self, vals)
    @api.model
  • generate_wt_moves(self, is_wt_move, lines=None)
    @api.model
  • reconcile_exist_account_move(self, lines, rec_line_statement, amount_wt)
    @api.model
  • unlink(self)

New fields (0)

No new fields.

Public methods (1)
  • default_get(self, fields)
    @api.model
    Compute amount to pay proportionally to amount total - wt

New fields (0)

No new fields.

Public methods (0)

No public methods.

New fields (17)
  • account_payable_id Many2one → account.account
    required=True string='Account Payable' args: 'account.account'
  • account_receivable_id Many2one → account.account
    required=True string='Account Receivable' args: 'account.account'
  • active Boolean
    default=True args: 'Active'
  • base Float
    compute='_compute_get_rate' string='Base'
  • certification Boolean
    args: 'Certification'
  • code Char
    required=True size=256 args: 'Code'
  • comment Text
    args: 'Text'
  • company_id Many2one → res.company
    default=<expr> required=True string='Company' args: 'res.company'
  • daticassprev_tax_id Many2one → account.tax
    args: 'account.tax'
  • journal_id Many2one → account.journal
    default=<expr> help='Journal used at invoice payment to register withholding tax' required=True string='Withholding tax journal' args: 'account.journal'
  • name Char
    required=True size=256 args: 'Name'
  • payment_term Many2one → account.payment.term
    required=True args: 'account.payment.term', 'Payment Terms'
  • rate_ids One2many → withholding.tax.rate
    required=True args: 'withholding.tax.rate', 'withholding_tax_id', 'Rates'
  • sequence Integer
    args: 'Sequence'
  • tax Float
    compute='_compute_get_rate' string='Tax %'
  • use_daticassaprev Boolean
    help='Setting this, while exporting e-invoice XML, data will be also added to DatiCassaPrevidenziale' args: 'DatiCassa export'
  • wt_types Selection
    default='ritenuta' required=True args: [('enasarco', 'Enasarco tax'), ('ritenuta', 'Withholding tax'), ('inps', 'Inps Tax'), ('enpam', 'Enpam Tax'), ('other', 'Other Tax')], 'Withholding tax type'
Public methods (4)
  • compute_tax(self, amount)
  • copy(self, default=None)
  • get_base_from_tax(self, wt_amount)
    100 * wt_amount 1 --------------- * ------- % tax Coeff
  • get_grouping_key(self, invoice_tax_val)
    Returns a string that will be used to group account.invoice.withholding.tax sharing the same properties

New fields (16)
  • account_move_id Many2one → account.move
    ondelete='cascade' args: 'account.move', 'Payment Move'
  • amount Float
    args: 'Amount'
  • company_id Many2one → res.company
    related='withholding_tax_id.company_id' string='Company' args: 'res.company'
  • credit_debit_line_id Many2one → account.move.line
    ondelete='cascade' args: 'account.move.line', 'Credit/Debit Line'
  • date Date
    args: 'Date Competence'
  • date_maturity Date
    args: 'Date Maturity'
  • full_reconcile_id Many2one → account.full.reconcile
    compute='_compute_full_reconcile_id' string='WT reconciliation' args: 'account.full.reconcile'
  • move_line_id Many2one → account.move.line
    help='Used from trace WT from other parts' ondelete='cascade' args: 'account.move.line', 'Account Move line'
  • partner_id Many2one → res.partner
    args: 'res.partner', 'Partner'
  • payment_line_id Many2one → account.move.line
    ondelete='cascade' args: 'account.move.line', 'Payment Line'
  • reconcile_partial_id Many2one → account.partial.reconcile
    ondelete='cascade' args: 'account.partial.reconcile', 'Invoice reconciliation'
  • state Selection
    copy=False default='due' readonly=True args: [('due', 'Due'), ('paid', 'Paid')], 'Status'
  • statement_id Many2one → withholding.tax.statement
    args: 'withholding.tax.statement', 'Statement'
  • withholding_tax_id Many2one → withholding.tax
    args: 'withholding.tax', 'Withholding Tax'
  • wt_account_move_id Many2one → account.move
    ondelete='cascade' args: 'account.move', 'WT Move'
  • wt_type Selection
    related='statement_id.wt_type' store=True string='Type'
Public methods (6)
  • action_paid(self)
  • action_set_to_draft(self)
  • check_unlink(self)
  • generate_account_move(self)
    Creation of account move to increase credit/debit vs tax authority
  • name_get(self)
  • unlink(self)

New fields (6)
  • base Float
    default=1 string='Base Coeff.'
  • comment Text
    string='Text'
  • date_start Date
    string='Date Start'
  • date_stop Date
    string='Date Stop'
  • tax Float
    string='Tax %'
  • withholding_tax_id Many2one → withholding.tax
    ondelete='cascade' readonly=True string='Withholding Tax' args: 'withholding.tax'
Public methods (0)

No public methods.

New fields (11)
  • amount Float
    compute='_compute_total' readonly=True store=True string='WT amount applied'
  • amount_paid Float
    compute='_compute_total' readonly=True store=True string='WT amount paid'
  • base Float
    args: 'Base'
  • company_id Many2one → res.company
    related='withholding_tax_id.company_id' string='Company' args: 'res.company'
  • date Date
    args: 'Date'
  • invoice_id Many2one → account.move
    ondelete='cascade' args: 'account.move', 'Invoice'
  • move_ids One2many → withholding.tax.move
    args: 'withholding.tax.move', 'statement_id', 'Moves'
  • partner_id Many2one → res.partner
    args: 'res.partner', 'Partner'
  • tax Float
    args: 'Tax'
  • withholding_tax_id Many2one → withholding.tax
    string='Withholding Tax' args: 'withholding.tax'
  • wt_type Selection
    compute='_compute_type' store=True args: [('in', 'In'), ('out', 'Out')], 'Type'
Public methods (2)
  • get_wt_competence(self, amount_reconcile=None)
  • name_get(self)
REPOSITORY
REPOSITORYOCA/l10n-italy
GIT
GIThttps://github.com/OCA/l10n-italy.git
GIT FOLDER
GIT FOLDERhttps://github.com/OCA/l10n-italy/tree/12.0/l10n_it_withholding_tax
VERSION
VERSION 2.1.7
CATEGORY
CATEGORYAccount
LICENSE
LICENSEAGPL-3
APPLICATION
APPLICATIONNo
AUTO-INSTALLABLE
AUTO-INSTALLABLENo
AUTHORS
AUTHORSOdoo Community Association (OCA), Openforce, Odoo Italia Network
MAINTAINERS
MAINTAINERSOdoo Community Association (OCA), Openforce, Odoo Italia Network
COMMITTERS
COMMITTERSeLBati, tafaRU, OCA Transbot, oca-travis, Weblate, OCA-git-bot, Simone Rubino, Lara Baggio, oca-ci, gianmarco, Docker @ kuntrawant, Silvio Gregorini, Alessandro Uffreduzzi
WEBSITE
WEBSITEhttps://github.com/OCA/l10n-italy/tree/12.0/l10n_it_withholding_tax
LAST TRACKING UPDATE
LAST TRACKING UPDATE2026-07-06 00:29:17
ODOO DEPENDENCIES
ODOO DEPENDENCIES OCA/account-financial-reporting:
    - account_tax_balance
OCA/account-financial-tools:
    - account_fiscal_year
OCA/l10n-italy:
    - l10n_it_fatturapa
    - l10n_it_account
    - l10n_it_fiscalcode
    - l10n_it_ipa
    - l10n_it_rea
    - l10n_it_account_tax_kind
    - l10n_it_esigibilita_iva
    - l10n_it_fiscal_payment_term
    - l10n_it_split_payment
    - l10n_it_fiscal_document_type
OCA/partner-contact:
    - partner_firstname
OCA/server-ux:
    - date_range
odoo/odoo:
    - account
    - base_setup
    - base
    - web
    - product
    - decimal_precision
    - mail
    - bus
    - web_tour
    - uom
    - analytic
    - portal
    - http_routing
    - digest
    - base_vat
    - document
    - base_iban
    - test_mail
    - test_performance
    - mail_bot
PYTHON DEPENDENCIES
PYTHON DEPENDENCIES asn1crypto
pyxb
codicefiscale
SYSTEM DEPENDENCIES
SYSTEM DEPENDENCIES Not have
DESCRIPTION
DESCRIPTION

Code Analysis

Views touched (15)
XML IDNameModelTypeStatus
invoice_supplier_tree view.withholding.invoice.supplier.tree account.invoice field Inherits account.invoice_supplier_tree
print_withholding_tax print_withholding_tax xpath Inherits account.report_invoice_document
report_invoice_document_with_payments print_withholding_tax_with_payments xpath Inherits account.report_invoice_document_with_payments
view_withholding_invoice_form view.withholding.invoice.form account.invoice xpath Inherits account.invoice_form
view_withholding_invoice_supplier_form view.withholding.invoice.supplier.form account.invoice xpath Inherits account.invoice_supplier_form
view_withholding_move_form view.withholding.tax.move.form withholding.tax.move form New
view_withholding_move_search view.withholding.tax.move.search withholding.tax.move search New
view_withholding_move_tree view.withholding.tax.move.tree withholding.tax.move tree New
view_withholding_statement_form view.withholding.tax.statement.form withholding.tax.statement form New
view_withholding_statement_tree view.withholding.tax.statement.tree withholding.tax.statement tree New
view_withholding_tax_fiscal_position_form view.withholding.tax.fiscal.position.form account.fiscal.position xpath Inherits account.view_account_position_form
view_withholding_tax_form view.withholding.tax.form withholding.tax form New
view_withholding_tax_statement_search view.withholding.tax.statement.search withholding.tax.statement search New
view_withholding_tax_tree view.withholding.tax.tree withholding.tax tree New
view_wt_invoice_line_form view.withholding.invoice.supplier.form account.invoice.line xpath Inherits account.view_invoice_line_form
Models touched (14)

New fields (0)

No new fields.

Public methods (1)
  • default_get(self, fields)
    @api.model
    Compute amount to pay proportionally to amount total - wt

New fields (1)
  • withholding_tax_ids Many2many → withholding.tax
    string='Withholding Tax' args: 'withholding.tax', 'account_fiscal_position_withholding_tax_rel', 'fiscal_position_id', 'withholding_tax_id'
Public methods (0)

No public methods.

New fields (0)

No new fields.

Public methods (2)
  • create(self, vals)
    @api.model
  • unlink(self)
    @api.multi

New fields (6)
  • amount_net_pay Float
    compute='_amount_withholding_tax' digits=dp.get_precision('Account') readonly=True store=True string='Net To Pay'
  • amount_net_pay_residual Float
    compute='_amount_withholding_tax' digits=dp.get_precision('Account') readonly=True store=True string='Residual Net To Pay'
  • withholding_tax Boolean
    args: 'Withholding Tax'
  • withholding_tax_amount Float
    compute='_amount_withholding_tax' digits=dp.get_precision('Account') readonly=True store=True string='Withholding tax Amount'
  • withholding_tax_in_print Boolean
    default=True args: 'Show Withholding Tax In Print'
  • withholding_tax_line_ids One2many → account.invoice.withholding.tax
    copy=True readonly=True states={'draft': [('readonly', False)]} args: 'account.invoice.withholding.tax', 'invoice_id', 'Withholding Tax Lines'
Public methods (5)
  • action_move_create(self)
    @api.multi
    Split amount withholding tax on account move lines
  • create(self, vals)
    @api.model
  • create_wt_statement(self)
    @api.one
    Create one statement for each withholding tax
  • get_wt_taxes_values(self)
    @api.multi
  • refund(self, date_invoice=None, date=None, description=None, journal_id=None)

New fields (1)
  • invoice_line_tax_wt_ids Many2many → withholding.tax
    column1='invoice_line_id' column2='withholding_tax_id' comodel_name='withholding.tax' default=_default_withholding_tax relation='account_invoice_line_tax_wt' string='W.T.'
Public methods (0)

No public methods.

New fields (7)
  • base Float
    args: 'Base'
  • base_coeff Float
    compute='_compute_coeff' help='Coeff used to compute amount competence in the riconciliation' store=True args: 'Base Coeff'
  • invoice_id Many2one → account.invoice
    ondelete='cascade' string='Invoice' args: 'account.invoice'
  • sequence Integer
    args: 'Sequence'
  • tax Float
    args: 'Tax'
  • tax_coeff Float
    compute='_compute_coeff' help='Coeff used to compute amount competence in the riconciliation' store=True args: 'Tax Coeff'
  • withholding_tax_id Many2one → withholding.tax
    ondelete='restrict' string='Withholding tax' args: 'withholding.tax'
Public methods (0)

No public methods.

New fields (0)

No new fields.

Public methods (0)

No public methods.

New fields (4)
  • withholding_tax_amount Float
    string='Withholding Tax Amount'
  • withholding_tax_base Float
    string='Withholding Tax Base'
  • withholding_tax_generated_by_move_id Many2one → account.move
    readonly=True string='Withholding Tax generated from' args: 'account.move'
  • withholding_tax_id Many2one → withholding.tax
    string='Withholding Tax' args: 'withholding.tax'
Public methods (1)
  • remove_move_reconcile(self)
    @api.multi

New fields (0)

No new fields.

Public methods (3)
  • create(self, vals)
    @api.model
  • generate_wt_moves(self)
    @api.model
  • unlink(self)
    @api.multi

New fields (0)

No new fields.

Public methods (0)

No public methods.

New fields (17)
  • account_payable_id Many2one → account.account
    required=True string='Account Payable' args: 'account.account'
  • account_receivable_id Many2one → account.account
    required=True string='Account Receivable' args: 'account.account'
  • active Boolean
    default=True args: 'Active'
  • base Float
    compute='_get_rate' string='Base'
  • certification Boolean
    args: 'Certification'
  • code Char
    required=True size=256 args: 'Code'
  • comment Text
    args: 'Text'
  • company_id Many2one → res.company
    default=<expr> required=True string='Company' args: 'res.company'
  • daticassprev_tax_id Many2one → account.tax
    args: 'account.tax'
  • journal_id Many2one → account.journal
    default=<expr> help='Journal used at invoice payment to register withholding tax' required=True string='Withholding tax journal' args: 'account.journal'
  • name Char
    required=True size=256 args: 'Name'
  • payment_term Many2one → account.payment.term
    required=True args: 'account.payment.term', 'Payment Terms'
  • rate_ids One2many → withholding.tax.rate
    required=True args: 'withholding.tax.rate', 'withholding_tax_id', 'Rates'
  • sequence Integer
    args: 'Sequence'
  • tax Float
    compute='_get_rate' string='Tax %'
  • use_daticassaprev Boolean
    help='Setting this, while exporting e-invoice XML, data will be also added to DatiCassaPrevidenziale' oldname='use_daticassaprev_for_enasarco' args: 'DatiCassa export'
  • wt_types Selection
    default='ritenuta' required=True args: [('enasarco', 'Enasarco tax'), ('ritenuta', 'Withholding tax'), ('inps', 'Inps Tax'), ('enpam', 'Enpam Tax'), ('other', 'Other Tax')], 'Withholding tax type'
Public methods (4)
  • compute_tax(self, amount)
  • copy(self, default=None)
    @api.multi
  • get_base_from_tax(self, wt_amount)
    @api.one
    100 * wt_amount 1 --------------- * ------- % tax Coeff
  • get_grouping_key(self, invoice_tax_val)
    Returns a string that will be used to group account.invoice.withholding.tax sharing the same properties

New fields (16)
  • account_move_id Many2one → account.move
    ondelete='cascade' args: 'account.move', 'Payment Move'
  • amount Float
    args: 'Amount'
  • company_id Many2one → res.company
    related='withholding_tax_id.company_id' string='Company' args: 'res.company'
  • credit_debit_line_id Many2one → account.move.line
    ondelete='cascade' args: 'account.move.line', 'Credit/Debit Line'
  • date Date
    args: 'Date Competence'
  • date_maturity Date
    args: 'Date Maturity'
  • full_reconcile_id Many2one → account.full.reconcile
    compute='_compute_full_reconcile_id' string='WT reconciliation' args: 'account.full.reconcile'
  • move_line_id Many2one → account.move.line
    help='Used from trace WT from other parts' ondelete='cascade' args: 'account.move.line', 'Account Move line'
  • partner_id Many2one → res.partner
    args: 'res.partner', 'Partner'
  • payment_line_id Many2one → account.move.line
    ondelete='cascade' args: 'account.move.line', 'Payment Line'
  • reconcile_partial_id Many2one → account.partial.reconcile
    ondelete='cascade' args: 'account.partial.reconcile', 'Invoice reconciliation'
  • state Selection
    copy=False default='due' readonly=True args: [('due', 'Due'), ('paid', 'Paid')], 'Status'
  • statement_id Many2one → withholding.tax.statement
    args: 'withholding.tax.statement', 'Statement'
  • withholding_tax_id Many2one → withholding.tax
    args: 'withholding.tax', 'Withholding Tax'
  • wt_account_move_id Many2one → account.move
    ondelete='cascade' args: 'account.move', 'WT Move'
  • wt_type Selection
    related='statement_id.wt_type' store=True args: [('in', 'In'), ('out', 'Out')], 'Type'
Public methods (6)
  • action_paid(self)
    @api.multi
  • action_set_to_draft(self)
    @api.multi
  • check_unlink(self)
    @api.multi
  • generate_account_move(self)
    Creation of account move to increase credit/debit vs tax authority
  • name_get(self)
    @api.multi
  • unlink(self)
    @api.multi

New fields (6)
  • base Float
    default=1 string='Base Coeff.'
  • comment Text
    string='Text'
  • date_start Date
    string='Date Start'
  • date_stop Date
    string='Date Stop'
  • tax Float
    string='Tax %'
  • withholding_tax_id Many2one → withholding.tax
    ondelete='cascade' readonly=True string='Withholding Tax' args: 'withholding.tax'
Public methods (0)

No public methods.

New fields (12)
  • amount Float
    compute='_compute_total' readonly=True store=True string='WT amount applied'
  • amount_paid Float
    compute='_compute_total' readonly=True store=True string='WT amount paid'
  • base Float
    args: 'Base'
  • company_id Many2one → res.company
    related='withholding_tax_id.company_id' string='Company' args: 'res.company'
  • date Date
    args: 'Date'
  • invoice_id Many2one → account.invoice
    ondelete='cascade' args: 'account.invoice', 'Invoice'
  • move_id Many2one → account.move
    ondelete='cascade' args: 'account.move', 'Account move'
  • move_ids One2many → withholding.tax.move
    args: 'withholding.tax.move', 'statement_id', 'Moves'
  • partner_id Many2one → res.partner
    args: 'res.partner', 'Partner'
  • tax Float
    args: 'Tax'
  • withholding_tax_id Many2one → withholding.tax
    string='Withholding Tax' args: 'withholding.tax'
  • wt_type Selection
    compute='_compute_type' store=True args: [('in', 'In'), ('out', 'Out')], 'Type'
Public methods (2)
  • get_wt_competence(self, amount_reconcile)
  • name_get(self)
    @api.multi
REPOSITORY
REPOSITORYOCA/l10n-italy
GIT
GIThttps://github.com/OCA/l10n-italy.git
GIT FOLDER
GIT FOLDERhttps://github.com/OCA/l10n-italy/tree/11.0/l10n_it_withholding_tax
VERSION
VERSION 2.0.0
CATEGORY
CATEGORYAccount
LICENSE
LICENSEAGPL-3
APPLICATION
APPLICATIONNo
AUTO-INSTALLABLE
AUTO-INSTALLABLENo
AUTHORS
AUTHORSOdoo Community Association (OCA), Openforce, Odoo Italia Network
MAINTAINERS
MAINTAINERSOdoo Community Association (OCA), Openforce, Odoo Italia Network
COMMITTERS
COMMITTERSeLBati, Francesco Apruzzese, OCA Transbot, oca-travis, Weblate, OCA-git-bot
WEBSITE
WEBSITEhttps://github.com/OCA/l10n-italy
LAST TRACKING UPDATE
LAST TRACKING UPDATE2026-07-06 00:23:57
ODOO DEPENDENCIES
ODOO DEPENDENCIES OCA/account-financial-reporting:
    - account_tax_balance
OCA/account-financial-tools:
    - account_fiscal_year
OCA/l10n-italy:
    - l10n_it_fatturapa
    - l10n_it_account
    - l10n_it_fiscalcode
    - l10n_it_ipa
    - l10n_it_rea
    - l10n_it_account_tax_kind
    - l10n_it_esigibilita_iva
    - l10n_it_fiscal_payment_term
    - l10n_it_split_payment
    - l10n_it_fiscal_document_type
OCA/partner-contact:
    - partner_firstname
OCA/server-ux:
    - date_range
odoo/odoo:
    - account
    - base_setup
    - base
    - web
    - product
    - decimal_precision
    - mail
    - bus
    - web_tour
    - analytic
    - web_planner
    - portal
    - http_routing
    - base_vat
    - document
    - base_iban
    - account_invoicing
PYTHON DEPENDENCIES
PYTHON DEPENDENCIES asn1crypto
pyxb
codicefiscale
SYSTEM DEPENDENCIES
SYSTEM DEPENDENCIES Not have
DESCRIPTION
DESCRIPTION

Code Analysis

Views touched (13)
XML IDNameModelTypeStatus
invoice_supplier_tree view.withholding.invoice.supplier.tree account.invoice field Inherits account.invoice_supplier_tree
view_withholding_invoice_form view.withholding.invoice.form account.invoice xpath Inherits account.invoice_form
view_withholding_invoice_supplier_form view.withholding.invoice.supplier.form account.invoice xpath Inherits account.invoice_supplier_form
view_withholding_move_form view.withholding.tax.move.form withholding.tax.move form New
view_withholding_move_search view.withholding.tax.move.search withholding.tax.move search New
view_withholding_move_tree view.withholding.tax.move.tree withholding.tax.move tree New
view_withholding_statement_form view.withholding.tax.statement.form withholding.tax.statement form New
view_withholding_statement_tree view.withholding.tax.statement.tree withholding.tax.statement tree New
view_withholding_tax_fiscal_position_form view.withholding.tax.fiscal.position.form account.fiscal.position xpath Inherits account.view_account_position_form
view_withholding_tax_form view.withholding.tax.form withholding.tax form New
view_withholding_tax_statement_search view.withholding.tax.statement.search withholding.tax.statement search New
view_withholding_tax_tree view.withholding.tax.tree withholding.tax tree New
view_wt_invoice_line_form view.withholding.invoice.supplier.form account.invoice.line xpath Inherits account.view_invoice_line_form
Models touched (13)

New fields (0)

No new fields.

Public methods (1)
  • default_get(self, fields)
    @api.model
    Compute amount to pay proportionally to amount total - wt

New fields (1)
  • withholding_tax_ids Many2many → withholding.tax
    string='Withholding Tax' args: 'withholding.tax', 'account_fiscal_position_withholding_tax_rel', 'fiscal_position_id', 'withholding_tax_id'
Public methods (0)

No public methods.

New fields (0)

No new fields.

Public methods (2)
  • create(self, vals)
    @api.model
  • unlink(self)
    @api.multi

New fields (5)
  • amount_net_pay Float
    compute='_compute_amount_withholding_tax' digits=dp.get_precision('Account') readonly=True store=True string='Net To Pay'
  • amount_net_pay_residual Float
    compute='_compute_amount_withholding_tax' digits=dp.get_precision('Account') readonly=True store=True string='Residual Net To Pay'
  • withholding_tax Boolean
    args: 'Withholding Tax'
  • withholding_tax_amount Float
    compute='_compute_amount_withholding_tax' digits=dp.get_precision('Account') readonly=True store=True string='Withholding tax Amount'
  • withholding_tax_line_ids One2many → account.invoice.withholding.tax
    copy=True readonly=True states={'draft': [('readonly', False)]} args: 'account.invoice.withholding.tax', 'invoice_id', 'Withholding Tax Lines'
Public methods (4)
  • action_move_create(self)
    @api.multi
    Split amount withholding tax on account move lines
  • create(self, vals)
    @api.model
  • create_wt_statement(self)
    @api.multi
    Create one statement for each withholding tax
  • get_wt_taxes_values(self)
    @api.multi

New fields (1)
  • invoice_line_tax_wt_ids Many2many → withholding.tax
    column1='invoice_line_id' column2='withholding_tax_id' comodel_name='withholding.tax' default=_default_withholding_tax relation='account_invoice_line_tax_wt' string='W.T.'
Public methods (0)

No public methods.

New fields (7)
  • base Float
    args: 'Base'
  • base_coeff Float
    compute='_compute_coeff' help='Coeff used to compute amount competence in the riconciliation' store=True args: 'Base Coeff'
  • invoice_id Many2one → account.invoice
    ondelete='cascade' string='Invoice' args: 'account.invoice'
  • sequence Integer
    args: 'Sequence'
  • tax Float
    args: 'Tax'
  • tax_coeff Float
    compute='_compute_coeff' help='Coeff used to compute amount competence in the riconciliation' store=True args: 'Tax Coeff'
  • withholding_tax_id Many2one → withholding.tax
    ondelete='restrict' string='Withholding tax' args: 'withholding.tax'
Public methods (0)

No public methods.

New fields (0)

No new fields.

Public methods (0)

No public methods.

New fields (4)
  • withholding_tax_amount Float
    string='Withholding Tax Amount'
  • withholding_tax_base Float
    string='Withholding Tax Base'
  • withholding_tax_generated_by_move_id Many2one → account.move
    readonly=True string='Withholding Tax generated from' args: 'account.move'
  • withholding_tax_id Many2one → withholding.tax
    string='Withholding Tax' args: 'withholding.tax'
Public methods (1)
  • remove_move_reconcile(self)
    @api.multi

New fields (0)

No new fields.

Public methods (3)
  • create(self, vals)
    @api.model
  • generate_wt_moves(self)
    @api.model
  • unlink(self)
    @api.multi

New fields (17)
  • account_payable_id Many2one → account.account
    required=True string='Account Payable' args: 'account.account'
  • account_receivable_id Many2one → account.account
    required=True string='Account Receivable' args: 'account.account'
  • active Boolean
    default=True args: 'Active'
  • base Float
    compute='_compute_rate' string='Base'
  • certification Boolean
    args: 'Certification'
  • code Char
    required=True size=256 args: 'Code'
  • comment Text
    args: 'Text'
  • company_id Many2one → res.company
    default=<expr> required=True string='Company' args: 'res.company'
  • daticassprev_tax_id Many2one → account.tax
    args: 'account.tax'
  • journal_id Many2one → account.journal
    default=<expr> help='Journal used at invoice payment to register withholding tax' required=True string='Withholding tax journal' args: 'account.journal'
  • name Char
    required=True size=256 args: 'Name'
  • payment_term Many2one → account.payment.term
    required=True args: 'account.payment.term', 'Payment Terms'
  • rate_ids One2many → withholding.tax.rate
    required=True args: 'withholding.tax.rate', 'withholding_tax_id', 'Rates'
  • sequence Integer
    args: 'Sequence'
  • tax Float
    compute='_compute_rate' string='Tax %'
  • use_daticassaprev Boolean
    help='Setting this, while exporting e-invoice XML, data will be also added to DatiCassaPrevidenziale' oldname='use_daticassaprev_for_enasarco' args: 'DatiCassa export'
  • wt_types Selection
    default='ritenuta' required=True args: [('enasarco', 'Enasarco tax'), ('ritenuta', 'Withholding tax'), ('inps', 'Inps Tax'), ('enpam', 'Enpam Tax'), ('other', 'Other Tax')], 'Withholding tax type'
Public methods (3)
  • compute_tax(self, amount)
  • get_base_from_tax(self, wt_amount)
    @api.multi
    100 * wt_amount 1 --------------- * ------- % tax Coeff
  • get_grouping_key(self, invoice_tax_val)
    Returns a string that will be used to group account.invoice.withholding.tax sharing the same properties

New fields (17)
  • account_move_id Many2one → account.move
    ondelete='cascade' args: 'account.move', 'Payment Move'
  • amount Float
    args: 'Amount'
  • company_id Many2one → res.company
    related='withholding_tax_id.company_id' string='Company' args: 'res.company'
  • credit_debit_line_id Many2one → account.move.line
    ondelete='cascade' args: 'account.move.line', 'Credit/Debit Line'
  • date Date
    args: 'Date Competence'
  • date_maturity Date
    args: 'Date Maturity'
  • display_name Char
    compute='_compute_display_name'
  • full_reconcile_id Many2one → account.full.reconcile
    compute='_compute_full_reconcile_id' string='WT reconciliation' args: 'account.full.reconcile'
  • move_line_id Many2one → account.move.line
    help='Used from trace WT from other parts' ondelete='cascade' args: 'account.move.line', 'Account Move line'
  • partner_id Many2one → res.partner
    args: 'res.partner', 'Partner'
  • payment_line_id Many2one → account.move.line
    ondelete='cascade' args: 'account.move.line', 'Payment Line'
  • reconcile_partial_id Many2one → account.partial.reconcile
    ondelete='cascade' args: 'account.partial.reconcile', 'Invoice reconciliation'
  • state Selection
    copy=False default='due' readonly=True args: [('due', 'Due'), ('paid', 'Paid')], 'Status'
  • statement_id Many2one → withholding.tax.statement
    args: 'withholding.tax.statement', 'Statement'
  • withholding_tax_id Many2one → withholding.tax
    args: 'withholding.tax', 'Withholding Tax'
  • wt_account_move_id Many2one → account.move
    ondelete='cascade' args: 'account.move', 'WT Move'
  • wt_type Selection
    related='statement_id.wt_type' store=True args: [('in', 'In'), ('out', 'Out')], 'Type'
Public methods (5)
  • action_paid(self)
    @api.multi
  • action_set_to_draft(self)
    @api.multi
  • check_unlink(self)
    @api.multi
  • generate_account_move(self)
    Creation of account move to increase credit/debit vs tax authority
  • unlink(self)
    @api.multi

New fields (6)
  • base Float
    default=1 string='Base Coeff.'
  • comment Text
    string='Text'
  • date_start Date
    string='Date Start'
  • date_stop Date
    string='Date Stop'
  • tax Float
    string='Tax %'
  • withholding_tax_id Many2one → withholding.tax
    ondelete='cascade' readonly=True string='Withholding Tax' args: 'withholding.tax'
Public methods (0)

No public methods.

New fields (13)
  • amount Float
    compute='_compute_total' readonly=True store=True string='WT amount applied'
  • amount_paid Float
    compute='_compute_total' readonly=True store=True string='WT amount paid'
  • base Float
    args: 'Base'
  • company_id Many2one → res.company
    related='withholding_tax_id.company_id' string='Company' args: 'res.company'
  • date Date
    args: 'Date'
  • display_name Char
    compute='_compute_display_name'
  • invoice_id Many2one → account.invoice
    ondelete='cascade' args: 'account.invoice', 'Invoice'
  • move_id Many2one → account.move
    ondelete='cascade' args: 'account.move', 'Account move'
  • move_ids One2many → withholding.tax.move
    args: 'withholding.tax.move', 'statement_id', 'Moves'
  • partner_id Many2one → res.partner
    args: 'res.partner', 'Partner'
  • tax Float
    args: 'Tax'
  • withholding_tax_id Many2one → withholding.tax
    string='Withholding Tax' args: 'withholding.tax'
  • wt_type Selection
    compute='_compute_type' store=True args: [('in', 'In'), ('out', 'Out')], 'Type'
Public methods (1)
  • get_wt_competence(self, amount_reconcile)
REPOSITORY
REPOSITORYOCA/l10n-italy
GIT
GIThttps://github.com/OCA/l10n-italy.git
GIT FOLDER
GIT FOLDERhttps://github.com/OCA/l10n-italy/tree/10.0/l10n_it_withholding_tax
VERSION
VERSION 2.0.1
CATEGORY
CATEGORYAccount
LICENSE
LICENSEAGPL-3
APPLICATION
APPLICATIONNo
AUTO-INSTALLABLE
AUTO-INSTALLABLENo
AUTHORS
AUTHORSOdoo Community Association (OCA), Openforce, Odoo Italia Network
MAINTAINERS
MAINTAINERSOdoo Community Association (OCA), Openforce, Odoo Italia Network
COMMITTERS
COMMITTERSLorenzo Battistini, eLBati, Pedro M. Baeza, GitHub, tafaRU, Alex Comba, OCA Transbot, oca-travis, Weblate, OCA-git-bot, SimoRubi, Roberto Fichera, Crisa221, alex_cam
WEBSITE
WEBSITEhttps://www.odoo-italia.net/
LAST TRACKING UPDATE
LAST TRACKING UPDATE2026-07-06 00:19:56
ODOO DEPENDENCIES
ODOO DEPENDENCIES odoo/odoo:
    - account
    - base_setup
    - base
    - web_kanban
    - web
    - product
    - decimal_precision
    - mail
    - bus
    - web_tour
    - report
    - analytic
    - web_planner
PYTHON DEPENDENCIES
PYTHON DEPENDENCIES Not have
SYSTEM DEPENDENCIES
SYSTEM DEPENDENCIES Not have
DESCRIPTION
DESCRIPTION

Code Analysis

Views touched (13)
XML IDNameModelTypeStatus
invoice_supplier_tree view.withholding.invoice.supplier.tree account.invoice field Inherits account.invoice_supplier_tree
view_withholding_invoice_form view.withholding.invoice.form account.invoice xpath Inherits account.invoice_form
view_withholding_invoice_supplier_form view.withholding.invoice.supplier.form account.invoice xpath Inherits account.invoice_supplier_form
view_withholding_move_form view.withholding.tax.move.form withholding.tax.move form New
view_withholding_move_search view.withholding.tax.move.search withholding.tax.move search New
view_withholding_move_tree view.withholding.tax.move.tree withholding.tax.move tree New
view_withholding_statement_form view.withholding.tax.statement.form withholding.tax.statement form New
view_withholding_statement_tree view.withholding.tax.statement.tree withholding.tax.statement tree New
view_withholding_tax_fiscal_position_form view.withholding.tax.fiscal.position.form account.fiscal.position xpath Inherits account.view_account_position_form
view_withholding_tax_form view.withholding.tax.form withholding.tax form New
view_withholding_tax_statement_search view.withholding.tax.statement.search withholding.tax.statement search New
view_withholding_tax_tree view.withholding.tax.tree withholding.tax tree New
view_wt_invoice_line_form view.withholding.invoice.supplier.form account.invoice.line xpath Inherits account.view_invoice_line_form
Models touched (13)

New fields (1)
  • withholding_tax_ids Many2many → withholding.tax
    string='Withholding Tax' args: 'withholding.tax', 'account_fiscal_position_withholding_tax_rel', 'fiscal_position_id', 'withholding_tax_id'
Public methods (0)

No public methods.

New fields (4)
  • amount_net_pay Float
    compute='_amount_withholding_tax' digits=dp.get_precision('Account') readonly=True store=True string='Net To Pay'
  • withholding_tax Boolean
    args: 'Withholding Tax'
  • withholding_tax_amount Float
    compute='_amount_withholding_tax' digits=dp.get_precision('Account') readonly=True store=True string='Withholding tax'
  • withholding_tax_line_ids One2many → account.invoice.withholding.tax
    readonly=True states={'draft': [('readonly', False)]} args: 'account.invoice.withholding.tax', 'invoice_id', 'Withholding Tax'
Public methods (4)
  • action_move_create(self)
    @api.multi
    Split amount withholding tax on account move lines
  • create(self, vals)
    @api.model
  • create_wt_statement(self)
    @api.one
    Create one statement for each withholding tax
  • get_wt_taxes_values(self)
    @api.multi

New fields (1)
  • invoice_line_tax_wt_ids Many2many → withholding.tax
    column1='invoice_line_id' column2='withholding_tax_id' comodel_name='withholding.tax' default=_default_withholding_tax relation='account_invoice_line_tax_wt' string='W.T.'
Public methods (0)

No public methods.

New fields (7)
  • base Float
    args: 'Base'
  • base_coeff Float
    compute='_compute_coeff' help='Coeff used to compute amount competence in the riconciliation' store=True args: 'Base Coeff'
  • invoice_id Many2one → account.invoice
    ondelete='cascade' string='Invoice' args: 'account.invoice'
  • sequence Integer
    args: 'Sequence'
  • tax Float
    args: 'Tax'
  • tax_coeff Float
    compute='_compute_coeff' help='Coeff used to compute amount competence in the riconciliation' store=True args: 'Tax Coeff'
  • withholding_tax_id Many2one → withholding.tax
    ondelete='restrict' string='Withholding tax' args: 'withholding.tax'
Public methods (0)

No public methods.

New fields (0)

No new fields.

Public methods (0)

No public methods.

New fields (4)
  • withholding_tax_amount Float
    string='Withholding Tax Amount'
  • withholding_tax_base Float
    string='Withholding Tax Base'
  • withholding_tax_generated_by_move_id Many2one → account.move
    readonly=True string='Withholding Tax generated from' args: 'account.move'
  • withholding_tax_id Many2one → withholding.tax
    string='Withholding Tax' args: 'withholding.tax'
Public methods (2)
  • prepare_move_lines_for_reconciliation_widget(self, target_currency=False, target_date=False)
    @api.multi
    Net amount for invoices with withholding tax
  • remove_move_reconcile(self)
    @api.multi

New fields (0)

No new fields.

Public methods (3)
  • create(self, vals)
    @api.model
  • generate_wt_moves(self)
    @api.model
  • unlink(self)
    @api.multi

New fields (0)

No new fields.

Public methods (1)
  • default_get(self, fields)
    @api.model
    Redifine amount to pay proportionally to amount total less wt

New fields (0)

No new fields.

Public methods (2)
  • default_get(self, fields)
    @api.model
  • get_amount_residual(self, invoice)
    @api.model

New fields (17)
  • account_payable_id Many2one → account.account
    required=True string='Account Payable' args: 'account.account'
  • account_receivable_id Many2one → account.account
    required=True string='Account Receivable' args: 'account.account'
  • active Boolean
    default=True args: 'Active'
  • base Float
    compute='_get_rate' string='Base'
  • certification Boolean
    args: 'Certification'
  • code Char
    required=True size=256 args: 'Code'
  • comment Text
    args: 'Text'
  • company_id Many2one → res.company
    default=<expr> required=True string='Company' args: 'res.company'
  • daticassprev_tax_id Many2one → account.tax
    args: 'account.tax'
  • journal_id Many2one → account.journal
    default=<expr> help='Journal used at invoice payment to register withholding tax' required=True string='Withholding tax journal' args: 'account.journal'
  • name Char
    required=True size=256 args: 'Name'
  • payment_term Many2one → account.payment.term
    required=True args: 'account.payment.term', 'Payment Terms'
  • rate_ids One2many → withholding.tax.rate
    required=True args: 'withholding.tax.rate', 'withholding_tax_id', 'Rates'
  • sequence Integer
    args: 'Sequence'
  • tax Float
    compute='_get_rate' string='Tax %'
  • use_daticassaprev Boolean
    help='Setting this, while exporting e-invoice XML, data will be also added to DatiCassaPrevidenziale' oldname='use_daticassaprev_for_enasarco' args: 'DatiCassa export'
  • wt_types Selection
    default='ritenuta' required=True args: [('enasarco', 'Enasarco tax'), ('ritenuta', 'Withholding tax'), ('inps', 'Inps Tax'), ('enpam', 'Enpam Tax'), ('other', 'Other Tax')], 'Withholding tax type'
Public methods (3)
  • compute_tax(self, amount)
  • get_base_from_tax(self, wt_amount)
    @api.one
    100 * wt_amount 1 --------------- * ------- % tax Coeff
  • get_grouping_key(self, invoice_tax_val)
    Returns a string that will be used to group account.invoice.withholding.tax sharing the same properties

New fields (17)
  • account_move_id Many2one → account.move
    ondelete='cascade' args: 'account.move', 'Payment Move'
  • amount Float
    args: 'Amount'
  • company_id Many2one → res.company
    related='withholding_tax_id.company_id' string='Company' args: 'res.company'
  • credit_debit_line_id Many2one → account.move.line
    ondelete='cascade' args: 'account.move.line', 'Credit/Debit Line'
  • date Date
    args: 'Date Competence'
  • date_maturity Date
    args: 'Date Maturity'
  • display_name Char
    compute='_compute_display_name'
  • full_reconcile_id Many2one → account.full.reconcile
    compute='_compute_full_reconcile_id' string='WT reconciliation' args: 'account.full.reconcile'
  • move_line_id Many2one → account.move.line
    help='Used from trace WT from other parts' ondelete='cascade' args: 'account.move.line', 'Account Move line'
  • partner_id Many2one → res.partner
    args: 'res.partner', 'Partner'
  • payment_line_id Many2one → account.move.line
    ondelete='cascade' args: 'account.move.line', 'Payment Line'
  • reconcile_partial_id Many2one → account.partial.reconcile
    ondelete='cascade' args: 'account.partial.reconcile', 'Reconcile Partial'
  • state Selection
    copy=False default='due' readonly=True args: [('due', 'Due'), ('paid', 'Paid')], 'Status'
  • statement_id Many2one → withholding.tax.statement
    args: 'withholding.tax.statement', 'Statement'
  • withholding_tax_id Many2one → withholding.tax
    args: 'withholding.tax', 'Withholding Tax'
  • wt_account_move_id Many2one → account.move
    ondelete='cascade' args: 'account.move', 'WT Move'
  • wt_type Selection
    related='statement_id.wt_type' store=True args: [('in', 'In'), ('out', 'Out')], 'Type'
Public methods (7)
  • action_paid(self)
    @api.multi
  • action_set_to_draft(self)
    @api.multi
  • check_unlink(self)
    @api.multi
  • generate_account_move(self)
    Creation of account move to increase credit/debit vs tax authority
  • move_paid(self)
    @api.multi
  • move_set_due(self)
    @api.multi
  • unlink(self)

New fields (6)
  • base Float
    default=1 string='Base Coeff.'
  • comment Text
    string='Text'
  • date_start Date
    string='Date Start'
  • date_stop Date
    string='Date Stop'
  • tax Float
    string='Tax %'
  • withholding_tax_id Many2one → withholding.tax
    ondelete='cascade' readonly=True string='Withholding Tax' args: 'withholding.tax'
Public methods (0)

No public methods.

New fields (13)
  • amount Float
    compute='_compute_total' readonly=True store=True string='WT amount applied'
  • amount_paid Float
    compute='_compute_total' readonly=True store=True string='WT amount paid'
  • base Float
    args: 'Base'
  • company_id Many2one → res.company
    related='withholding_tax_id.company_id' string='Company' args: 'res.company'
  • date Date
    args: 'Date'
  • display_name Char
    compute='_compute_display_name'
  • invoice_id Many2one → account.invoice
    ondelete='cascade' args: 'account.invoice', 'Invoice'
  • move_id Many2one → account.move
    ondelete='cascade' args: 'account.move', 'Account move'
  • move_ids One2many → withholding.tax.move
    args: 'withholding.tax.move', 'statement_id', 'Moves'
  • partner_id Many2one → res.partner
    args: 'res.partner', 'Partner'
  • tax Float
    args: 'Tax'
  • withholding_tax_id Many2one → withholding.tax
    string='Withholding Tax' args: 'withholding.tax'
  • wt_type Selection
    compute='_compute_type' store=True args: [('in', 'In'), ('out', 'Out')], 'Type'
Public methods (1)
  • get_wt_competence(self, amount_reconcile)
REPOSITORY
REPOSITORYOCA/l10n-italy
GIT
GIThttps://github.com/OCA/l10n-italy.git
GIT FOLDER
GIT FOLDERhttps://github.com/OCA/l10n-italy/tree/9.0/l10n_it_withholding_tax
VERSION
VERSION 0.2
CATEGORY
CATEGORYLocalisation/Italy
LICENSE
LICENSEAGPL-3
APPLICATION
APPLICATIONNo
AUTO-INSTALLABLE
AUTO-INSTALLABLENo
AUTHORS
AUTHORSOdoo Community Association (OCA), OpenERP Italian Community
MAINTAINERS
MAINTAINERSOdoo Community Association (OCA), OpenERP Italian Community
COMMITTERS
COMMITTERS
WEBSITE
WEBSITEhttp://www.openerp-italia.org
LAST TRACKING UPDATE
LAST TRACKING UPDATE2026-07-06 00:15:20
ODOO DEPENDENCIES
ODOO DEPENDENCIES
PYTHON DEPENDENCIES
PYTHON DEPENDENCIES Not have
SYSTEM DEPENDENCIES
SYSTEM DEPENDENCIES Not have
DESCRIPTION
DESCRIPTION
Ritenute d'acconto sulle fatture fornitore
==========================================

Per utilizzare il modulo bisogna configurare i campi associati alla company:
 - Termine di pagamento della ritenuta
 - Conto di debito per le ritenute da versare
 - Sezionale che conterrà le registrazioni legate alla ritenuta

Durante la compilazione di una fattura fornitore con ritenuta d'acconto, l'utente dovrà specificare l'importo della ritenuta.

Requisiti
---------
http://wiki.openerp-italia.org/doku.php/area_utente/requisiti/ritenuta_d_acconto

Howto
-----
http://planet.domsense.com/2012/06/come-registrare-in-openerp-le-fatture-fornitore-con-ritenuta-dacconto/

Code Analysis

Views touched (3)
XML IDNameModelTypeStatus
invoice_supplier_form account.invoice.supplier.form account.invoice field Inherits account.invoice_supplier_form
view_account_config_settings view_account_config_settings account.config.settings xpath Inherits account.view_account_config_settings
view_vendor_payment_form_wh_move account.voucher.payment.form.wh.move account.voucher field Inherits account_voucher.view_vendor_payment_form
Models touched (4)

New fields (0)

No new fields.

Public methods (1)
  • onchange_company_id(self, cr, uid, ids, company_id, context=None)

New fields (0)

No new fields.

Public methods (0)

No public methods.

New fields (0)

No new fields.

Public methods (3)
  • action_move_line_create(self, cr, uid, ids, context=None)
  • cancel_voucher(self, cr, uid, ids, context=None)
  • reconcile_withholding_move(self, cr, uid, invoice, wh_move, context=None)

New fields (0)

No new fields.

Public methods (0)

No public methods.

REPOSITORY
REPOSITORYOCA/l10n-italy
GIT
GIThttps://github.com/OCA/l10n-italy.git
GIT FOLDER
GIT FOLDERhttps://github.com/OCA/l10n-italy/tree/8.0/l10n_it_withholding_tax
VERSION
VERSION 4.0.1
CATEGORY
CATEGORYAccount
LICENSE
LICENSEAGPL-3
APPLICATION
APPLICATIONNo
AUTO-INSTALLABLE
AUTO-INSTALLABLENo
AUTHORS
AUTHORSOdoo Community Association (OCA), Openforce di Alessandro Camilli
MAINTAINERS
MAINTAINERSOdoo Community Association (OCA), Openforce di Alessandro Camilli
COMMITTERS
COMMITTERSStéphane Bidoul, Lorenzo Battistini, eLBati, GitHub, Stéphane Bidoul (ACSONE), Alex Comba, OCA Transbot, oca-travis, Weblate, OCA-git-bot, v.terzulli, sergiocorato
WEBSITE
WEBSITEhttp://www.openforce.it
LAST TRACKING UPDATE
LAST TRACKING UPDATE2026-07-06 00:11:22
ODOO DEPENDENCIES
ODOO DEPENDENCIES odoo/odoo:
    - account
    - base_setup
    - base
    - web_kanban
    - web
    - product
    - decimal_precision
    - mail
    - report
    - analytic
    - board
    - edi
    - email_template
    - account_voucher
PYTHON DEPENDENCIES
PYTHON DEPENDENCIES Not have
SYSTEM DEPENDENCIES
SYSTEM DEPENDENCIES Not have
DESCRIPTION
DESCRIPTION

Code Analysis

Views touched (19)
XML IDNameModelTypeStatus
view_product_template_withholding_exclude_form view.product.template.withholding.exclude.form product.template xpath Inherits account.product_template_form_view
view_withholding_invoice_form view.withholding.invoice.form account.invoice xpath Inherits account.invoice_form
view_withholding_invoice_supplier_form view.withholding.invoice.supplier.form account.invoice xpath Inherits account.invoice_supplier_form
view_withholding_move_form view.withholding.tax.move.form withholding.tax.move form New
view_withholding_move_search view.withholding.tax.move.search withholding.tax.move search New
view_withholding_move_tree view.withholding.tax.move.tree withholding.tax.move tree New
view_withholding_statement_form view.withholding.tax.statement.form withholding.tax.statement form New
view_withholding_statement_tree view.withholding.tax.statement.tree withholding.tax.statement tree New
view_withholding_tax_exclude_supplier_tree view.withholding.tax.exclude.supplier.tree account.invoice xpath Inherits account.invoice_supplier_form
view_withholding_tax_exclude_tree view.withholding.tax.exclude.tree account.invoice xpath Inherits account.invoice_form
view_withholding_tax_fiscal_position_form view.withholding.tax.fiscal.position.form account.fiscal.position xpath Inherits account.view_account_position_form
view_withholding_tax_form view.withholding.tax.form withholding.tax form New
view_withholding_tax_statement_search view.withholding.tax.statement.search withholding.tax.statement search New
view_withholding_tax_tree view.withholding.tax.tree withholding.tax tree New
view_withholding_voucher_payment_receipt_form view.withholding.voucher.payment.receipt.form account.voucher xpath Inherits account_voucher.view_vendor_receipt_dialog_form
view_withholding_voucher_payment_supplier_form view.withholding.voucher.payment.supplier.form account.voucher xpath Inherits account_voucher.view_vendor_payment_form
view_withholding_voucher_vendor_receipt_form view.withholding.voucher.vendor.receipt.form account.voucher xpath Inherits account_voucher.view_vendor_receipt_form
withholding_tax_search_view withholding.tax.search.view withholding.tax search New
wt_wizard_create_statement Create Withholding Tax Statement withholding.tax.wizard.create.statement form New
Models touched (15)

New fields (1)
  • withholding_tax_ids Many2many → withholding.tax
    string='Withholding Tax' args: 'withholding.tax', 'account_fiscal_position_withholding_tax_rel', 'fiscal_position_id', 'withholding_tax_id'
Public methods (0)

No public methods.

New fields (5)
  • amount_net_pay Float
    compute='_amount_withholding_tax' digits_compute=dp.get_precision('Account') readonly=True store=True string='Net To Pay'
  • amount_net_pay_residual Float
    compute='_amount_withholding_tax' digits=dp.get_precision('Account') readonly=True store=True string='Residual Net To Pay'
  • withholding_tax Boolean
    args: 'Withholding Tax'
  • withholding_tax_amount Float
    compute='_amount_withholding_tax' digits=dp.get_precision('Account') readonly=True store=True string='Withholding tax Amount'
  • withholding_tax_line One2many → account.invoice.withholding.tax
    copy=True readonly=True states={'draft': [('readonly', False)]} args: 'account.invoice.withholding.tax', 'invoice_id', 'Withholding Tax Lines'
Public methods (9)
  • action_move_create(self)
    @api.multi
    Split amount withholding tax on account move lines
  • button_reset_taxes(self)
    @api.one
  • compute_amount_withholding_excluded(self)
    @api.multi
  • create(self, vals)
    @api.model
  • create_wt_statement(self)
    @api.one
    Create one statement for each withholding tax
  • get_wt_taxes_values(self)
    @api.multi
  • invoice_pay_customer(self, cr, uid, ids, context=None)
    @api.v7
  • invoice_pay_customer(self)
    @api.multi
  • onchange_fiscal_position(self)
    @api.onchange('fiscal_position')

New fields (2)
  • invoice_line_tax_wt_ids Many2many → withholding.tax
    column1='invoice_line_id' column2='withholding_tax_id' comodel_name='withholding.tax' default=_default_withholding_tax relation='account_invoice_line_tax_wt' string='W.T.'
  • withholding_tax_exclude Boolean
Public methods (1)
  • product_id_change(self, product, uom_id, qty=0, name='', type='out_invoice', partner_id=False, fposition_id=False, price_unit=False, currency_id=False, company_id=None)
    @api.multi

New fields (7)
  • base Float
    args: 'Base'
  • base_coeff Float
    compute='_compute_coeff' help='Coeff used to compute amount competence in the riconciliation' store=True args: 'Base Coeff'
  • invoice_id Many2one → account.invoice
    ondelete='cascade' string='Invoice' args: 'account.invoice'
  • sequence Integer
    args: 'Sequence'
  • tax Float
    args: 'Tax'
  • tax_coeff Float
    compute='_compute_coeff' help='Coeff used to compute amount competence in the riconciliation' store=True args: 'Tax Coeff'
  • withholding_tax_id Many2one → withholding.tax
    ondelete='restrict' string='Withholding tax' args: 'withholding.tax'
Public methods (1)
  • onchange_withholding_tax_id(self)
    @api.onchange('withholding_tax_id')

New fields (0)

No new fields.

Public methods (0)

No public methods.

New fields (4)
  • withholding_tax_amount Float
    string='Withholding Tax Amount'
  • withholding_tax_base Float
    string='Withholding Tax Base'
  • withholding_tax_generated_by_move_id Many2one → account.move
    readonly=True string='Withholding Tax generated from' args: 'account.move'
  • withholding_tax_id Many2one → withholding.tax
    string='Withholding Tax' args: 'withholding.tax'
Public methods (0)

No public methods.

New fields (0)

No new fields.

Public methods (3)
  • action_move_line_create(self, cr, uid, ids, context=None)
    Assign payment move to wt lines
  • recompute_voucher_lines(self, cr, uid, ids, partner_id, journal_id, price, currency_id, ttype, date, context=None)
    Compute original amount of WT of rate
  • voucher_move_line_create(self, cr, uid, voucher_id, line_total, move_id, company_currency, current_currency, context=None)
    Add WT line to registration and change amount on debit/credit line of the invoice

New fields (0)

No new fields.

Public methods (7)
  • compute_amount_residual_withholdin_tax(self, cr, uid, line, context=None)
    WT residual = WT amount original - (All WT amounts in voucher posted)
  • compute_amount_withholdin_tax(self, cr, uid, amount, amount_unreconciled, wt_amount_residual, context=None)
  • create(self, cr, uid, vals, *args, **kwargs)
  • onchange_amount(self, cr, uid, ids, amount, amount_unreconciled, amount_residual_withholding_tax, context=None)
  • onchange_reconcile(self, cr, uid, ids, reconcile, amount, amount_unreconciled, amount_residual_withholding_tax, context=None)
    TO CONSIDER: Amount tot = amount net + amount WT
  • recompute_withholding_tax_voucher_line(self, cr, uid, voucher_line_id, context=None)
    Split amount voucher line second WT lines invoice
  • write(self, cr, uid, ids, vals, context=None)

New fields (1)
  • withholding_tax_exclude Boolean
Public methods (0)

No public methods.

New fields (17)
  • account_payable_id Many2one → account.account
    required=True string='Account Payable' args: 'account.account'
  • account_receivable_id Many2one → account.account
    required=True string='Account Receivable' args: 'account.account'
  • active Boolean
    default=True args: 'Active'
  • base Float
    compute='_get_rate' string='Base'
  • certification Boolean
    args: 'Certification'
  • code Char
    required=True size=256 args: 'Code'
  • comment Text
    args: 'Text'
  • company_id Many2one → res.company
    comodel_name='res.company' default=<expr> required=True string='Company'
  • daticassprev_tax_id Many2one → account.tax
    args: 'account.tax'
  • journal_id Many2one → account.journal
    default=<expr> help='Journal used at invoice payment to register withholding tax' required=True string='Withholding tax journal' args: 'account.journal'
  • name Char
    required=True size=256 args: 'Name'
  • payment_term Many2one → account.payment.term
    required=True args: 'account.payment.term', 'Payment Terms'
  • rate_ids One2many → withholding.tax.rate
    required=True args: 'withholding.tax.rate', 'withholding_tax_id', 'Rates'
  • sequence Integer
    args: 'Sequence'
  • tax Float
    compute='_get_rate' string='Tax %'
  • use_daticassaprev Boolean
    help='Setting this, while exporting e-invoice XML, data will be also added to DatiCassaPrevidenziale' args: 'DatiCassa export'
  • wt_types Selection
    default='ritenuta' required=True args: [('enasarco', 'Enasarco tax'), ('ritenuta', 'Withholding tax'), ('inps', 'Inps Tax'), ('enpam', 'Enpam Tax'), ('other', 'Other Tax')], 'Withholding tax type'
Public methods (5)
  • compute_tax(self, amount)
  • get_base_from_tax(self, wt_amount)
    @api.one
    100 * wt_amount 1 --------------- * ------- % tax Coeff
  • get_grouping_key(self, invoice_tax_val)
    Returns a string that will be used to group account.invoice.withholding.tax sharing the same properties
  • name_get(self)
    @api.multi
  • name_search(self, name, args=None, operator='ilike', limit=100)
    @api.model

New fields (13)
  • account_move_id Many2one → account.move
    ondelete='cascade' args: 'account.move', 'Payment Move'
  • amount Float
    args: 'Amount'
  • company_id Many2one → res.company
    related='withholding_tax_id.company_id' string='Company' args: 'res.company'
  • date Date
    args: 'Date Competence'
  • date_maturity Date
    args: 'Date Maturity'
  • display_name Char
    compute='_compute_display_name'
  • move_line_id Many2one → account.move.line
    help='Used from trace WT from other parts' ondelete='cascade' args: 'account.move.line', 'Account Move line'
  • partner_id Many2one → res.partner
    args: 'res.partner', 'Partner'
  • state Selection
    copy=False default='due' readonly=True args: [('due', 'Due'), ('paid', 'Paid')], 'Status'
  • statement_id Many2one → withholding.tax.statement
    args: 'withholding.tax.statement', 'Statement'
  • withholding_tax_id Many2one → withholding.tax
    args: 'withholding.tax', 'Withholding Tax'
  • wt_type Selection
    related='statement_id.wt_type' store=True args: [('in', 'In'), ('out', 'Out')], 'Type'
  • wt_voucher_line_id Many2one → withholding.tax.voucher.line
    ondelete='cascade' args: 'withholding.tax.voucher.line', 'WT Account Voucher Line'
Public methods (5)
  • action_paid(self)
    @api.multi
  • action_set_to_draft(self)
    @api.multi
  • move_paid(self)
    @api.multi
  • move_set_due(self)
    @api.multi
  • unlink(self)
    @api.multi

New fields (6)
  • base Float
    default=1 string='Base Coeff.'
  • comment Text
    string='Text'
  • date_start Date
    string='Date Start'
  • date_stop Date
    string='Date Stop'
  • tax Float
    string='Tax %'
  • withholding_tax_id Many2one → withholding.tax
    ondelete='cascade' readonly=True string='Withholding Tax' args: 'withholding.tax'
Public methods (0)

No public methods.

New fields (13)
  • amount Float
    compute='_compute_total' readonly=True store=True string='WT amount applied'
  • amount_paid Float
    compute='_compute_total' readonly=True store=True string='WT amount paid'
  • base Float
    args: 'Base'
  • company_id Many2one → res.company
    related='withholding_tax_id.company_id' string='Company' args: 'res.company'
  • date Date
    args: 'Date'
  • display_name Char
    compute='_compute_display_name'
  • invoice_id Many2one → account.invoice
    ondelete='cascade' args: 'account.invoice', 'Invoice'
  • move_id Many2one → account.move
    ondelete='cascade' args: 'account.move', 'Account move'
  • move_ids One2many → withholding.tax.move
    args: 'withholding.tax.move', 'statement_id', 'Moves'
  • partner_id Many2one → res.partner
    args: 'res.partner', 'Partner'
  • tax Float
    args: 'Tax'
  • withholding_tax_id Many2one → withholding.tax
    string='Withholding Tax' args: 'withholding.tax'
  • wt_type Selection
    compute='_compute_type' store=True args: [('in', 'In'), ('out', 'Out')], 'Type'
Public methods (1)
  • get_wt_competence(self, amount_reconcile)

New fields (0)

No new fields.

Public methods (2)
  • create(self, cr, uid, vals, *args, **kwargs)
  • write(self, cr, uid, ids, vals, context=None)

New fields (0)

No new fields.

Public methods (2)
  • create_wt_statement(self, cr, uid, ids, context=None)
  • default_get(self, cr, uid, fields, context=None)
REPOSITORY
REPOSITORYOCA/l10n-italy
GIT
GIThttps://github.com/OCA/l10n-italy.git
GIT FOLDER
GIT FOLDERhttps://github.com/OCA/l10n-italy/tree/7.0/l10n_it_withholding_tax
VERSION
VERSION 0.2
CATEGORY
CATEGORYLocalisation/Italy
LICENSE
LICENSEAGPL-3
APPLICATION
APPLICATIONNo
AUTO-INSTALLABLE
AUTO-INSTALLABLENo
AUTHORS
AUTHORSOdoo Community Association (OCA), OpenERP Italian Community
MAINTAINERS
MAINTAINERSOdoo Community Association (OCA), OpenERP Italian Community
COMMITTERS
COMMITTERSLorenzo Battistini, Alexandre Fayolle, eLBati, Stéphane Bidoul (ACSONE), OCA Transbot, moylop260, zeroincombenze
WEBSITE
WEBSITEhttp://www.openerp-italia.org
LAST TRACKING UPDATE
LAST TRACKING UPDATE2026-07-06 00:07:14
ODOO DEPENDENCIES
ODOO DEPENDENCIES OCA/account-payment:
    - account_voucher_cash_basis
odoo/odoo:
    - account_voucher
    - account
    - base_setup
    - base
    - web_kanban
    - web
    - product
    - process
    - decimal_precision
    - mail
    - analytic
    - board
    - edi
    - email_template
PYTHON DEPENDENCIES
PYTHON DEPENDENCIES Not have
SYSTEM DEPENDENCIES
SYSTEM DEPENDENCIES Not have
DESCRIPTION
DESCRIPTION
Ritenute d'acconto sulle fatture fornitore
==========================================

Per utilizzare il modulo bisogna configurare i campi associati alla company:
 - Termine di pagamento della ritenuta
 - Conto di debito per le ritenute da versare
 - Sezionale che conterrà le registrazioni legate alla ritenuta

Durante la compilazione di una fattura fornitore con ritenuta d'acconto,
l'utente dovrà specificare l'importo della ritenuta.

Requisiti
---------
http://wiki.odoo-italia.org/doku.php/area_utente/requisiti/ritenuta_d_acconto

Howto
-----
http://goo.gl/Mt1j7L

Code Analysis

Views touched (3)
XML IDNameModelTypeStatus
invoice_supplier_form account.invoice.supplier.form account.invoice field Inherits account.invoice_supplier_form
view_account_config_settings view_account_config_settings account.config.settings xpath Inherits account.view_account_config_settings
view_vendor_payment_form_wh_move account.voucher.payment.form.wh.move account.voucher field Inherits account_voucher.view_vendor_payment_form
Models touched (4)

New fields (0)

No new fields.

Public methods (1)
  • onchange_company_id(self, cr, uid, ids, company_id, context=None)

New fields (0)

No new fields.

Public methods (0)

No public methods.

New fields (0)

No new fields.

Public methods (3)
  • action_move_line_create(self, cr, uid, ids, context=None)
  • cancel_voucher(self, cr, uid, ids, context=None)
  • reconcile_withholding_move(self, cr, uid, invoice, wh_move, context=None)

New fields (0)

No new fields.

Public methods (0)

No public methods.

REPOSITORY
REPOSITORYOCA/l10n-italy
GIT
GIThttps://github.com/OCA/l10n-italy.git
GIT FOLDER
GIT FOLDERhttps://github.com/OCA/l10n-italy/tree/6.1/l10n_it_withholding_tax
VERSION
VERSION 0.2
CATEGORY
CATEGORYLocalisation/Italy
LICENSE
LICENSEAGPL-3
APPLICATION
APPLICATIONNo
AUTO-INSTALLABLE
AUTO-INSTALLABLENo
AUTHORS
AUTHORSOdoo Community Association (OCA), OpenERP Italian Community
MAINTAINERS
MAINTAINERSOdoo Community Association (OCA), OpenERP Italian Community
COMMITTERS
COMMITTERSLorenzo Battistini, Alexandre Fayolle, eLBati, Franco Tampieri
WEBSITE
WEBSITEhttp://www.openerp-italia.org
LAST TRACKING UPDATE
LAST TRACKING UPDATE2026-07-06 00:04:05
ODOO DEPENDENCIES
ODOO DEPENDENCIES OCA/account-financial-tools:
    - account_invoice_template
    - account_move_template
odoo/odoo:
    - account_accountant
    - account
    - base_setup
    - base
    - product
    - process
    - decimal_precision
    - analytic
    - board
    - edi
    - email_template
    - mail
    - base_tools
PYTHON DEPENDENCIES
PYTHON DEPENDENCIES Not have
SYSTEM DEPENDENCIES
SYSTEM DEPENDENCIES Not have
DESCRIPTION
DESCRIPTION
Ritenute d'acconto sulle fatture fornitore
==========================================

Per utilizzare il modulo bisogna configurare i campi associati alla company:
 - Termine di pagamento della ritenuta
 - Conto di debito per le ritenute da versare
 - Sezionale che conterrà le registrazioni legate alla ritenuta

Durante la compilazione di una fattura fornitore con ritenuta d'acconto, l'utente dovrà specificare l'importo della ritenuta.

Requisiti
---------
http://wiki.openerp-italia.org/doku.php/area_utente/requisiti/ritenuta_d_acconto

Howto
-----
http://planet.domsense.com/2012/06/come-registrare-in-openerp-le-fatture-fornitore-con-ritenuta-dacconto/

Code Analysis

Views touched (3)
XML IDNameModelTypeStatus
invoice_supplier_form account.invoice.supplier.form account.invoice field Inherits account.invoice_supplier_form
view_company_inherit_form res.company.form.inherit res.company field Inherits account.view_company_inherit_1_form
view_vendor_payment_form_wh_move account.voucher.payment.form.wh.move account.voucher field Inherits account_voucher.view_vendor_payment_form
Models touched (0)

No models found for this module.