mirror of
https://github.com/bringout/oca-ocb-l10n_europe.git
synced 2026-04-27 14:22:05 +02:00
Initial commit: L10N_Europe packages
This commit is contained in:
commit
9803722600
2377 changed files with 380711 additions and 0 deletions
54
odoo-bringout-oca-ocb-l10n_it_edi_withholding/README.md
Normal file
54
odoo-bringout-oca-ocb-l10n_it_edi_withholding/README.md
Normal file
|
|
@ -0,0 +1,54 @@
|
|||
# Italy - E-invoicing (Withholding)
|
||||
|
||||
|
||||
Withholding and Pension Fund handling for the E-invoice implementation for Italy.
|
||||
|
||||
The Withholding tax and the Pension Fund tax are computed like every other tax
|
||||
with the ordering by sequence, so please be careful with the order of the taxes
|
||||
in your tax configuration.
|
||||
|
||||
Please also update the Italian Accounting module (l10n_it) when you install this module.
|
||||
|
||||
|
||||
## Installation
|
||||
|
||||
```bash
|
||||
pip install odoo-bringout-oca-ocb-l10n_it_edi_withholding
|
||||
```
|
||||
|
||||
## Dependencies
|
||||
|
||||
This addon depends on:
|
||||
- l10n_it_edi
|
||||
|
||||
## Manifest Information
|
||||
|
||||
- **Name**: Italy - E-invoicing (Withholding)
|
||||
- **Version**: 0.1
|
||||
- **Category**: Accounting/Localizations/EDI
|
||||
- **License**: LGPL-3
|
||||
- **Installable**: False
|
||||
|
||||
## Source
|
||||
|
||||
Based on [OCA/OCB](https://github.com/OCA/OCB) branch 16.0, addon `l10n_it_edi_withholding`.
|
||||
|
||||
## License
|
||||
|
||||
This package maintains the original LGPL-3 license from the upstream Odoo project.
|
||||
|
||||
## Documentation
|
||||
|
||||
- Overview: doc/OVERVIEW.md
|
||||
- Architecture: doc/ARCHITECTURE.md
|
||||
- Models: doc/MODELS.md
|
||||
- Controllers: doc/CONTROLLERS.md
|
||||
- Wizards: doc/WIZARDS.md
|
||||
- Reports: doc/REPORTS.md
|
||||
- Security: doc/SECURITY.md
|
||||
- Install: doc/INSTALL.md
|
||||
- Usage: doc/USAGE.md
|
||||
- Configuration: doc/CONFIGURATION.md
|
||||
- Dependencies: doc/DEPENDENCIES.md
|
||||
- Troubleshooting: doc/TROUBLESHOOTING.md
|
||||
- FAQ: doc/FAQ.md
|
||||
|
|
@ -0,0 +1,32 @@
|
|||
# Architecture
|
||||
|
||||
```mermaid
|
||||
flowchart TD
|
||||
U[Users] -->|HTTP| V[Views and QWeb Templates]
|
||||
V --> C[Controllers]
|
||||
V --> W[Wizards – Transient Models]
|
||||
C --> M[Models and ORM]
|
||||
W --> M
|
||||
M --> R[Reports]
|
||||
DX[Data XML] --> M
|
||||
S[Security – ACLs and Groups] -. enforces .-> M
|
||||
|
||||
subgraph L10n_it_edi_withholding Module - l10n_it_edi_withholding
|
||||
direction LR
|
||||
M:::layer
|
||||
W:::layer
|
||||
C:::layer
|
||||
V:::layer
|
||||
R:::layer
|
||||
S:::layer
|
||||
DX:::layer
|
||||
end
|
||||
|
||||
classDef layer fill:#eef8ff,stroke:#6ea8fe,stroke-width:1px
|
||||
```
|
||||
|
||||
Notes
|
||||
- Views include tree/form/kanban templates and report templates.
|
||||
- Controllers provide website/portal routes when present.
|
||||
- Wizards are UI flows implemented with `models.TransientModel`.
|
||||
- Data XML loads data/demo records; Security defines groups and access.
|
||||
|
|
@ -0,0 +1,3 @@
|
|||
# Configuration
|
||||
|
||||
Refer to Odoo settings for l10n_it_edi_withholding. Configure related models, access rights, and options as needed.
|
||||
|
|
@ -0,0 +1,3 @@
|
|||
# Controllers
|
||||
|
||||
This module does not define custom HTTP controllers.
|
||||
|
|
@ -0,0 +1,5 @@
|
|||
# Dependencies
|
||||
|
||||
This addon depends on:
|
||||
|
||||
- [l10n_it_edi](../../odoo-bringout-oca-ocb-l10n_it_edi)
|
||||
4
odoo-bringout-oca-ocb-l10n_it_edi_withholding/doc/FAQ.md
Normal file
4
odoo-bringout-oca-ocb-l10n_it_edi_withholding/doc/FAQ.md
Normal file
|
|
@ -0,0 +1,4 @@
|
|||
# FAQ
|
||||
|
||||
- Q: Which Odoo version? A: 16.0 (OCA/OCB packaged).
|
||||
- Q: How to enable? A: Start server with --addon l10n_it_edi_withholding or install in UI.
|
||||
|
|
@ -0,0 +1,7 @@
|
|||
# Install
|
||||
|
||||
```bash
|
||||
pip install odoo-bringout-oca-ocb-l10n_it_edi_withholding"
|
||||
# or
|
||||
uv pip install odoo-bringout-oca-ocb-l10n_it_edi_withholding"
|
||||
```
|
||||
16
odoo-bringout-oca-ocb-l10n_it_edi_withholding/doc/MODELS.md
Normal file
16
odoo-bringout-oca-ocb-l10n_it_edi_withholding/doc/MODELS.md
Normal file
|
|
@ -0,0 +1,16 @@
|
|||
# Models
|
||||
|
||||
Detected core models and extensions in l10n_it_edi_withholding.
|
||||
|
||||
```mermaid
|
||||
classDiagram
|
||||
class account_chart_template
|
||||
class account_edi_format
|
||||
class account_move
|
||||
class account_tax
|
||||
class account_tax_template
|
||||
```
|
||||
|
||||
Notes
|
||||
- Classes show model technical names; fields omitted for brevity.
|
||||
- Items listed under _inherit are extensions of existing models.
|
||||
|
|
@ -0,0 +1,6 @@
|
|||
# Overview
|
||||
|
||||
Packaged Odoo addon: l10n_it_edi_withholding. Provides features documented in upstream Odoo 16 under this addon.
|
||||
|
||||
- Source: OCA/OCB 16.0, addon l10n_it_edi_withholding
|
||||
- License: LGPL-3
|
||||
|
|
@ -0,0 +1,3 @@
|
|||
# Reports
|
||||
|
||||
This module does not define custom reports.
|
||||
|
|
@ -0,0 +1,8 @@
|
|||
# Security
|
||||
|
||||
This module does not define custom security rules or access controls beyond Odoo defaults.
|
||||
|
||||
Default Odoo security applies:
|
||||
- Base user access through standard groups
|
||||
- Model access inherited from dependencies
|
||||
- No custom row-level security rules
|
||||
|
|
@ -0,0 +1,5 @@
|
|||
# Troubleshooting
|
||||
|
||||
- Ensure Python and Odoo environment matches repo guidance.
|
||||
- Check database connectivity and logs if startup fails.
|
||||
- Validate that dependent addons listed in DEPENDENCIES.md are installed.
|
||||
|
|
@ -0,0 +1,7 @@
|
|||
# Usage
|
||||
|
||||
Start Odoo including this addon (from repo root):
|
||||
|
||||
```bash
|
||||
python3 scripts/nix_odoo_web_server.py --db-name mydb --addon l10n_it_edi_withholding
|
||||
```
|
||||
|
|
@ -0,0 +1,3 @@
|
|||
# Wizards
|
||||
|
||||
This module does not include UI wizards.
|
||||
|
|
@ -0,0 +1,91 @@
|
|||
# -*- coding: utf-8 -*-
|
||||
# Part of Odoo. See LICENSE file for full copyright and licensing details.
|
||||
|
||||
import psycopg2
|
||||
from . import models
|
||||
from odoo import api, SUPERUSER_ID
|
||||
import logging
|
||||
|
||||
_logger = logging.getLogger(__name__)
|
||||
|
||||
def _l10n_it_edi_add_accounts(env, company):
|
||||
""" Create the transition accounts """
|
||||
generated_accounts_ref = {}
|
||||
account_templates = {account_code: env.ref(f'l10n_it_edi_withholding.{account_code}') for account_code in ['1611', '2603']}
|
||||
try:
|
||||
with env.cr.savepoint():
|
||||
for account_code, account_template in account_templates.items():
|
||||
template_vals = [(account_template, company.chart_template_id._get_account_vals(company, account_template, account_code, {}))]
|
||||
generated_accounts_ref[account_template] = company.chart_template_id._create_records_with_xmlid('account.account', template_vals, company)
|
||||
_logger.info("Created withholding accounts for company: %s(%s).", company.name, company.id)
|
||||
except psycopg2.errors.UniqueViolation:
|
||||
generated_accounts_ref = {}
|
||||
_logger.error("Cash basis transition accounts already exist for company: %s(%s).", company.name, company.id)
|
||||
return generated_accounts_ref
|
||||
|
||||
def _l10n_it_edi_withholding_add_taxes(env, company):
|
||||
""" Create the new taxes on existing company """
|
||||
templates = env['account.tax.template']
|
||||
generated_taxes_ref = {}
|
||||
try:
|
||||
with env.cr.savepoint():
|
||||
for xml_id in (
|
||||
'20awi', '20vwi',
|
||||
'20awc', '20vwc',
|
||||
'23awo', '23vwo',
|
||||
'4vcp', '4acp',
|
||||
'4vinps', '4ainps'
|
||||
):
|
||||
templates |= env.ref(f"l10n_it_edi_withholding.{xml_id}")
|
||||
generated_taxes_ref = templates._generate_tax(company)
|
||||
_logger.info("Created withholding taxes for company: %s(%s).", company.name, company.id)
|
||||
|
||||
# Increase the sequence number of the old taxes multiplying it by 10 and adding 21
|
||||
# so that the withholding can have sequence=10 and the pension fund sequence=20
|
||||
offset = 21
|
||||
all_taxes = env['account.tax'].with_context(active_test=False).search([('company_id', '=', company.id)])
|
||||
for tax in all_taxes.filtered(lambda x: (x.sequence <= 20 and not x.l10n_it_pension_fund_type and not x.l10n_it_withholding_type)):
|
||||
if not tax.l10n_it_withholding_type and not tax.l10n_it_pension_fund_type:
|
||||
tax.sequence += offset
|
||||
_logger.info("Increased sequence number of old taxes by %s for company: %s(%s).", offset, company.name, company.id)
|
||||
except psycopg2.errors.UniqueViolation:
|
||||
generated_taxes_ref = {}
|
||||
_logger.error("Withholding and Pension Fund taxes already exist for company: %s(%s).", company.name, company.id)
|
||||
|
||||
return generated_taxes_ref
|
||||
|
||||
def _l10n_it_edi_setup_accounts_on_taxes(env, company, generated_taxes_ref, generated_accounts_ref):
|
||||
""" Setup the accounts on the taxes, after the accounts have been created """
|
||||
# Set the transition account
|
||||
for tax, value in generated_taxes_ref['account_dict']['account.tax'].items():
|
||||
transition_account = value['cash_basis_transition_account_id']
|
||||
if transition_account:
|
||||
tax.cash_basis_transition_account_id = generated_accounts_ref.get(transition_account)
|
||||
|
||||
# The tax repartition lines accounts has already been generated from the template by l10n_it
|
||||
referenced_accounts = {}
|
||||
repartitions_dict = generated_taxes_ref['account_dict']['account.tax.repartition.line']
|
||||
for dummy, value_dict in repartitions_dict.items():
|
||||
account_template = value_dict['account_id']
|
||||
template_xml_id = account_template.get_external_id()[account_template.id]
|
||||
xml_id = template_xml_id.split('.')
|
||||
referenced_accounts[template_xml_id] = env.ref(f'{xml_id[0]}.{company.id}_{xml_id[1]}')
|
||||
|
||||
# Set the tax repartition lines accounts on the generated taxes
|
||||
for repartition_line, value in repartitions_dict.items():
|
||||
template = value['account_id']
|
||||
if template:
|
||||
repartition_line.account_id = referenced_accounts[template.get_external_id()[template.id]]
|
||||
_logger.info("Cash Basis Transition Accounts and Repartition accounts on taxes for company: %s(%s).", company.name, company.id)
|
||||
|
||||
def _l10n_it_edi_withholding_post_init(cr, registry):
|
||||
""" Existing companies that have the Italian Chart of Accounts set """
|
||||
env = api.Environment(cr, SUPERUSER_ID, {})
|
||||
chart_template = env.ref('l10n_it.l10n_it_chart_template_generic')
|
||||
if chart_template:
|
||||
for company in env['res.company'].search([('chart_template_id', '=', chart_template.id)]):
|
||||
_logger.info("Company %s already has the Italian localization installed, updating...", company.name)
|
||||
generated_taxes_ref = _l10n_it_edi_withholding_add_taxes(env, company)
|
||||
generated_accounts_ref = {} if not generated_taxes_ref else _l10n_it_edi_add_accounts(env, company)
|
||||
if generated_accounts_ref:
|
||||
_l10n_it_edi_setup_accounts_on_taxes(env, company, generated_taxes_ref, generated_accounts_ref)
|
||||
|
|
@ -0,0 +1,32 @@
|
|||
# -*- coding: utf-8 -*-
|
||||
# Part of Odoo. See LICENSE file for full copyright and licensing details.
|
||||
|
||||
{
|
||||
'name': 'Italy - E-invoicing (Withholding)',
|
||||
'version': '0.1',
|
||||
'depends': [
|
||||
'l10n_it_edi'
|
||||
],
|
||||
'author': 'Odoo',
|
||||
'description': """
|
||||
Withholding and Pension Fund handling for the E-invoice implementation for Italy.
|
||||
|
||||
The Withholding tax and the Pension Fund tax are computed like every other tax
|
||||
with the ordering by sequence, so please be careful with the order of the taxes
|
||||
in your tax configuration.
|
||||
|
||||
Please also update the Italian Accounting module (l10n_it) when you install this module.
|
||||
""",
|
||||
'category': 'Accounting/Localizations/EDI',
|
||||
'website': 'https://www.odoo.com/documentation/16.0/applications/finance/accounting/fiscal_localizations/localizations/italy.html',
|
||||
'data': [
|
||||
'data/account_tax_group_data.xml',
|
||||
'data/account_withholding_report_data.xml',
|
||||
'data/account.account.template.csv',
|
||||
'data/account_tax_template.xml',
|
||||
'data/invoice_it_template.xml',
|
||||
'views/l10n_it_view.xml'
|
||||
],
|
||||
'post_init_hook': '_l10n_it_edi_withholding_post_init',
|
||||
'license': 'LGPL-3',
|
||||
}
|
||||
|
|
@ -0,0 +1,3 @@
|
|||
id,code,name,account_type,reconcile,chart_template_id:id,tag_ids:id
|
||||
1611,1611,Crediti per ritenute subite (appoggio),asset_current,FALSE,l10n_it.l10n_it_chart_template_generic,l10n_it.account_tag_C_ATT
|
||||
2603,2603,Debiti per ritenute da versare (appoggio),liability_current,FALSE,l10n_it.l10n_it_chart_template_generic,l10n_it.account_tag_D_PASS
|
||||
|
|
|
@ -0,0 +1,23 @@
|
|||
<?xml version="1.0" encoding="utf-8"?>
|
||||
<odoo>
|
||||
<data noupdate="1">
|
||||
<record id="tax_group_pension_fund" model="account.tax.group">
|
||||
<field name="name">Fondi Pensione</field>
|
||||
<field name="sequence">0</field>
|
||||
<field name="country_id" ref="base.it"/>
|
||||
<field name="preceding_subtotal">Fondi Pensione Esclusi</field>
|
||||
</record>
|
||||
<record id="tax_group_enasarco" model="account.tax.group">
|
||||
<field name="name">Enasarco</field>
|
||||
<field name="sequence">999</field>
|
||||
<field name="country_id" ref="base.it"/>
|
||||
<field name="preceding_subtotal">ENASARCO Escluso</field>
|
||||
</record>
|
||||
<record id="tax_group_withholding" model="account.tax.group">
|
||||
<field name="name">Ritenute</field>
|
||||
<field name="sequence">1000</field>
|
||||
<field name="country_id" ref="base.it"/>
|
||||
<field name="preceding_subtotal">Totale Ritenute Escluse</field>
|
||||
</record>
|
||||
</data>
|
||||
</odoo>
|
||||
|
|
@ -0,0 +1,460 @@
|
|||
<?xml version='1.0' encoding='UTF-8'?>
|
||||
<odoo>
|
||||
|
||||
<!-- Withholding Taxes (Ritenute) ......................................................... -->
|
||||
<!-- Individuals -->
|
||||
<record id="20vwi" model="account.tax.template">
|
||||
<field name="description">20% Ritenuta Persone Fisiche</field>
|
||||
<field name="chart_template_id" ref="l10n_it.l10n_it_chart_template_generic"/>
|
||||
<field name="name">20% RIT PF</field>
|
||||
<field name="sequence">10</field>
|
||||
<field name="amount">-20</field>
|
||||
<field name="amount_type">percent</field>
|
||||
<field name="type_tax_use">sale</field>
|
||||
<field name="tax_group_id" ref="tax_group_withholding"/>
|
||||
<field name="l10n_it_withholding_type">RT01</field>
|
||||
<field name="l10n_it_withholding_reason">A</field>
|
||||
<field name="tax_exigibility">on_payment</field>
|
||||
<field name="cash_basis_transition_account_id" ref="l10n_it_edi_withholding.1611"/>
|
||||
<field name="invoice_repartition_line_ids" eval="[(5, 0, 0),
|
||||
(0,0, {
|
||||
'factor_percent': 100,
|
||||
'repartition_type': 'base',
|
||||
}),
|
||||
(0,0, {
|
||||
'factor_percent': 100,
|
||||
'repartition_type': 'tax',
|
||||
'account_id': ref('l10n_it.1609'),
|
||||
'minus_report_expression_ids': [ref('withh_sale_tax_report_it_line_tag')],
|
||||
}),
|
||||
]"/>
|
||||
<field name="refund_repartition_line_ids" eval="[(5, 0, 0),
|
||||
(0,0, {
|
||||
'factor_percent': 100,
|
||||
'repartition_type': 'base',
|
||||
}),
|
||||
(0,0, {
|
||||
'factor_percent': 100,
|
||||
'repartition_type': 'tax',
|
||||
'account_id': ref('l10n_it.1609'),
|
||||
'plus_report_expression_ids': [ref('withh_sale_tax_report_it_line_tag')],
|
||||
}),
|
||||
]"/>
|
||||
</record>
|
||||
|
||||
<record id="20awi" model="account.tax.template">
|
||||
<field name="description">20% Ritenuta Persone Fisiche</field>
|
||||
<field name="chart_template_id" ref="l10n_it.l10n_it_chart_template_generic"/>
|
||||
<field name="name">20% RIT PF</field>
|
||||
<field name="sequence">10</field>
|
||||
<field name="amount">-20</field>
|
||||
<field name="amount_type">percent</field>
|
||||
<field name="type_tax_use">purchase</field>
|
||||
<field name="tax_group_id" ref="tax_group_withholding"/>
|
||||
<field name="l10n_it_withholding_type">RT01</field>
|
||||
<field name="l10n_it_withholding_reason">A</field>
|
||||
<field name="tax_exigibility">on_payment</field>
|
||||
<field name="cash_basis_transition_account_id" ref="l10n_it_edi_withholding.2603"/>
|
||||
<field name="invoice_repartition_line_ids" eval="[(5, 0, 0),
|
||||
(0,0, {
|
||||
'factor_percent': 100,
|
||||
'repartition_type': 'base',
|
||||
}),
|
||||
(0,0, {
|
||||
'factor_percent': 100,
|
||||
'repartition_type': 'tax',
|
||||
'account_id': ref('l10n_it.2602'),
|
||||
'plus_report_expression_ids': [ref('withh_purchase_tax_report_it_line_tag')],
|
||||
}),
|
||||
]"/>
|
||||
<field name="refund_repartition_line_ids" eval="[(5, 0, 0),
|
||||
(0,0, {
|
||||
'factor_percent': 100,
|
||||
'repartition_type': 'base',
|
||||
}),
|
||||
(0,0, {
|
||||
'factor_percent': 100,
|
||||
'repartition_type': 'tax',
|
||||
'account_id': ref('l10n_it.2602'),
|
||||
'minus_report_expression_ids': [ref('withh_purchase_tax_report_it_line_tag')],
|
||||
}),
|
||||
]"/>
|
||||
</record>
|
||||
|
||||
<!-- Individual Companies -->
|
||||
<record id="20vwc" model="account.tax.template">
|
||||
<field name="description">20% Ritenuta Persone Giuridiche</field>
|
||||
<field name="chart_template_id" ref="l10n_it.l10n_it_chart_template_generic"/>
|
||||
<field name="name">20% RIT PG</field>
|
||||
<field name="sequence">11</field>
|
||||
<field name="amount">-20</field>
|
||||
<field name="amount_type">percent</field>
|
||||
<field name="type_tax_use">sale</field>
|
||||
<field name="tax_group_id" ref="tax_group_withholding"/>
|
||||
<field name="l10n_it_withholding_type">RT02</field>
|
||||
<field name="l10n_it_withholding_reason">A</field>
|
||||
<field name="tax_exigibility">on_payment</field>
|
||||
<field name="cash_basis_transition_account_id" ref="l10n_it_edi_withholding.1611"/>
|
||||
<field name="invoice_repartition_line_ids" eval="[(5, 0, 0),
|
||||
(0,0, {
|
||||
'factor_percent': 100,
|
||||
'repartition_type': 'base',
|
||||
}),
|
||||
(0,0, {
|
||||
'factor_percent': 100,
|
||||
'repartition_type': 'tax',
|
||||
'account_id': ref('l10n_it.1609'),
|
||||
'minus_report_expression_ids': [ref('withh_sale_tax_report_it_line_tag')],
|
||||
}),
|
||||
]"/>
|
||||
<field name="refund_repartition_line_ids" eval="[(5, 0, 0),
|
||||
(0,0, {
|
||||
'factor_percent': 100,
|
||||
'repartition_type': 'base',
|
||||
}),
|
||||
(0,0, {
|
||||
'factor_percent': 100,
|
||||
'repartition_type': 'tax',
|
||||
'account_id': ref('l10n_it.1609'),
|
||||
'plus_report_expression_ids': [ref('withh_sale_tax_report_it_line_tag')],
|
||||
}),
|
||||
]"/>
|
||||
</record>
|
||||
|
||||
<record id="20awc" model="account.tax.template">
|
||||
<field name="description">20% Ritenuta Persone Giuridiche</field>
|
||||
<field name="chart_template_id" ref="l10n_it.l10n_it_chart_template_generic"/>
|
||||
<field name="name">20% RIT PG</field>
|
||||
<field name="sequence">11</field>
|
||||
<field name="amount">-20</field>
|
||||
<field name="amount_type">percent</field>
|
||||
<field name="type_tax_use">purchase</field>
|
||||
<field name="tax_group_id" ref="tax_group_withholding"/>
|
||||
<field name="l10n_it_withholding_type">RT02</field>
|
||||
<field name="l10n_it_withholding_reason">A</field>
|
||||
<field name="tax_exigibility">on_payment</field>
|
||||
<field name="cash_basis_transition_account_id" ref="l10n_it_edi_withholding.2603"/>
|
||||
<field name="invoice_repartition_line_ids" eval="[(5, 0, 0),
|
||||
(0,0, {
|
||||
'factor_percent': 100,
|
||||
'repartition_type': 'base',
|
||||
}),
|
||||
(0,0, {
|
||||
'factor_percent': 100,
|
||||
'repartition_type': 'tax',
|
||||
'account_id': ref('l10n_it.2602'),
|
||||
'plus_report_expression_ids': [ref('withh_purchase_tax_report_it_line_tag')],
|
||||
}),
|
||||
]"/>
|
||||
<field name="refund_repartition_line_ids" eval="[(5, 0, 0),
|
||||
(0,0, {
|
||||
'factor_percent': 100,
|
||||
'repartition_type': 'base',
|
||||
}),
|
||||
(0,0, {
|
||||
'factor_percent': 100,
|
||||
'repartition_type': 'tax',
|
||||
'account_id': ref('l10n_it.2602'),
|
||||
'minus_report_expression_ids': [ref('withh_purchase_tax_report_it_line_tag')],
|
||||
}),
|
||||
]"/>
|
||||
</record>
|
||||
|
||||
<!-- Agents and Representatives -->
|
||||
<record id="23vwo" model="account.tax.template">
|
||||
<field name="description">23% Ritenuta Agenti e Rappresentanti</field>
|
||||
<field name="chart_template_id" ref="l10n_it.l10n_it_chart_template_generic"/>
|
||||
<field name="name">23% RIT AG</field>
|
||||
<field name="sequence">12</field>
|
||||
<field name="amount">-23</field>
|
||||
<field name="amount_type">percent</field>
|
||||
<field name="type_tax_use">sale</field>
|
||||
<field name="tax_group_id" ref="tax_group_withholding"/>
|
||||
<field name="l10n_it_withholding_type">RT02</field>
|
||||
<field name="l10n_it_withholding_reason">ZO</field>
|
||||
<field name="tax_exigibility">on_payment</field>
|
||||
<field name="cash_basis_transition_account_id" ref="l10n_it_edi_withholding.1611"/>
|
||||
<field name="invoice_repartition_line_ids" eval="[(5, 0, 0),
|
||||
(0,0, {
|
||||
'factor_percent': 100,
|
||||
'repartition_type': 'base',
|
||||
}),
|
||||
(0,0, {
|
||||
'factor_percent': 50,
|
||||
'repartition_type': 'tax',
|
||||
'account_id': ref('l10n_it.1609'),
|
||||
'minus_report_expression_ids': [ref('withh_sale_tax_report_it_line_tag')],
|
||||
}),
|
||||
]"/>
|
||||
<field name="refund_repartition_line_ids" eval="[(5, 0, 0),
|
||||
(0,0, {
|
||||
'factor_percent': 100,
|
||||
'repartition_type': 'base',
|
||||
}),
|
||||
(0,0, {
|
||||
'factor_percent': 50,
|
||||
'repartition_type': 'tax',
|
||||
'account_id': ref('l10n_it.1609'),
|
||||
'plus_report_expression_ids': [ref('withh_sale_tax_report_it_line_tag')],
|
||||
}),
|
||||
]"/>
|
||||
</record>
|
||||
|
||||
<record id="23awo" model="account.tax.template">
|
||||
<field name="description">23% Ritenuta Agenti e Rappresentanti</field>
|
||||
<field name="chart_template_id" ref="l10n_it.l10n_it_chart_template_generic"/>
|
||||
<field name="name">23% RIT AG</field>
|
||||
<field name="sequence">12</field>
|
||||
<field name="amount">-23</field>
|
||||
<field name="amount_type">percent</field>
|
||||
<field name="type_tax_use">purchase</field>
|
||||
<field name="tax_group_id" ref="tax_group_withholding"/>
|
||||
<field name="l10n_it_withholding_type">RT02</field>
|
||||
<field name="l10n_it_withholding_reason">ZO</field>
|
||||
<field name="tax_exigibility">on_payment</field>
|
||||
<field name="cash_basis_transition_account_id" ref="l10n_it_edi_withholding.2603"/>
|
||||
<field name="invoice_repartition_line_ids" eval="[(5, 0, 0),
|
||||
(0,0, {
|
||||
'factor_percent': 100,
|
||||
'repartition_type': 'base',
|
||||
}),
|
||||
(0,0, {
|
||||
'factor_percent': 50,
|
||||
'repartition_type': 'tax',
|
||||
'account_id': ref('l10n_it.2602'),
|
||||
'plus_report_expression_ids': [ref('withh_purchase_tax_report_it_line_tag')],
|
||||
}),
|
||||
]"/>
|
||||
<field name="refund_repartition_line_ids" eval="[(5, 0, 0),
|
||||
(0,0, {
|
||||
'factor_percent': 100,
|
||||
'repartition_type': 'base',
|
||||
}),
|
||||
(0,0, {
|
||||
'factor_percent': 50,
|
||||
'repartition_type': 'tax',
|
||||
'account_id': ref('l10n_it.2602'),
|
||||
'minus_report_expression_ids': [ref('withh_purchase_tax_report_it_line_tag')],
|
||||
}),
|
||||
]"/>
|
||||
</record>
|
||||
|
||||
<!-- INPS ................................................................................. -->
|
||||
<record id="4vinps" model="account.tax.template">
|
||||
<field name="description">4% Contributo INPS</field>
|
||||
<field name="chart_template_id" ref="l10n_it.l10n_it_chart_template_generic"/>
|
||||
<field name="name">4% INPS</field>
|
||||
<field name="sequence">5</field>
|
||||
<field name="amount">4</field>
|
||||
<field name="amount_type">percent</field>
|
||||
<field name="type_tax_use">sale</field>
|
||||
<field name="include_base_amount">True</field>
|
||||
<field name="tax_group_id" ref="tax_group_pension_fund"/>
|
||||
<field name="l10n_it_pension_fund_type">TC22</field>
|
||||
<field name="invoice_repartition_line_ids" eval="[(5, 0, 0),
|
||||
(0,0, {
|
||||
'factor_percent': 100,
|
||||
'repartition_type': 'base',
|
||||
}),
|
||||
(0,0, {
|
||||
'factor_percent': 100,
|
||||
'repartition_type': 'tax',
|
||||
'account_id': ref('l10n_it.2630'),
|
||||
}),
|
||||
]"/>
|
||||
<field name="refund_repartition_line_ids" eval="[(5, 0, 0),
|
||||
(0,0, {
|
||||
'factor_percent': 100,
|
||||
'repartition_type': 'base',
|
||||
}),
|
||||
(0,0, {
|
||||
'factor_percent': 100,
|
||||
'repartition_type': 'tax',
|
||||
'account_id': ref('l10n_it.2630'),
|
||||
}),
|
||||
]"/>
|
||||
</record>
|
||||
|
||||
<record id="4ainps" model="account.tax.template">
|
||||
<field name="description">4% Contributo INPS</field>
|
||||
<field name="chart_template_id" ref="l10n_it.l10n_it_chart_template_generic"/>
|
||||
<field name="name">4% INPS</field>
|
||||
<field name="sequence">5</field>
|
||||
<field name="amount">4</field>
|
||||
<field name="amount_type">percent</field>
|
||||
<field name="type_tax_use">purchase</field>
|
||||
<field name="include_base_amount">True</field>
|
||||
<field name="l10n_it_pension_fund_type">TC22</field>
|
||||
<field name="tax_group_id" ref="tax_group_pension_fund"/>
|
||||
<field name="invoice_repartition_line_ids" eval="[(5, 0, 0),
|
||||
(0,0, {
|
||||
'factor_percent': 100,
|
||||
'repartition_type': 'base',
|
||||
}),
|
||||
(0,0, {
|
||||
'factor_percent': 100,
|
||||
'repartition_type': 'tax',
|
||||
'account_id': ref('l10n_it.4402'),
|
||||
}),
|
||||
]"/>
|
||||
<field name="refund_repartition_line_ids" eval="[(5, 0, 0),
|
||||
(0,0, {
|
||||
'factor_percent': 100,
|
||||
'repartition_type': 'base',
|
||||
}),
|
||||
(0,0, {
|
||||
'factor_percent': 100,
|
||||
'repartition_type': 'tax',
|
||||
'account_id': ref('l10n_it.4402'),
|
||||
}),
|
||||
]"/>
|
||||
</record>
|
||||
|
||||
<!-- Pension Fund (Cassa Previdenziale) ................................................... -->
|
||||
<record id="4vcp" model="account.tax.template">
|
||||
<field name="description">4% Contributo Fondo Pensione</field>
|
||||
<field name="chart_template_id" ref="l10n_it.l10n_it_chart_template_generic"/>
|
||||
<field name="name">4% F.Pens.</field>
|
||||
<field name="sequence">20</field>
|
||||
<field name="amount">4</field>
|
||||
<field name="amount_type">percent</field>
|
||||
<field name="type_tax_use">sale</field>
|
||||
<field name="include_base_amount">True</field>
|
||||
<field name="tax_group_id" ref="tax_group_pension_fund"/>
|
||||
<field name="l10n_it_pension_fund_type">TC01</field>
|
||||
<field name="invoice_repartition_line_ids" eval="[(5, 0, 0),
|
||||
(0,0, {
|
||||
'factor_percent': 100,
|
||||
'repartition_type': 'base',
|
||||
}),
|
||||
(0,0, {
|
||||
'factor_percent': 100,
|
||||
'repartition_type': 'tax',
|
||||
'account_id': ref('l10n_it.2630'),
|
||||
}),
|
||||
]"/>
|
||||
<field name="refund_repartition_line_ids" eval="[(5, 0, 0),
|
||||
(0,0, {
|
||||
'factor_percent': 100,
|
||||
'repartition_type': 'base',
|
||||
}),
|
||||
(0,0, {
|
||||
'factor_percent': 100,
|
||||
'repartition_type': 'tax',
|
||||
'account_id': ref('l10n_it.2630'),
|
||||
}),
|
||||
]"/>
|
||||
</record>
|
||||
|
||||
<record id="4acp" model="account.tax.template">
|
||||
<field name="description">4% Contributo Fondo Pensione</field>
|
||||
<field name="chart_template_id" ref="l10n_it.l10n_it_chart_template_generic"/>
|
||||
<field name="name">4% F.Pens.</field>
|
||||
<field name="sequence">20</field>
|
||||
<field name="amount">4</field>
|
||||
<field name="amount_type">percent</field>
|
||||
<field name="type_tax_use">purchase</field>
|
||||
<field name="include_base_amount">True</field>
|
||||
<field name="l10n_it_pension_fund_type">TC01</field>
|
||||
<field name="tax_group_id" ref="tax_group_pension_fund"/>
|
||||
<field name="invoice_repartition_line_ids" eval="[(5, 0, 0),
|
||||
(0,0, {
|
||||
'factor_percent': 100,
|
||||
'repartition_type': 'base',
|
||||
}),
|
||||
(0,0, {
|
||||
'factor_percent': 100,
|
||||
'repartition_type': 'tax',
|
||||
'account_id': ref('l10n_it.4402'),
|
||||
}),
|
||||
]"/>
|
||||
<field name="refund_repartition_line_ids" eval="[(5, 0, 0),
|
||||
(0,0, {
|
||||
'factor_percent': 100,
|
||||
'repartition_type': 'base',
|
||||
}),
|
||||
(0,0, {
|
||||
'factor_percent': 100,
|
||||
'repartition_type': 'tax',
|
||||
'account_id': ref('l10n_it.4402'),
|
||||
}),
|
||||
]"/>
|
||||
</record>
|
||||
|
||||
<!-- ENASARCO ................................................................ -->
|
||||
<record id="enasarcov" model="account.tax.template">
|
||||
<field name="description">8.5% Ritenuta ENASARCO</field>
|
||||
<field name="chart_template_id" ref="l10n_it.l10n_it_chart_template_generic"/>
|
||||
<field name="name">ENASARCO</field>
|
||||
<field name="sequence">13</field>
|
||||
<field name="amount">-8.5</field>
|
||||
<field name="amount_type">percent</field>
|
||||
<field name="type_tax_use">sale</field>
|
||||
<field name="tax_group_id" ref="tax_group_enasarco"/>
|
||||
<field name="l10n_it_pension_fund_type">TC07</field>
|
||||
<field name="tax_exigibility">on_payment</field>
|
||||
<field name="cash_basis_transition_account_id" ref="l10n_it_edi_withholding.1611"/>
|
||||
<field name="invoice_repartition_line_ids" eval="[(5, 0, 0),
|
||||
(0,0, {
|
||||
'factor_percent': 100,
|
||||
'repartition_type': 'base',
|
||||
}),
|
||||
(0,0, {
|
||||
'factor_percent': 100,
|
||||
'repartition_type': 'tax',
|
||||
'account_id': ref('l10n_it.2630'),
|
||||
'minus_report_expression_ids': [ref('enasarco_sale_tax_report_it_line_tag')],
|
||||
}),
|
||||
]"/>
|
||||
<field name="refund_repartition_line_ids" eval="[(5, 0, 0),
|
||||
(0,0, {
|
||||
'factor_percent': 100,
|
||||
'repartition_type': 'base',
|
||||
}),
|
||||
(0,0, {
|
||||
'factor_percent': 100,
|
||||
'repartition_type': 'tax',
|
||||
'account_id': ref('l10n_it.2630'),
|
||||
'plus_report_expression_ids': [ref('enasarco_sale_tax_report_it_line_tag')],
|
||||
}),
|
||||
]"/>
|
||||
</record>
|
||||
|
||||
<record id="enasarcoa" model="account.tax.template">
|
||||
<field name="description">8.5% Ritenuta ENASARCO</field>
|
||||
<field name="chart_template_id" ref="l10n_it.l10n_it_chart_template_generic"/>
|
||||
<field name="name">ENASARCO</field>
|
||||
<field name="sequence">13</field>
|
||||
<field name="amount">-8.5</field>
|
||||
<field name="amount_type">percent</field>
|
||||
<field name="type_tax_use">purchase</field>
|
||||
<field name="tax_group_id" ref="tax_group_enasarco"/>
|
||||
<field name="l10n_it_pension_fund_type">TC07</field>
|
||||
<field name="tax_exigibility">on_payment</field>
|
||||
<field name="cash_basis_transition_account_id" ref="l10n_it_edi_withholding.1611"/>
|
||||
<field name="invoice_repartition_line_ids" eval="[(5, 0, 0),
|
||||
(0,0, {
|
||||
'factor_percent': 100,
|
||||
'repartition_type': 'base',
|
||||
}),
|
||||
(0,0, {
|
||||
'factor_percent': 100,
|
||||
'repartition_type': 'tax',
|
||||
'account_id': ref('l10n_it.2630'),
|
||||
'plus_report_expression_ids': [ref('enasarco_purchase_tax_report_it_line_tag')],
|
||||
}),
|
||||
]"/>
|
||||
<field name="refund_repartition_line_ids" eval="[(5, 0, 0),
|
||||
(0,0, {
|
||||
'factor_percent': 100,
|
||||
'repartition_type': 'base',
|
||||
}),
|
||||
(0,0, {
|
||||
'factor_percent': 100,
|
||||
'repartition_type': 'tax',
|
||||
'account_id': ref('l10n_it.2630'),
|
||||
'minus_report_expression_ids': [ref('enasarco_purchase_tax_report_it_line_tag')],
|
||||
}),
|
||||
]"/>
|
||||
</record>
|
||||
</odoo>
|
||||
|
|
@ -0,0 +1,60 @@
|
|||
<?xml version='1.0' encoding='UTF-8'?>
|
||||
<odoo>
|
||||
<record id="withh_tax_report_it" model="account.report">
|
||||
<field name="name">Withholding Report</field>
|
||||
<field name="root_report_id" ref="account.generic_tax_report"/>
|
||||
<field name="country_id" ref="base.it"/>
|
||||
<field name="column_ids">
|
||||
<record id="withh_tax_report_balance" model="account.report.column">
|
||||
<field name="name">Total</field>
|
||||
<field name="expression_label">total</field>
|
||||
</record>
|
||||
</field>
|
||||
<field name="line_ids">
|
||||
<record id="withh_sale_tax_report_it_line" model="account.report.line">
|
||||
<field name="name">Withholding Amount (Sales)</field>
|
||||
<field name="code">ritv</field>
|
||||
<field name="expression_ids">
|
||||
<record id="withh_sale_tax_report_it_line_tag" model="account.report.expression">
|
||||
<field name="label">total</field>
|
||||
<field name="engine">tax_tags</field>
|
||||
<field name="formula">RITV</field>
|
||||
</record>
|
||||
</field>
|
||||
</record>
|
||||
<record id="enasarco_sale_tax_report_it_line" model="account.report.line">
|
||||
<field name="name">ENASARCO Amount (Sales)</field>
|
||||
<field name="code">enasarcov</field>
|
||||
<field name="expression_ids">
|
||||
<record id="enasarco_sale_tax_report_it_line_tag" model="account.report.expression">
|
||||
<field name="label">total</field>
|
||||
<field name="engine">tax_tags</field>
|
||||
<field name="formula">ENASARCOV</field>
|
||||
</record>
|
||||
</field>
|
||||
</record>
|
||||
<record id="withh_purchase_tax_report_it_line" model="account.report.line">
|
||||
<field name="name">Withholding Amount (Purchase)</field>
|
||||
<field name="code">rita</field>
|
||||
<field name="expression_ids">
|
||||
<record id="withh_purchase_tax_report_it_line_tag" model="account.report.expression">
|
||||
<field name="label">total</field>
|
||||
<field name="engine">tax_tags</field>
|
||||
<field name="formula">RITA</field>
|
||||
</record>
|
||||
</field>
|
||||
</record>
|
||||
<record id="enasarco_purchase_tax_report_it_line" model="account.report.line">
|
||||
<field name="name">ENASARCO Amount (Purchase)</field>
|
||||
<field name="code">enasarcoa</field>
|
||||
<field name="expression_ids">
|
||||
<record id="enasarco_purchase_tax_report_it_line_tag" model="account.report.expression">
|
||||
<field name="label">total</field>
|
||||
<field name="engine">tax_tags</field>
|
||||
<field name="formula">ENASARCOA</field>
|
||||
</record>
|
||||
</field>
|
||||
</record>
|
||||
</field>
|
||||
</record>
|
||||
</odoo>
|
||||
|
|
@ -0,0 +1,47 @@
|
|||
<?xml version="1.0" encoding="utf-8"?>
|
||||
<odoo>
|
||||
|
||||
<template id="account_invoice_it_FatturaPA_export_withholding" inherit_id="l10n_it_edi.account_invoice_it_FatturaPA_export">
|
||||
<xpath expr="//DatiGeneraliDocumento/Numero" position="after">
|
||||
<t t-if="withholding_values" t-foreach="withholding_values" t-as="withholding">
|
||||
<DatiRitenuta>
|
||||
<TipoRitenuta t-esc="format_alphanumeric(withholding.tax.l10n_it_withholding_type)"/>
|
||||
<ImportoRitenuta t-esc="format_monetary(withholding.tax_amount, currency)"/>
|
||||
<AliquotaRitenuta t-esc="format_numbers(abs(withholding.tax.amount))"/>
|
||||
<CausalePagamento t-esc="format_alphanumeric(withholding.tax.l10n_it_withholding_reason)"/>
|
||||
</DatiRitenuta>
|
||||
</t>
|
||||
</xpath>
|
||||
<xpath expr="//DatiGeneraliDocumento/ImportoTotaleDocumento" position="before">
|
||||
<t t-if="pension_fund_values" t-foreach="pension_fund_values" t-as="pension_fund">
|
||||
<DatiCassaPrevidenziale>
|
||||
<TipoCassa t-esc="format_alphanumeric(pension_fund.tax.l10n_it_pension_fund_type)"/>
|
||||
<AlCassa t-esc="format_numbers(pension_fund.tax.amount)"/>
|
||||
<ImportoContributoCassa t-esc="format_monetary(pension_fund.tax_amount, currency)"/>
|
||||
<ImponibileCassa t-esc="format_monetary(pension_fund.base_amount, currency)"/>
|
||||
<AliquotaIVA t-esc="format_numbers(pension_fund.vat_tax.amount or 0.0)"/>
|
||||
<Ritenuta t-if="pension_fund.withholding_tax and pension_fund.withholding_tax.sequence > pension_fund.tax.sequence">SI</Ritenuta>
|
||||
<Natura t-if="pension_fund.vat_tax.l10n_it_has_exoneration" t-esc="format_alphanumeric(pension_fund.vat_tax.l10n_it_kind_exoneration)"/>
|
||||
<RiferimentoAmministrazione t-if="pension_fund.tax.description" t-esc="format_alphanumeric(pension_fund.tax.description)[:20]"/>
|
||||
</DatiCassaPrevidenziale>
|
||||
</t>
|
||||
</xpath>
|
||||
</template>
|
||||
|
||||
<template id="account_invoice_line_it_FatturaPA_withholding" inherit_id="l10n_it_edi.account_invoice_line_it_FatturaPA">
|
||||
<xpath expr="//AliquotaIVA" position="after">
|
||||
<t t-if="line.tax_ids._l10n_it_filter_kind('withholding')">
|
||||
<Ritenuta>SI</Ritenuta>
|
||||
</t>
|
||||
</xpath>
|
||||
<xpath expr="//DettaglioLinee" position="inside">
|
||||
<t t-if="enasarco_values and enasarco_values[line.id]">
|
||||
<AltriDatiGestionali>
|
||||
<TipoDato>CASSA-PREV</TipoDato>
|
||||
<RiferimentoTesto t-esc="format_alphanumeric('TC07 - ENASARCO (' + format_numbers(abs(enasarco_values[line.id]['amount'])).rstrip('.0') + '%)')"/>
|
||||
<RiferimentoNumero t-esc="format_monetary(enasarco_values[line.id]['tax_amount'], currency)"/>
|
||||
</AltriDatiGestionali>
|
||||
</t>
|
||||
</xpath>
|
||||
</template>
|
||||
</odoo>
|
||||
|
|
@ -0,0 +1,729 @@
|
|||
# Translation of Odoo Server.
|
||||
# This file contains the translation of the following modules:
|
||||
# * l10n_it_edi_withholding
|
||||
#
|
||||
msgid ""
|
||||
msgstr ""
|
||||
"Project-Id-Version: Odoo Server 16.0+e\n"
|
||||
"Report-Msgid-Bugs-To: \n"
|
||||
"POT-Creation-Date: 2023-01-26 11:16+0000\n"
|
||||
"PO-Revision-Date: 2023-01-26 11:16+0000\n"
|
||||
"Last-Translator: \n"
|
||||
"Language-Team: \n"
|
||||
"MIME-Version: 1.0\n"
|
||||
"Content-Type: text/plain; charset=UTF-8\n"
|
||||
"Content-Transfer-Encoding: \n"
|
||||
"Plural-Forms: \n"
|
||||
|
||||
#. module: l10n_it_edi_withholding
|
||||
#: model:ir.model,name:l10n_it_edi_withholding.model_account_chart_template
|
||||
msgid "Account Chart Template"
|
||||
msgstr "Modello piano dei conti"
|
||||
|
||||
#. module: l10n_it_edi_withholding
|
||||
#: model_terms:ir.ui.view,arch_db:l10n_it_edi_withholding.view_invoice_tree_l10n_it_edi_extended
|
||||
msgid "All Taxes Included"
|
||||
msgstr "Tasse incluse"
|
||||
|
||||
#. module: l10n_it_edi_withholding
|
||||
#: model:ir.model.fields,field_description:l10n_it_edi_withholding.field_account_bank_statement_line__l10n_it_amount_before_withholding_signed
|
||||
#: model:ir.model.fields,field_description:l10n_it_edi_withholding.field_account_move__l10n_it_amount_before_withholding_signed
|
||||
#: model:ir.model.fields,field_description:l10n_it_edi_withholding.field_account_payment__l10n_it_amount_before_withholding_signed
|
||||
msgid "All taxes included"
|
||||
msgstr "Tasse incluse"
|
||||
|
||||
#. module: l10n_it_edi_withholding
|
||||
#. odoo-python
|
||||
#: code:addons/l10n_it_edi_withholding/models/account_edi_format.py:0
|
||||
#, python-format
|
||||
msgid ""
|
||||
"Bad tax configuration for line %s, there must be one Withholding tax and one"
|
||||
" Pension Fund tax at max."
|
||||
msgstr ""
|
||||
"Configurazione tasse errata nella linea %s, ci devono essere al massimo una "
|
||||
"Ritenuta ed un Contributo a fondi pensionistici per linea."
|
||||
|
||||
#. module: l10n_it_edi_withholding
|
||||
#. odoo-python
|
||||
#: code:addons/l10n_it_edi_withholding/models/account_edi_format.py:0
|
||||
#, python-format
|
||||
msgid ""
|
||||
"Bad tax configuration for line %s, there must be one and only one VAT tax "
|
||||
"per line"
|
||||
msgstr ""
|
||||
|
||||
#. module: l10n_it_edi_withholding
|
||||
#: model:ir.model.fields.selection,name:l10n_it_edi_withholding.selection__account_tax__l10n_it_pension_fund_type__tc16
|
||||
#: model:ir.model.fields.selection,name:l10n_it_edi_withholding.selection__account_tax_template__l10n_it_pension_fund_type__tc16
|
||||
msgid "CASAGIT Additional pension fund for journalists"
|
||||
msgstr "Cassa autonoma assistenza integrativa giornalisti italiani (CASAGIT)"
|
||||
|
||||
#. module: l10n_it_edi_withholding
|
||||
#: model_terms:ir.ui.view,arch_db:l10n_it_edi_withholding.account_invoice_line_it_FatturaPA_withholding
|
||||
msgid "CASSA-PREV"
|
||||
msgstr ""
|
||||
|
||||
#. module: l10n_it_edi_withholding
|
||||
#: model:ir.model,name:l10n_it_edi_withholding.model_account_edi_format
|
||||
msgid "EDI format"
|
||||
msgstr "Formato EDI"
|
||||
|
||||
#. module: l10n_it_edi_withholding
|
||||
#: model:account.report.line,name:l10n_it_edi_withholding.enasarco_purchase_tax_report_it_line
|
||||
msgid "ENASARCO Amount (Purchase)"
|
||||
msgstr "Ritenute ENASARCO Operate (Acquisti)"
|
||||
|
||||
#. module: l10n_it_edi_withholding
|
||||
#: model:account.report.line,name:l10n_it_edi_withholding.enasarco_sale_tax_report_it_line
|
||||
msgid "ENASARCO Amount (Sales)"
|
||||
msgstr "Ritenute ENASARCO Subite (Vendite)"
|
||||
|
||||
#. module: l10n_it_edi_withholding
|
||||
#: model:account.tax.group,preceding_subtotal:l10n_it_edi_withholding.tax_group_enasarco
|
||||
msgid "ENASARCO Excluded"
|
||||
msgstr "Ritenuta ENASARCO Esclusa"
|
||||
|
||||
#. module: l10n_it_edi_withholding
|
||||
#: model:ir.model.fields.selection,name:l10n_it_edi_withholding.selection__account_tax__l10n_it_pension_fund_type__tc07
|
||||
#: model:ir.model.fields.selection,name:l10n_it_edi_withholding.selection__account_tax_template__l10n_it_pension_fund_type__tc07
|
||||
msgid "ENASARCO pension fund for sales agents"
|
||||
msgstr ""
|
||||
"Ente nazionale assistenza agenti e rappresentanti di commercio (ENASARCO)"
|
||||
|
||||
#. module: l10n_it_edi_withholding
|
||||
#: model:ir.model.fields.selection,name:l10n_it_edi_withholding.selection__account_tax__l10n_it_pension_fund_type__tc19
|
||||
#: model:ir.model.fields.selection,name:l10n_it_edi_withholding.selection__account_tax_template__l10n_it_pension_fund_type__tc19
|
||||
msgid "ENPAB national pension fund for biologists"
|
||||
msgstr "Ente nazionale previdenza e assistenza biologi (ENPAB)"
|
||||
|
||||
#. module: l10n_it_edi_withholding
|
||||
#: model:ir.model.fields.selection,name:l10n_it_edi_withholding.selection__account_tax__l10n_it_pension_fund_type__tc08
|
||||
#: model:ir.model.fields.selection,name:l10n_it_edi_withholding.selection__account_tax_template__l10n_it_pension_fund_type__tc08
|
||||
msgid "ENPACL pension fund for labor consultants"
|
||||
msgstr "Ente nazionale previdenza e assistenza consulenti del lavoro (ENPACL)"
|
||||
|
||||
#. module: l10n_it_edi_withholding
|
||||
#: model:ir.model.fields.selection,name:l10n_it_edi_withholding.selection__account_tax__l10n_it_pension_fund_type__tc10
|
||||
#: model:ir.model.fields.selection,name:l10n_it_edi_withholding.selection__account_tax_template__l10n_it_pension_fund_type__tc10
|
||||
msgid "ENPAF pension fund for chemists"
|
||||
msgstr "Ente nazionale previdenza e assistenza farmacisti (ENPAF)"
|
||||
|
||||
#. module: l10n_it_edi_withholding
|
||||
#: model:ir.model.fields.selection,name:l10n_it_edi_withholding.selection__account_tax__l10n_it_pension_fund_type__tc12
|
||||
#: model:ir.model.fields.selection,name:l10n_it_edi_withholding.selection__account_tax_template__l10n_it_pension_fund_type__tc12
|
||||
msgid "ENPAIA pension fund for people working in agriculture"
|
||||
msgstr ""
|
||||
"Ente nazionale previdenza e assistenza impiegati dell'agricoltura (ENPAIA)"
|
||||
|
||||
#. module: l10n_it_edi_withholding
|
||||
#: model:ir.model.fields.selection,name:l10n_it_edi_withholding.selection__account_tax__l10n_it_pension_fund_type__tc09
|
||||
#: model:ir.model.fields.selection,name:l10n_it_edi_withholding.selection__account_tax_template__l10n_it_pension_fund_type__tc09
|
||||
msgid "ENPAM pension fund for doctors"
|
||||
msgstr "Ente nazionale previdenza e assistenza medici (ENPAM)"
|
||||
|
||||
#. module: l10n_it_edi_withholding
|
||||
#: model:ir.model.fields.selection,name:l10n_it_edi_withholding.selection__account_tax__l10n_it_pension_fund_type__tc21
|
||||
#: model:ir.model.fields.selection,name:l10n_it_edi_withholding.selection__account_tax_template__l10n_it_pension_fund_type__tc21
|
||||
msgid "ENPAP national pension fund for psychologists"
|
||||
msgstr "Ente nazionale previdenza e assistenza psicologi (ENPAP)"
|
||||
|
||||
#. module: l10n_it_edi_withholding
|
||||
#: model:ir.model.fields.selection,name:l10n_it_edi_withholding.selection__account_tax__l10n_it_pension_fund_type__tc20
|
||||
#: model:ir.model.fields.selection,name:l10n_it_edi_withholding.selection__account_tax_template__l10n_it_pension_fund_type__tc20
|
||||
msgid "ENPAPI national pension fund for nurses"
|
||||
msgstr ""
|
||||
"Ente nazionale previdenza e assistenza professione infermieristica (ENPAPI)"
|
||||
|
||||
#. module: l10n_it_edi_withholding
|
||||
#: model:ir.model.fields.selection,name:l10n_it_edi_withholding.selection__account_tax__l10n_it_pension_fund_type__tc11
|
||||
#: model:ir.model.fields.selection,name:l10n_it_edi_withholding.selection__account_tax_template__l10n_it_pension_fund_type__tc11
|
||||
msgid "ENPAV pension fund for veterinaries"
|
||||
msgstr "Ente nazionale previdenza e assistenza veterinari (ENPAV)"
|
||||
|
||||
#. module: l10n_it_edi_withholding
|
||||
#: model:ir.model.fields.selection,name:l10n_it_edi_withholding.selection__account_tax__l10n_it_pension_fund_type__tc18
|
||||
#: model:ir.model.fields.selection,name:l10n_it_edi_withholding.selection__account_tax_template__l10n_it_pension_fund_type__tc18
|
||||
msgid "EPAP pension fund"
|
||||
msgstr "Ente previdenza e assistenza pluricategoriale (EPAP)"
|
||||
|
||||
#. module: l10n_it_edi_withholding
|
||||
#: model:ir.model.fields.selection,name:l10n_it_edi_withholding.selection__account_tax__l10n_it_pension_fund_type__tc17
|
||||
#: model:ir.model.fields.selection,name:l10n_it_edi_withholding.selection__account_tax_template__l10n_it_pension_fund_type__tc17
|
||||
msgid "EPPI pension fund for industrial experts"
|
||||
msgstr ""
|
||||
"Ente previdenza periti industriali e periti industriali laureati (EPPI)"
|
||||
|
||||
#. module: l10n_it_edi_withholding
|
||||
#: model:account.tax.group,name:l10n_it_edi_withholding.tax_group_enasarco
|
||||
msgid "Enasarco"
|
||||
msgstr ""
|
||||
|
||||
#. module: l10n_it_edi_withholding
|
||||
#: model:ir.model.fields.selection,name:l10n_it_edi_withholding.selection__account_tax__l10n_it_pension_fund_type__tc14
|
||||
#: model:ir.model.fields.selection,name:l10n_it_edi_withholding.selection__account_tax_template__l10n_it_pension_fund_type__tc14
|
||||
msgid "INPGI pension fund for journalists"
|
||||
msgstr "Istituto nazionale previdenza giornalisti italiani (INPGI)"
|
||||
|
||||
#. module: l10n_it_edi_withholding
|
||||
#: model:ir.model.fields.selection,name:l10n_it_edi_withholding.selection__account_tax__l10n_it_pension_fund_type__tc22
|
||||
#: model:ir.model.fields.selection,name:l10n_it_edi_withholding.selection__account_tax_template__l10n_it_pension_fund_type__tc22
|
||||
msgid "INPS national pension fund"
|
||||
msgstr "Fondo pensione nazionale (INPS)"
|
||||
|
||||
#. module: l10n_it_edi_withholding
|
||||
#: model:ir.model.fields,help:l10n_it_edi_withholding.field_account_tax_group__preceding_subtotal
|
||||
msgid ""
|
||||
"If set, this value will be used on documents as the label of a subtotal "
|
||||
"excluding this tax group before displaying it. If not set, the tax group "
|
||||
"will be displayed after the 'Untaxed amount' subtotal."
|
||||
msgstr ""
|
||||
|
||||
#. module: l10n_it_edi_withholding
|
||||
#: model:ir.model,name:l10n_it_edi_withholding.model_account_move
|
||||
msgid "Journal Entry"
|
||||
msgstr "Movimento Contabile"
|
||||
|
||||
#. module: l10n_it_edi_withholding
|
||||
#: model:ir.model.fields.selection,name:l10n_it_edi_withholding.selection__account_tax__l10n_it_pension_fund_type__tc04
|
||||
#: model:ir.model.fields.selection,name:l10n_it_edi_withholding.selection__account_tax_template__l10n_it_pension_fund_type__tc04
|
||||
msgid "National pension fund for associated engineers and architects"
|
||||
msgstr ""
|
||||
"Cassa nazionale previdenza e assistenza ingegneri e architetti liberi "
|
||||
"professionisti"
|
||||
|
||||
#. module: l10n_it_edi_withholding
|
||||
#: model:ir.model.fields.selection,name:l10n_it_edi_withholding.selection__account_tax__l10n_it_pension_fund_type__tc01
|
||||
#: model:ir.model.fields.selection,name:l10n_it_edi_withholding.selection__account_tax_template__l10n_it_pension_fund_type__tc01
|
||||
msgid "National pension fund for lawyers and solicitors"
|
||||
msgstr "Cassa nazionale previdenza e assistenza avvocati e procuratori legali"
|
||||
|
||||
#. module: l10n_it_edi_withholding
|
||||
#: model:ir.model.fields.selection,name:l10n_it_edi_withholding.selection__account_tax__l10n_it_pension_fund_type__tc05
|
||||
#: model:ir.model.fields.selection,name:l10n_it_edi_withholding.selection__account_tax_template__l10n_it_pension_fund_type__tc05
|
||||
msgid "National pension fund for notaries"
|
||||
msgstr "Cassa nazionale del notariato"
|
||||
|
||||
#. module: l10n_it_edi_withholding
|
||||
#: model:ir.model.fields.selection,name:l10n_it_edi_withholding.selection__account_tax__l10n_it_pension_fund_type__tc15
|
||||
#: model:ir.model.fields.selection,name:l10n_it_edi_withholding.selection__account_tax_template__l10n_it_pension_fund_type__tc15
|
||||
msgid "ONAOSI fund for sanitary orphans"
|
||||
msgstr "Opera nazionale assistenza orfani sanitari italiani (ONAOSI)"
|
||||
|
||||
#. module: l10n_it_edi_withholding
|
||||
#: model:account.tax.group,name:l10n_it_edi_withholding.tax_group_pension_fund
|
||||
#: model:ir.model.fields,field_description:l10n_it_edi_withholding.field_account_bank_statement_line__l10n_it_amount_pension_fund_signed
|
||||
#: model:ir.model.fields,field_description:l10n_it_edi_withholding.field_account_move__l10n_it_amount_pension_fund_signed
|
||||
#: model:ir.model.fields,field_description:l10n_it_edi_withholding.field_account_payment__l10n_it_amount_pension_fund_signed
|
||||
#: model_terms:ir.ui.view,arch_db:l10n_it_edi_withholding.view_invoice_tree_l10n_it_edi_extended
|
||||
msgid "Pension Fund"
|
||||
msgstr "Cassa previdenziale"
|
||||
|
||||
#. module: l10n_it_edi_withholding
|
||||
#: model:account.tax.group,preceding_subtotal:l10n_it_edi_withholding.tax_group_pension_fund
|
||||
msgid "Pension Fund Excluded"
|
||||
msgstr "Cassa Previdenziale Esclusa"
|
||||
|
||||
#. module: l10n_it_edi_withholding
|
||||
#: model:ir.model.fields,help:l10n_it_edi_withholding.field_account_tax__l10n_it_pension_fund_type
|
||||
#: model:ir.model.fields,help:l10n_it_edi_withholding.field_account_tax_template__l10n_it_pension_fund_type
|
||||
msgid "Pension Fund Type. Only for Italian accounting EDI."
|
||||
msgstr "Tipo di Cassa Previdenziale. Solo per la contabilità italiana."
|
||||
|
||||
#. module: l10n_it_edi_withholding
|
||||
#. odoo-python
|
||||
#: code:addons/l10n_it_edi_withholding/models/account_edi_format.py:0
|
||||
#, python-format
|
||||
msgid "Pension Fund tax not found"
|
||||
msgstr "Contributo Cassa Previdenziale non trovato"
|
||||
|
||||
#. module: l10n_it_edi_withholding
|
||||
#: model:ir.model.fields.selection,name:l10n_it_edi_withholding.selection__account_tax__l10n_it_pension_fund_type__tc02
|
||||
#: model:ir.model.fields.selection,name:l10n_it_edi_withholding.selection__account_tax_template__l10n_it_pension_fund_type__tc02
|
||||
msgid "Pension fund for accountants with a degree"
|
||||
msgstr "Cassa previdenza dottori commercialisti"
|
||||
|
||||
#. module: l10n_it_edi_withholding
|
||||
#: model:ir.model.fields.selection,name:l10n_it_edi_withholding.selection__account_tax__l10n_it_pension_fund_type__tc06
|
||||
#: model:ir.model.fields.selection,name:l10n_it_edi_withholding.selection__account_tax_template__l10n_it_pension_fund_type__tc06
|
||||
msgid "Pension fund for accountants without a degree and commercial experts"
|
||||
msgstr ""
|
||||
"Cassa nazionale previdenza e assistenza ragionieri e periti commerciali"
|
||||
|
||||
#. module: l10n_it_edi_withholding
|
||||
#: model:ir.model.fields.selection,name:l10n_it_edi_withholding.selection__account_tax__l10n_it_pension_fund_type__tc13
|
||||
#: model:ir.model.fields.selection,name:l10n_it_edi_withholding.selection__account_tax_template__l10n_it_pension_fund_type__tc13
|
||||
msgid "Pension fund for employees in delivery and marine agencies"
|
||||
msgstr "Fondo previdenza impiegati imprese di spedizione e agenzie marittime"
|
||||
|
||||
#. module: l10n_it_edi_withholding
|
||||
#: model:ir.model.fields.selection,name:l10n_it_edi_withholding.selection__account_tax__l10n_it_pension_fund_type__tc03
|
||||
#: model:ir.model.fields.selection,name:l10n_it_edi_withholding.selection__account_tax_template__l10n_it_pension_fund_type__tc03
|
||||
msgid "Pension fund for surveyors"
|
||||
msgstr "Cassa previdenza e assistenza geometri"
|
||||
|
||||
#. module: l10n_it_edi_withholding
|
||||
#: model:ir.model.fields,field_description:l10n_it_edi_withholding.field_account_tax__l10n_it_pension_fund_type
|
||||
#: model:ir.model.fields,field_description:l10n_it_edi_withholding.field_account_tax_template__l10n_it_pension_fund_type
|
||||
msgid "Pension fund type (Italy)"
|
||||
msgstr "Tipo di Cassa Previdenziale (Italia)"
|
||||
|
||||
#. module: l10n_it_edi_withholding
|
||||
#: model:ir.model.fields,field_description:l10n_it_edi_withholding.field_account_tax_group__preceding_subtotal
|
||||
msgid "Preceding Subtotal"
|
||||
msgstr "Subtotale precedente"
|
||||
|
||||
#. module: l10n_it_edi_withholding
|
||||
#: model_terms:ir.ui.view,arch_db:l10n_it_edi_withholding.account_invoice_it_FatturaPA_export_withholding
|
||||
#: model_terms:ir.ui.view,arch_db:l10n_it_edi_withholding.account_invoice_line_it_FatturaPA_withholding
|
||||
msgid "SI"
|
||||
msgstr ""
|
||||
|
||||
#. module: l10n_it_edi_withholding
|
||||
#: model:ir.model,name:l10n_it_edi_withholding.model_account_tax
|
||||
msgid "Tax"
|
||||
msgstr "Imposta"
|
||||
|
||||
#. module: l10n_it_edi_withholding
|
||||
#. odoo-python
|
||||
#: code:addons/l10n_it_edi_withholding/models/account_tax.py:0
|
||||
#, python-format
|
||||
msgid ""
|
||||
"Tax '%s' cannot be both a Withholding tax and a Pension fund tax. Please "
|
||||
"create two separate ones."
|
||||
msgstr ""
|
||||
"'%s' non puo essere sia una Ritenuta che un Contributo Cassa Previdenziale. "
|
||||
"Per favore, crea due Imposte separate."
|
||||
|
||||
#. module: l10n_it_edi_withholding
|
||||
#. odoo-python
|
||||
#: code:addons/l10n_it_edi_withholding/models/account_tax.py:0
|
||||
#, python-format
|
||||
msgid ""
|
||||
"Tax '%s' has a withholding reason, so the withholding type must also be "
|
||||
"specified"
|
||||
msgstr ""
|
||||
"'%s' ha una Causale Ritenuta, quindi dev'essere specificato anche il Tipo "
|
||||
"Ritenuta"
|
||||
|
||||
#. module: l10n_it_edi_withholding
|
||||
#. odoo-python
|
||||
#: code:addons/l10n_it_edi_withholding/models/account_tax.py:0
|
||||
#, python-format
|
||||
msgid "Tax '%s' has a withholding type so the amount must be negative."
|
||||
msgstr "'%s' ha un Tipo Ritenuta, quindi l'ammontare dev'essere negativo."
|
||||
|
||||
#. module: l10n_it_edi_withholding
|
||||
#. odoo-python
|
||||
#: code:addons/l10n_it_edi_withholding/models/account_tax.py:0
|
||||
#, python-format
|
||||
msgid ""
|
||||
"Tax '%s' has a withholding type, so the withholding reason must also be "
|
||||
"specified"
|
||||
msgstr ""
|
||||
"'%s' ha un Tipo Ritenuta, quindi dev'essere specificata anche una Causale "
|
||||
"Ritenuta"
|
||||
|
||||
#. module: l10n_it_edi_withholding
|
||||
#: model:ir.model,name:l10n_it_edi_withholding.model_account_tax_group
|
||||
msgid "Tax Group"
|
||||
msgstr "Gruppo imposta"
|
||||
|
||||
#. module: l10n_it_edi_withholding
|
||||
#: model:ir.model,name:l10n_it_edi_withholding.model_account_tax_template
|
||||
msgid "Templates for Taxes"
|
||||
msgstr "Modelli per imposte"
|
||||
|
||||
#. module: l10n_it_edi_withholding
|
||||
#: model:account.report.column,name:l10n_it_edi_withholding.withh_tax_report_balance
|
||||
#: model_terms:ir.ui.view,arch_db:l10n_it_edi_withholding.view_invoice_tree_l10n_it_edi_extended
|
||||
msgid "Total"
|
||||
msgstr "Totale"
|
||||
|
||||
#. module: l10n_it_edi_withholding
|
||||
#: model:account.tax.group,preceding_subtotal:l10n_it_edi_withholding.tax_group_withholding
|
||||
msgid "Total Before Withholding"
|
||||
msgstr "Totale Ritenute Escluse"
|
||||
|
||||
#. module: l10n_it_edi_withholding
|
||||
#: model:ir.model.fields,field_description:l10n_it_edi_withholding.field_account_bank_statement_line__l10n_it_amount_vat_signed
|
||||
#: model:ir.model.fields,field_description:l10n_it_edi_withholding.field_account_move__l10n_it_amount_vat_signed
|
||||
#: model:ir.model.fields,field_description:l10n_it_edi_withholding.field_account_payment__l10n_it_amount_vat_signed
|
||||
#: model_terms:ir.ui.view,arch_db:l10n_it_edi_withholding.view_invoice_tree_l10n_it_edi_extended
|
||||
msgid "VAT"
|
||||
msgstr "IVA"
|
||||
|
||||
#. module: l10n_it_edi_withholding
|
||||
#: model:account.tax.group,name:l10n_it_edi_withholding.tax_group_withholding
|
||||
#: model:ir.model.fields,field_description:l10n_it_edi_withholding.field_account_bank_statement_line__l10n_it_amount_withholding_signed
|
||||
#: model:ir.model.fields,field_description:l10n_it_edi_withholding.field_account_move__l10n_it_amount_withholding_signed
|
||||
#: model:ir.model.fields,field_description:l10n_it_edi_withholding.field_account_payment__l10n_it_amount_withholding_signed
|
||||
#: model_terms:ir.ui.view,arch_db:l10n_it_edi_withholding.view_invoice_tree_l10n_it_edi_extended
|
||||
msgid "Withholding"
|
||||
msgstr "Ritenuta"
|
||||
|
||||
#. module: l10n_it_edi_withholding
|
||||
#: model:account.report.line,name:l10n_it_edi_withholding.withh_purchase_tax_report_it_line
|
||||
msgid "Withholding Amount (Purchase)"
|
||||
msgstr "Ritenute Operate (Acquisti)"
|
||||
|
||||
#. module: l10n_it_edi_withholding
|
||||
#: model:account.report.line,name:l10n_it_edi_withholding.withh_sale_tax_report_it_line
|
||||
msgid "Withholding Amount (Sales)"
|
||||
msgstr "Ritenute Subite (Vendite)"
|
||||
|
||||
#. module: l10n_it_edi_withholding
|
||||
#: model:account.report,name:l10n_it_edi_withholding.withh_tax_report_it
|
||||
msgid "Withholding Report"
|
||||
msgstr "Riepilogo Ritenute"
|
||||
|
||||
#. module: l10n_it_edi_withholding
|
||||
#. odoo-python
|
||||
#: code:addons/l10n_it_edi_withholding/models/account_edi_format.py:0
|
||||
#, python-format
|
||||
msgid "Withholding tax not found"
|
||||
msgstr "Ritenuta non trovata"
|
||||
|
||||
#. module: l10n_it_edi_withholding
|
||||
#: model:ir.model.fields,field_description:l10n_it_edi_withholding.field_account_tax__l10n_it_withholding_reason
|
||||
#: model:ir.model.fields,field_description:l10n_it_edi_withholding.field_account_tax_template__l10n_it_withholding_reason
|
||||
msgid "Withholding tax reason (Italy)"
|
||||
msgstr "Causale Ritenuta (Italia)"
|
||||
|
||||
#. module: l10n_it_edi_withholding
|
||||
#: model:ir.model.fields,help:l10n_it_edi_withholding.field_account_tax__l10n_it_withholding_reason
|
||||
#: model:ir.model.fields,help:l10n_it_edi_withholding.field_account_tax_template__l10n_it_withholding_reason
|
||||
msgid "Withholding tax reason. Only for Italian accounting EDI."
|
||||
msgstr "Causale Ritenuta. Solo per la contabilità itlaliana."
|
||||
|
||||
#. module: l10n_it_edi_withholding
|
||||
#: model:ir.model.fields,field_description:l10n_it_edi_withholding.field_account_tax__l10n_it_withholding_type
|
||||
#: model:ir.model.fields,field_description:l10n_it_edi_withholding.field_account_tax_template__l10n_it_withholding_type
|
||||
msgid "Withholding tax type (Italy)"
|
||||
msgstr "Tipo Ritenuta (Italia)"
|
||||
|
||||
#. module: l10n_it_edi_withholding
|
||||
#: model:ir.model.fields,help:l10n_it_edi_withholding.field_account_tax__l10n_it_withholding_type
|
||||
#: model:ir.model.fields,help:l10n_it_edi_withholding.field_account_tax_template__l10n_it_withholding_type
|
||||
msgid "Withholding tax type. Only for Italian accounting EDI."
|
||||
msgstr "Tipo Ritenuta. Solo per la contabilità italiana."
|
||||
|
||||
#. module: l10n_it_edi_withholding
|
||||
#: model:ir.model.fields.selection,name:l10n_it_edi_withholding.selection__account_tax__l10n_it_withholding_reason__a
|
||||
#: model:ir.model.fields.selection,name:l10n_it_edi_withholding.selection__account_tax_template__l10n_it_withholding_reason__a
|
||||
msgid "[A] Autonomous work in the fields of art or profession"
|
||||
msgstr ""
|
||||
"[A] Prestazioni di lavoro autonomo rientranti nell’esercizio di arte o "
|
||||
"professione abituale"
|
||||
|
||||
#. module: l10n_it_edi_withholding
|
||||
#: model:ir.model.fields.selection,name:l10n_it_edi_withholding.selection__account_tax__l10n_it_withholding_reason__b
|
||||
#: model:ir.model.fields.selection,name:l10n_it_edi_withholding.selection__account_tax_template__l10n_it_withholding_reason__b
|
||||
msgid ""
|
||||
"[B] Income from the use of intellectual properties or patents or processes, "
|
||||
"formulas and informations in the fields of science, commerce or science"
|
||||
msgstr ""
|
||||
"[B] Utilizzazione economica, da parte dell’autore o dell’inventore, di opere"
|
||||
" dell’ingegno, di brevetti industriali e di processi, relativi a esperienze "
|
||||
"acquisite in campo industriale, commerciale o scientifico"
|
||||
|
||||
#. module: l10n_it_edi_withholding
|
||||
#: model:ir.model.fields.selection,name:l10n_it_edi_withholding.selection__account_tax__l10n_it_withholding_reason__c
|
||||
#: model:ir.model.fields.selection,name:l10n_it_edi_withholding.selection__account_tax_template__l10n_it_withholding_reason__c
|
||||
msgid ""
|
||||
"[C] Income from work as part of association groups or other cooperation "
|
||||
"determined by contracts"
|
||||
msgstr ""
|
||||
"[C] Utili derivanti da contratti di associazione in partecipazione e da "
|
||||
"contratti di cointeressenza, quando l’apporto è costituito esclusivamente "
|
||||
"dalla prestazione di lavoro"
|
||||
|
||||
#. module: l10n_it_edi_withholding
|
||||
#: model:ir.model.fields.selection,name:l10n_it_edi_withholding.selection__account_tax__l10n_it_withholding_reason__d
|
||||
#: model:ir.model.fields.selection,name:l10n_it_edi_withholding.selection__account_tax_template__l10n_it_withholding_reason__d
|
||||
msgid "[D] Income as partner or founder of a corporation"
|
||||
msgstr ""
|
||||
"[D] Utili spettanti ai soci promotori e ai soci fondatori delle società di "
|
||||
"capitali"
|
||||
|
||||
#. module: l10n_it_edi_withholding
|
||||
#: model:ir.model.fields.selection,name:l10n_it_edi_withholding.selection__account_tax__l10n_it_withholding_reason__e
|
||||
#: model:ir.model.fields.selection,name:l10n_it_edi_withholding.selection__account_tax_template__l10n_it_withholding_reason__e
|
||||
msgid "[E] Income from client-related bill protests made by town secretaries"
|
||||
msgstr "[E] Levata di protesti cambiari da parte dei segretari comunali"
|
||||
|
||||
#. module: l10n_it_edi_withholding
|
||||
#: model:ir.model.fields.selection,name:l10n_it_edi_withholding.selection__account_tax__l10n_it_withholding_reason__g
|
||||
#: model:ir.model.fields.selection,name:l10n_it_edi_withholding.selection__account_tax_template__l10n_it_withholding_reason__g
|
||||
msgid "[G] Compensation for the end of a professional sport career"
|
||||
msgstr ""
|
||||
"[G] Indennità corrisposte per la cessazione di attività sportiva "
|
||||
"professionale"
|
||||
|
||||
#. module: l10n_it_edi_withholding
|
||||
#: model:ir.model.fields.selection,name:l10n_it_edi_withholding.selection__account_tax__l10n_it_withholding_reason__h
|
||||
#: model:ir.model.fields.selection,name:l10n_it_edi_withholding.selection__account_tax_template__l10n_it_withholding_reason__h
|
||||
msgid ""
|
||||
"[H] Compensation for the end of a societary career (excluded those earned "
|
||||
"before 31.12.2003) and already taxed"
|
||||
msgstr ""
|
||||
"[H] Indennità corrisposte per la cessazione dei rapporti di agenzia delle "
|
||||
"persone fisiche e delle società di persone, con esclusione delle somme "
|
||||
"maturate entro il 31.12.2003, già imputate per competenza"
|
||||
|
||||
#. module: l10n_it_edi_withholding
|
||||
#: model:ir.model.fields.selection,name:l10n_it_edi_withholding.selection__account_tax__l10n_it_withholding_reason__i
|
||||
#: model:ir.model.fields.selection,name:l10n_it_edi_withholding.selection__account_tax_template__l10n_it_withholding_reason__i
|
||||
msgid "[I] Compensation for the end of a notary career"
|
||||
msgstr "[I] Indennità corrisposte per la cessazione da funzioni notarili"
|
||||
|
||||
#. module: l10n_it_edi_withholding
|
||||
#: model:ir.model.fields.selection,name:l10n_it_edi_withholding.selection__account_tax__l10n_it_withholding_reason__k
|
||||
#: model:ir.model.fields.selection,name:l10n_it_edi_withholding.selection__account_tax_template__l10n_it_withholding_reason__k
|
||||
msgid "[K] Civil service checks, ref art. 16 D.lgs. n.40 6/03/2017"
|
||||
msgstr ""
|
||||
"[K] Assegni di servizio civile di cui all’art. 16 del D.lgs. n. 40 del 6 "
|
||||
"marzo 2017"
|
||||
|
||||
#. module: l10n_it_edi_withholding
|
||||
#: model:ir.model.fields.selection,name:l10n_it_edi_withholding.selection__account_tax__l10n_it_withholding_reason__l1
|
||||
#: model:ir.model.fields.selection,name:l10n_it_edi_withholding.selection__account_tax_template__l10n_it_withholding_reason__l1
|
||||
msgid ""
|
||||
"[L1] Income from the use of intellectual properties or patents or processes,"
|
||||
" formulas and informations in the fields of science, commerce or science, "
|
||||
"from someone who actively bought the use rights"
|
||||
msgstr ""
|
||||
"[L1] Redditi derivanti dall’utilizzazione economica di opere dell’ingegno, "
|
||||
"di brevetti industriali e di processi, che sono percepiti da soggetti che "
|
||||
"abbiano acquistato a titolo oneroso i diritti alla loro utilizzazione"
|
||||
|
||||
#. module: l10n_it_edi_withholding
|
||||
#: model:ir.model.fields.selection,name:l10n_it_edi_withholding.selection__account_tax__l10n_it_withholding_reason__l
|
||||
#: model:ir.model.fields.selection,name:l10n_it_edi_withholding.selection__account_tax_template__l10n_it_withholding_reason__l
|
||||
msgid ""
|
||||
"[L] Income from the use of intellectual properties or patents or processes, "
|
||||
"formulas and informations in the fields of science, commerce or science, but"
|
||||
" not made by the author/inventor"
|
||||
msgstr ""
|
||||
"[L] Utilizzazione economica, da parte di soggetto diverso dall’autore o "
|
||||
"dall’inventore, di opere dell’ingegno, di brevetti industriali e di "
|
||||
"processi, formule e informazioni relative a esperienze acquisite"
|
||||
|
||||
#. module: l10n_it_edi_withholding
|
||||
#: model:ir.model.fields.selection,name:l10n_it_edi_withholding.selection__account_tax__l10n_it_withholding_reason__m1
|
||||
#: model:ir.model.fields.selection,name:l10n_it_edi_withholding.selection__account_tax_template__l10n_it_withholding_reason__m1
|
||||
msgid "[M1] Incomes due for an obligation to act, not to act, or to allow"
|
||||
msgstr ""
|
||||
"[M1] Redditi derivanti dall’assunzione di obblighi di fare, di non fare o "
|
||||
"permettere"
|
||||
|
||||
#. module: l10n_it_edi_withholding
|
||||
#: model:ir.model.fields.selection,name:l10n_it_edi_withholding.selection__account_tax__l10n_it_withholding_reason__m2
|
||||
#: model:ir.model.fields.selection,name:l10n_it_edi_withholding.selection__account_tax_template__l10n_it_withholding_reason__m2
|
||||
msgid ""
|
||||
"[M2] Autonomous work which isn't part of usual professional/artistic duties,"
|
||||
" or incomes due for an obligation to act, not to act, or to allow - that "
|
||||
"require being registered to the \"Gestione separata\""
|
||||
msgstr ""
|
||||
"[M2] Prestazioni di lavoro autonomo non esercitate abitualmente per le quali"
|
||||
" sussiste l’obbligo di iscrizione alla Gestione Separata ENPAPI"
|
||||
|
||||
#. module: l10n_it_edi_withholding
|
||||
#: model:ir.model.fields.selection,name:l10n_it_edi_withholding.selection__account_tax__l10n_it_withholding_reason__m
|
||||
#: model:ir.model.fields.selection,name:l10n_it_edi_withholding.selection__account_tax_template__l10n_it_withholding_reason__m
|
||||
msgid ""
|
||||
"[M] Autonomous work which isn't part of usual professional/artistic duties, "
|
||||
"or incomes due for an obligation to act, not to act, or to allow"
|
||||
msgstr ""
|
||||
"[M] Prestazioni di lavoro autonomo non esercitate abitualmente, obblighi di "
|
||||
"fare, di non fare o permettere"
|
||||
|
||||
#. module: l10n_it_edi_withholding
|
||||
#: model:ir.model.fields.selection,name:l10n_it_edi_withholding.selection__account_tax__l10n_it_withholding_reason__n
|
||||
#: model:ir.model.fields.selection,name:l10n_it_edi_withholding.selection__account_tax_template__l10n_it_withholding_reason__n
|
||||
msgid ""
|
||||
"[N] Compensation for travel, expenses, prizes, or other compensations for "
|
||||
"amateur sport activities"
|
||||
msgstr ""
|
||||
"[N] Indennità di trasferta, rimborso forfettario di spese, premi e compensi "
|
||||
"erogati nell’esercizio diretto di attività sportive dilettantistiche"
|
||||
|
||||
#. module: l10n_it_edi_withholding
|
||||
#: model:ir.model.fields.selection,name:l10n_it_edi_withholding.selection__account_tax__l10n_it_withholding_reason__o1
|
||||
#: model:ir.model.fields.selection,name:l10n_it_edi_withholding.selection__account_tax_template__l10n_it_withholding_reason__o1
|
||||
msgid ""
|
||||
"[O1] Incomes due for an obligation to act, not to act, or to allow - that do"
|
||||
" not require being registered to the \"Gestione Separata\""
|
||||
msgstr ""
|
||||
"[O1] Redditi derivanti dall’assunzione di obblighi di fare, di non fare o "
|
||||
"permettere, per le quali non sussiste l’obbligo di iscrizione alla gestione "
|
||||
"separata (Circ. INPS n. 104/2001)"
|
||||
|
||||
#. module: l10n_it_edi_withholding
|
||||
#: model:ir.model.fields.selection,name:l10n_it_edi_withholding.selection__account_tax__l10n_it_withholding_reason__o
|
||||
#: model:ir.model.fields.selection,name:l10n_it_edi_withholding.selection__account_tax_template__l10n_it_withholding_reason__o
|
||||
msgid ""
|
||||
"[O] Autonomous work which isn't part of usual professional/artistic duties, "
|
||||
"or incomes due for an obligation to act, not to act, or to allow - that do "
|
||||
"not require being registered to the \"Gestione separata\""
|
||||
msgstr ""
|
||||
"[O] Prestazioni di lavoro autonomo non esercitate abitualmente, obblighi di "
|
||||
"fare, di non fare o permettere, per le quali non sussiste l’obbligo di "
|
||||
"iscrizione alla gestione separata (Circ. Inps 104/2001)"
|
||||
|
||||
#. module: l10n_it_edi_withholding
|
||||
#: model:ir.model.fields.selection,name:l10n_it_edi_withholding.selection__account_tax__l10n_it_withholding_reason__p
|
||||
#: model:ir.model.fields.selection,name:l10n_it_edi_withholding.selection__account_tax_template__l10n_it_withholding_reason__p
|
||||
msgid ""
|
||||
"[P] Compensation for people residing abroad for continuous use or concession"
|
||||
" of industrial machinery, commercial or scientific tools that are on the "
|
||||
"Italian soil"
|
||||
msgstr ""
|
||||
"[P] Compensi corrisposti a soggetti non residenti privi di stabile "
|
||||
"organizzazione per l’uso o la concessione in uso di attrezzature "
|
||||
"industriali, commerciali o scientifiche che si trovano nel territorio dello "
|
||||
"Stato"
|
||||
|
||||
#. module: l10n_it_edi_withholding
|
||||
#: model:ir.model.fields.selection,name:l10n_it_edi_withholding.selection__account_tax__l10n_it_withholding_reason__q
|
||||
#: model:ir.model.fields.selection,name:l10n_it_edi_withholding.selection__account_tax_template__l10n_it_withholding_reason__q
|
||||
msgid "[Q] Provisions for exclusive agents or sales representatives' work"
|
||||
msgstr ""
|
||||
"[Q] Provvigioni corrisposte ad agente o rappresentante di commercio "
|
||||
"monomandatario"
|
||||
|
||||
#. module: l10n_it_edi_withholding
|
||||
#: model:ir.model.fields.selection,name:l10n_it_edi_withholding.selection__account_tax__l10n_it_withholding_type__rt01
|
||||
#: model:ir.model.fields.selection,name:l10n_it_edi_withholding.selection__account_tax_template__l10n_it_withholding_type__rt01
|
||||
msgid "[RT01] Withholding for persons"
|
||||
msgstr "[RT01] Ritenuta persone fisiche"
|
||||
|
||||
#. module: l10n_it_edi_withholding
|
||||
#: model:ir.model.fields.selection,name:l10n_it_edi_withholding.selection__account_tax__l10n_it_withholding_type__rt02
|
||||
#: model:ir.model.fields.selection,name:l10n_it_edi_withholding.selection__account_tax_template__l10n_it_withholding_type__rt02
|
||||
msgid "[RT02] Withholding for personal businesses"
|
||||
msgstr "[RT02] Ritenuta persone giuridiche"
|
||||
|
||||
#. module: l10n_it_edi_withholding
|
||||
#: model:ir.model.fields.selection,name:l10n_it_edi_withholding.selection__account_tax__l10n_it_withholding_type__rt03
|
||||
#: model:ir.model.fields.selection,name:l10n_it_edi_withholding.selection__account_tax_template__l10n_it_withholding_type__rt03
|
||||
msgid "[RT03] INPS Pension fund contribution"
|
||||
msgstr "[RT04] Contributo INPS"
|
||||
|
||||
#. module: l10n_it_edi_withholding
|
||||
#: model:ir.model.fields.selection,name:l10n_it_edi_withholding.selection__account_tax__l10n_it_withholding_type__rt04
|
||||
#: model:ir.model.fields.selection,name:l10n_it_edi_withholding.selection__account_tax_template__l10n_it_withholding_type__rt04
|
||||
msgid "[RT04] ENASARCO pension fund contribution"
|
||||
msgstr "[RT04] Contributo ENASARCO"
|
||||
|
||||
#. module: l10n_it_edi_withholding
|
||||
#: model:ir.model.fields.selection,name:l10n_it_edi_withholding.selection__account_tax__l10n_it_withholding_type__rt05
|
||||
#: model:ir.model.fields.selection,name:l10n_it_edi_withholding.selection__account_tax_template__l10n_it_withholding_type__rt05
|
||||
msgid "[RT05] ENPAM pension fund contribution"
|
||||
msgstr "[RT05] Contributo ENPAM"
|
||||
|
||||
#. module: l10n_it_edi_withholding
|
||||
#: model:ir.model.fields.selection,name:l10n_it_edi_withholding.selection__account_tax__l10n_it_withholding_type__rt06
|
||||
#: model:ir.model.fields.selection,name:l10n_it_edi_withholding.selection__account_tax_template__l10n_it_withholding_type__rt06
|
||||
msgid "[RT06] Other pension fund contribution"
|
||||
msgstr "[RT06] Altro contributo previdenziale"
|
||||
|
||||
#. module: l10n_it_edi_withholding
|
||||
#: model:ir.model.fields.selection,name:l10n_it_edi_withholding.selection__account_tax__l10n_it_withholding_reason__r
|
||||
#: model:ir.model.fields.selection,name:l10n_it_edi_withholding.selection__account_tax_template__l10n_it_withholding_reason__r
|
||||
msgid "[R] Provisions for non-exclusive agents or sales representatives' work"
|
||||
msgstr ""
|
||||
"[R] Provvigioni corrisposte ad agente o rappresentante di commercio "
|
||||
"plurimandatario"
|
||||
|
||||
#. module: l10n_it_edi_withholding
|
||||
#: model:ir.model.fields.selection,name:l10n_it_edi_withholding.selection__account_tax__l10n_it_withholding_reason__s
|
||||
#: model:ir.model.fields.selection,name:l10n_it_edi_withholding.selection__account_tax_template__l10n_it_withholding_reason__s
|
||||
msgid "[S] Provisions for commissioner work"
|
||||
msgstr "[S] Provvigioni corrisposte a commissionario"
|
||||
|
||||
#. module: l10n_it_edi_withholding
|
||||
#: model:ir.model.fields.selection,name:l10n_it_edi_withholding.selection__account_tax__l10n_it_withholding_reason__t
|
||||
#: model:ir.model.fields.selection,name:l10n_it_edi_withholding.selection__account_tax_template__l10n_it_withholding_reason__t
|
||||
msgid "[T] Provisions for mediator work"
|
||||
msgstr "[T] Provvigioni corrisposte a mediatore"
|
||||
|
||||
#. module: l10n_it_edi_withholding
|
||||
#: model:ir.model.fields.selection,name:l10n_it_edi_withholding.selection__account_tax__l10n_it_withholding_reason__u
|
||||
#: model:ir.model.fields.selection,name:l10n_it_edi_withholding.selection__account_tax_template__l10n_it_withholding_reason__u
|
||||
msgid "[U] Provisions for procurer work"
|
||||
msgstr "[U] Provvigioni corrisposte a procacciatore di affari"
|
||||
|
||||
#. module: l10n_it_edi_withholding
|
||||
#: model:ir.model.fields.selection,name:l10n_it_edi_withholding.selection__account_tax__l10n_it_withholding_reason__v1
|
||||
#: model:ir.model.fields.selection,name:l10n_it_edi_withholding.selection__account_tax_template__l10n_it_withholding_reason__v1
|
||||
msgid ""
|
||||
"[V1] Income from unusual commercial activities (such as provisions for "
|
||||
"occasional work or sales representative, mediator, procurer)"
|
||||
msgstr ""
|
||||
"[V1] Redditi derivanti da attività commerciali non esercitate abitualmente "
|
||||
"(ad esempio, provvigioni corrisposte per prestazioni occasionali ad agente o"
|
||||
" rappresentante di commercio, mediatore, procacciatore d’affari);"
|
||||
|
||||
#. module: l10n_it_edi_withholding
|
||||
#: model:ir.model.fields.selection,name:l10n_it_edi_withholding.selection__account_tax__l10n_it_withholding_reason__v2
|
||||
#: model:ir.model.fields.selection,name:l10n_it_edi_withholding.selection__account_tax_template__l10n_it_withholding_reason__v2
|
||||
msgid ""
|
||||
"[V2] Income from unusual work activities from door-to-door sales "
|
||||
"representatives"
|
||||
msgstr ""
|
||||
"[V2] Redditi derivanti dalle prestazioni non esercitate abitualmente rese "
|
||||
"dagli incaricati alla vendita diretta a domicilio;"
|
||||
|
||||
#. module: l10n_it_edi_withholding
|
||||
#: model:ir.model.fields.selection,name:l10n_it_edi_withholding.selection__account_tax__l10n_it_withholding_reason__v
|
||||
#: model:ir.model.fields.selection,name:l10n_it_edi_withholding.selection__account_tax_template__l10n_it_withholding_reason__v
|
||||
msgid ""
|
||||
"[V] Provisions for door-to-door sales persons and newspaper selling in "
|
||||
"kiosks"
|
||||
msgstr ""
|
||||
"[V] Provvigioni corrisposte a incaricato per le vendite a domicilio e "
|
||||
"provvigioni corrisposte a incaricato per la vendita porta a porta e per la "
|
||||
"vendita ambulante di giornali quotidiani e periodici (L. 25.02.1987, n. 67)"
|
||||
|
||||
#. module: l10n_it_edi_withholding
|
||||
#: model:ir.model.fields.selection,name:l10n_it_edi_withholding.selection__account_tax__l10n_it_withholding_reason__w
|
||||
#: model:ir.model.fields.selection,name:l10n_it_edi_withholding.selection__account_tax_template__l10n_it_withholding_reason__w
|
||||
msgid ""
|
||||
"[W] Income from 2015 tinders subject to law art. 25-ter D.P.R. 600/1973"
|
||||
msgstr ""
|
||||
"[W] Corrispettivi erogati nel 2015 per prestazioni relative a contratti "
|
||||
"d’appalto cui si sono resi applicabili le disposizioni contenute nell’art "
|
||||
"25-ter D.P.R. 600/1973"
|
||||
|
||||
#. module: l10n_it_edi_withholding
|
||||
#: model:ir.model.fields.selection,name:l10n_it_edi_withholding.selection__account_tax__l10n_it_withholding_reason__x
|
||||
#: model:ir.model.fields.selection,name:l10n_it_edi_withholding.selection__account_tax_template__l10n_it_withholding_reason__x
|
||||
msgid ""
|
||||
"[X] Income from 2014 for foreign companies or institutions subject to law "
|
||||
"art. 26-quater, c. 1, lett. a) and b) D.P.R. 600/1973"
|
||||
msgstr ""
|
||||
"[X] Canoni corrisposti nel 2004 da società o enti residenti, ovvero da "
|
||||
"stabili organizzazioni di società estere di cui all’art. 26-quater, c. 1, "
|
||||
"lett. a) e b) D.P.R. 600/1973"
|
||||
|
||||
#. module: l10n_it_edi_withholding
|
||||
#: model:ir.model.fields.selection,name:l10n_it_edi_withholding.selection__account_tax__l10n_it_withholding_reason__y
|
||||
#: model:ir.model.fields.selection,name:l10n_it_edi_withholding.selection__account_tax_template__l10n_it_withholding_reason__y
|
||||
msgid ""
|
||||
"[Y] Income from 1.01.2005 to 26.07.2005 from companies or institutions not "
|
||||
"included in the description above"
|
||||
msgstr ""
|
||||
"[Y] Canoni corrisposti dal 1.01.2005 al 26.07.2005 da soggetti di cui al "
|
||||
"punto precedente"
|
||||
|
||||
#. module: l10n_it_edi_withholding
|
||||
#: model:ir.model.fields.selection,name:l10n_it_edi_withholding.selection__account_tax__l10n_it_withholding_reason__zo
|
||||
#: model:ir.model.fields.selection,name:l10n_it_edi_withholding.selection__account_tax_template__l10n_it_withholding_reason__zo
|
||||
msgid "[ZO] Other reason"
|
||||
msgstr "[Z0] Titolo diverso dai precedenti"
|
||||
|
||||
#. module: l10n_it_edi_withholding
|
||||
#: model:ir.model.fields.selection,name:l10n_it_edi_withholding.selection__account_tax__l10n_it_withholding_reason__z
|
||||
#: model:ir.model.fields.selection,name:l10n_it_edi_withholding.selection__account_tax_template__l10n_it_withholding_reason__z
|
||||
msgid "[Z] Deprecated"
|
||||
msgstr "[Z] Obsoleto"
|
||||
|
|
@ -0,0 +1,653 @@
|
|||
# Translation of Odoo Server.
|
||||
# This file contains the translation of the following modules:
|
||||
# * l10n_it_edi_withholding
|
||||
#
|
||||
msgid ""
|
||||
msgstr ""
|
||||
"Project-Id-Version: Odoo Server 16.0+e\n"
|
||||
"Report-Msgid-Bugs-To: \n"
|
||||
"POT-Creation-Date: 2023-01-26 11:16+0000\n"
|
||||
"PO-Revision-Date: 2023-01-26 11:16+0000\n"
|
||||
"Last-Translator: \n"
|
||||
"Language-Team: \n"
|
||||
"MIME-Version: 1.0\n"
|
||||
"Content-Type: text/plain; charset=UTF-8\n"
|
||||
"Content-Transfer-Encoding: \n"
|
||||
"Plural-Forms: \n"
|
||||
|
||||
#. module: l10n_it_edi_withholding
|
||||
#: model:ir.model,name:l10n_it_edi_withholding.model_account_chart_template
|
||||
msgid "Account Chart Template"
|
||||
msgstr ""
|
||||
|
||||
#. module: l10n_it_edi_withholding
|
||||
#: model_terms:ir.ui.view,arch_db:l10n_it_edi_withholding.view_invoice_tree_l10n_it_edi_extended
|
||||
msgid "All Taxes Included"
|
||||
msgstr ""
|
||||
|
||||
#. module: l10n_it_edi_withholding
|
||||
#: model:ir.model.fields,field_description:l10n_it_edi_withholding.field_account_bank_statement_line__l10n_it_amount_before_withholding_signed
|
||||
#: model:ir.model.fields,field_description:l10n_it_edi_withholding.field_account_move__l10n_it_amount_before_withholding_signed
|
||||
#: model:ir.model.fields,field_description:l10n_it_edi_withholding.field_account_payment__l10n_it_amount_before_withholding_signed
|
||||
msgid "All taxes included"
|
||||
msgstr ""
|
||||
|
||||
#. module: l10n_it_edi_withholding
|
||||
#. odoo-python
|
||||
#: code:addons/l10n_it_edi_withholding/models/account_edi_format.py:0
|
||||
#, python-format
|
||||
msgid ""
|
||||
"Bad tax configuration for line %s, there must be one Withholding tax and one"
|
||||
" Pension Fund tax at max."
|
||||
msgstr ""
|
||||
|
||||
#. module: l10n_it_edi_withholding
|
||||
#. odoo-python
|
||||
#: code:addons/l10n_it_edi_withholding/models/account_edi_format.py:0
|
||||
#, python-format
|
||||
msgid ""
|
||||
"Bad tax configuration for line %s, there must be one and only one VAT tax "
|
||||
"per line"
|
||||
msgstr ""
|
||||
|
||||
#. module: l10n_it_edi_withholding
|
||||
#: model:ir.model.fields.selection,name:l10n_it_edi_withholding.selection__account_tax__l10n_it_pension_fund_type__tc16
|
||||
#: model:ir.model.fields.selection,name:l10n_it_edi_withholding.selection__account_tax_template__l10n_it_pension_fund_type__tc16
|
||||
msgid "CASAGIT Additional pension fund for journalists"
|
||||
msgstr ""
|
||||
|
||||
#. module: l10n_it_edi_withholding
|
||||
#: model_terms:ir.ui.view,arch_db:l10n_it_edi_withholding.account_invoice_line_it_FatturaPA_withholding
|
||||
msgid "CASSA-PREV"
|
||||
msgstr ""
|
||||
|
||||
#. module: l10n_it_edi_withholding
|
||||
#: model:ir.model,name:l10n_it_edi_withholding.model_account_edi_format
|
||||
msgid "EDI format"
|
||||
msgstr ""
|
||||
|
||||
#. module: l10n_it_edi_withholding
|
||||
#: model:account.report.line,name:l10n_it_edi_withholding.enasarco_purchase_tax_report_it_line
|
||||
msgid "ENASARCO Amount (Purchase)"
|
||||
msgstr ""
|
||||
|
||||
#. module: l10n_it_edi_withholding
|
||||
#: model:account.report.line,name:l10n_it_edi_withholding.enasarco_sale_tax_report_it_line
|
||||
msgid "ENASARCO Amount (Sales)"
|
||||
msgstr ""
|
||||
|
||||
#. module: l10n_it_edi_withholding
|
||||
#: model:account.tax.group,preceding_subtotal:l10n_it_edi_withholding.tax_group_enasarco
|
||||
msgid "ENASARCO Excluded"
|
||||
msgstr ""
|
||||
|
||||
#. module: l10n_it_edi_withholding
|
||||
#: model:ir.model.fields.selection,name:l10n_it_edi_withholding.selection__account_tax__l10n_it_pension_fund_type__tc07
|
||||
#: model:ir.model.fields.selection,name:l10n_it_edi_withholding.selection__account_tax_template__l10n_it_pension_fund_type__tc07
|
||||
msgid "ENASARCO pension fund for sales agents"
|
||||
msgstr ""
|
||||
|
||||
#. module: l10n_it_edi_withholding
|
||||
#: model:ir.model.fields.selection,name:l10n_it_edi_withholding.selection__account_tax__l10n_it_pension_fund_type__tc19
|
||||
#: model:ir.model.fields.selection,name:l10n_it_edi_withholding.selection__account_tax_template__l10n_it_pension_fund_type__tc19
|
||||
msgid "ENPAB national pension fund for biologists"
|
||||
msgstr ""
|
||||
|
||||
#. module: l10n_it_edi_withholding
|
||||
#: model:ir.model.fields.selection,name:l10n_it_edi_withholding.selection__account_tax__l10n_it_pension_fund_type__tc08
|
||||
#: model:ir.model.fields.selection,name:l10n_it_edi_withholding.selection__account_tax_template__l10n_it_pension_fund_type__tc08
|
||||
msgid "ENPACL pension fund for labor consultants"
|
||||
msgstr ""
|
||||
|
||||
#. module: l10n_it_edi_withholding
|
||||
#: model:ir.model.fields.selection,name:l10n_it_edi_withholding.selection__account_tax__l10n_it_pension_fund_type__tc10
|
||||
#: model:ir.model.fields.selection,name:l10n_it_edi_withholding.selection__account_tax_template__l10n_it_pension_fund_type__tc10
|
||||
msgid "ENPAF pension fund for chemists"
|
||||
msgstr ""
|
||||
|
||||
#. module: l10n_it_edi_withholding
|
||||
#: model:ir.model.fields.selection,name:l10n_it_edi_withholding.selection__account_tax__l10n_it_pension_fund_type__tc12
|
||||
#: model:ir.model.fields.selection,name:l10n_it_edi_withholding.selection__account_tax_template__l10n_it_pension_fund_type__tc12
|
||||
msgid "ENPAIA pension fund for people working in agriculture"
|
||||
msgstr ""
|
||||
|
||||
#. module: l10n_it_edi_withholding
|
||||
#: model:ir.model.fields.selection,name:l10n_it_edi_withholding.selection__account_tax__l10n_it_pension_fund_type__tc09
|
||||
#: model:ir.model.fields.selection,name:l10n_it_edi_withholding.selection__account_tax_template__l10n_it_pension_fund_type__tc09
|
||||
msgid "ENPAM pension fund for doctors"
|
||||
msgstr ""
|
||||
|
||||
#. module: l10n_it_edi_withholding
|
||||
#: model:ir.model.fields.selection,name:l10n_it_edi_withholding.selection__account_tax__l10n_it_pension_fund_type__tc21
|
||||
#: model:ir.model.fields.selection,name:l10n_it_edi_withholding.selection__account_tax_template__l10n_it_pension_fund_type__tc21
|
||||
msgid "ENPAP national pension fund for psychologists"
|
||||
msgstr ""
|
||||
|
||||
#. module: l10n_it_edi_withholding
|
||||
#: model:ir.model.fields.selection,name:l10n_it_edi_withholding.selection__account_tax__l10n_it_pension_fund_type__tc20
|
||||
#: model:ir.model.fields.selection,name:l10n_it_edi_withholding.selection__account_tax_template__l10n_it_pension_fund_type__tc20
|
||||
msgid "ENPAPI national pension fund for nurses"
|
||||
msgstr ""
|
||||
|
||||
#. module: l10n_it_edi_withholding
|
||||
#: model:ir.model.fields.selection,name:l10n_it_edi_withholding.selection__account_tax__l10n_it_pension_fund_type__tc11
|
||||
#: model:ir.model.fields.selection,name:l10n_it_edi_withholding.selection__account_tax_template__l10n_it_pension_fund_type__tc11
|
||||
msgid "ENPAV pension fund for veterinaries"
|
||||
msgstr ""
|
||||
|
||||
#. module: l10n_it_edi_withholding
|
||||
#: model:ir.model.fields.selection,name:l10n_it_edi_withholding.selection__account_tax__l10n_it_pension_fund_type__tc18
|
||||
#: model:ir.model.fields.selection,name:l10n_it_edi_withholding.selection__account_tax_template__l10n_it_pension_fund_type__tc18
|
||||
msgid "EPAP pension fund"
|
||||
msgstr ""
|
||||
|
||||
#. module: l10n_it_edi_withholding
|
||||
#: model:ir.model.fields.selection,name:l10n_it_edi_withholding.selection__account_tax__l10n_it_pension_fund_type__tc17
|
||||
#: model:ir.model.fields.selection,name:l10n_it_edi_withholding.selection__account_tax_template__l10n_it_pension_fund_type__tc17
|
||||
msgid "EPPI pension fund for industrial experts"
|
||||
msgstr ""
|
||||
|
||||
#. module: l10n_it_edi_withholding
|
||||
#: model:account.tax.group,name:l10n_it_edi_withholding.tax_group_enasarco
|
||||
msgid "Enasarco"
|
||||
msgstr ""
|
||||
|
||||
#. module: l10n_it_edi_withholding
|
||||
#: model:ir.model.fields.selection,name:l10n_it_edi_withholding.selection__account_tax__l10n_it_pension_fund_type__tc14
|
||||
#: model:ir.model.fields.selection,name:l10n_it_edi_withholding.selection__account_tax_template__l10n_it_pension_fund_type__tc14
|
||||
msgid "INPGI pension fund for journalists"
|
||||
msgstr ""
|
||||
|
||||
#. module: l10n_it_edi_withholding
|
||||
#: model:ir.model.fields.selection,name:l10n_it_edi_withholding.selection__account_tax__l10n_it_pension_fund_type__tc22
|
||||
#: model:ir.model.fields.selection,name:l10n_it_edi_withholding.selection__account_tax_template__l10n_it_pension_fund_type__tc22
|
||||
msgid "INPS national pension fund"
|
||||
msgstr ""
|
||||
|
||||
#. module: l10n_it_edi_withholding
|
||||
#: model:ir.model.fields,help:l10n_it_edi_withholding.field_account_tax_group__preceding_subtotal
|
||||
msgid ""
|
||||
"If set, this value will be used on documents as the label of a subtotal "
|
||||
"excluding this tax group before displaying it. If not set, the tax group "
|
||||
"will be displayed after the 'Untaxed amount' subtotal."
|
||||
msgstr ""
|
||||
|
||||
#. module: l10n_it_edi_withholding
|
||||
#: model:ir.model,name:l10n_it_edi_withholding.model_account_move
|
||||
msgid "Journal Entry"
|
||||
msgstr ""
|
||||
|
||||
#. module: l10n_it_edi_withholding
|
||||
#: model:ir.model.fields.selection,name:l10n_it_edi_withholding.selection__account_tax__l10n_it_pension_fund_type__tc04
|
||||
#: model:ir.model.fields.selection,name:l10n_it_edi_withholding.selection__account_tax_template__l10n_it_pension_fund_type__tc04
|
||||
msgid "National pension fund for associated engineers and architects"
|
||||
msgstr ""
|
||||
|
||||
#. module: l10n_it_edi_withholding
|
||||
#: model:ir.model.fields.selection,name:l10n_it_edi_withholding.selection__account_tax__l10n_it_pension_fund_type__tc01
|
||||
#: model:ir.model.fields.selection,name:l10n_it_edi_withholding.selection__account_tax_template__l10n_it_pension_fund_type__tc01
|
||||
msgid "National pension fund for lawyers and solicitors"
|
||||
msgstr ""
|
||||
|
||||
#. module: l10n_it_edi_withholding
|
||||
#: model:ir.model.fields.selection,name:l10n_it_edi_withholding.selection__account_tax__l10n_it_pension_fund_type__tc05
|
||||
#: model:ir.model.fields.selection,name:l10n_it_edi_withholding.selection__account_tax_template__l10n_it_pension_fund_type__tc05
|
||||
msgid "National pension fund for notaries"
|
||||
msgstr ""
|
||||
|
||||
#. module: l10n_it_edi_withholding
|
||||
#: model:ir.model.fields.selection,name:l10n_it_edi_withholding.selection__account_tax__l10n_it_pension_fund_type__tc15
|
||||
#: model:ir.model.fields.selection,name:l10n_it_edi_withholding.selection__account_tax_template__l10n_it_pension_fund_type__tc15
|
||||
msgid "ONAOSI fund for sanitary orphans"
|
||||
msgstr ""
|
||||
|
||||
#. module: l10n_it_edi_withholding
|
||||
#: model:account.tax.group,name:l10n_it_edi_withholding.tax_group_pension_fund
|
||||
#: model:ir.model.fields,field_description:l10n_it_edi_withholding.field_account_bank_statement_line__l10n_it_amount_pension_fund_signed
|
||||
#: model:ir.model.fields,field_description:l10n_it_edi_withholding.field_account_move__l10n_it_amount_pension_fund_signed
|
||||
#: model:ir.model.fields,field_description:l10n_it_edi_withholding.field_account_payment__l10n_it_amount_pension_fund_signed
|
||||
#: model_terms:ir.ui.view,arch_db:l10n_it_edi_withholding.view_invoice_tree_l10n_it_edi_extended
|
||||
msgid "Pension Fund"
|
||||
msgstr ""
|
||||
|
||||
#. module: l10n_it_edi_withholding
|
||||
#: model:account.tax.group,preceding_subtotal:l10n_it_edi_withholding.tax_group_pension_fund
|
||||
msgid "Pension Fund Excluded"
|
||||
msgstr ""
|
||||
|
||||
#. module: l10n_it_edi_withholding
|
||||
#: model:ir.model.fields,help:l10n_it_edi_withholding.field_account_tax__l10n_it_pension_fund_type
|
||||
#: model:ir.model.fields,help:l10n_it_edi_withholding.field_account_tax_template__l10n_it_pension_fund_type
|
||||
msgid "Pension Fund Type. Only for Italian accounting EDI."
|
||||
msgstr ""
|
||||
|
||||
#. module: l10n_it_edi_withholding
|
||||
#. odoo-python
|
||||
#: code:addons/l10n_it_edi_withholding/models/account_edi_format.py:0
|
||||
#, python-format
|
||||
msgid "Pension Fund tax not found"
|
||||
msgstr ""
|
||||
|
||||
#. module: l10n_it_edi_withholding
|
||||
#: model:ir.model.fields.selection,name:l10n_it_edi_withholding.selection__account_tax__l10n_it_pension_fund_type__tc02
|
||||
#: model:ir.model.fields.selection,name:l10n_it_edi_withholding.selection__account_tax_template__l10n_it_pension_fund_type__tc02
|
||||
msgid "Pension fund for accountants with a degree"
|
||||
msgstr ""
|
||||
|
||||
#. module: l10n_it_edi_withholding
|
||||
#: model:ir.model.fields.selection,name:l10n_it_edi_withholding.selection__account_tax__l10n_it_pension_fund_type__tc06
|
||||
#: model:ir.model.fields.selection,name:l10n_it_edi_withholding.selection__account_tax_template__l10n_it_pension_fund_type__tc06
|
||||
msgid "Pension fund for accountants without a degree and commercial experts"
|
||||
msgstr ""
|
||||
|
||||
#. module: l10n_it_edi_withholding
|
||||
#: model:ir.model.fields.selection,name:l10n_it_edi_withholding.selection__account_tax__l10n_it_pension_fund_type__tc13
|
||||
#: model:ir.model.fields.selection,name:l10n_it_edi_withholding.selection__account_tax_template__l10n_it_pension_fund_type__tc13
|
||||
msgid "Pension fund for employees in delivery and marine agencies"
|
||||
msgstr ""
|
||||
|
||||
#. module: l10n_it_edi_withholding
|
||||
#: model:ir.model.fields.selection,name:l10n_it_edi_withholding.selection__account_tax__l10n_it_pension_fund_type__tc03
|
||||
#: model:ir.model.fields.selection,name:l10n_it_edi_withholding.selection__account_tax_template__l10n_it_pension_fund_type__tc03
|
||||
msgid "Pension fund for surveyors"
|
||||
msgstr ""
|
||||
|
||||
#. module: l10n_it_edi_withholding
|
||||
#: model:ir.model.fields,field_description:l10n_it_edi_withholding.field_account_tax__l10n_it_pension_fund_type
|
||||
#: model:ir.model.fields,field_description:l10n_it_edi_withholding.field_account_tax_template__l10n_it_pension_fund_type
|
||||
msgid "Pension fund type (Italy)"
|
||||
msgstr ""
|
||||
|
||||
#. module: l10n_it_edi_withholding
|
||||
#: model:ir.model.fields,field_description:l10n_it_edi_withholding.field_account_tax_group__preceding_subtotal
|
||||
msgid "Preceding Subtotal"
|
||||
msgstr ""
|
||||
|
||||
#. module: l10n_it_edi_withholding
|
||||
#: model_terms:ir.ui.view,arch_db:l10n_it_edi_withholding.account_invoice_it_FatturaPA_export_withholding
|
||||
#: model_terms:ir.ui.view,arch_db:l10n_it_edi_withholding.account_invoice_line_it_FatturaPA_withholding
|
||||
msgid "SI"
|
||||
msgstr ""
|
||||
|
||||
#. module: l10n_it_edi_withholding
|
||||
#: model:ir.model,name:l10n_it_edi_withholding.model_account_tax
|
||||
msgid "Tax"
|
||||
msgstr ""
|
||||
|
||||
#. module: l10n_it_edi_withholding
|
||||
#. odoo-python
|
||||
#: code:addons/l10n_it_edi_withholding/models/account_tax.py:0
|
||||
#, python-format
|
||||
msgid ""
|
||||
"Tax '%s' cannot be both a Withholding tax and a Pension fund tax. Please "
|
||||
"create two separate ones."
|
||||
msgstr ""
|
||||
|
||||
#. module: l10n_it_edi_withholding
|
||||
#. odoo-python
|
||||
#: code:addons/l10n_it_edi_withholding/models/account_tax.py:0
|
||||
#, python-format
|
||||
msgid ""
|
||||
"Tax '%s' has a withholding reason, so the withholding type must also be "
|
||||
"specified"
|
||||
msgstr ""
|
||||
|
||||
#. module: l10n_it_edi_withholding
|
||||
#. odoo-python
|
||||
#: code:addons/l10n_it_edi_withholding/models/account_tax.py:0
|
||||
#, python-format
|
||||
msgid "Tax '%s' has a withholding type so the amount must be negative."
|
||||
msgstr ""
|
||||
|
||||
#. module: l10n_it_edi_withholding
|
||||
#. odoo-python
|
||||
#: code:addons/l10n_it_edi_withholding/models/account_tax.py:0
|
||||
#, python-format
|
||||
msgid ""
|
||||
"Tax '%s' has a withholding type, so the withholding reason must also be "
|
||||
"specified"
|
||||
msgstr ""
|
||||
|
||||
#. module: l10n_it_edi_withholding
|
||||
#: model:ir.model,name:l10n_it_edi_withholding.model_account_tax_group
|
||||
msgid "Tax Group"
|
||||
msgstr ""
|
||||
|
||||
#. module: l10n_it_edi_withholding
|
||||
#: model:ir.model,name:l10n_it_edi_withholding.model_account_tax_template
|
||||
msgid "Templates for Taxes"
|
||||
msgstr ""
|
||||
|
||||
#. module: l10n_it_edi_withholding
|
||||
#: model:account.report.column,name:l10n_it_edi_withholding.withh_tax_report_balance
|
||||
#: model_terms:ir.ui.view,arch_db:l10n_it_edi_withholding.view_invoice_tree_l10n_it_edi_extended
|
||||
msgid "Total"
|
||||
msgstr ""
|
||||
|
||||
#. module: l10n_it_edi_withholding
|
||||
#: model:account.tax.group,preceding_subtotal:l10n_it_edi_withholding.tax_group_withholding
|
||||
msgid "Total Before Withholding"
|
||||
msgstr ""
|
||||
|
||||
#. module: l10n_it_edi_withholding
|
||||
#: model:ir.model.fields,field_description:l10n_it_edi_withholding.field_account_bank_statement_line__l10n_it_amount_vat_signed
|
||||
#: model:ir.model.fields,field_description:l10n_it_edi_withholding.field_account_move__l10n_it_amount_vat_signed
|
||||
#: model:ir.model.fields,field_description:l10n_it_edi_withholding.field_account_payment__l10n_it_amount_vat_signed
|
||||
#: model_terms:ir.ui.view,arch_db:l10n_it_edi_withholding.view_invoice_tree_l10n_it_edi_extended
|
||||
msgid "VAT"
|
||||
msgstr ""
|
||||
|
||||
#. module: l10n_it_edi_withholding
|
||||
#: model:account.tax.group,name:l10n_it_edi_withholding.tax_group_withholding
|
||||
#: model:ir.model.fields,field_description:l10n_it_edi_withholding.field_account_bank_statement_line__l10n_it_amount_withholding_signed
|
||||
#: model:ir.model.fields,field_description:l10n_it_edi_withholding.field_account_move__l10n_it_amount_withholding_signed
|
||||
#: model:ir.model.fields,field_description:l10n_it_edi_withholding.field_account_payment__l10n_it_amount_withholding_signed
|
||||
#: model_terms:ir.ui.view,arch_db:l10n_it_edi_withholding.view_invoice_tree_l10n_it_edi_extended
|
||||
msgid "Withholding"
|
||||
msgstr ""
|
||||
|
||||
#. module: l10n_it_edi_withholding
|
||||
#: model:account.report.line,name:l10n_it_edi_withholding.withh_purchase_tax_report_it_line
|
||||
msgid "Withholding Amount (Purchase)"
|
||||
msgstr ""
|
||||
|
||||
#. module: l10n_it_edi_withholding
|
||||
#: model:account.report.line,name:l10n_it_edi_withholding.withh_sale_tax_report_it_line
|
||||
msgid "Withholding Amount (Sales)"
|
||||
msgstr ""
|
||||
|
||||
#. module: l10n_it_edi_withholding
|
||||
#: model:account.report,name:l10n_it_edi_withholding.withh_tax_report_it
|
||||
msgid "Withholding Report"
|
||||
msgstr ""
|
||||
|
||||
#. module: l10n_it_edi_withholding
|
||||
#. odoo-python
|
||||
#: code:addons/l10n_it_edi_withholding/models/account_edi_format.py:0
|
||||
#, python-format
|
||||
msgid "Withholding tax not found"
|
||||
msgstr ""
|
||||
|
||||
#. module: l10n_it_edi_withholding
|
||||
#: model:ir.model.fields,field_description:l10n_it_edi_withholding.field_account_tax__l10n_it_withholding_reason
|
||||
#: model:ir.model.fields,field_description:l10n_it_edi_withholding.field_account_tax_template__l10n_it_withholding_reason
|
||||
msgid "Withholding tax reason (Italy)"
|
||||
msgstr ""
|
||||
|
||||
#. module: l10n_it_edi_withholding
|
||||
#: model:ir.model.fields,help:l10n_it_edi_withholding.field_account_tax__l10n_it_withholding_reason
|
||||
#: model:ir.model.fields,help:l10n_it_edi_withholding.field_account_tax_template__l10n_it_withholding_reason
|
||||
msgid "Withholding tax reason. Only for Italian accounting EDI."
|
||||
msgstr ""
|
||||
|
||||
#. module: l10n_it_edi_withholding
|
||||
#: model:ir.model.fields,field_description:l10n_it_edi_withholding.field_account_tax__l10n_it_withholding_type
|
||||
#: model:ir.model.fields,field_description:l10n_it_edi_withholding.field_account_tax_template__l10n_it_withholding_type
|
||||
msgid "Withholding tax type (Italy)"
|
||||
msgstr ""
|
||||
|
||||
#. module: l10n_it_edi_withholding
|
||||
#: model:ir.model.fields,help:l10n_it_edi_withholding.field_account_tax__l10n_it_withholding_type
|
||||
#: model:ir.model.fields,help:l10n_it_edi_withholding.field_account_tax_template__l10n_it_withholding_type
|
||||
msgid "Withholding tax type. Only for Italian accounting EDI."
|
||||
msgstr ""
|
||||
|
||||
#. module: l10n_it_edi_withholding
|
||||
#: model:ir.model.fields.selection,name:l10n_it_edi_withholding.selection__account_tax__l10n_it_withholding_reason__a
|
||||
#: model:ir.model.fields.selection,name:l10n_it_edi_withholding.selection__account_tax_template__l10n_it_withholding_reason__a
|
||||
msgid "[A] Autonomous work in the fields of art or profession"
|
||||
msgstr ""
|
||||
|
||||
#. module: l10n_it_edi_withholding
|
||||
#: model:ir.model.fields.selection,name:l10n_it_edi_withholding.selection__account_tax__l10n_it_withholding_reason__b
|
||||
#: model:ir.model.fields.selection,name:l10n_it_edi_withholding.selection__account_tax_template__l10n_it_withholding_reason__b
|
||||
msgid ""
|
||||
"[B] Income from the use of intellectual properties or patents or processes, "
|
||||
"formulas and informations in the fields of science, commerce or science"
|
||||
msgstr ""
|
||||
|
||||
#. module: l10n_it_edi_withholding
|
||||
#: model:ir.model.fields.selection,name:l10n_it_edi_withholding.selection__account_tax__l10n_it_withholding_reason__c
|
||||
#: model:ir.model.fields.selection,name:l10n_it_edi_withholding.selection__account_tax_template__l10n_it_withholding_reason__c
|
||||
msgid ""
|
||||
"[C] Income from work as part of association groups or other cooperation "
|
||||
"determined by contracts"
|
||||
msgstr ""
|
||||
|
||||
#. module: l10n_it_edi_withholding
|
||||
#: model:ir.model.fields.selection,name:l10n_it_edi_withholding.selection__account_tax__l10n_it_withholding_reason__d
|
||||
#: model:ir.model.fields.selection,name:l10n_it_edi_withholding.selection__account_tax_template__l10n_it_withholding_reason__d
|
||||
msgid "[D] Income as partner or founder of a corporation"
|
||||
msgstr ""
|
||||
|
||||
#. module: l10n_it_edi_withholding
|
||||
#: model:ir.model.fields.selection,name:l10n_it_edi_withholding.selection__account_tax__l10n_it_withholding_reason__e
|
||||
#: model:ir.model.fields.selection,name:l10n_it_edi_withholding.selection__account_tax_template__l10n_it_withholding_reason__e
|
||||
msgid "[E] Income from client-related bill protests made by town secretaries"
|
||||
msgstr ""
|
||||
|
||||
#. module: l10n_it_edi_withholding
|
||||
#: model:ir.model.fields.selection,name:l10n_it_edi_withholding.selection__account_tax__l10n_it_withholding_reason__g
|
||||
#: model:ir.model.fields.selection,name:l10n_it_edi_withholding.selection__account_tax_template__l10n_it_withholding_reason__g
|
||||
msgid "[G] Compensation for the end of a professional sport career"
|
||||
msgstr ""
|
||||
|
||||
#. module: l10n_it_edi_withholding
|
||||
#: model:ir.model.fields.selection,name:l10n_it_edi_withholding.selection__account_tax__l10n_it_withholding_reason__h
|
||||
#: model:ir.model.fields.selection,name:l10n_it_edi_withholding.selection__account_tax_template__l10n_it_withholding_reason__h
|
||||
msgid ""
|
||||
"[H] Compensation for the end of a societary career (excluded those earned "
|
||||
"before 31.12.2003) and already taxed"
|
||||
msgstr ""
|
||||
|
||||
#. module: l10n_it_edi_withholding
|
||||
#: model:ir.model.fields.selection,name:l10n_it_edi_withholding.selection__account_tax__l10n_it_withholding_reason__i
|
||||
#: model:ir.model.fields.selection,name:l10n_it_edi_withholding.selection__account_tax_template__l10n_it_withholding_reason__i
|
||||
msgid "[I] Compensation for the end of a notary career"
|
||||
msgstr ""
|
||||
|
||||
#. module: l10n_it_edi_withholding
|
||||
#: model:ir.model.fields.selection,name:l10n_it_edi_withholding.selection__account_tax__l10n_it_withholding_reason__k
|
||||
#: model:ir.model.fields.selection,name:l10n_it_edi_withholding.selection__account_tax_template__l10n_it_withholding_reason__k
|
||||
msgid "[K] Civil service checks, ref art. 16 D.lgs. n.40 6/03/2017"
|
||||
msgstr ""
|
||||
|
||||
#. module: l10n_it_edi_withholding
|
||||
#: model:ir.model.fields.selection,name:l10n_it_edi_withholding.selection__account_tax__l10n_it_withholding_reason__l1
|
||||
#: model:ir.model.fields.selection,name:l10n_it_edi_withholding.selection__account_tax_template__l10n_it_withholding_reason__l1
|
||||
msgid ""
|
||||
"[L1] Income from the use of intellectual properties or patents or processes,"
|
||||
" formulas and informations in the fields of science, commerce or science, "
|
||||
"from someone who actively bought the use rights"
|
||||
msgstr ""
|
||||
|
||||
#. module: l10n_it_edi_withholding
|
||||
#: model:ir.model.fields.selection,name:l10n_it_edi_withholding.selection__account_tax__l10n_it_withholding_reason__l
|
||||
#: model:ir.model.fields.selection,name:l10n_it_edi_withholding.selection__account_tax_template__l10n_it_withholding_reason__l
|
||||
msgid ""
|
||||
"[L] Income from the use of intellectual properties or patents or processes, "
|
||||
"formulas and informations in the fields of science, commerce or science, but"
|
||||
" not made by the author/inventor"
|
||||
msgstr ""
|
||||
|
||||
#. module: l10n_it_edi_withholding
|
||||
#: model:ir.model.fields.selection,name:l10n_it_edi_withholding.selection__account_tax__l10n_it_withholding_reason__m1
|
||||
#: model:ir.model.fields.selection,name:l10n_it_edi_withholding.selection__account_tax_template__l10n_it_withholding_reason__m1
|
||||
msgid "[M1] Incomes due for an obligation to act, not to act, or to allow"
|
||||
msgstr ""
|
||||
|
||||
#. module: l10n_it_edi_withholding
|
||||
#: model:ir.model.fields.selection,name:l10n_it_edi_withholding.selection__account_tax__l10n_it_withholding_reason__m2
|
||||
#: model:ir.model.fields.selection,name:l10n_it_edi_withholding.selection__account_tax_template__l10n_it_withholding_reason__m2
|
||||
msgid ""
|
||||
"[M2] Autonomous work which isn't part of usual professional/artistic duties,"
|
||||
" or incomes due for an obligation to act, not to act, or to allow - that "
|
||||
"require being registered to the \"Gestione separata\""
|
||||
msgstr ""
|
||||
|
||||
#. module: l10n_it_edi_withholding
|
||||
#: model:ir.model.fields.selection,name:l10n_it_edi_withholding.selection__account_tax__l10n_it_withholding_reason__m
|
||||
#: model:ir.model.fields.selection,name:l10n_it_edi_withholding.selection__account_tax_template__l10n_it_withholding_reason__m
|
||||
msgid ""
|
||||
"[M] Autonomous work which isn't part of usual professional/artistic duties, "
|
||||
"or incomes due for an obligation to act, not to act, or to allow"
|
||||
msgstr ""
|
||||
|
||||
#. module: l10n_it_edi_withholding
|
||||
#: model:ir.model.fields.selection,name:l10n_it_edi_withholding.selection__account_tax__l10n_it_withholding_reason__n
|
||||
#: model:ir.model.fields.selection,name:l10n_it_edi_withholding.selection__account_tax_template__l10n_it_withholding_reason__n
|
||||
msgid ""
|
||||
"[N] Compensation for travel, expenses, prizes, or other compensations for "
|
||||
"amateur sport activities"
|
||||
msgstr ""
|
||||
|
||||
#. module: l10n_it_edi_withholding
|
||||
#: model:ir.model.fields.selection,name:l10n_it_edi_withholding.selection__account_tax__l10n_it_withholding_reason__o1
|
||||
#: model:ir.model.fields.selection,name:l10n_it_edi_withholding.selection__account_tax_template__l10n_it_withholding_reason__o1
|
||||
msgid ""
|
||||
"[O1] Incomes due for an obligation to act, not to act, or to allow - that do"
|
||||
" not require being registered to the \"Gestione Separata\""
|
||||
msgstr ""
|
||||
|
||||
#. module: l10n_it_edi_withholding
|
||||
#: model:ir.model.fields.selection,name:l10n_it_edi_withholding.selection__account_tax__l10n_it_withholding_reason__o
|
||||
#: model:ir.model.fields.selection,name:l10n_it_edi_withholding.selection__account_tax_template__l10n_it_withholding_reason__o
|
||||
msgid ""
|
||||
"[O] Autonomous work which isn't part of usual professional/artistic duties, "
|
||||
"or incomes due for an obligation to act, not to act, or to allow - that do "
|
||||
"not require being registered to the \"Gestione separata\""
|
||||
msgstr ""
|
||||
|
||||
#. module: l10n_it_edi_withholding
|
||||
#: model:ir.model.fields.selection,name:l10n_it_edi_withholding.selection__account_tax__l10n_it_withholding_reason__p
|
||||
#: model:ir.model.fields.selection,name:l10n_it_edi_withholding.selection__account_tax_template__l10n_it_withholding_reason__p
|
||||
msgid ""
|
||||
"[P] Compensation for people residing abroad for continuous use or concession"
|
||||
" of industrial machinery, commercial or scientific tools that are on the "
|
||||
"Italian soil"
|
||||
msgstr ""
|
||||
|
||||
#. module: l10n_it_edi_withholding
|
||||
#: model:ir.model.fields.selection,name:l10n_it_edi_withholding.selection__account_tax__l10n_it_withholding_reason__q
|
||||
#: model:ir.model.fields.selection,name:l10n_it_edi_withholding.selection__account_tax_template__l10n_it_withholding_reason__q
|
||||
msgid "[Q] Provisions for exclusive agents or sales representatives' work"
|
||||
msgstr ""
|
||||
|
||||
#. module: l10n_it_edi_withholding
|
||||
#: model:ir.model.fields.selection,name:l10n_it_edi_withholding.selection__account_tax__l10n_it_withholding_type__rt01
|
||||
#: model:ir.model.fields.selection,name:l10n_it_edi_withholding.selection__account_tax_template__l10n_it_withholding_type__rt01
|
||||
msgid "[RT01] Withholding for persons"
|
||||
msgstr ""
|
||||
|
||||
#. module: l10n_it_edi_withholding
|
||||
#: model:ir.model.fields.selection,name:l10n_it_edi_withholding.selection__account_tax__l10n_it_withholding_type__rt02
|
||||
#: model:ir.model.fields.selection,name:l10n_it_edi_withholding.selection__account_tax_template__l10n_it_withholding_type__rt02
|
||||
msgid "[RT02] Withholding for personal businesses"
|
||||
msgstr ""
|
||||
|
||||
#. module: l10n_it_edi_withholding
|
||||
#: model:ir.model.fields.selection,name:l10n_it_edi_withholding.selection__account_tax__l10n_it_withholding_type__rt03
|
||||
#: model:ir.model.fields.selection,name:l10n_it_edi_withholding.selection__account_tax_template__l10n_it_withholding_type__rt03
|
||||
msgid "[RT03] INPS Pension fund contribution"
|
||||
msgstr ""
|
||||
|
||||
#. module: l10n_it_edi_withholding
|
||||
#: model:ir.model.fields.selection,name:l10n_it_edi_withholding.selection__account_tax__l10n_it_withholding_type__rt04
|
||||
#: model:ir.model.fields.selection,name:l10n_it_edi_withholding.selection__account_tax_template__l10n_it_withholding_type__rt04
|
||||
msgid "[RT04] ENASARCO pension fund contribution"
|
||||
msgstr ""
|
||||
|
||||
#. module: l10n_it_edi_withholding
|
||||
#: model:ir.model.fields.selection,name:l10n_it_edi_withholding.selection__account_tax__l10n_it_withholding_type__rt05
|
||||
#: model:ir.model.fields.selection,name:l10n_it_edi_withholding.selection__account_tax_template__l10n_it_withholding_type__rt05
|
||||
msgid "[RT05] ENPAM pension fund contribution"
|
||||
msgstr ""
|
||||
|
||||
#. module: l10n_it_edi_withholding
|
||||
#: model:ir.model.fields.selection,name:l10n_it_edi_withholding.selection__account_tax__l10n_it_withholding_type__rt06
|
||||
#: model:ir.model.fields.selection,name:l10n_it_edi_withholding.selection__account_tax_template__l10n_it_withholding_type__rt06
|
||||
msgid "[RT06] Other pension fund contribution"
|
||||
msgstr ""
|
||||
|
||||
#. module: l10n_it_edi_withholding
|
||||
#: model:ir.model.fields.selection,name:l10n_it_edi_withholding.selection__account_tax__l10n_it_withholding_reason__r
|
||||
#: model:ir.model.fields.selection,name:l10n_it_edi_withholding.selection__account_tax_template__l10n_it_withholding_reason__r
|
||||
msgid "[R] Provisions for non-exclusive agents or sales representatives' work"
|
||||
msgstr ""
|
||||
|
||||
#. module: l10n_it_edi_withholding
|
||||
#: model:ir.model.fields.selection,name:l10n_it_edi_withholding.selection__account_tax__l10n_it_withholding_reason__s
|
||||
#: model:ir.model.fields.selection,name:l10n_it_edi_withholding.selection__account_tax_template__l10n_it_withholding_reason__s
|
||||
msgid "[S] Provisions for commissioner work"
|
||||
msgstr ""
|
||||
|
||||
#. module: l10n_it_edi_withholding
|
||||
#: model:ir.model.fields.selection,name:l10n_it_edi_withholding.selection__account_tax__l10n_it_withholding_reason__t
|
||||
#: model:ir.model.fields.selection,name:l10n_it_edi_withholding.selection__account_tax_template__l10n_it_withholding_reason__t
|
||||
msgid "[T] Provisions for mediator work"
|
||||
msgstr ""
|
||||
|
||||
#. module: l10n_it_edi_withholding
|
||||
#: model:ir.model.fields.selection,name:l10n_it_edi_withholding.selection__account_tax__l10n_it_withholding_reason__u
|
||||
#: model:ir.model.fields.selection,name:l10n_it_edi_withholding.selection__account_tax_template__l10n_it_withholding_reason__u
|
||||
msgid "[U] Provisions for procurer work"
|
||||
msgstr ""
|
||||
|
||||
#. module: l10n_it_edi_withholding
|
||||
#: model:ir.model.fields.selection,name:l10n_it_edi_withholding.selection__account_tax__l10n_it_withholding_reason__v1
|
||||
#: model:ir.model.fields.selection,name:l10n_it_edi_withholding.selection__account_tax_template__l10n_it_withholding_reason__v1
|
||||
msgid ""
|
||||
"[V1] Income from unusual commercial activities (such as provisions for "
|
||||
"occasional work or sales representative, mediator, procurer)"
|
||||
msgstr ""
|
||||
|
||||
#. module: l10n_it_edi_withholding
|
||||
#: model:ir.model.fields.selection,name:l10n_it_edi_withholding.selection__account_tax__l10n_it_withholding_reason__v2
|
||||
#: model:ir.model.fields.selection,name:l10n_it_edi_withholding.selection__account_tax_template__l10n_it_withholding_reason__v2
|
||||
msgid ""
|
||||
"[V2] Income from unusual work activities from door-to-door sales "
|
||||
"representatives"
|
||||
msgstr ""
|
||||
|
||||
#. module: l10n_it_edi_withholding
|
||||
#: model:ir.model.fields.selection,name:l10n_it_edi_withholding.selection__account_tax__l10n_it_withholding_reason__v
|
||||
#: model:ir.model.fields.selection,name:l10n_it_edi_withholding.selection__account_tax_template__l10n_it_withholding_reason__v
|
||||
msgid ""
|
||||
"[V] Provisions for door-to-door sales persons and newspaper selling in "
|
||||
"kiosks"
|
||||
msgstr ""
|
||||
|
||||
#. module: l10n_it_edi_withholding
|
||||
#: model:ir.model.fields.selection,name:l10n_it_edi_withholding.selection__account_tax__l10n_it_withholding_reason__w
|
||||
#: model:ir.model.fields.selection,name:l10n_it_edi_withholding.selection__account_tax_template__l10n_it_withholding_reason__w
|
||||
msgid ""
|
||||
"[W] Income from 2015 tinders subject to law art. 25-ter D.P.R. 600/1973"
|
||||
msgstr ""
|
||||
|
||||
#. module: l10n_it_edi_withholding
|
||||
#: model:ir.model.fields.selection,name:l10n_it_edi_withholding.selection__account_tax__l10n_it_withholding_reason__x
|
||||
#: model:ir.model.fields.selection,name:l10n_it_edi_withholding.selection__account_tax_template__l10n_it_withholding_reason__x
|
||||
msgid ""
|
||||
"[X] Income from 2014 for foreign companies or institutions subject to law "
|
||||
"art. 26-quater, c. 1, lett. a) and b) D.P.R. 600/1973"
|
||||
msgstr ""
|
||||
|
||||
#. module: l10n_it_edi_withholding
|
||||
#: model:ir.model.fields.selection,name:l10n_it_edi_withholding.selection__account_tax__l10n_it_withholding_reason__y
|
||||
#: model:ir.model.fields.selection,name:l10n_it_edi_withholding.selection__account_tax_template__l10n_it_withholding_reason__y
|
||||
msgid ""
|
||||
"[Y] Income from 1.01.2005 to 26.07.2005 from companies or institutions not "
|
||||
"included in the description above"
|
||||
msgstr ""
|
||||
|
||||
#. module: l10n_it_edi_withholding
|
||||
#: model:ir.model.fields.selection,name:l10n_it_edi_withholding.selection__account_tax__l10n_it_withholding_reason__zo
|
||||
#: model:ir.model.fields.selection,name:l10n_it_edi_withholding.selection__account_tax_template__l10n_it_withholding_reason__zo
|
||||
msgid "[ZO] Other reason"
|
||||
msgstr ""
|
||||
|
||||
#. module: l10n_it_edi_withholding
|
||||
#: model:ir.model.fields.selection,name:l10n_it_edi_withholding.selection__account_tax__l10n_it_withholding_reason__z
|
||||
#: model:ir.model.fields.selection,name:l10n_it_edi_withholding.selection__account_tax_template__l10n_it_withholding_reason__z
|
||||
msgid "[Z] Deprecated"
|
||||
msgstr ""
|
||||
|
|
@ -0,0 +1,7 @@
|
|||
# -*- coding: utf-8 -*-
|
||||
# Part of Odoo. See LICENSE file for full copyright and licensing details.
|
||||
|
||||
from . import account_tax
|
||||
from . import account_chart_template
|
||||
from . import account_move
|
||||
from . import account_edi_format
|
||||
|
|
@ -0,0 +1,21 @@
|
|||
# -*- coding: utf-8 -*-
|
||||
# Part of Odoo. See LICENSE file for full copyright and licensing details.
|
||||
|
||||
import logging
|
||||
from odoo import models
|
||||
|
||||
_logger = logging.getLogger(__name__)
|
||||
|
||||
|
||||
class AccountChartTemplate(models.Model):
|
||||
_inherit = 'account.chart.template'
|
||||
|
||||
def _load(self, company):
|
||||
"""
|
||||
Override normal default taxes, which are the ones with lowest sequence.
|
||||
"""
|
||||
result = super()._load(company)
|
||||
if company.chart_template_id == self.env.ref('l10n_it.l10n_it_chart_template_generic'):
|
||||
company.account_sale_tax_id = self.env.ref(f'l10n_it.{company.id}_22v')
|
||||
company.account_purchase_tax_id = self.env.ref(f'l10n_it.{company.id}_22am')
|
||||
return result
|
||||
|
|
@ -0,0 +1,136 @@
|
|||
# -*- coding:utf-8 -*-
|
||||
# Part of Odoo. See LICENSE file for full copyright and licensing details.
|
||||
|
||||
from odoo import models, _
|
||||
import logging
|
||||
|
||||
|
||||
_logger = logging.getLogger(__name__)
|
||||
|
||||
|
||||
class AccountEdiFormat(models.Model):
|
||||
_inherit = 'account.edi.format'
|
||||
|
||||
def _l10n_it_edi_search_tax_for_import(self, company, percentage, extra_domain=None, vat_only=True):
|
||||
""" In case no withholding_type or pension_fund is specified, exclude taxes that have it.
|
||||
It means that we're searching for VAT taxes, especially in the base l10n_it_edi module
|
||||
"""
|
||||
if vat_only:
|
||||
extra_domain += [('l10n_it_withholding_type', '=', False), ('l10n_it_pension_fund_type', '=', False)]
|
||||
return super()._l10n_it_edi_search_tax_for_import(company, percentage, extra_domain)
|
||||
|
||||
def _l10n_it_edi_check_taxes_configuration(self, invoice):
|
||||
"""
|
||||
Override to also allow pension_fund, withholding taxes.
|
||||
Needs not to call super, because super checks for one tax only per line.
|
||||
"""
|
||||
errors = []
|
||||
for invoice_line in invoice.invoice_line_ids.filtered(lambda x: x.display_type == 'product'):
|
||||
all_taxes = invoice_line.tax_ids.flatten_taxes_hierarchy()
|
||||
vat_taxes, withholding_taxes, pension_fund_taxes = (all_taxes._l10n_it_filter_kind(kind) for kind in ('vat', 'withholding', 'pension_fund'))
|
||||
if len(vat_taxes.filtered(lambda x: x.amount >= 0)) != 1:
|
||||
errors.append(_("Bad tax configuration for line %s, there must be one and only one VAT tax per line", invoice_line.name))
|
||||
if len(pension_fund_taxes) > 1 or len(withholding_taxes) > 1:
|
||||
errors.append(_("Bad tax configuration for line %s, there must be one Withholding tax and one Pension Fund tax at max.", invoice_line.name))
|
||||
return errors
|
||||
|
||||
def _l10n_it_edi_get_extra_info(self, company, document_type, body_tree, incoming=True):
|
||||
extra_info, message_to_log = super()._l10n_it_edi_get_extra_info(company, document_type, body_tree, incoming=incoming)
|
||||
|
||||
type_tax_use_domain = extra_info['type_tax_use_domain']
|
||||
|
||||
withholding_elements = body_tree.xpath('.//DatiGeneraliDocumento/DatiRitenuta')
|
||||
withholding_taxes = []
|
||||
for withholding in (withholding_elements or []):
|
||||
tipo_ritenuta = withholding.find("TipoRitenuta")
|
||||
reason = withholding.find("CausalePagamento")
|
||||
percentage = withholding.find('AliquotaRitenuta')
|
||||
withholding_type = tipo_ritenuta.text if tipo_ritenuta is not None else "RT02"
|
||||
withholding_reason = reason.text if reason is not None else "A"
|
||||
withholding_percentage = -float(percentage.text if percentage is not None else "0.0")
|
||||
withholding_tax = self._l10n_it_edi_search_tax_for_import(
|
||||
company,
|
||||
withholding_percentage,
|
||||
([('l10n_it_withholding_type', '=', withholding_type),
|
||||
('l10n_it_withholding_reason', '=', withholding_reason)]
|
||||
+ type_tax_use_domain),
|
||||
vat_only=False)
|
||||
if withholding_tax:
|
||||
withholding_taxes.append(withholding_tax)
|
||||
else:
|
||||
message_to_log.append("%s<br/>%s" % (
|
||||
_("Withholding tax not found"),
|
||||
self.env['account.move']._compose_info_message(body_tree, '.'),
|
||||
))
|
||||
extra_info["withholding_taxes"] = withholding_taxes
|
||||
|
||||
pension_fund_elements = body_tree.xpath('.//DatiGeneraliDocumento/DatiCassaPrevidenziale')
|
||||
pension_fund_taxes = []
|
||||
for pension_fund in (pension_fund_elements or []):
|
||||
pension_fund_type = pension_fund.find("TipoCassa")
|
||||
tax_factor_percent = pension_fund.find("AlCassa")
|
||||
vat_tax_factor_percent = pension_fund.find("AliquotaIVA")
|
||||
pension_fund_type = pension_fund_type.text if pension_fund_type is not None else ""
|
||||
tax_factor_percent = float(tax_factor_percent.text or "0.0")
|
||||
vat_tax_factor_percent = float(vat_tax_factor_percent.text or "0.0")
|
||||
pension_fund_tax = self._l10n_it_edi_search_tax_for_import(
|
||||
company,
|
||||
tax_factor_percent,
|
||||
([('l10n_it_pension_fund_type', '=', pension_fund_type)]
|
||||
+ type_tax_use_domain),
|
||||
vat_only=False)
|
||||
if pension_fund_tax:
|
||||
pension_fund_taxes.append(pension_fund_tax)
|
||||
else:
|
||||
message_to_log.append("%s<br/>%s" % (
|
||||
_("Pension Fund tax not found"),
|
||||
self.env['account.move']._compose_info_message(body_tree, '.'),
|
||||
))
|
||||
extra_info["pension_fund_taxes"] = pension_fund_taxes
|
||||
|
||||
return extra_info, message_to_log
|
||||
|
||||
def _import_fattura_pa_line(self, element, invoice_line_form, extra_info):
|
||||
messages_to_log = super()._import_fattura_pa_line(element, invoice_line_form, extra_info)
|
||||
|
||||
type_tax_use_domain = extra_info['type_tax_use_domain']
|
||||
|
||||
for withholding_tax in extra_info.get('withholding_taxes', []):
|
||||
withholding_tags = element.xpath("Ritenuta")
|
||||
if withholding_tags and withholding_tags[0].text == 'SI':
|
||||
invoice_line_form.tax_ids |= withholding_tax
|
||||
for pension_fund_tax in extra_info.get('pension_fund_taxes', []):
|
||||
invoice_line_form.tax_ids |= pension_fund_tax
|
||||
|
||||
if extra_info['simplified']:
|
||||
return messages_to_log
|
||||
|
||||
price_subtotal = invoice_line_form.price_unit
|
||||
company = invoice_line_form.company_id
|
||||
|
||||
# ENASARCO Pension Fund tax (works as a withholding)
|
||||
for other_data_element in element.xpath('.//AltriDatiGestionali'):
|
||||
data_kind_element = other_data_element.xpath("./TipoDato")
|
||||
text_element = other_data_element.xpath("./RiferimentoTesto")
|
||||
number_element = other_data_element.xpath("./RiferimentoNumero")
|
||||
if not data_kind_element or not text_element or not number_element:
|
||||
continue
|
||||
data_kind, data_text, number_text = data_kind_element[0].text.lower(), text_element[0].text.lower(), number_element[0].text
|
||||
if data_kind != 'cassa-prev' or ('enasarco' not in data_text and not 'tc07' in data_text):
|
||||
continue
|
||||
enasarco_amount = float(number_text)
|
||||
enasarco_percentage = -self.env.company.currency_id.round(enasarco_amount / price_subtotal * 100)
|
||||
enasarco_tax = self._l10n_it_edi_search_tax_for_import(
|
||||
company,
|
||||
enasarco_percentage,
|
||||
[('l10n_it_pension_fund_type', '=', 'TC07')] + type_tax_use_domain,
|
||||
vat_only=False)
|
||||
if enasarco_tax:
|
||||
invoice_line_form.tax_ids |= enasarco_tax
|
||||
else:
|
||||
messages_to_log.append("%s<br/>%s" % (
|
||||
_("Enasarco tax not found for line with description '%s'", invoice_line_form.name),
|
||||
self.env['account.move']._compose_info_message(other_data_element, '.'),
|
||||
))
|
||||
|
||||
return messages_to_log
|
||||
|
|
@ -0,0 +1,96 @@
|
|||
# -*- coding: utf-8 -*-
|
||||
# Part of Odoo. See LICENSE file for full copyright and licensing details.
|
||||
|
||||
import logging
|
||||
from collections import namedtuple
|
||||
from odoo import api, fields, models
|
||||
|
||||
_logger = logging.getLogger(__name__)
|
||||
|
||||
|
||||
class AccountMove(models.Model):
|
||||
_inherit = 'account.move'
|
||||
|
||||
l10n_it_amount_vat_signed = fields.Monetary(string='VAT', compute='_compute_amount_extended', currency_field='company_currency_id')
|
||||
l10n_it_amount_pension_fund_signed = fields.Monetary(string='Pension Fund', compute='_compute_amount_extended', currency_field='company_currency_id')
|
||||
l10n_it_amount_withholding_signed = fields.Monetary(string='Withholding', compute='_compute_amount_extended', currency_field='company_currency_id')
|
||||
l10n_it_amount_before_withholding_signed = fields.Monetary(string='Total Before Withholding', compute='_compute_amount_extended', currency_field='company_currency_id')
|
||||
|
||||
@api.depends('amount_total_signed')
|
||||
def _compute_amount_extended(self):
|
||||
for move in self:
|
||||
totals = dict(vat=0.0, withholding=0.0, pension_fund=0.0)
|
||||
if move.is_invoice(True):
|
||||
for line in [line for line in move.line_ids if line.tax_line_id]:
|
||||
totals[line.tax_line_id._l10n_it_get_tax_kind()] -= line.balance
|
||||
move.l10n_it_amount_vat_signed = totals['vat']
|
||||
move.l10n_it_amount_withholding_signed = totals['withholding']
|
||||
move.l10n_it_amount_pension_fund_signed = totals['pension_fund']
|
||||
move.l10n_it_amount_before_withholding_signed = move.amount_untaxed_signed + totals['vat'] + totals['pension_fund']
|
||||
|
||||
def _l10n_it_edi_filter_fatturapa_tax_details(self, line, tax_values):
|
||||
"""Filters tax details to only include the positive amounted lines regarding VAT taxes."""
|
||||
repartition_line = tax_values['tax_repartition_line']
|
||||
repartition_line_vat = repartition_line.tax_id._l10n_it_filter_kind('vat')
|
||||
return repartition_line.factor_percent >= 0 and repartition_line_vat and repartition_line_vat.amount >= 0
|
||||
|
||||
def _prepare_fatturapa_export_values(self):
|
||||
"""Add withholding and pension_fund features."""
|
||||
template_values = super()._prepare_fatturapa_export_values()
|
||||
|
||||
# Withholding tax data
|
||||
WithholdingTaxData = namedtuple('TaxData', ['tax', 'tax_amount'])
|
||||
withholding_lines = self.line_ids.filtered(lambda x: x.tax_line_id._l10n_it_filter_kind('withholding'))
|
||||
withholding_values = [WithholdingTaxData(x.tax_line_id, abs(x.balance)) for x in withholding_lines]
|
||||
|
||||
# Eventually fix the total as it must be computed before applying the Withholding.
|
||||
# Withholding amount is negatively signed, so we need to subtract it
|
||||
document_total = template_values['document_total']
|
||||
document_total -= self.l10n_it_amount_withholding_signed
|
||||
|
||||
# Pension fund tax data, I need the base amount so I have to sum the amounts of the lines with the tax
|
||||
PensionFundTaxData = namedtuple('TaxData', ['tax', 'base_amount', 'tax_amount', 'vat_tax', 'withholding_tax'])
|
||||
pension_fund_lines = self.line_ids.filtered(lambda line: line.tax_line_id._l10n_it_filter_kind('pension_fund'))
|
||||
pension_fund_mapping = {}
|
||||
for line in self.line_ids:
|
||||
pension_fund_tax = line.tax_ids._l10n_it_filter_kind('pension_fund')
|
||||
if pension_fund_tax:
|
||||
pension_fund_mapping[pension_fund_tax.id] = (line.tax_ids._l10n_it_filter_kind('vat'), line.tax_ids._l10n_it_filter_kind('withholding'))
|
||||
|
||||
# Pension fund taxes in the XML must have a reference to their VAT tax (Aliquota tag)
|
||||
pension_fund_values = []
|
||||
enasarco_taxes = []
|
||||
for line in pension_fund_lines:
|
||||
# Enasarco must be treated separately
|
||||
if line.tax_line_id.l10n_it_pension_fund_type == 'TC07':
|
||||
enasarco_taxes.append(line.tax_line_id)
|
||||
continue
|
||||
pension_fund_tax = line.tax_line_id
|
||||
# Here we are supposing that the same pension_fund is always associated to the same VAT and Withholding taxes
|
||||
# That's also what the "Aliquota" tag seems to imply in the XML.
|
||||
vat_tax, withholding_tax = pension_fund_mapping[pension_fund_tax.id]
|
||||
pension_fund_values.append(PensionFundTaxData(pension_fund_tax, line.tax_base_amount, abs(line.balance), vat_tax, withholding_tax))
|
||||
|
||||
# Enasarco pension fund must be expressed in the AltriDatiGestionali at the line detail level
|
||||
enasarco_values = False
|
||||
if enasarco_taxes:
|
||||
enasarco_values = {}
|
||||
enasarco_details = self._prepare_edi_tax_details(filter_to_apply=lambda line, tax_values: self.env['account.tax'].browse([tax_values['id']]).l10n_it_pension_fund_type == 'TC07')
|
||||
for detail in enasarco_details['tax_details_per_record'].values():
|
||||
for subdetail in detail['tax_details'].values():
|
||||
# Withholdings are removed from the total, we have to re-add them
|
||||
document_total += abs(subdetail['tax_amount'])
|
||||
line = subdetail['records'].pop()
|
||||
enasarco_values[line.id] = {
|
||||
'amount': subdetail['tax'].amount,
|
||||
'tax_amount': abs(subdetail['tax_amount']),
|
||||
}
|
||||
|
||||
# Update the template_values that will be read while rendering
|
||||
template_values.update({
|
||||
'withholding_values': withholding_values,
|
||||
'pension_fund_values': pension_fund_values,
|
||||
'enasarco_values': enasarco_values,
|
||||
'document_total': document_total,
|
||||
})
|
||||
return template_values
|
||||
|
|
@ -0,0 +1,124 @@
|
|||
# -*- coding: utf-8 -*-
|
||||
# Part of Odoo. See LICENSE file for full copyright and licensing details.
|
||||
|
||||
from odoo import _, api, fields, models
|
||||
from odoo.exceptions import ValidationError
|
||||
|
||||
TAX_KIND_SELECTION = [
|
||||
('vat', 'VAT tax'),
|
||||
('withholding', 'Withholding tax'),
|
||||
('pension_fund', 'Pension Fund tax'),
|
||||
]
|
||||
|
||||
WITHHOLDING_TYPE_SELECTION = [
|
||||
('RT01', '[RT01] Withholding for persons'),
|
||||
('RT02', '[RT02] Withholding for personal businesses'),
|
||||
('RT03', '[RT03] INPS Pension fund contribution'),
|
||||
('RT04', '[RT04] ENASARCO pension fund contribution'),
|
||||
('RT05', '[RT05] ENPAM pension fund contribution'),
|
||||
('RT06', '[RT06] Other pension fund contribution'),
|
||||
]
|
||||
|
||||
WITHHOLDING_REASON_SELECTION = [
|
||||
('A', '[A] Autonomous work in the fields of art or profession'),
|
||||
('B', '[B] Income from the use of intellectual properties or patents or processes, formulas and informations in the fields of science, commerce or science'),
|
||||
('C', '[C] Income from work as part of association groups or other cooperation determined by contracts'),
|
||||
('D', '[D] Income as partner or founder of a corporation'),
|
||||
('E', '[E] Income from client-related bill protests made by town secretaries'),
|
||||
('G', '[G] Compensation for the end of a professional sport career'),
|
||||
('H', '[H] Compensation for the end of a societary career (excluded those earned before 31.12.2003) and already taxed'),
|
||||
('I', '[I] Compensation for the end of a notary career'),
|
||||
('K', '[K] Civil service checks, ref art. 16 D.lgs. n.40 6/03/2017'),
|
||||
('L', '[L] Income from the use of intellectual properties or patents or processes, formulas and informations in the fields of science, commerce or science, but not made by the author/inventor'),
|
||||
('L1', '[L1] Income from the use of intellectual properties or patents or processes, formulas and informations in the fields of science, commerce or science, from someone who actively bought the use rights'),
|
||||
('M', '[M] Autonomous work which isn\'t part of usual professional/artistic duties, or incomes due for an obligation to act, not to act, or to allow'),
|
||||
('M1', '[M1] Incomes due for an obligation to act, not to act, or to allow'),
|
||||
('M2', '[M2] Autonomous work which isn\'t part of usual professional/artistic duties, or incomes due for an obligation to act, not to act, or to allow - that require being registered to the "Gestione separata"'),
|
||||
('N', '[N] Compensation for travel, expenses, prizes, or other compensations for amateur sport activities'),
|
||||
('O', '[O] Autonomous work which isn\'t part of usual professional/artistic duties, or incomes due for an obligation to act, not to act, or to allow - that do not require being registered to the "Gestione separata"'),
|
||||
('O1', '[O1] Incomes due for an obligation to act, not to act, or to allow - that do not require being registered to the "Gestione Separata"'),
|
||||
('P', '[P] Compensation for people residing abroad for continuous use or concession of industrial machinery, commercial or scientific tools that are on the Italian soil'),
|
||||
('Q', '[Q] Provisions for exclusive agents or sales representatives\' work'),
|
||||
('R', '[R] Provisions for non-exclusive agents or sales representatives\' work'),
|
||||
('S', '[S] Provisions for commissioner work'),
|
||||
('T', '[T] Provisions for mediator work'),
|
||||
('U', '[U] Provisions for procurer work'),
|
||||
('V', '[V] Provisions for door-to-door sales persons and newspaper selling in kiosks'),
|
||||
('V1', '[V1] Income from unusual commercial activities (such as provisions for occasional work or sales representative, mediator, procurer)'),
|
||||
('V2', '[V2] Income from unusual work activities from door-to-door sales representatives'),
|
||||
('W', '[W] Income from 2015 tinders subject to law art. 25-ter D.P.R. 600/1973'),
|
||||
('X', '[X] Income from 2014 for foreign companies or institutions subject to law art. 26-quater, c. 1, lett. a) and b) D.P.R. 600/1973'),
|
||||
('Y', '[Y] Income from 1.01.2005 to 26.07.2005 from companies or institutions not included in the description above'),
|
||||
('Z', '[Z] Deprecated'),
|
||||
('ZO', '[ZO] Other reason'),
|
||||
]
|
||||
|
||||
PENSION_FUND_TYPE_SELECTION = [
|
||||
('TC01', 'National pension fund for lawyers and solicitors'),
|
||||
('TC02', 'Pension fund for accountants with a degree'),
|
||||
('TC03', 'Pension fund for surveyors'),
|
||||
('TC04', 'National pension fund for associated engineers and architects'),
|
||||
('TC05', 'National pension fund for notaries'),
|
||||
('TC06', 'Pension fund for accountants without a degree and commercial experts'),
|
||||
('TC07', 'ENASARCO pension fund for sales agents'),
|
||||
('TC08', 'ENPACL pension fund for labor consultants'),
|
||||
('TC09', 'ENPAM pension fund for doctors'),
|
||||
('TC10', 'ENPAF pension fund for chemists'),
|
||||
('TC11', 'ENPAV pension fund for veterinaries'),
|
||||
('TC12', 'ENPAIA pension fund for people working in agriculture'),
|
||||
('TC13', 'Pension fund for employees in delivery and marine agencies'),
|
||||
('TC14', 'INPGI pension fund for journalists'),
|
||||
('TC15', 'ONAOSI fund for sanitary orphans'),
|
||||
('TC16', 'CASAGIT Additional pension fund for journalists'),
|
||||
('TC17', 'EPPI pension fund for industrial experts'),
|
||||
('TC18', 'EPAP pension fund'),
|
||||
('TC19', 'ENPAB national pension fund for biologists'),
|
||||
('TC20', 'ENPAPI national pension fund for nurses'),
|
||||
('TC21', 'ENPAP national pension fund for psychologists'),
|
||||
('TC22', 'INPS national pension fund'),
|
||||
]
|
||||
|
||||
|
||||
class AccountTaxTemplate(models.Model):
|
||||
_inherit = 'account.tax.template'
|
||||
|
||||
l10n_it_withholding_type = fields.Selection(WITHHOLDING_TYPE_SELECTION, string="Withholding tax type (Italy)", help="Withholding tax type. Only for Italian accounting EDI.")
|
||||
l10n_it_withholding_reason = fields.Selection(WITHHOLDING_REASON_SELECTION, string="Withholding tax reason (Italy)", help="Withholding tax reason. Only for Italian accounting EDI.")
|
||||
l10n_it_pension_fund_type = fields.Selection(PENSION_FUND_TYPE_SELECTION, string="Pension fund type (Italy)", help="Pension Fund Type. Only for Italian accounting EDI.")
|
||||
|
||||
def _get_tax_vals(self, company, tax_template_to_tax):
|
||||
values = super()._get_tax_vals(company, tax_template_to_tax)
|
||||
values.update({
|
||||
"l10n_it_withholding_type": self.l10n_it_withholding_type,
|
||||
"l10n_it_withholding_reason": self.l10n_it_withholding_reason,
|
||||
"l10n_it_pension_fund_type": self.l10n_it_pension_fund_type,
|
||||
})
|
||||
return values
|
||||
|
||||
class AccountTax(models.Model):
|
||||
_inherit = 'account.tax'
|
||||
|
||||
l10n_it_withholding_type = fields.Selection(WITHHOLDING_TYPE_SELECTION, string="Withholding tax type (Italy)", help="Withholding tax type. Only for Italian accounting EDI.")
|
||||
l10n_it_withholding_reason = fields.Selection(WITHHOLDING_REASON_SELECTION, string="Withholding tax reason (Italy)", help="Withholding tax reason. Only for Italian accounting EDI.")
|
||||
l10n_it_pension_fund_type = fields.Selection(PENSION_FUND_TYPE_SELECTION, string="Pension fund type (Italy)", help="Pension Fund Type. Only for Italian accounting EDI.")
|
||||
|
||||
def _l10n_it_get_tax_kind(self):
|
||||
return ((self.l10n_it_withholding_type and 'withholding')
|
||||
or (self.l10n_it_pension_fund_type and 'pension_fund')
|
||||
or 'vat')
|
||||
|
||||
def _l10n_it_filter_kind(self, kind):
|
||||
""" Filters taxes depending on _l10n_it_get_tax_kind. """
|
||||
return self.filtered(lambda tax: tax._l10n_it_get_tax_kind() == kind)
|
||||
|
||||
@api.constrains('amount', 'l10n_it_withholding_type', 'l10n_it_withholding_reason', 'l10n_it_pension_fund_type')
|
||||
def _validate_withholding(self):
|
||||
for tax in self:
|
||||
if tax.l10n_it_withholding_type and tax.l10n_it_withholding_type != 'RT04' and tax.amount >= 0:
|
||||
raise ValidationError(_("Tax '%s' has a withholding type so the amount must be negative.", tax.name))
|
||||
if tax.l10n_it_withholding_type and not tax.l10n_it_withholding_reason:
|
||||
raise ValidationError(_("Tax '%s' has a withholding type, so the withholding reason must also be specified", tax.name))
|
||||
if tax.l10n_it_withholding_reason and not tax.l10n_it_withholding_type:
|
||||
raise ValidationError(_("Tax '%s' has a withholding reason, so the withholding type must also be specified", tax.name))
|
||||
if (tax.l10n_it_withholding_type or tax.l10n_it_withholding_reason) and tax.l10n_it_pension_fund_type:
|
||||
raise ValidationError(_("Tax '%s' cannot be both a Withholding tax and a Pension fund tax. Please create two separate ones.", tax.name))
|
||||
|
|
@ -0,0 +1,4 @@
|
|||
# -*- coding: utf-8 -*-
|
||||
# Part of Odoo. See LICENSE file for full copyright and licensing details.
|
||||
|
||||
from . import test_withholding
|
||||
|
|
@ -0,0 +1,154 @@
|
|||
<?xml version="1.0"?>
|
||||
<p:FatturaElettronica xmlns:ds="http://www.w3.org/2000/09/xmldsig#" xmlns:p="http://ivaservizi.agenziaentrate.gov.it/docs/xsd/fatture/v1.2" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://ivaservizi.agenziaentrate.gov.it/docs/xsd/fatture/v1.2 http://www.fatturapa.gov.it/export/fatturazione/sdi/fatturapa/v1.2/Schema_del_file_xml_FatturaPA_versione_1.2.xsd" versione="FPR12">
|
||||
<FatturaElettronicaHeader>
|
||||
<DatiTrasmissione>
|
||||
<IdTrasmittente>
|
||||
<IdPaese>IT</IdPaese>
|
||||
<IdCodice>01234560157</IdCodice>
|
||||
</IdTrasmittente>
|
||||
<ProgressivoInvio>2022030010</ProgressivoInvio>
|
||||
<FormatoTrasmissione>FPR12</FormatoTrasmissione>
|
||||
<CodiceDestinatario>0000000</CodiceDestinatario>
|
||||
<ContattiTrasmittente>
|
||||
</ContattiTrasmittente>
|
||||
</DatiTrasmissione>
|
||||
<CedentePrestatore>
|
||||
<DatiAnagrafici>
|
||||
<IdFiscaleIVA>
|
||||
<IdPaese>IT</IdPaese>
|
||||
<IdCodice>00465840031</IdCodice>
|
||||
</IdFiscaleIVA>
|
||||
<CodiceFiscale>93026890017</CodiceFiscale>
|
||||
<Anagrafica>
|
||||
<Denominazione>Alessi</Denominazione>
|
||||
</Anagrafica>
|
||||
</DatiAnagrafici>
|
||||
<Sede>
|
||||
<Indirizzo>Via Privata Alessi 6 </Indirizzo>
|
||||
<CAP>28887</CAP>
|
||||
<Comune>Milan</Comune>
|
||||
<Nazione>IT</Nazione>
|
||||
</Sede>
|
||||
</CedentePrestatore>
|
||||
<CessionarioCommittente>
|
||||
<DatiAnagrafici>
|
||||
<IdFiscaleIVA>
|
||||
<IdPaese>IT</IdPaese>
|
||||
<IdCodice>01234560157</IdCodice>
|
||||
</IdFiscaleIVA>
|
||||
<CodiceFiscale>01234560157</CodiceFiscale>
|
||||
<Anagrafica>
|
||||
<Denominazione>company_2_data</Denominazione>
|
||||
</Anagrafica>
|
||||
<RegimeFiscale>RF01</RegimeFiscale>
|
||||
</DatiAnagrafici>
|
||||
<Sede>
|
||||
<Indirizzo>1234 Test Street </Indirizzo>
|
||||
<CAP>12345</CAP>
|
||||
<Comune>Prova</Comune>
|
||||
<Nazione>IT</Nazione>
|
||||
</Sede>
|
||||
</CessionarioCommittente>
|
||||
</FatturaElettronicaHeader>
|
||||
<FatturaElettronicaBody>
|
||||
<DatiGenerali>
|
||||
<DatiGeneraliDocumento>
|
||||
<TipoDocumento>TD01</TipoDocumento>
|
||||
<Divisa>EUR</Divisa>
|
||||
<Data>2022-03-24</Data>
|
||||
<Numero>INV/2022/03/0010</Numero>
|
||||
<DatiRitenuta>
|
||||
<TipoRitenuta>RT02</TipoRitenuta>
|
||||
<ImportoRitenuta>86.25</ImportoRitenuta>
|
||||
<AliquotaRitenuta>23.00</AliquotaRitenuta>
|
||||
<CausalePagamento>ZO</CausalePagamento>
|
||||
</DatiRitenuta>
|
||||
<ImportoTotaleDocumento>945.00</ImportoTotaleDocumento>
|
||||
</DatiGeneraliDocumento>
|
||||
</DatiGenerali>
|
||||
<DatiBeniServizi>
|
||||
<DettaglioLinee>
|
||||
<NumeroLinea>1</NumeroLinea>
|
||||
<Descrizione>
|
||||
Ordinary accounting service for the year
|
||||
</Descrizione>
|
||||
<Quantita>1.00</Quantita>
|
||||
<PrezzoUnitario>350.000000</PrezzoUnitario>
|
||||
<PrezzoTotale>350.00</PrezzoTotale>
|
||||
<Ritenuta>SI</Ritenuta>
|
||||
<AliquotaIVA>22.00</AliquotaIVA>
|
||||
<AltriDatiGestionali>
|
||||
<TipoDato>CASSA-PREV</TipoDato>
|
||||
<RiferimentoTesto>TC07 - ENASARCO (8.5%)</RiferimentoTesto>
|
||||
<RiferimentoNumero>29.75</RiferimentoNumero>
|
||||
<RiferimentoData/>
|
||||
</AltriDatiGestionali>
|
||||
</DettaglioLinee>
|
||||
<DettaglioLinee>
|
||||
<NumeroLinea>2</NumeroLinea>
|
||||
<Descrizione>
|
||||
Balance deposit for the past year
|
||||
</Descrizione>
|
||||
<Quantita>1.00</Quantita>
|
||||
<PrezzoUnitario>300.000000</PrezzoUnitario>
|
||||
<PrezzoTotale>300.00</PrezzoTotale>
|
||||
<Ritenuta>SI</Ritenuta>
|
||||
<AliquotaIVA>22.00</AliquotaIVA>
|
||||
<AltriDatiGestionali>
|
||||
<TipoDato>CASSA-PREV</TipoDato>
|
||||
<RiferimentoTesto>TC07 - ENASARCO (8.5%)</RiferimentoTesto>
|
||||
<RiferimentoNumero>25.50</RiferimentoNumero>
|
||||
<RiferimentoData/>
|
||||
</AltriDatiGestionali>
|
||||
</DettaglioLinee>
|
||||
<DettaglioLinee>
|
||||
<NumeroLinea>3</NumeroLinea>
|
||||
<Descrizione>
|
||||
Ordinary accounting service for the trimester
|
||||
</Descrizione>
|
||||
<Quantita>1.00</Quantita>
|
||||
<PrezzoUnitario>50.000000</PrezzoUnitario>
|
||||
<PrezzoTotale>50.00</PrezzoTotale>
|
||||
<Ritenuta>SI</Ritenuta>
|
||||
<AliquotaIVA>22.00</AliquotaIVA>
|
||||
<AltriDatiGestionali>
|
||||
<TipoDato>CASSA-PREV</TipoDato>
|
||||
<RiferimentoTesto>TC07 - ENASARCO (8.5%)</RiferimentoTesto>
|
||||
<RiferimentoNumero>4.25</RiferimentoNumero>
|
||||
<RiferimentoData/>
|
||||
</AltriDatiGestionali>
|
||||
</DettaglioLinee>
|
||||
<DettaglioLinee>
|
||||
<NumeroLinea>4</NumeroLinea>
|
||||
<Descrizione>
|
||||
Electronic invoices management
|
||||
</Descrizione>
|
||||
<Quantita>1.00</Quantita>
|
||||
<PrezzoUnitario>50.000000</PrezzoUnitario>
|
||||
<PrezzoTotale>50.00</PrezzoTotale>
|
||||
<Ritenuta>SI</Ritenuta>
|
||||
<AliquotaIVA>22.00</AliquotaIVA>
|
||||
<AltriDatiGestionali>
|
||||
<TipoDato>CASSA-PREV</TipoDato>
|
||||
<RiferimentoTesto>TC07 - ENASARCO (8.5%)</RiferimentoTesto>
|
||||
<RiferimentoNumero>4.25</RiferimentoNumero>
|
||||
</AltriDatiGestionali>
|
||||
</DettaglioLinee>
|
||||
<DatiRiepilogo>
|
||||
<AliquotaIVA>22.00</AliquotaIVA>
|
||||
<ImponibileImporto>750.00</ImponibileImporto>
|
||||
<Imposta>165.00</Imposta>
|
||||
<EsigibilitaIVA>I</EsigibilitaIVA>
|
||||
</DatiRiepilogo>
|
||||
</DatiBeniServizi>
|
||||
<DatiPagamento>
|
||||
<CondizioniPagamento>TP02</CondizioniPagamento>
|
||||
<DettaglioPagamento>
|
||||
<ModalitaPagamento>MP05</ModalitaPagamento>
|
||||
<DataScadenzaPagamento>2022-03-24</DataScadenzaPagamento>
|
||||
<ImportoPagamento>765.00</ImportoPagamento>
|
||||
<CodicePagamento>INV/2022/03/0010</CodicePagamento>
|
||||
</DettaglioPagamento>
|
||||
</DatiPagamento>
|
||||
</FatturaElettronicaBody>
|
||||
</p:FatturaElettronica>
|
||||
|
|
@ -0,0 +1,134 @@
|
|||
<?xml version='1.0' encoding='UTF-8'?>
|
||||
<p:FatturaElettronica xmlns:p="http://ivaservizi.agenziaentrate.gov.it/docs/xsd/fatture/v1.2" xmlns:ds="http://www.w3.org/2000/09/xmldsig#" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://ivaservizi.agenziaentrate.gov.it/docs/xsd/fatture/v1.2 http://www.fatturapa.gov.it/export/fatturazione/sdi/fatturapa/v1.2/Schema_del_file_xml_FatturaPA_versione_1.2.xsd" versione="FPR12">
|
||||
<FatturaElettronicaHeader>
|
||||
<DatiTrasmissione>
|
||||
<IdTrasmittente>
|
||||
<IdPaese>IT</IdPaese>
|
||||
<IdCodice>01234560157</IdCodice>
|
||||
</IdTrasmittente>
|
||||
<FormatoTrasmissione>FPR12</FormatoTrasmissione>
|
||||
<CodiceDestinatario>0000000</CodiceDestinatario>
|
||||
<ContattiTrasmittente/>
|
||||
</DatiTrasmissione>
|
||||
<CedentePrestatore>
|
||||
<DatiAnagrafici>
|
||||
<IdFiscaleIVA>
|
||||
<IdPaese>IT</IdPaese>
|
||||
<IdCodice>01234560157</IdCodice>
|
||||
</IdFiscaleIVA>
|
||||
<CodiceFiscale>01234560157</CodiceFiscale>
|
||||
<Anagrafica>
|
||||
<Denominazione>company_2_data</Denominazione>
|
||||
</Anagrafica>
|
||||
<RegimeFiscale>RF01</RegimeFiscale>
|
||||
</DatiAnagrafici>
|
||||
<Sede>
|
||||
<Indirizzo>1234 Test Street </Indirizzo>
|
||||
<CAP>12345</CAP>
|
||||
<Comune>Prova</Comune>
|
||||
<Nazione>IT</Nazione>
|
||||
</Sede>
|
||||
</CedentePrestatore>
|
||||
<CessionarioCommittente>
|
||||
<DatiAnagrafici>
|
||||
<IdFiscaleIVA>
|
||||
<IdPaese>IT</IdPaese>
|
||||
<IdCodice>00465840031</IdCodice>
|
||||
</IdFiscaleIVA>
|
||||
<CodiceFiscale>93026890017</CodiceFiscale>
|
||||
<Anagrafica>
|
||||
<Denominazione>Alessi</Denominazione>
|
||||
</Anagrafica>
|
||||
</DatiAnagrafici>
|
||||
<Sede>
|
||||
<Indirizzo>Via Privata Alessi 6</Indirizzo>
|
||||
<CAP>28887</CAP>
|
||||
<Comune>Milan</Comune>
|
||||
<Nazione>IT</Nazione>
|
||||
</Sede>
|
||||
</CessionarioCommittente>
|
||||
</FatturaElettronicaHeader>
|
||||
<FatturaElettronicaBody>
|
||||
<DatiGenerali>
|
||||
<DatiGeneraliDocumento>
|
||||
<TipoDocumento>TD01</TipoDocumento>
|
||||
<Divisa>EUR</Divisa>
|
||||
<Data>___ignore___</Data>
|
||||
<Numero>___ignore___</Numero>
|
||||
<DatiCassaPrevidenziale>
|
||||
<TipoCassa>TC22</TipoCassa>
|
||||
<AlCassa>4.00</AlCassa>
|
||||
<ImportoContributoCassa>30.00</ImportoContributoCassa>
|
||||
<ImponibileCassa>750.00</ImponibileCassa>
|
||||
<AliquotaIVA>0.00</AliquotaIVA>
|
||||
<Natura>N2.2</Natura>
|
||||
<RiferimentoAmministrazione>4% Contributo INPS</RiferimentoAmministrazione>
|
||||
</DatiCassaPrevidenziale>
|
||||
<ImportoTotaleDocumento>780.00</ImportoTotaleDocumento>
|
||||
</DatiGeneraliDocumento>
|
||||
</DatiGenerali>
|
||||
<DatiBeniServizi>
|
||||
<DettaglioLinee>
|
||||
<NumeroLinea>1</NumeroLinea>
|
||||
<Descrizione>
|
||||
Ordinary accounting service for the year
|
||||
</Descrizione>
|
||||
<Quantita>1.00</Quantita>
|
||||
<PrezzoUnitario>350.000000</PrezzoUnitario>
|
||||
<PrezzoTotale>350.00</PrezzoTotale>
|
||||
<AliquotaIVA>0.00</AliquotaIVA>
|
||||
<Natura>N2.2</Natura>
|
||||
</DettaglioLinee>
|
||||
<DettaglioLinee>
|
||||
<NumeroLinea>2</NumeroLinea>
|
||||
<Descrizione>
|
||||
Balance deposit for the past year
|
||||
</Descrizione>
|
||||
<Quantita>1.00</Quantita>
|
||||
<PrezzoUnitario>300.000000</PrezzoUnitario>
|
||||
<PrezzoTotale>300.00</PrezzoTotale>
|
||||
<AliquotaIVA>0.00</AliquotaIVA>
|
||||
<Natura>N2.2</Natura>
|
||||
</DettaglioLinee>
|
||||
<DettaglioLinee>
|
||||
<NumeroLinea>3</NumeroLinea>
|
||||
<Descrizione>
|
||||
Ordinary accounting service for the trimester
|
||||
</Descrizione>
|
||||
<Quantita>1.00</Quantita>
|
||||
<PrezzoUnitario>50.000000</PrezzoUnitario>
|
||||
<PrezzoTotale>50.00</PrezzoTotale>
|
||||
<AliquotaIVA>0.00</AliquotaIVA>
|
||||
<Natura>N2.2</Natura>
|
||||
</DettaglioLinee>
|
||||
<DettaglioLinee>
|
||||
<NumeroLinea>4</NumeroLinea>
|
||||
<Descrizione>
|
||||
Electronic invoices management
|
||||
</Descrizione>
|
||||
<Quantita>1.00</Quantita>
|
||||
<PrezzoUnitario>50.000000</PrezzoUnitario>
|
||||
<PrezzoTotale>50.00</PrezzoTotale>
|
||||
<AliquotaIVA>0.00</AliquotaIVA>
|
||||
<Natura>N2.2</Natura>
|
||||
</DettaglioLinee>
|
||||
<DatiRiepilogo>
|
||||
<AliquotaIVA>0.00</AliquotaIVA>
|
||||
<Natura>N2.2</Natura>
|
||||
<ImponibileImporto>780.00</ImponibileImporto>
|
||||
<Imposta>0.00</Imposta>
|
||||
<EsigibilitaIVA>I</EsigibilitaIVA>
|
||||
<RiferimentoNormativo>Fatture emesse o ricevute da contribuenti forfettari o minimi</RiferimentoNormativo>
|
||||
</DatiRiepilogo>
|
||||
</DatiBeniServizi>
|
||||
<DatiPagamento>
|
||||
<CondizioniPagamento>TP02</CondizioniPagamento>
|
||||
<DettaglioPagamento>
|
||||
<ModalitaPagamento>MP05</ModalitaPagamento>
|
||||
<DataScadenzaPagamento>___ignore___</DataScadenzaPagamento>
|
||||
<ImportoPagamento>780.00</ImportoPagamento>
|
||||
<CodicePagamento>___ignore___</CodicePagamento>
|
||||
</DettaglioPagamento>
|
||||
</DatiPagamento>
|
||||
</FatturaElettronicaBody>
|
||||
</p:FatturaElettronica>
|
||||
|
|
@ -0,0 +1,138 @@
|
|||
<?xml version="1.0"?>
|
||||
<p:FatturaElettronica xmlns:ds="http://www.w3.org/2000/09/xmldsig#" xmlns:p="http://ivaservizi.agenziaentrate.gov.it/docs/xsd/fatture/v1.2" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://ivaservizi.agenziaentrate.gov.it/docs/xsd/fatture/v1.2 http://www.fatturapa.gov.it/export/fatturazione/sdi/fatturapa/v1.2/Schema_del_file_xml_FatturaPA_versione_1.2.xsd" versione="FPR12">
|
||||
<FatturaElettronicaHeader>
|
||||
<DatiTrasmissione>
|
||||
<IdTrasmittente>
|
||||
<IdPaese>IT</IdPaese>
|
||||
<IdCodice>01234560157</IdCodice>
|
||||
</IdTrasmittente>
|
||||
<ProgressivoInvio>2022030010</ProgressivoInvio>
|
||||
<FormatoTrasmissione>FPR12</FormatoTrasmissione>
|
||||
<CodiceDestinatario>0000000</CodiceDestinatario>
|
||||
<ContattiTrasmittente>
|
||||
</ContattiTrasmittente>
|
||||
</DatiTrasmissione>
|
||||
<CedentePrestatore>
|
||||
<DatiAnagrafici>
|
||||
<IdFiscaleIVA>
|
||||
<IdPaese>IT</IdPaese>
|
||||
<IdCodice>00465840031</IdCodice>
|
||||
</IdFiscaleIVA>
|
||||
<Anagrafica>
|
||||
<Denominazione>Alessi</Denominazione>
|
||||
</Anagrafica>
|
||||
</DatiAnagrafici>
|
||||
<Sede>
|
||||
<Indirizzo>Via Privata Alessi 6 </Indirizzo>
|
||||
<CAP>28887</CAP>
|
||||
<Comune>Milan</Comune>
|
||||
<Nazione>IT</Nazione>
|
||||
</Sede>
|
||||
</CedentePrestatore>
|
||||
<CessionarioCommittente>
|
||||
<DatiAnagrafici>
|
||||
<IdFiscaleIVA>
|
||||
<IdPaese>IT</IdPaese>
|
||||
<IdCodice>01234560157</IdCodice>
|
||||
</IdFiscaleIVA>
|
||||
<CodiceFiscale>01234560157</CodiceFiscale>
|
||||
<Anagrafica>
|
||||
<Denominazione>company_2_data</Denominazione>
|
||||
</Anagrafica>
|
||||
<RegimeFiscale>RF01</RegimeFiscale>
|
||||
</DatiAnagrafici>
|
||||
<Sede>
|
||||
<Indirizzo>1234 Test Street </Indirizzo>
|
||||
<CAP>12345</CAP>
|
||||
<Comune>Prova</Comune>
|
||||
<Nazione>IT</Nazione>
|
||||
</Sede>
|
||||
</CessionarioCommittente>
|
||||
</FatturaElettronicaHeader>
|
||||
<FatturaElettronicaBody>
|
||||
<DatiGenerali>
|
||||
<DatiGeneraliDocumento>
|
||||
<TipoDocumento>TD01</TipoDocumento>
|
||||
<Divisa>EUR</Divisa>
|
||||
<Data>2022-03-24</Data>
|
||||
<Numero>INV/2022/03/0010</Numero>
|
||||
<DatiRitenuta>
|
||||
<TipoRitenuta>RT02</TipoRitenuta>
|
||||
<ImportoRitenuta>150.00</ImportoRitenuta>
|
||||
<AliquotaRitenuta>20.00</AliquotaRitenuta>
|
||||
<CausalePagamento>A</CausalePagamento>
|
||||
</DatiRitenuta>
|
||||
<DatiCassaPrevidenziale>
|
||||
<TipoCassa>TC22</TipoCassa>
|
||||
<AlCassa>4.00</AlCassa>
|
||||
<ImportoContributoCassa>30.00</ImportoContributoCassa>
|
||||
<ImponibileCassa>750.00</ImponibileCassa>
|
||||
<AliquotaIVA>22.00</AliquotaIVA>
|
||||
<RiferimentoAmministrazione>___ignore___</RiferimentoAmministrazione>
|
||||
</DatiCassaPrevidenziale>
|
||||
<ImportoTotaleDocumento>945.00</ImportoTotaleDocumento>
|
||||
</DatiGeneraliDocumento>
|
||||
</DatiGenerali>
|
||||
<DatiBeniServizi>
|
||||
<DettaglioLinee>
|
||||
<NumeroLinea>1</NumeroLinea>
|
||||
<Descrizione>
|
||||
Ordinary accounting service for the year
|
||||
</Descrizione>
|
||||
<Quantita>1.00</Quantita>
|
||||
<PrezzoUnitario>350.000000</PrezzoUnitario>
|
||||
<PrezzoTotale>350.00</PrezzoTotale>
|
||||
<Ritenuta>SI</Ritenuta>
|
||||
<AliquotaIVA>22.00</AliquotaIVA>
|
||||
</DettaglioLinee>
|
||||
<DettaglioLinee>
|
||||
<NumeroLinea>2</NumeroLinea>
|
||||
<Descrizione>
|
||||
Balance deposit for the past year
|
||||
</Descrizione>
|
||||
<Quantita>1.00</Quantita>
|
||||
<PrezzoUnitario>300.000000</PrezzoUnitario>
|
||||
<PrezzoTotale>300.00</PrezzoTotale>
|
||||
<Ritenuta>SI</Ritenuta>
|
||||
<AliquotaIVA>22.00</AliquotaIVA>
|
||||
</DettaglioLinee>
|
||||
<DettaglioLinee>
|
||||
<NumeroLinea>3</NumeroLinea>
|
||||
<Descrizione>
|
||||
Ordinary accounting service for the trimester
|
||||
</Descrizione>
|
||||
<Quantita>1.00</Quantita>
|
||||
<PrezzoUnitario>50.000000</PrezzoUnitario>
|
||||
<PrezzoTotale>50.00</PrezzoTotale>
|
||||
<Ritenuta>SI</Ritenuta>
|
||||
<AliquotaIVA>22.00</AliquotaIVA>
|
||||
</DettaglioLinee>
|
||||
<DettaglioLinee>
|
||||
<NumeroLinea>4</NumeroLinea>
|
||||
<Descrizione>
|
||||
Electronic invoices management
|
||||
</Descrizione>
|
||||
<Quantita>1.00</Quantita>
|
||||
<PrezzoUnitario>50.000000</PrezzoUnitario>
|
||||
<PrezzoTotale>50.00</PrezzoTotale>
|
||||
<Ritenuta>SI</Ritenuta>
|
||||
<AliquotaIVA>22.00</AliquotaIVA>
|
||||
</DettaglioLinee>
|
||||
<DatiRiepilogo>
|
||||
<AliquotaIVA>22.00</AliquotaIVA>
|
||||
<ImponibileImporto>750.00</ImponibileImporto>
|
||||
<Imposta>165.00</Imposta>
|
||||
<EsigibilitaIVA>I</EsigibilitaIVA>
|
||||
</DatiRiepilogo>
|
||||
</DatiBeniServizi>
|
||||
<DatiPagamento>
|
||||
<CondizioniPagamento>TP02</CondizioniPagamento>
|
||||
<DettaglioPagamento>
|
||||
<ModalitaPagamento>MP05</ModalitaPagamento>
|
||||
<DataScadenzaPagamento>2022-03-24</DataScadenzaPagamento>
|
||||
<ImportoPagamento>795.00</ImportoPagamento>
|
||||
<CodicePagamento>INV/2022/03/0010</CodicePagamento>
|
||||
</DettaglioPagamento>
|
||||
</DatiPagamento>
|
||||
</FatturaElettronicaBody>
|
||||
</p:FatturaElettronica>
|
||||
|
|
@ -0,0 +1,123 @@
|
|||
<?xml version="1.0"?>
|
||||
<p:FatturaElettronica xmlns:ds="http://www.w3.org/2000/09/xmldsig#" xmlns:p="http://ivaservizi.agenziaentrate.gov.it/docs/xsd/fatture/v1.2" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://ivaservizi.agenziaentrate.gov.it/docs/xsd/fatture/v1.2 http://www.fatturapa.gov.it/export/fatturazione/sdi/fatturapa/v1.2/Schema_del_file_xml_FatturaPA_versione_1.2.xsd" versione="FPR12">
|
||||
<FatturaElettronicaHeader>
|
||||
<DatiTrasmissione>
|
||||
<IdTrasmittente>
|
||||
<IdPaese>IT</IdPaese>
|
||||
<IdCodice>01234560157</IdCodice>
|
||||
</IdTrasmittente>
|
||||
<ProgressivoInvio>___ignore___</ProgressivoInvio>
|
||||
<FormatoTrasmissione>FPR12</FormatoTrasmissione>
|
||||
<CodiceDestinatario>0000000</CodiceDestinatario>
|
||||
<ContattiTrasmittente>
|
||||
</ContattiTrasmittente>
|
||||
</DatiTrasmissione>
|
||||
<CedentePrestatore>
|
||||
<DatiAnagrafici>
|
||||
<IdFiscaleIVA>
|
||||
<IdPaese>IT</IdPaese>
|
||||
<IdCodice>00465840031</IdCodice>
|
||||
</IdFiscaleIVA>
|
||||
<Anagrafica>
|
||||
<Denominazione>Alessi</Denominazione>
|
||||
</Anagrafica>
|
||||
<RegimeFiscale>RF01</RegimeFiscale>
|
||||
</DatiAnagrafici>
|
||||
<Sede>
|
||||
<Indirizzo>Via Privata Alessi 6 </Indirizzo>
|
||||
<CAP>28887</CAP>
|
||||
<Comune>Milan</Comune>
|
||||
<Nazione>IT</Nazione>
|
||||
</Sede>
|
||||
</CedentePrestatore>
|
||||
<CessionarioCommittente>
|
||||
<DatiAnagrafici>
|
||||
<IdFiscaleIVA>
|
||||
<IdPaese>IT</IdPaese>
|
||||
<IdCodice>01234560157</IdCodice>
|
||||
</IdFiscaleIVA>
|
||||
<CodiceFiscale>01234560157</CodiceFiscale>
|
||||
<Anagrafica>
|
||||
<Denominazione>company_2_data</Denominazione>
|
||||
</Anagrafica>
|
||||
<RegimeFiscale>RF01</RegimeFiscale>
|
||||
</DatiAnagrafici>
|
||||
<Sede>
|
||||
<Indirizzo>1234 Test Street </Indirizzo>
|
||||
<CAP>12345</CAP>
|
||||
<Comune>Prova</Comune>
|
||||
<Nazione>IT</Nazione>
|
||||
</Sede>
|
||||
</CessionarioCommittente>
|
||||
</FatturaElettronicaHeader>
|
||||
<FatturaElettronicaBody>
|
||||
<DatiGenerali>
|
||||
<DatiGeneraliDocumento>
|
||||
<TipoDocumento>TD01</TipoDocumento>
|
||||
<Divisa>EUR</Divisa>
|
||||
<Data>2022-03-24</Data>
|
||||
<Numero>___ignore___</Numero>
|
||||
<DatiRitenuta>
|
||||
<TipoRitenuta>RT02</TipoRitenuta>
|
||||
<ImportoRitenuta>150.00</ImportoRitenuta>
|
||||
<AliquotaRitenuta>20.00</AliquotaRitenuta>
|
||||
<CausalePagamento>A</CausalePagamento>
|
||||
</DatiRitenuta>
|
||||
<ImportoTotaleDocumento>915.00</ImportoTotaleDocumento>
|
||||
</DatiGeneraliDocumento>
|
||||
</DatiGenerali>
|
||||
<DatiBeniServizi>
|
||||
<DettaglioLinee>
|
||||
<NumeroLinea>1</NumeroLinea>
|
||||
<Descrizione>Ordinary accounting service for the year</Descrizione>
|
||||
<Quantita>1.00</Quantita>
|
||||
<PrezzoUnitario>350.000000</PrezzoUnitario>
|
||||
<PrezzoTotale>350.00</PrezzoTotale>
|
||||
<Ritenuta>SI</Ritenuta>
|
||||
<AliquotaIVA>22.00</AliquotaIVA>
|
||||
</DettaglioLinee>
|
||||
<DettaglioLinee>
|
||||
<NumeroLinea>2</NumeroLinea>
|
||||
<Descrizione>Balance deposit for the past year</Descrizione>
|
||||
<Quantita>1.00</Quantita>
|
||||
<PrezzoUnitario>300.000000</PrezzoUnitario>
|
||||
<PrezzoTotale>300.00</PrezzoTotale>
|
||||
<Ritenuta>SI</Ritenuta>
|
||||
<AliquotaIVA>22.00</AliquotaIVA>
|
||||
</DettaglioLinee>
|
||||
<DettaglioLinee>
|
||||
<NumeroLinea>3</NumeroLinea>
|
||||
<Descrizione>Ordinary accounting service for the trimester</Descrizione>
|
||||
<Quantita>1.00</Quantita>
|
||||
<PrezzoUnitario>50.000000</PrezzoUnitario>
|
||||
<PrezzoTotale>50.00</PrezzoTotale>
|
||||
<Ritenuta>SI</Ritenuta>
|
||||
<AliquotaIVA>22.00</AliquotaIVA>
|
||||
</DettaglioLinee>
|
||||
<DettaglioLinee>
|
||||
<NumeroLinea>4</NumeroLinea>
|
||||
<Descrizione>Electronic invoices management</Descrizione>
|
||||
<Quantita>1.00</Quantita>
|
||||
<PrezzoUnitario>50.000000</PrezzoUnitario>
|
||||
<PrezzoTotale>50.00</PrezzoTotale>
|
||||
<Ritenuta>SI</Ritenuta>
|
||||
<AliquotaIVA>22.00</AliquotaIVA>
|
||||
</DettaglioLinee>
|
||||
<DatiRiepilogo>
|
||||
<AliquotaIVA>22.00</AliquotaIVA>
|
||||
<ImponibileImporto>750.00</ImponibileImporto>
|
||||
<Imposta>165.00</Imposta>
|
||||
<EsigibilitaIVA>I</EsigibilitaIVA>
|
||||
</DatiRiepilogo>
|
||||
</DatiBeniServizi>
|
||||
<DatiPagamento>
|
||||
<CondizioniPagamento>TP02</CondizioniPagamento>
|
||||
<DettaglioPagamento>
|
||||
<ModalitaPagamento>MP05</ModalitaPagamento>
|
||||
<DataScadenzaPagamento>2022-03-24</DataScadenzaPagamento>
|
||||
<ImportoPagamento>765.00</ImportoPagamento>
|
||||
<CodicePagamento>___ignore___</CodicePagamento>
|
||||
</DettaglioPagamento>
|
||||
</DatiPagamento>
|
||||
</FatturaElettronicaBody>
|
||||
</p:FatturaElettronica>
|
||||
|
|
@ -0,0 +1,437 @@
|
|||
# -*- coding: utf-8 -*-
|
||||
# Part of Odoo. See LICENSE file for full copyright and licensing details.
|
||||
|
||||
import datetime
|
||||
from lxml import etree
|
||||
from collections import namedtuple
|
||||
|
||||
from odoo import tools
|
||||
from odoo.tests import tagged
|
||||
from odoo.exceptions import ValidationError
|
||||
from odoo.addons.l10n_it_edi.tests.common import TestItEdi
|
||||
|
||||
|
||||
@tagged('post_install_l10n', 'post_install', '-at_install')
|
||||
class TestWithholdingAndPensionFundTaxes(TestItEdi):
|
||||
|
||||
@classmethod
|
||||
def setUpClass(cls):
|
||||
super().setUpClass()
|
||||
|
||||
cls.purchase_journal = cls.company_data_2['default_journal_purchase']
|
||||
|
||||
def find_tax_by_ref(ref_name):
|
||||
return cls.env.ref(f'l10n_it_edi_withholding.{cls.company.id}_{ref_name}')
|
||||
|
||||
cls.withholding_sale_tax = find_tax_by_ref('20vwc')
|
||||
cls.withholding_sale_tax_23 = find_tax_by_ref('23vwo')
|
||||
cls.pension_fund_sale_tax = find_tax_by_ref('4vcp')
|
||||
cls.enasarco_sale_tax = find_tax_by_ref('enasarcov')
|
||||
cls.withholding_purchase_tax_23 = find_tax_by_ref('23awo')
|
||||
cls.enasarco_purchase_tax = find_tax_by_ref('enasarcoa')
|
||||
cls.inps_tax = find_tax_by_ref('4vinps')
|
||||
|
||||
cls.zero_tax = cls.env['account.tax'].with_company(cls.company).create({
|
||||
'name': 'ZeroTax',
|
||||
'sequence': 31,
|
||||
'type_tax_use': 'sale',
|
||||
'amount': 0.0,
|
||||
'amount_type': 'percent',
|
||||
'l10n_it_has_exoneration': True,
|
||||
'l10n_it_kind_exoneration': 'N2.2',
|
||||
'l10n_it_law_reference': 'Fatture emesse o ricevute da contribuenti forfettari o minimi',
|
||||
})
|
||||
|
||||
cls.withholding_sale_line = {
|
||||
'name': 'withholding_line',
|
||||
'quantity': 1,
|
||||
'tax_ids': [(6, 0, [
|
||||
cls.withholding_sale_tax.id,
|
||||
cls.company.account_sale_tax_id.id,
|
||||
])]
|
||||
}
|
||||
|
||||
cls.pension_fund_sale_line = {
|
||||
'name': 'pension_fund_line',
|
||||
'quantity': 1,
|
||||
'tax_ids': [(6, 0, [
|
||||
cls.withholding_sale_tax.id,
|
||||
cls.pension_fund_sale_tax.id,
|
||||
cls.company.account_sale_tax_id.id,
|
||||
])]
|
||||
}
|
||||
|
||||
cls.enasarco_sale_line = {
|
||||
'name': 'enasarco_line',
|
||||
'quantity': 1,
|
||||
'tax_ids': [(6, 0, [
|
||||
cls.enasarco_sale_tax.id,
|
||||
cls.withholding_sale_tax_23.id,
|
||||
cls.company.account_sale_tax_id.id,
|
||||
])]
|
||||
}
|
||||
|
||||
cls.inps_sale_line = {
|
||||
'name': 'inps_line',
|
||||
'quantity': 1,
|
||||
'tax_ids': [(6, 0, [cls.inps_tax.id, cls.zero_tax.id])]
|
||||
}
|
||||
|
||||
invoice_data = cls.get_real_client_invoice_data()
|
||||
cls.withholding_tax_invoice = cls.env['account.move'].with_company(cls.company).create({
|
||||
'move_type': 'out_invoice',
|
||||
'company_id': cls.company.id,
|
||||
'partner_id': cls.italian_partner_a.id,
|
||||
'invoice_date': datetime.date(2022, 3, 24),
|
||||
'invoice_date_due': datetime.date(2022, 3, 24),
|
||||
'invoice_line_ids': [
|
||||
(0, 0, {
|
||||
**cls.withholding_sale_line,
|
||||
'name': name,
|
||||
'price_unit': price,
|
||||
}) for (name, price) in invoice_data.lines
|
||||
],
|
||||
})
|
||||
|
||||
cls.pension_fund_tax_invoice = cls.env['account.move'].with_company(cls.company).create({
|
||||
'move_type': 'out_invoice',
|
||||
'company_id': cls.company.id,
|
||||
'partner_id': cls.italian_partner_a.id,
|
||||
'invoice_date': datetime.date(2022, 3, 24),
|
||||
'invoice_date_due': datetime.date(2022, 3, 24),
|
||||
'invoice_line_ids': [
|
||||
(0, 0, {
|
||||
**cls.pension_fund_sale_line,
|
||||
'name': name,
|
||||
'price_unit': price,
|
||||
}) for (name, price) in invoice_data.lines
|
||||
]
|
||||
})
|
||||
|
||||
cls.enasarco_tax_invoice = cls.env['account.move'].with_company(cls.company).create({
|
||||
'move_type': 'out_invoice',
|
||||
'company_id': cls.company.id,
|
||||
'partner_id': cls.italian_partner_a.id,
|
||||
'invoice_date': datetime.date(2022, 3, 24),
|
||||
'invoice_date_due': datetime.date(2022, 3, 24),
|
||||
'invoice_line_ids': [
|
||||
(0, 0, {
|
||||
**cls.enasarco_sale_line,
|
||||
'name': name,
|
||||
'price_unit': price,
|
||||
}) for (name, price) in invoice_data.lines
|
||||
]
|
||||
})
|
||||
|
||||
cls.inps_tax_invoice = cls.env['account.move'].with_company(cls.company).create({
|
||||
'move_type': 'out_invoice',
|
||||
'company_id': cls.company.id,
|
||||
'partner_id': cls.italian_partner_a.id,
|
||||
'invoice_date': datetime.date(2022, 3, 24),
|
||||
'invoice_date_due': datetime.date(2022, 3, 24),
|
||||
'invoice_line_ids': [
|
||||
(0, 0, {
|
||||
**cls.inps_sale_line,
|
||||
'name': name,
|
||||
'price_unit': price,
|
||||
}) for (name, price) in invoice_data.lines
|
||||
]
|
||||
})
|
||||
|
||||
cls.withholding_tax_invoice._post()
|
||||
cls.pension_fund_tax_invoice._post()
|
||||
cls.enasarco_tax_invoice._post()
|
||||
cls.inps_tax_invoice._post()
|
||||
|
||||
cls.edi_withholding_tax_xml = cls._get_withholding_test_file_content('IT00470550013_withh.xml')
|
||||
cls.edi_pension_fund_tax_xml = cls._get_withholding_test_file_content('IT00470550013_pfund.xml')
|
||||
cls.edi_enasarco_tax_xml = cls._get_withholding_test_file_content('IT00470550013_enasa.xml')
|
||||
cls.edi_inps_tax_xml = cls._get_withholding_test_file_content('IT00470550013_inps.xml')
|
||||
|
||||
@classmethod
|
||||
def _get_withholding_test_file_content(cls, filename):
|
||||
""" Get the content of a test file inside this module """
|
||||
path = 'l10n_it_edi_withholding/tests/expected_xmls/' + filename
|
||||
with tools.file_open(path, mode='rb') as test_file:
|
||||
return test_file.read()
|
||||
|
||||
@classmethod
|
||||
def get_real_client_invoice_data(cls):
|
||||
data = {
|
||||
'lines': [
|
||||
('Ordinary accounting service for the year', 350.0),
|
||||
('Balance deposit for the past year', 300.0),
|
||||
('Ordinary accounting service for the trimester', 50.0),
|
||||
('Electronic invoices management', 50.0),
|
||||
],
|
||||
'base': 750.0,
|
||||
'tax_amount': 165.0,
|
||||
'with_tax': 915.0,
|
||||
'withholding_amount': 150.0,
|
||||
'with_withholding': 765.0,
|
||||
'pension_fund_amount': 30.0,
|
||||
'with_pension_fund': 951.6,
|
||||
'tax_amount_with_pension_fund': 171.6,
|
||||
'payment_amount': 801.6,
|
||||
}
|
||||
return namedtuple('ClientInvoice', data.keys())(**data)
|
||||
|
||||
def test_withholding_tax_constraints(self):
|
||||
with self.assertRaises(ValidationError):
|
||||
self.withholding_sale_tax.amount = 10
|
||||
with self.assertRaises(ValidationError):
|
||||
self.withholding_sale_tax.l10n_it_withholding_type = False
|
||||
with self.assertRaises(ValidationError):
|
||||
self.withholding_sale_tax.l10n_it_withholding_reason = False
|
||||
with self.assertRaises(ValidationError):
|
||||
self.company.account_sale_tax_id.l10n_it_withholding_type = "RT02"
|
||||
|
||||
def test_withholding_taxes_export(self):
|
||||
"""
|
||||
Invoice
|
||||
-------------------------------------------------------------
|
||||
Ordinary accounting service for the year 350.00
|
||||
Balance deposit for the past year 300.00
|
||||
Ordinary accounting service for the trimester 50.00
|
||||
Electronic invoices management 50.00
|
||||
-------------------------------------------------------------
|
||||
Total untaxed: 750.00
|
||||
Withholding: 20% of Untaxed Amount -150.00
|
||||
VAT: 22% of Untaxed Amount 165.00
|
||||
Document total: Untaxed Amount + VAT 915.00
|
||||
Payment amount: Document total - Withholding 765.00
|
||||
"""
|
||||
invoice_etree = etree.fromstring(self.edi_format._l10n_it_edi_export_invoice_as_xml(self.withholding_tax_invoice))
|
||||
invoice_data = self.get_real_client_invoice_data()
|
||||
expected_etree = self.with_applied_xpath(
|
||||
etree.fromstring(self.edi_basis_xml),
|
||||
'''
|
||||
<xpath expr="//FatturaElettronicaBody//DatiBeniServizi" position="replace">
|
||||
<DatiBeniServizi>
|
||||
''' + ''.join(f'''
|
||||
<DettaglioLinee>
|
||||
<NumeroLinea>{n}</NumeroLinea>
|
||||
<Descrizione>{name}</Descrizione>
|
||||
<Quantita>1.00</Quantita>
|
||||
<PrezzoUnitario>{price:.6f}</PrezzoUnitario>
|
||||
<PrezzoTotale>{price:.2f}</PrezzoTotale>
|
||||
<AliquotaIVA>22.00</AliquotaIVA>
|
||||
<Ritenuta>SI</Ritenuta>
|
||||
</DettaglioLinee>
|
||||
''' for n, (name, price) in enumerate(invoice_data.lines, 1)) + f'''
|
||||
<DatiRiepilogo>
|
||||
<AliquotaIVA>22.00</AliquotaIVA>
|
||||
<ImponibileImporto>{invoice_data.base:.2f}</ImponibileImporto>
|
||||
<Imposta>{invoice_data.tax_amount:.2f}</Imposta>
|
||||
<EsigibilitaIVA>I</EsigibilitaIVA>
|
||||
</DatiRiepilogo>
|
||||
</DatiBeniServizi>
|
||||
</xpath>
|
||||
<xpath expr="//DettaglioPagamento//ImportoPagamento" position="inside">
|
||||
{invoice_data.with_withholding:.2f}
|
||||
</xpath>
|
||||
<xpath expr="//DatiGeneraliDocumento//ImportoTotaleDocumento" position="before">
|
||||
<DatiRitenuta>
|
||||
<TipoRitenuta>RT02</TipoRitenuta>
|
||||
<ImportoRitenuta>{invoice_data.withholding_amount:.2f}</ImportoRitenuta>
|
||||
<AliquotaRitenuta>20.00</AliquotaRitenuta>
|
||||
<CausalePagamento>A</CausalePagamento>
|
||||
</DatiRitenuta>
|
||||
</xpath>
|
||||
<xpath expr="//DatiGeneraliDocumento//ImportoTotaleDocumento" position="inside">
|
||||
{invoice_data.with_tax:.2f}
|
||||
</xpath>
|
||||
'''
|
||||
)
|
||||
invoice_etree = self.with_applied_xpath(invoice_etree, "<xpath expr='.//Allegati' position='replace'/>")
|
||||
self.assertXmlTreeEqual(invoice_etree, expected_etree)
|
||||
|
||||
def test_withholding_taxes_import(self):
|
||||
imported_etree = etree.fromstring(self.edi_withholding_tax_xml)
|
||||
invoice = self.edi_format._create_invoice_from_xml_tree("IT00470550013_withh.xml", imported_etree, self.purchase_journal)
|
||||
invoice_data = self.get_real_client_invoice_data()
|
||||
for line in invoice.line_ids.filtered(lambda x: x.name in [data[0] for data in invoice_data.lines]):
|
||||
withholding_taxes = line.tax_ids.filtered(lambda x: x.l10n_it_withholding_type)
|
||||
pension_fund_taxes = line.tax_ids.filtered(lambda x: x.l10n_it_pension_fund_type)
|
||||
vat_taxes = line.tax_ids - withholding_taxes - pension_fund_taxes
|
||||
self.assertEqual([1, 1, 0], [len(x) for x in (vat_taxes, withholding_taxes, pension_fund_taxes)])
|
||||
self.assertEqual(765.00, invoice.amount_total)
|
||||
|
||||
def test_pension_fund_taxes_export(self):
|
||||
"""
|
||||
Invoice
|
||||
-------------------------------------------------------------
|
||||
Ordinary accounting service for the year 350.00
|
||||
Balance deposit for the past year 300.00
|
||||
Ordinary accounting service for the trimester 50.00
|
||||
Electronic invoices management 50.00
|
||||
-------------------------------------------------------------
|
||||
Total untaxed: 750.00
|
||||
Pension fund: 4% of Untaxed Amount 30.00
|
||||
Withholding: 20% of Untaxed Amount -150.00
|
||||
VAT: 22% of Untaxed Amount + Pension fund 171.60
|
||||
Document total: Taxed Amount 951.60
|
||||
Payment amount: Document total - Withholding 801.60
|
||||
"""
|
||||
invoice_etree = etree.fromstring(self.edi_format._l10n_it_edi_export_invoice_as_xml(self.pension_fund_tax_invoice))
|
||||
invoice_data = self.get_real_client_invoice_data()
|
||||
expected_etree = self.with_applied_xpath(
|
||||
etree.fromstring(self.edi_basis_xml),
|
||||
'''
|
||||
<xpath expr="//FatturaElettronicaBody//DatiBeniServizi" position="replace">
|
||||
<DatiBeniServizi>
|
||||
''' + ''.join(f'''
|
||||
<DettaglioLinee>
|
||||
<NumeroLinea>{n}</NumeroLinea>
|
||||
<Descrizione>{name}</Descrizione>
|
||||
<Quantita>1.00</Quantita>
|
||||
<PrezzoUnitario>{price:.6f}</PrezzoUnitario>
|
||||
<PrezzoTotale>{price:.2f}</PrezzoTotale>
|
||||
<AliquotaIVA>22.00</AliquotaIVA>
|
||||
<Ritenuta>SI</Ritenuta>
|
||||
</DettaglioLinee>
|
||||
''' for n, (name, price) in enumerate(invoice_data.lines, 1)) + f'''
|
||||
<DatiRiepilogo>
|
||||
<AliquotaIVA>22.00</AliquotaIVA>
|
||||
<ImponibileImporto>{invoice_data.base + invoice_data.pension_fund_amount:.2f}</ImponibileImporto>
|
||||
<Imposta>{invoice_data.tax_amount_with_pension_fund :.2f}</Imposta>
|
||||
<EsigibilitaIVA>I</EsigibilitaIVA>
|
||||
</DatiRiepilogo>
|
||||
</DatiBeniServizi>
|
||||
</xpath>
|
||||
<xpath expr="//DettaglioPagamento//ImportoPagamento" position="inside">
|
||||
{invoice_data.payment_amount:.2f}
|
||||
</xpath>
|
||||
<xpath expr="//DatiGeneraliDocumento//ImportoTotaleDocumento" position="before">
|
||||
<DatiRitenuta>
|
||||
<TipoRitenuta>RT02</TipoRitenuta>
|
||||
<ImportoRitenuta>{invoice_data.withholding_amount:.2f}</ImportoRitenuta>
|
||||
<AliquotaRitenuta>20.00</AliquotaRitenuta>
|
||||
<CausalePagamento>A</CausalePagamento>
|
||||
</DatiRitenuta>
|
||||
</xpath>
|
||||
<xpath expr="//DatiGeneraliDocumento//ImportoTotaleDocumento" position="before">
|
||||
<DatiCassaPrevidenziale>
|
||||
<TipoCassa>TC01</TipoCassa>
|
||||
<AlCassa>4.00</AlCassa>
|
||||
<ImportoContributoCassa>{invoice_data.pension_fund_amount:.2f}</ImportoContributoCassa>
|
||||
<ImponibileCassa>{invoice_data.base:.2f}</ImponibileCassa>
|
||||
<AliquotaIVA>22.00</AliquotaIVA>
|
||||
<RiferimentoAmministrazione>___ignore___</RiferimentoAmministrazione>
|
||||
</DatiCassaPrevidenziale>
|
||||
</xpath>
|
||||
<xpath expr="//DatiGeneraliDocumento//ImportoTotaleDocumento" position="inside">
|
||||
{invoice_data.with_pension_fund:.2f}
|
||||
</xpath>
|
||||
'''
|
||||
)
|
||||
invoice_etree = self.with_applied_xpath(invoice_etree, "<xpath expr='.//Allegati' position='replace'/>")
|
||||
self.assertXmlTreeEqual(invoice_etree, expected_etree)
|
||||
|
||||
def test_pension_fund_taxes_import(self):
|
||||
imported_etree = etree.fromstring(self.edi_pension_fund_tax_xml)
|
||||
invoice = self.edi_format._create_invoice_from_xml_tree("IT00470550013_pfund.xml", imported_etree, self.purchase_journal)
|
||||
invoice_data = self.get_real_client_invoice_data()
|
||||
for line in invoice.line_ids.filtered(lambda x: x.name in [data[0] for data in invoice_data.lines]):
|
||||
withholding_taxes = line.tax_ids.filtered(lambda x: x.l10n_it_withholding_type)
|
||||
pension_fund_taxes = line.tax_ids.filtered(lambda x: x.l10n_it_pension_fund_type)
|
||||
vat_taxes = line.tax_ids - withholding_taxes - pension_fund_taxes
|
||||
self.assertEqual([1, 1, 1], [len(x) for x in (vat_taxes, withholding_taxes, pension_fund_taxes)])
|
||||
self.assertEqual(795.60, invoice.amount_total)
|
||||
|
||||
def test_enasarco_tax_export(self):
|
||||
"""
|
||||
Invoice
|
||||
-----------------------------------------------------------------
|
||||
Ordinary accounting service for the year 350.00
|
||||
Balance deposit for the past year 300.00
|
||||
Ordinary accounting service for the trimester 50.00
|
||||
Electronic invoices management 50.00
|
||||
-----------------------------------------------------------------
|
||||
Total untaxed: 750.00
|
||||
VAT: 22% of Untaxed Amount 165.00
|
||||
ENASARCO: 8.5% of Untaxed Amount -63.75
|
||||
Withholding Tax: 23% on 50% of Untaxed Amount -86.25
|
||||
Document total: Taxed Amount 915.00
|
||||
Payment amount: Document total - Withholding - Enasarco 765.00
|
||||
"""
|
||||
invoice_etree = etree.fromstring(self.edi_format._l10n_it_edi_export_invoice_as_xml(self.enasarco_tax_invoice))
|
||||
invoice_data = self.get_real_client_invoice_data()
|
||||
expected_etree = self.with_applied_xpath(
|
||||
etree.fromstring(self.edi_basis_xml),
|
||||
'''
|
||||
<xpath expr="//FatturaElettronicaBody//DatiBeniServizi" position="replace">
|
||||
<DatiBeniServizi>
|
||||
''' + ''.join(f'''
|
||||
<DettaglioLinee>
|
||||
<NumeroLinea>{n}</NumeroLinea>
|
||||
<Descrizione>{name}</Descrizione>
|
||||
<Quantita>1.00</Quantita>
|
||||
<PrezzoUnitario>{price:.6f}</PrezzoUnitario>
|
||||
<PrezzoTotale>{price:.2f}</PrezzoTotale>
|
||||
<AliquotaIVA>22.00</AliquotaIVA>
|
||||
<Ritenuta>SI</Ritenuta>
|
||||
<AltriDatiGestionali>
|
||||
<TipoDato>CASSA-PREV</TipoDato>
|
||||
<RiferimentoTesto>TC07 - ENASARCO (8.5%)</RiferimentoTesto>
|
||||
<RiferimentoNumero>{price * 8.5 / 100:.2f}</RiferimentoNumero>
|
||||
</AltriDatiGestionali>
|
||||
</DettaglioLinee>
|
||||
''' for n, (name, price) in enumerate(invoice_data.lines, 1)) + f'''
|
||||
<DatiRiepilogo>
|
||||
<AliquotaIVA>22.00</AliquotaIVA>
|
||||
<ImponibileImporto>{invoice_data.base:.2f}</ImponibileImporto>
|
||||
<Imposta>165.00</Imposta>
|
||||
<EsigibilitaIVA>I</EsigibilitaIVA>
|
||||
</DatiRiepilogo>
|
||||
</DatiBeniServizi>
|
||||
</xpath>
|
||||
<xpath expr="//DettaglioPagamento//ImportoPagamento" position="inside">
|
||||
765.00
|
||||
</xpath>
|
||||
<xpath expr="//DatiGeneraliDocumento//ImportoTotaleDocumento" position="before">
|
||||
<DatiRitenuta>
|
||||
<TipoRitenuta>RT02</TipoRitenuta>
|
||||
<ImportoRitenuta>86.25</ImportoRitenuta>
|
||||
<AliquotaRitenuta>23.00</AliquotaRitenuta>
|
||||
<CausalePagamento>ZO</CausalePagamento>
|
||||
</DatiRitenuta>
|
||||
</xpath>
|
||||
<xpath expr="//DatiGeneraliDocumento//ImportoTotaleDocumento" position="inside">
|
||||
915.00
|
||||
</xpath>
|
||||
'''
|
||||
)
|
||||
invoice_etree = self.with_applied_xpath(invoice_etree, "<xpath expr='.//Allegati' position='replace'/>")
|
||||
self.assertXmlTreeEqual(invoice_etree, expected_etree)
|
||||
|
||||
def test_enasarco_tax_import(self):
|
||||
imported_etree = etree.fromstring(self.edi_enasarco_tax_xml)
|
||||
invoice = self.edi_format._create_invoice_from_xml_tree("IT00470550013_enasa.xml", imported_etree, self.purchase_journal)
|
||||
self.assertTrue(invoice)
|
||||
invoice_data = self.get_real_client_invoice_data()
|
||||
for line in invoice.line_ids.filtered(lambda x: x.name in [data[0] for data in invoice_data.lines]):
|
||||
enasarco_imported_tax = line.tax_ids.filtered(lambda x: x.l10n_it_pension_fund_type == 'TC07')
|
||||
self.assertEqual(self.enasarco_purchase_tax, enasarco_imported_tax)
|
||||
self.assertEqual(-8.5, enasarco_imported_tax.amount)
|
||||
self.assertEqual(self.withholding_purchase_tax_23, line.tax_ids.filtered(lambda x: x.l10n_it_withholding_reason == 'ZO'))
|
||||
|
||||
def test_inps_tax_export(self):
|
||||
"""
|
||||
Invoice
|
||||
-----------------------------------------------------------------
|
||||
Ordinary accounting service for the year 350.00
|
||||
Balance deposit for the past year 300.00
|
||||
Ordinary accounting service for the trimester 50.00
|
||||
Electronic invoices management 50.00
|
||||
-----------------------------------------------------------------
|
||||
Total untaxed: 750.00
|
||||
VAT: 0% of Untaxed Amount 0.00
|
||||
INPS: 4% of Untaxed Amount 30.00
|
||||
Document total: Taxed Amount 780.00
|
||||
Payment amount: Document total 780.00
|
||||
"""
|
||||
content = self.edi_format._l10n_it_edi_export_invoice_as_xml(self.inps_tax_invoice)
|
||||
expected_etree = etree.fromstring(self.edi_inps_tax_xml)
|
||||
invoice_etree = self._cleanup_etree(content, None)
|
||||
self.assertXmlTreeEqual(invoice_etree, expected_etree)
|
||||
|
|
@ -0,0 +1,34 @@
|
|||
<?xml version="1.0" encoding="utf-8"?>
|
||||
<odoo>
|
||||
<record id="account_view_tax_form_l10n_it_edi_extended" model="ir.ui.view">
|
||||
<field name="name">account.tax.form.l10n.it.edi.extended</field>
|
||||
<field name="model">account.tax</field>
|
||||
<field name="priority">20</field>
|
||||
<field name="inherit_id" ref="l10n_it_edi.account_tax_form_l10n_it"/>
|
||||
<field name="arch" type="xml">
|
||||
<xpath expr="//page[@name='advanced_options']" position="inside">
|
||||
<group>
|
||||
<field name="l10n_it_withholding_type" attrs="{'readonly': [('amount', '>=', 0.0)]}"/>
|
||||
<field name="l10n_it_withholding_reason" attrs="{'invisible': [('l10n_it_withholding_type', '=', False)]}"/>
|
||||
<field name="l10n_it_pension_fund_type"/>
|
||||
</group>
|
||||
</xpath>
|
||||
</field>
|
||||
</record>
|
||||
|
||||
<record id="view_invoice_tree_l10n_it_edi_extended" model="ir.ui.view">
|
||||
<field name="name">account.invoice.tree.l10n.it.edi.extended</field>
|
||||
<field name="model">account.move</field>
|
||||
<field name="priority">20</field>
|
||||
<field name="inherit_id" ref="account.view_invoice_tree"/>
|
||||
<field name="arch" type="xml">
|
||||
<xpath expr="//field[@name='amount_untaxed_signed']" position="after">
|
||||
<field name="l10n_it_amount_vat_signed" string="VAT" sum="Total" optional="hide"/>
|
||||
<field name="l10n_it_amount_pension_fund_signed" string="Pension Fund" sum="Total" optional="hide"/>
|
||||
<field name="l10n_it_amount_withholding_signed" string="Withholding" sum="Total" optional="hide"/>
|
||||
<field name="l10n_it_amount_before_withholding_signed" string="All Taxes Included" sum="Total" optional="hide"/>
|
||||
</xpath>
|
||||
</field>
|
||||
</record>
|
||||
|
||||
</odoo>
|
||||
42
odoo-bringout-oca-ocb-l10n_it_edi_withholding/pyproject.toml
Normal file
42
odoo-bringout-oca-ocb-l10n_it_edi_withholding/pyproject.toml
Normal file
|
|
@ -0,0 +1,42 @@
|
|||
[project]
|
||||
name = "odoo-bringout-oca-ocb-l10n_it_edi_withholding"
|
||||
version = "16.0.0"
|
||||
description = "Italy - E-invoicing (Withholding) - Odoo addon"
|
||||
authors = [
|
||||
{ name = "Ernad Husremovic", email = "hernad@bring.out.ba" }
|
||||
]
|
||||
dependencies = [
|
||||
"odoo-bringout-oca-ocb-l10n_it_edi>=16.0.0",
|
||||
"requests>=2.25.1"
|
||||
]
|
||||
readme = "README.md"
|
||||
requires-python = ">= 3.11"
|
||||
classifiers = [
|
||||
"Development Status :: 5 - Production/Stable",
|
||||
"Intended Audience :: Developers",
|
||||
"License :: OSI Approved :: GNU Lesser General Public License v3 (LGPLv3)",
|
||||
"Programming Language :: Python :: 3",
|
||||
"Programming Language :: Python :: 3.11",
|
||||
"Programming Language :: Python :: 3.12",
|
||||
"Topic :: Office/Business",
|
||||
]
|
||||
|
||||
[project.urls]
|
||||
homepage = "https://github.com/bringout/0"
|
||||
repository = "https://github.com/bringout/0"
|
||||
|
||||
[build-system]
|
||||
requires = ["hatchling"]
|
||||
build-backend = "hatchling.build"
|
||||
|
||||
[tool.hatch.metadata]
|
||||
allow-direct-references = true
|
||||
|
||||
[tool.hatch.build.targets.wheel]
|
||||
packages = ["l10n_it_edi_withholding"]
|
||||
|
||||
[tool.rye]
|
||||
managed = true
|
||||
dev-dependencies = [
|
||||
"pytest>=8.4.1",
|
||||
]
|
||||
Loading…
Add table
Add a link
Reference in a new issue