19.0 vanilla

This commit is contained in:
Ernad Husremovic 2026-03-09 09:31:28 +01:00
parent ff721d030e
commit 7721452493
1826 changed files with 124775 additions and 274114 deletions

View file

@ -12,39 +12,16 @@ pip install odoo-bringout-oca-ocb-l10n_it_edi
## Dependencies
This addon depends on:
- l10n_it
- account_edi
- account_edi_proxy_client
## Manifest Information
- **Name**: Italy - E-invoicing
- **Version**: 0.3
- **Category**: Accounting/Localizations/EDI
- **License**: LGPL-3
- **Installable**: False
- account_debit_note
## Source
Based on [OCA/OCB](https://github.com/OCA/OCB) branch 16.0, addon `l10n_it_edi`.
- Repository: https://github.com/OCA/OCB
- Branch: 19.0
- Path: addons/l10n_it_edi
## 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
This package preserves the original LGPL-3 license.

View file

@ -1,32 +1,13 @@
# -*- coding: utf-8 -*-
# Part of Odoo. See LICENSE file for full copyright and licensing details.
import logging
from . import models
from . import tools
from . import controllers, models, tools
from odoo import api, SUPERUSER_ID
_logger = logging.getLogger(__name__)
def _l10n_it_edi_update_export_tax(env):
chart_template = env.ref('l10n_it.l10n_it_chart_template_generic', raise_if_not_found=False)
if chart_template:
for company in env['res.company'].search([('chart_template_id', '=', chart_template.id)]):
tax = env.ref(f'l10n_it.{company.id}_00eu', raise_if_not_found=False)
if tax:
tax.write({
'l10n_it_has_exoneration': True,
'l10n_it_kind_exoneration': 'N3.2',
'l10n_it_law_reference': 'Art. 41, DL n. 331/93',
})
service_tax = env.ref(f'l10n_it.{company.id}_00eus', raise_if_not_found=False)
if service_tax:
service_tax.write({
'l10n_it_has_exoneration': True,
'l10n_it_kind_exoneration': 'N3.2',
'l10n_it_law_reference': 'Art. 7ter, DPR 633/1972',
})
def _l10n_it_edi_post_init(env):
env['ir.config_parameter'].set_param('l10n_it_edi.proxy_user_edi_mode', 'prod')
def _l10n_it_edi_post_init(cr, registry):
env = api.Environment(cr, SUPERUSER_ID, {})
_l10n_it_edi_update_export_tax(env)
def uninstall_hook(env):
env["res.partner"]._clear_removed_edi_formats("it_edi_xml")

View file

@ -1,19 +1,12 @@
# -*- coding: utf-8 -*-
# Part of Odoo. See LICENSE file for full copyright and licensing details.
{
'name': 'Italy - E-invoicing',
'icon': '/l10n_it/static/description/icon.png',
'version': '0.3',
'version': '0.4',
'depends': [
'l10n_it',
# Although account_edi is a dependency of account_edi_proxy_client,
# it is here because it's in the auto-install
'account_edi',
'account_edi_proxy_client',
'account_debit_note',
],
'auto_install': False,
'author': 'Odoo',
'auto_install': ['l10n_it'],
'description': """
E-invoice implementation
""",
@ -21,16 +14,32 @@ E-invoice implementation
'website': 'http://www.odoo.com/',
'data': [
'security/ir.model.access.csv',
'data/account_edi_data.xml',
'data/invoice_it_template.xml',
'data/account.account.tag.csv',
'data/invoice_it_simplified_template.xml',
'data/invoice_it_template.xml',
'data/ir_cron.xml',
'views/res_config_settings_views.xml',
'data/l10n_it.document.type.csv',
'views/account_payment_method.xml',
'views/account_tax_view.xml',
'views/l10n_it_document_type.xml',
'views/l10n_it_view.xml',
'views/portal_address_templates.xml',
'views/report_invoice.xml',
'views/res_config_settings_views.xml',
],
'assets': {
'web.assets_frontend': [
'l10n_it_edi/static/src/interactions/**/*',
],
'web.assets_tests': [
'l10n_it_edi/static/tests/tours/*.js',
],
},
'demo': [
'data/account_invoice_demo.xml',
],
'post_init_hook': '_l10n_it_edi_post_init',
'author': 'Odoo S.A.',
'license': 'LGPL-3',
'post_init_hook': '_l10n_it_edi_post_init',
'uninstall_hook': 'uninstall_hook',
}

View file

@ -0,0 +1,3 @@
# Part of Odoo. See LICENSE file for full copyright and licensing details.
from . import portal

View file

@ -0,0 +1,32 @@
# Part of Odoo. See LICENSE file for full copyright and licensing details.
from odoo import _
from odoo.exceptions import UserError
from odoo.http import request
from odoo.addons.account.controllers.portal import PortalAccount
class L10nITPortalAccount(PortalAccount):
def _validate_address_values(self, address_values, *args, **kwargs):
invalid_fields, missing_fields, error_messages = super()._validate_address_values(
address_values, *args, **kwargs
)
if address_values.get('l10n_it_codice_fiscale'):
partner_dummy = request.env['res.partner'].new({
'l10n_it_codice_fiscale': address_values.get('l10n_it_codice_fiscale')
})
try:
partner_dummy.validate_codice_fiscale()
except UserError as e:
invalid_fields.add('l10n_it_codice_fiscale')
error_messages.append(e.args)
pa_index = address_values.get('l10n_it_pa_index')
if pa_index and (len(pa_index) < 6 or len(pa_index) > 7):
invalid_fields.add('l10n_it_pa_index')
error_messages.append(_("Destination Code (SDI) must have between 6 and 7 characters."))
return invalid_fields, missing_fields, error_messages

View file

@ -0,0 +1,2 @@
"id","name","applicability","country_id/id","name@it"
"l10n_it_edi_professional_fees_tag","Professional fees","accounts","base.it","Onorari professionali"
1 id name applicability country_id/id name@it
2 l10n_it_edi_professional_fees_tag Professional fees accounts base.it Onorari professionali

View file

@ -1,11 +0,0 @@
<?xml version="1.0" encoding="utf-8"?>
<odoo>
<data>
<record id="edi_fatturaPA" model="account.edi.format">
<field name="name">Fattura PA (IT)</field>
<field name="code">fattura_pa</field>
</record>
</data>
</odoo>

View file

@ -2,7 +2,7 @@
<odoo>
<data noupdate="1">
<!-- add VAT, codice fiscal and tax system for main company -->
<record id="l10n_it.demo_company_it" model="res.company">
<record id="base.demo_company_it" model="res.company">
<field name="vat">IT01654010345</field>
<field name="street">Test Street</field>
<field name="city">Prova</field>
@ -12,7 +12,7 @@
<field name="zip">12345</field>
</record>
<record id="l10n_it.partner_demo_company_it" model="res.partner">
<record id="base.partner_demo_company_it" model="res.partner">
<field name="l10n_it_pa_index">0803HR0</field>
</record>
@ -32,8 +32,8 @@
<field name="acc_type">iban</field>
<field name="acc_number">BE71096123456769</field>
<field name="bank_id" ref="base.bank_bnp"/>
<field name="partner_id" ref="l10n_it.partner_demo_company_it"/>
<field name="company_id" ref="l10n_it.demo_company_it"/>
<field name="partner_id" ref="base.partner_demo_company_it"/>
<field name="company_id" ref="base.demo_company_it"/>
</record>
<record id="demo_l10n_it_edi_partner_a" model="res.partner">
@ -60,21 +60,18 @@
<field name="l10n_it_pa_index">SOOTJS</field>
</record>
<record id="demo_l10n_it_edi_partner_pa_fiscal_position" model="ir.property" forcecreate="0">
<field name="name">property_account_position_id</field>
<field name="fields_id" search="[('model', '=', 'res.partner'), ('name', '=', 'property_account_position_id')]"/>
<field name="res_id" model="res.partner" eval="'res.partner,' + str(obj().env.ref('l10n_it_edi.demo_l10n_it_edi_partner_pa').id)"/>
<field name="value" eval="'account.fiscal.position,'
+ str(ref('l10n_it.' + str(ref('l10n_it.demo_company_it')) + '_split_payment_fiscal_position'))"/>
<field name="company_id" ref="l10n_it.demo_company_it"/>
<record id="demo_l10n_it_edi_key" model="certificate.key">
<field name="name">demo IT private key</field>
<field name="content" type="base64" file="l10n_it_edi/data/pkey.key"/>
</record>
<record id="demo_l10n_it_edi_proxy_user" model="account_edi_proxy_client.user">
<field name="id_client">demo_id_client</field>
<field name="company_id" ref="l10n_it.demo_company_it"/>
<field name="edi_format_id" ref="l10n_it_edi.edi_fatturaPA"/>
<field name="company_id" ref="base.demo_company_it"/>
<field name="proxy_type">l10n_it_edi</field>
<field name="edi_mode">demo</field>
<field name="edi_identification">01654010345</field>
<field name="private_key">1234</field>
<field name="private_key_id" ref="demo_l10n_it_edi_key"/>
<field name="refresh_token">demo</field>
</record>

View file

@ -4,96 +4,104 @@
<template id="account_invoice_line_it_simplified_FatturaPA">
<DatiBeniServizi>
<Descrizione>
<t t-esc="format_alphanumeric(line.name[:1000])"/>
<t t-if="not line.name" t-esc="'NO NAME'"/>
<t t-out="format_alphanumeric(line.name, 1000)"/>
<t t-if="not line.name" t-out="'NO NAME'"/>
</Descrizione>
<Importo t-esc="format_monetary(line.price_total, currency)"/>
<Importo t-out="format_monetary(line.price_total, currency)"/>
<DatiIVA>
<Imposta t-esc="format_monetary(line.price_total - line.price_subtotal, currency)"/>
<Imposta t-out="format_monetary(line.price_total - line.price_subtotal, currency)"/>
</DatiIVA>
<Natura t-if="line.tax_ids.l10n_it_has_exoneration" t-esc="line.tax_ids.l10n_it_kind_exoneration"/>
<Natura t-if="line.tax_ids.l10n_it_exempt_reason" t-out="line.tax_ids.l10n_it_exempt_reason"/>
</DatiBeniServizi>
</template>
<template id="account_invoice_it_simplified_FatturaPA_export">
<t t-set="currency" t-value="record.currency_id or record.company_currency_id"/>
<t t-set="bank" t-value="record.partner_bank_id"/>
<p:FatturaElettronicaSemplificata t-att-versione="formato_trasmissione" xmlns:ds="http://www.w3.org/2000/09/xmldsig#" xmlns:p="http://ivaservizi.agenziaentrate.gov.it/docs/xsd/fatture/v1.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://ivaservizi.agenziaentrate.gov.it/docs/xsd/fatture/v1.0 http://www.fatturapa.gov.it/export/fatturazione/sdi/fatturapa/v1.0/Schema_del_file_xml_FatturaPA_versione_1.0.xsd">
<FatturaElettronicaHeader>
<p:FatturaElettronicaSemplificata t-att-versione="formato_trasmissione" xmlns:ds="http://www.w3.org/2000/09/xmldsig#" xmlns:p="http://ivaservizi.agenziaentrate.gov.it/docs/xsd/fatture/v1.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://ivaservizi.agenziaentrate.gov.it/docs/xsd/fatture/v1.0 http://www.fatturapa.gov.it/export/fatturazione/sdi/fatturapa/v1.0/Schema_del_file_xml_FatturaPA_versione_1.0.xsd">
<FatturaElettronicaHeader>
<DatiTrasmissione>
<IdTrasmittente>
<IdPaese t-esc="get_vat_country(record.company_id.vat)"/>
<IdCodice t-esc="normalize_codice_fiscale(record.company_id.l10n_it_codice_fiscale) or get_vat_number(record.company_id.vat)"/>
<IdPaese t-out="sender_info['country_code']"/>
<IdCodice t-out="sender_info['codice_fiscale'] or sender_info['vat']"/>
</IdTrasmittente>
<ProgressivoInvio t-esc="format_alphanumeric(record.name.replace('/','')[-10:])"/>
<FormatoTrasmissione t-esc="formato_trasmissione"/>
<CodiceDestinatario t-if="record.commercial_partner_id.l10n_it_pa_index" t-esc="record.commercial_partner_id.l10n_it_pa_index.upper()"/>
<CodiceDestinatario t-if="not record.commercial_partner_id.l10n_it_pa_index" t-esc="'0000000'"/>
<PECDestinatario t-if="record.commercial_partner_id.l10n_it_pec_email" t-esc="record.commercial_partner_id.l10n_it_pec_email"/>
<ProgressivoInvio t-out="format_alphanumeric(record.name.replace('/',''), -10)"/>
<FormatoTrasmissione t-out="formato_trasmissione"/>
<CodiceDestinatario t-if="buyer_info['pa_index']" t-out="buyer_info['pa_index']"/>
<PECDestinatario t-if="buyer.l10n_it_pec_email" t-out="buyer.l10n_it_pec_email"/>
</DatiTrasmissione>
<CedentePrestatore>
<IdFiscaleIVA>
<IdPaese t-esc="get_vat_country(record.company_id.vat)"/>
<IdCodice t-esc="get_vat_number(record.company_id.vat)"/>
<IdPaese t-out="seller_info['country_code']"/>
<IdCodice t-out="seller_info['vat']"/>
</IdFiscaleIVA>
<CodiceFiscale t-if="record.company_id.l10n_it_codice_fiscale" t-esc="normalize_codice_fiscale(record.company_id.l10n_it_codice_fiscale)"/>
<Denominazione t-esc="format_alphanumeric(record.company_id.partner_id.display_name[:80])"/>
<t t-call="l10n_it_edi.account_invoice_it_FatturaPA_sede">
<t t-set="partner" t-value="record.company_id.partner_id"/>
<CodiceFiscale t-if="seller_info['codice_fiscale']" t-out="seller_info['codice_fiscale']"/>
<t t-if="seller_info['is_company']">
<Denominazione t-out="format_alphanumeric(seller.display_name, 80)"/>
</t>
<RappresentanteFiscale t-if="record.company_id.l10n_it_has_tax_representative">
<t t-else="">
<Nome t-out="format_alphanumeric(seller_info['first_name'], 60)"/>
<Cognome t-out="format_alphanumeric(seller_info['last_name'], 60)"/>
</t>
<t t-call="l10n_it_edi.account_invoice_it_FatturaPA_sede">
<t t-set="partner" t-value="seller"/>
<t t-set="partner_info" t-value="seller_info"/>
</t>
<RappresentanteFiscale t-if="seller.l10n_it_has_tax_representative">
<IdFiscaleIVA>
<IdPaese t-esc="get_vat_country(record.company_id.l10n_it_tax_representative_partner_id.vat)"/>
<IdCodice t-esc="get_vat_number(record.company_id.l10n_it_tax_representative_partner_id.vat)"/>
<IdPaese t-out="representative_info['country_code']"/>
<IdCodice t-out="representative_info['vat']"/>
</IdFiscaleIVA>
<Anagrafica>
<Denominazione t-if="record.commercial_partner_id.is_company" t-esc="format_alphanumeric(record.commercial_partner_id.display_name[:80])"/>
<Nome t-if="not record.commercial_partner_id.is_company" t-esc="format_alphanumeric(' '.join(record.commercial_partner_id.name.split()[:1])[:60])"/>
<Cognome t-if="not record.commercial_partner_id.is_company" t-esc="format_alphanumeric(' '.join(record.commercial_partner_id.name.split()[1:])[:60])"/>
<t t-if="representative_info['is_company']">
<Denominazione t-out="format_alphanumeric(representative.display_name, 80)"/>
</t>
<t t-else="">
<Nome t-out="format_alphanumeric(representative_info['first_name'], 60)"/>
<Cognome t-out="format_alphanumeric(representative_info['last_name'], 60)"/>
</t>
</Anagrafica>
</RappresentanteFiscale>
<IscrizioneREA t-if="record.company_id.l10n_it_has_eco_index">
<Ufficio t-esc="record.company_id.l10n_it_eco_index_office.code"/>
<NumeroREA t-esc="format_alphanumeric(record.company_id.l10n_it_eco_index_number)"/>
<CapitaleSociale t-if="record.company_id.l10n_it_eco_index_share_capital != 0" t-esc="format_numbers_two(record.company_id.l10n_it_eco_index_share_capital)"/>
<SocioUnico t-if="record.company_id.l10n_it_eco_index_sole_shareholder != 'NO'" t-esc="record.company_id.l10n_it_eco_index_sole_shareholder"/>
<StatoLiquidazione t-esc="record.company_id.l10n_it_eco_index_liquidation_state"/>
<IscrizioneREA t-if="seller.l10n_it_has_eco_index">
<Ufficio t-out="seller.l10n_it_eco_index_office.code"/>
<NumeroREA t-out="format_alphanumeric(seller.l10n_it_eco_index_number)"/>
<CapitaleSociale t-if="seller.l10n_it_eco_index_share_capital != 0" t-out="format_numbers_two(seller.l10n_it_eco_index_share_capital)"/>
<SocioUnico t-if="seller.l10n_it_eco_index_sole_shareholder != 'NO'" t-out="seller.l10n_it_eco_index_sole_shareholder"/>
<StatoLiquidazione t-out="seller.l10n_it_eco_index_liquidation_state"/>
</IscrizioneREA>
<RegimeFiscale t-esc="record.company_id.l10n_it_tax_system"/>
<RegimeFiscale t-out="seller.l10n_it_tax_system"/>
</CedentePrestatore>
<CessionarioCommittente>
<IdentificativiFiscali>
<IdFiscaleIVA t-if="record.commercial_partner_id.vat and in_eu(record.commercial_partner_id)">
<IdPaese t-esc="get_vat_country(record.commercial_partner_id.vat)"/>
<IdCodice t-esc="get_vat_number(record.commercial_partner_id.vat)"/>
<IdFiscaleIVA t-if="buyer_info['vat'] and buyer_info['in_eu']">
<IdPaese t-out="buyer_info['country_code']"/>
<IdCodice t-out="buyer_info['vat']"/>
</IdFiscaleIVA>
<CodiceFiscale t-if="record.commercial_partner_id.l10n_it_codice_fiscale" t-esc="normalize_codice_fiscale(record.commercial_partner_id.l10n_it_codice_fiscale)"/>
<CodiceFiscale t-if="buyer_info['codice_fiscale']" t-out="buyer_info['codice_fiscale']"/>
</IdentificativiFiscali>
</CessionarioCommittente>
</FatturaElettronicaHeader>
<FatturaElettronicaBody>
<DatiGenerali>
<DatiGeneraliDocumento>
<!--2.1.1-->
<TipoDocumento t-esc="document_type"/>
<Divisa t-esc="currency.name"/>
<Data t-esc="format_date(record.invoice_date)"/>
<Numero t-esc="format_alphanumeric(record.name[-20:])"/>
<TipoDocumento t-out="document_type"/>
<Divisa t-out="currency.name"/>
<Data t-out="format_date(record.invoice_date)"/>
<Numero t-out="format_alphanumeric(record.name, -20)"/>
</DatiGeneraliDocumento>
<DatiFatturaRettificata t-if="record.move_type == 'out_refund' and record.reversed_entry_id">
<NumeroFR t-esc="format_alphanumeric(record.reversed_entry_id.name[-20:])"/>
<DataFR t-esc="format_date(record.reversed_entry_id.invoice_date)"/>
<ElementiRettificati t-esc="format_alphanumeric(record.ref[:1000])"/>
<NumeroFR t-out="format_alphanumeric(record.reversed_entry_id.name, -20)"/>
<DataFR t-out="format_date(record.reversed_entry_id.invoice_date)"/>
<ElementiRettificati t-out="format_alphanumeric(record.ref, 1000)"/>
</DatiFatturaRettificata>
</DatiGenerali>
<!-- Invoice lines. -->
<t t-foreach="record.invoice_line_ids.filtered(lambda l: l.display_type not in ('line_note', 'line_section'))" t-as="line">
<t t-foreach="record.invoice_line_ids.filtered(lambda l: l.display_type not in ('line_section', 'line_subsection', 'line_note'))" t-as="line">
<t t-call="l10n_it_edi.account_invoice_line_it_simplified_FatturaPA"/>
</t>
<Allegati t-if="pdf">
<NomeAttachment t-esc="format_alphanumeric(pdf_name[:60])"/>
<NomeAttachment t-out="format_alphanumeric(pdf_name, 60)"/>
<FormatoAttachment t-translation="off">PDF</FormatoAttachment>
<Attachment t-esc="pdf"/>
<Attachment t-out="pdf"/>
</Allegati>
</FatturaElettronicaBody>
</p:FatturaElettronicaSemplificata>

View file

@ -3,37 +3,43 @@
<data>
<template id="account_invoice_line_it_FatturaPA">
<t t-set="it_values" t-value="base_line['it_values']"/>
<t t-set="line" t-value="base_line['record']"/>
<t t-set="product" t-value="base_line['product_id']"/>
<DettaglioLinee>
<NumeroLinea t-esc="line_dict['line_number']"/>
<CodiceArticolo t-if="line.product_id.barcode">
<NumeroLinea t-out="it_values['numero_linea']"/>
<CodiceArticolo t-if="product.barcode">
<CodiceTipo t-translation="off">EAN</CodiceTipo>
<CodiceValore t-esc="format_alphanumeric(line.product_id.barcode)[:35]"/>
<CodiceValore t-out="format_alphanumeric(product.barcode, 35)"/>
</CodiceArticolo>
<CodiceArticolo t-elif="line.product_id.default_code">
<CodiceArticolo t-elif="product.default_code">
<CodiceTipo t-translation="off">INTERNAL</CodiceTipo>
<CodiceValore t-esc="format_alphanumeric(line.product_id.default_code)[:35]"/>
<CodiceValore t-out="format_alphanumeric(product.default_code, 35)"/>
</CodiceArticolo>
<Descrizione t-esc="format_alphanumeric(line_dict['description'])[:1000]"/>
<Quantita t-esc="format_numbers(abs(line.quantity))"/>
<UnitaMisura t-if="line.product_uom_id and line.product_uom_id.category_id != env.ref('uom.product_uom_categ_unit')" t-esc="format_alphanumeric(line.product_uom_id.name)[:10]"/>
<PrezzoUnitario t-esc="'%.06f' % (line_dict['unit_price'])"/>
<ScontoMaggiorazione t-if="line.discount != 0">
<Tipo t-esc="discount_type(line.discount)"/>
<Percentuale t-esc="format_numbers(abs(line.discount))"/>
<Descrizione t-out="format_alphanumeric(it_values['descrizione'], 1000)"/>
<Quantita t-out="format_float(it_values['quantita'], it_values['quantita_pd'])"/>
<UnitaMisura t-if="line.product_uom_id and not line.product_uom_id._has_common_reference(env.ref('uom.product_uom_unit'))"
t-out="format_alphanumeric(line.product_uom_id.name, 10)"/>
<PrezzoUnitario t-out="format_float(it_values['prezzo_unitario'], 8)"/>
<ScontoMaggiorazione t-foreach="it_values['sconto_maggiorazione_list']" t-as="sconto_maggiorazione">
<Tipo t-out="format_alphanumeric(sconto_maggiorazione['tipo'])"/>
<Percentuale t-if="sconto_maggiorazione['percentuale']"
t-out="format_float(sconto_maggiorazione['percentuale'], 2)"/>
</ScontoMaggiorazione>
<PrezzoTotale t-esc="format_monetary(line_dict['subtotal_price'], currency)"/>
<AliquotaIVA t-if="vat_tax.amount_type == 'percent'" t-esc="format_numbers(vat_tax.amount)"/>
<AliquotaIVA t-elif="vat_tax.amount_type != 'percent'" t-esc="'0.00'"/>
<Natura t-if="vat_tax.l10n_it_has_exoneration" t-esc="vat_tax.l10n_it_kind_exoneration"/>
<AltriDatiGestionali t-if="conversion_rate">
<TipoDato t-translation="off">DIVISA</TipoDato>
<RiferimentoTesto t-esc="format_alphanumeric(record.currency_id.name)"/>
<RiferimentoNumero t-esc="'%.06f' % line.price_subtotal"/>
</AltriDatiGestionali>
<AltriDatiGestionali t-if="conversion_rate">
<TipoDato t-translation="off">CAMBIO</TipoDato>
<RiferimentoNumero t-esc="conversion_rate"/>
<RiferimentoData t-esc="format_date(record.invoice_date)"/>
<PrezzoTotale t-out="format_float(it_values['prezzo_totale'], 8)"/>
<AliquotaIVA t-foreach="it_values['aliquota_iva_list']"
t-as="aliquota_iva"
t-out="format_float(aliquota_iva, 2)"/>
<Ritenuta t-if="it_values['ritenuta']" t-out="it_values['ritenuta']"/>
<Natura t-if="it_values['natura']" t-out="it_values['natura']"/>
<AltriDatiGestionali t-foreach="it_values['altri_dati_gestionali_list']" t-as="altri_dati_gestionali">
<TipoDato t-out="altri_dati_gestionali['tipo_dato']"/>
<RiferimentoTesto t-if="altri_dati_gestionali['riferimento_testo']"
t-out="format_alphanumeric(altri_dati_gestionali['riferimento_testo'])"/>
<RiferimentoNumero t-if="altri_dati_gestionali['riferimento_numero']"
t-out="format_float(altri_dati_gestionali['riferimento_numero'], 8)"/>
<RiferimentoData t-if="altri_dati_gestionali['riferimento_data']"
t-out="format_date(altri_dati_gestionali['riferimento_data'])"/>
</AltriDatiGestionali>
</DettaglioLinee>
</template>
@ -43,18 +49,17 @@
<FatturaElettronicaHeader>
<DatiTrasmissione>
<IdTrasmittente>
<IdPaese t-esc="get_vat_country(sender.vat)"/>
<IdCodice t-esc="normalize_codice_fiscale(sender.l10n_it_codice_fiscale) or get_vat_number(sender.vat)"/>
<IdPaese t-out="sender_info['country_code']"/>
<IdCodice t-out="sender_info['codice_fiscale'] or sender_info['vat']"/>
</IdTrasmittente>
<ProgressivoInvio t-esc="format_alphanumeric(record.name.replace('/','')[-10:])"/>
<FormatoTrasmissione t-esc="formato_trasmissione"/>
<CodiceDestinatario t-esc="codice_destinatario"/>
<ProgressivoInvio t-out="format_alphanumeric(record.name.replace('/',''), -10)"/>
<FormatoTrasmissione t-out="formato_trasmissione"/>
<CodiceDestinatario t-out="buyer_info['pa_index']"/>
<ContattiTrasmittente>
<Telefono t-if="sender_partner.phone" t-esc="format_alphanumeric(format_phone(sender_partner.phone))"/>
<Telefono t-elif="sender_partner.mobile" t-esc="format_alphanumeric(format_phone(sender_partner.mobile))"/>
<Email t-if="sender_partner.email" t-esc="sender_partner.email[:256]"/>
<Telefono t-if="sender.phone" t-out="format_phone(sender.phone)"/>
<Email t-if="sender.email" t-out="format_alphanumeric(sender.email, 256)"/>
</ContattiTrasmittente>
<PECDestinatario t-if="not is_self_invoice and partner.l10n_it_pec_email" t-esc="partner.l10n_it_pec_email[:256]"/>
<PECDestinatario t-if="not is_self_invoice and buyer.l10n_it_pec_email" t-out="format_alphanumeric(buyer.l10n_it_pec_email, 256)"/>
</DatiTrasmissione>
<CedentePrestatore>
<DatiAnagrafici>
@ -62,37 +67,44 @@
<IdPaese t-out="seller_info['country_code']"/>
<IdCodice t-out="seller_info['vat']"/>
</IdFiscaleIVA>
<CodiceFiscale t-if="seller.l10n_it_codice_fiscale" t-esc="normalize_codice_fiscale(seller.l10n_it_codice_fiscale)"/>
<CodiceFiscale t-if="seller_info['codice_fiscale']" t-out="seller_info['codice_fiscale']"/>
<Anagrafica>
<Denominazione t-esc="format_alphanumeric(seller_partner.display_name[:80])"/>
<t t-if="seller_info['is_company']">
<Denominazione t-out="format_alphanumeric(seller.display_name, 80)"/>
</t>
<t t-else="">
<Nome t-out="format_alphanumeric(seller_info['first_name'], 60)"/>
<Cognome t-out="format_alphanumeric(seller_info['last_name'], 60)"/>
</t>
</Anagrafica>
<RegimeFiscale t-esc="regime_fiscale"/>
<RegimeFiscale t-out="regime_fiscale"/>
</DatiAnagrafici>
<t t-call="l10n_it_edi.account_invoice_it_FatturaPA_sede">
<t t-set="partner" t-value="seller_partner"/>
<t t-set="partner" t-value="seller"/>
<t t-set="partner_info" t-value="seller_info"/>
</t>
<IscrizioneREA t-if="not is_self_invoice and company.l10n_it_has_eco_index">
<Ufficio t-esc="company.l10n_it_eco_index_office.code"/>
<NumeroREA t-esc="format_alphanumeric(company.l10n_it_eco_index_number)"/>
<CapitaleSociale t-if="company.l10n_it_eco_index_share_capital != 0" t-esc="format_numbers_two(company.l10n_it_eco_index_share_capital)"/>
<SocioUnico t-if="company.l10n_it_eco_index_sole_shareholder != 'NO'" t-esc="company.l10n_it_eco_index_sole_shareholder"/>
<StatoLiquidazione t-esc="company.l10n_it_eco_index_liquidation_state"/>
<Ufficio t-out="company.l10n_it_eco_index_office.code"/>
<NumeroREA t-out="format_alphanumeric(company.l10n_it_eco_index_number)"/>
<CapitaleSociale t-if="company.l10n_it_eco_index_share_capital != 0" t-out="format_numbers_two(company.l10n_it_eco_index_share_capital)"/>
<SocioUnico t-if="company.l10n_it_eco_index_sole_shareholder != 'NO'" t-out="company.l10n_it_eco_index_sole_shareholder"/>
<StatoLiquidazione t-out="company.l10n_it_eco_index_liquidation_state"/>
</IscrizioneREA>
</CedentePrestatore>
<RappresentanteFiscale t-if="not is_self_invoice and representative">
<DatiAnagrafici>
<IdFiscaleIVA>
<IdPaese t-esc="get_vat_country(representative.vat)"/>
<IdCodice t-esc="get_vat_number(representative.vat)"/>
<IdPaese t-out="representative_info['country_code']"/>
<IdCodice t-out="representative_info['vat']"/>
</IdFiscaleIVA>
<CodiceFiscale t-if="representative.l10n_it_codice_fiscale" t-esc="normalize_codice_fiscale(representative.l10n_it_codice_fiscale)"/>
<CodiceFiscale t-if="representative_info['codice_fiscale']" t-out="representative_info['codice_fiscale']"/>
<Anagrafica>
<t t-if="representative.is_company">
<Denominazione t-esc="format_alphanumeric(representative.display_name[:80])"/>
<t t-if="representative_info['is_company']">
<Denominazione t-out="format_alphanumeric(representative.display_name, 80)"/>
</t>
<t t-else="">
<Nome t-esc="format_alphanumeric(' '.join(representative.name.split()[:1])[:60])"/>
<Cognome t-esc="format_alphanumeric(' '.join(representative.name.split()[1:])[:60])"/>
<Nome t-out="format_alphanumeric(representative_info['first_name'], 60)"/>
<Cognome t-out="format_alphanumeric(representative_info['last_name'], 60)"/>
</t>
</Anagrafica>
</DatiAnagrafici>
@ -103,40 +115,68 @@
<IdPaese t-out="buyer_info['country_code']"/>
<IdCodice t-out="buyer_info['vat']"/>
</IdFiscaleIVA>
<CodiceFiscale t-if="buyer.l10n_it_codice_fiscale" t-esc="normalize_codice_fiscale(buyer.l10n_it_codice_fiscale)"/>
<CodiceFiscale t-if="buyer_info['codice_fiscale']" t-out="buyer_info['codice_fiscale']"/>
<Anagrafica>
<t t-if="buyer_is_company">
<Denominazione t-esc="format_alphanumeric(buyer.display_name[:80])"/>
<t t-if="buyer_info['is_company']">
<Denominazione t-out="format_alphanumeric(buyer.display_name, 80)"/>
</t>
<t t-else="">
<Nome t-esc="format_alphanumeric(' '.join(buyer.name.split()[:1])[:60])"/>
<Cognome t-esc="format_alphanumeric(' '.join(buyer.name.split()[1:])[:60])"/>
<Nome t-out="format_alphanumeric(buyer_info['first_name'], 60)"/>
<Cognome t-out="format_alphanumeric(buyer_info['last_name'], 60)"/>
</t>
</Anagrafica>
</DatiAnagrafici>
<t t-call="l10n_it_edi.account_invoice_it_FatturaPA_sede">
<t t-set="partner" t-value="buyer_partner"/>
<t t-set="partner" t-value="buyer"/>
<t t-set="partner_info" t-value="buyer_info"/>
</t>
</CessionarioCommittente>
</FatturaElettronicaHeader>
<FatturaElettronicaBody>
<DatiGenerali>
<DatiGeneraliDocumento>
<TipoDocumento t-esc="document_type"/>
<Divisa t-esc="currency.name"/>
<Data t-esc="format_date(get_move_invoice_template_date(record))"/>
<Numero t-esc="format_alphanumeric(record.name[-20:])"/>
<TipoDocumento t-out="document_type"/>
<Divisa t-out="currency.name"/>
<Data t-out="format_date(record.date if is_self_invoice else record.invoice_date)"/>
<Numero t-out="format_alphanumeric(record.name, -20)"/>
<t t-foreach="withholding_values" t-as="withholding">
<DatiRitenuta>
<TipoRitenuta t-out="format_alphanumeric(withholding['tipo_ritenuta'])"/>
<ImportoRitenuta t-out="format_float(withholding['importo_ritenuta'], 2)"/>
<AliquotaRitenuta t-out="format_float(withholding['aliquota_ritenuta'], 2)"/>
<CausalePagamento t-out="format_alphanumeric(withholding['causale_pagamento'])"/>
</DatiRitenuta>
</t>
<DatiBollo t-if="record.l10n_it_stamp_duty">
<BolloVirtuale t-translation="off">SI</BolloVirtuale>
<ImportoBollo t-esc="format_numbers(record.l10n_it_stamp_duty)"/>
<ImportoBollo t-out="format_numbers(record.l10n_it_stamp_duty)"/>
</DatiBollo>
<ImportoTotaleDocumento t-esc="format_monetary(document_total, currency)"/>
<t t-foreach="pension_fund_values" t-as="pension_fund">
<DatiCassaPrevidenziale>
<TipoCassa t-out="format_alphanumeric(pension_fund['tipo_cassa'])"/>
<AlCassa t-out="format_float(pension_fund['al_cassa'], 2)"/>
<ImportoContributoCassa t-out="format_float(pension_fund['importo_contributo_cassa'], 2)"/>
<ImponibileCassa t-out="format_float(pension_fund['imponibile_cassa'], 2)"/>
<AliquotaIVA t-out="format_float(pension_fund['aliquota_iva'], 2)"/>
<Ritenuta t-if="pension_fund['ritenuta']"
t-out="pension_fund['ritenuta']"/>
<Natura t-if="pension_fund['natura']"
t-out="format_alphanumeric(pension_fund['natura'])"/>
<RiferimentoAmministrazione t-if="pension_fund['riferimento_amministrazione']"
t-out="format_alphanumeric(pension_fund['riferimento_amministrazione'])"/>
</DatiCassaPrevidenziale>
</t>
<ImportoTotaleDocumento t-out="format_monetary(importo_totale_documento, currency)"/>
</DatiGeneraliDocumento>
<DatiOrdineAcquisto t-if="origin_document_type == 'purchase_order'">
<t t-call="l10n_it_edi.account_invoice_FatturaPA_origin_document"/>
</DatiOrdineAcquisto>
<Datifatturecollegate t-elif="record.debit_origin_id">
<IdDocumento t-out="format_alphanumeric(record.ref, 20)"/>
<Data t-out="format_date(record.debit_origin_id.date)"/>
</Datifatturecollegate>
<DatiOrdineAcquisto t-elif="record.ref and not record.reversed_entry_id">
<IdDocumento t-esc="format_alphanumeric(record.ref[:20])"/>
<IdDocumento t-out="format_alphanumeric(record.ref, 20)"/>
</DatiOrdineAcquisto>
<DatiContratto t-if="origin_document_type == 'contract'">
<t t-call="l10n_it_edi.account_invoice_FatturaPA_origin_document"/>
@ -144,43 +184,31 @@
<DatiConvenzione t-if="origin_document_type == 'agreement'">
<t t-call="l10n_it_edi.account_invoice_FatturaPA_origin_document"/>
</DatiConvenzione>
<DatiFattureCollegate t-if="record.reversed_entry_id">
<IdDocumento t-out="format_alphanumeric(record.reversed_entry_id.name[-20:])"/>
<Data t-out="format_date(get_move_invoice_template_date(record.reversed_entry_id))"/>
</DatiFattureCollegate>
<DatiFattureCollegate t-foreach="downpayment_moves" t-as="downpayment_move">
<IdDocumento t-out="format_alphanumeric(downpayment_move.name[-20:])"/>
<Data t-out="format_date(get_move_invoice_template_date(downpayment_move))"/>
<DatiFattureCollegate t-foreach="linked_moves" t-as="linked_move">
<IdDocumento t-out="format_alphanumeric(linked_move.name, -20)"/>
<Data t-out="format_date(linked_move.date if linked_move.l10n_it_edi_is_self_invoice else linked_move.invoice_date)"/>
</DatiFattureCollegate>
<DatiDDT t-if="record.l10n_it_ddt_id">
<NumeroDDT t-esc="format_alphanumeric(record.l10n_it_ddt_id.name[-20:])"/>
<DataDDT t-esc="format_date(record.l10n_it_ddt_id.date)"/>
<NumeroDDT t-out="format_alphanumeric(record.l10n_it_ddt_id.name, -20)"/>
<DataDDT t-out="format_date(record.l10n_it_ddt_id.date)"/>
</DatiDDT>
</DatiGenerali>
<DatiBeniServizi>
<t t-foreach="invoice_lines" t-as="line_dict">
<t t-set="line" t-value="line_dict['line']"/>
<t t-set="vat_tax" t-value="line_dict['vat_tax']"/>
<t t-foreach="base_lines" t-as="base_line">
<t t-call="l10n_it_edi.account_invoice_line_it_FatturaPA"/>
</t>
<t t-foreach="tax_lines" t-as="tax_line">
<t t-set="tax" t-value="tax_line['tax']"/>
<t t-set="has_exoneration" t-value="tax.l10n_it_has_exoneration"/>
<t t-set="kind_exoneration" t-value="tax.l10n_it_kind_exoneration"/>
<DatiRiepilogo>
<AliquotaIVA t-esc="format_numbers(tax.amount)"/>
<Natura t-if="has_exoneration" t-esc="kind_exoneration"/>
<Arrotondamento t-if="tax_line.get('rounding')" t-esc="format_numbers(-tax_line['rounding'])"/>
<t t-if="rc_refund">
<ImponibileImporto t-esc="format_monetary(balance_multiplicator * tax_line['base_amount'], currency)"/>
<Imposta t-esc="format_monetary(balance_multiplicator * tax_line['tax_amount'], currency)"/>
</t>
<t t-else="">
<ImponibileImporto t-esc="format_monetary(tax_line['base_amount'], currency)"/>
<Imposta t-esc="format_monetary(tax_line['tax_amount'], currency)"/>
</t>
<EsigibilitaIVA t-esc="tax_line['exigibility_code']"/>
<RiferimentoNormativo t-if="tax.l10n_it_law_reference" t-esc="format_alphanumeric(tax.l10n_it_law_reference[:100])"/>
<AliquotaIVA t-out="format_float(tax_line['aliquota_iva'], 2)"/>
<Natura t-if="tax_line['natura']"
t-out="tax_line['natura']"/>
<Arrotondamento t-if="tax_line['arrotondamento']"
t-out="format_float(tax_line['arrotondamento'], 8)"/>
<ImponibileImporto t-out="format_float(tax_line['imponibile_importo'], 2)"/>
<Imposta t-out="format_float(tax_line['imposta'], 2)"/>
<EsigibilitaIVA t-out="tax_line['esigibilita_iva']"/>
<RiferimentoNormativo t-if="tax_line['riferimento_normativo']"
t-out="format_alphanumeric(tax_line['riferimento_normativo'][:100])"/>
</DatiRiepilogo>
</t>
</DatiBeniServizi>
@ -189,20 +217,20 @@
<CondizioniPagamento t-translation="off"><t t-if="len(payments) == 1">TP02</t><t t-else="">TP01</t></CondizioniPagamento>
<t t-foreach="payments" t-as="payment">
<DettaglioPagamento>
<ModalitaPagamento t-translation="off">MP05</ModalitaPagamento>
<DataScadenzaPagamento t-esc="format_date(payment.date_maturity)"/>
<ImportoPagamento t-esc="format_monetary(abs(payment.amount_currency), currency)"/>
<IstitutoFinanziario t-if="partner_bank.bank_id" t-esc="format_alphanumeric(partner_bank.bank_id.name[:80])"/>
<IBAN t-if="partner_bank.acc_type == 'iban'" t-esc="partner_bank.sanitized_acc_number"/>
<BIC t-elif="partner_bank.acc_type == 'bank' and partner_bank.bank_id.bic" t-esc="partner_bank.bank_id.bic"/>
<CodicePagamento t-if="record.payment_reference" t-esc="format_alphanumeric(record.payment_reference[:60])"/>
<ModalitaPagamento t-translation="off" t-out="payment_method"/>
<DataScadenzaPagamento t-out="format_date(payment.date_maturity)"/>
<ImportoPagamento t-out="format_monetary(abs(payment.amount_currency), currency)"/>
<IstitutoFinanziario t-if="partner_bank.bank_id" t-out="format_alphanumeric(partner_bank.bank_id.name, 80)"/>
<IBAN t-if="partner_bank.acc_type == 'iban'" t-out="partner_bank.sanitized_acc_number"/>
<BIC t-elif="partner_bank.acc_type == 'bank' and partner_bank.bank_id.bic" t-out="partner_bank.bank_id.bic"/>
<CodicePagamento t-if="record.payment_reference" t-out="format_alphanumeric(record.payment_reference, 60)"/>
</DettaglioPagamento>
</t>
</DatiPagamento>
<Allegati t-if="pdf">
<NomeAttachment t-esc="format_alphanumeric(pdf_name[:60])"/>
<NomeAttachment t-out="format_alphanumeric(pdf_name, 60)"/>
<FormatoAttachment t-translation="off">PDF</FormatoAttachment>
<Attachment t-esc="pdf"/>
<Attachment t-out="pdf"/>
</Allegati>
</FatturaElettronicaBody>
</p:FatturaElettronica>
@ -210,19 +238,19 @@
<template id="account_invoice_it_FatturaPA_sede">
<Sede>
<Indirizzo><t t-if="partner.street or partner.street2" t-esc="format_alphanumeric((partner.street or '') + ' ' + (partner.street2 or ''))[:60]"/></Indirizzo>
<CAP><t t-if="partner.country_id.code != 'IT'" t-esc="'00000'"/><t t-elif="partner.zip" t-esc="partner.zip"/></CAP>
<Comune t-esc="format_alphanumeric(partner.city[:60])"/>
<Provincia t-if="partner.country_id.code == 'IT' and partner.state_id" t-esc="partner.state_id.code[:2]"/>
<Nazione t-esc="partner.country_id.code"/>
<Indirizzo><t t-if="partner.street or partner.street2" t-out="format_address(partner.street, partner.street2, 60)"/></Indirizzo>
<CAP><t t-out="partner_info['zip']"/></CAP>
<Comune t-out="format_alphanumeric(partner.city, 60)"/>
<Provincia t-if="partner_info['state_code']" t-out="format_alphanumeric(partner_info['state_code'], 2)"/>
<Nazione t-out="partner_info['country_code']"/>
</Sede>
</template>
<template id="account_invoice_FatturaPA_origin_document">
<IdDocumento t-if="origin_document_name" t-esc="format_alphanumeric(origin_document_name[:20])"/>
<Data t-if="origin_document_date" t-esc="format_date(origin_document_date)"/>
<CodiceCUP t-if="cup" t-esc="format_alphanumeric(cup)[-15:]"/>
<CodiceCIG t-if="cig" t-esc="format_alphanumeric(cig)[-15:]"/>
<IdDocumento t-if="origin_document_name" t-out="format_alphanumeric(origin_document_name, 20)"/>
<Data t-if="origin_document_date" t-out="format_date(origin_document_date)"/>
<CodiceCUP t-if="cup" t-out="format_alphanumeric(cup, 15)"/>
<CodiceCIG t-if="cig" t-out="format_alphanumeric(cig, 15)"/>
</template>
</data>

View file

@ -1,13 +1,11 @@
<?xml version="1.0" encoding="utf-8"?>
<odoo>
<record id="ir_cron_receive_fattura_pa_invoice" model="ir.cron">
<field name="name">FatturaPA: Receive invoices from the exchange system</field>
<record id="ir_cron_l10n_it_edi_download_and_update" model="ir.cron">
<field name="name">IT EDI: Receive invoices from the SdI</field>
<field name="interval_number">1</field>
<field name="interval_type">days</field>
<field name="numbercall">-1</field>
<field name="model_id" ref="account_edi.model_account_edi_format"/>
<field name="code">model._cron_receive_fattura_pa()</field>
<field name="doall" eval="False"/>
<field name="model_id" ref="account.model_account_move"/>
<field name="code">model.cron_l10n_it_edi_download_and_update()</field>
<field name="state">code</field>
</record>
</odoo>

View file

@ -0,0 +1,23 @@
"id","code","name","name@it"
"l10n_it_document_type_01","TD01","Invoice","Fattura"
"l10n_it_document_type_02","TD02","Deposit/advance on invoice","Acconto/anticipo su fattura"
"l10n_it_document_type_03","TD03","Deposit/advance on vendor bill","Acconto/anticipo su fattura fornitore"
"l10n_it_document_type_04","TD04","Credit note","Nota di credito"
"l10n_it_document_type_05","TD05","Debit note","Nota di debito"
"l10n_it_document_type_06","TD06","Vendor bill","Fattura fornitore"
"l10n_it_document_type_07","TD07","Simplified invoice","Fattura semplificata"
"l10n_it_document_type_08","TD08","Simplified credit note","Nota di credito semplificata"
"l10n_it_document_type_09","TD09","Simplified debit note","Nota di debito semplificata"
"l10n_it_document_type_16","TD16","Reverse charged vendor bill integration for domestic reverse charge","Integrazione fattura fornitore con reverse charge interno"
"l10n_it_document_type_17","TD17","Reverse charged vendor bill integration for purchase of foreign services","Integrazione fattura fornitore con reverse charge per acquisto di servizi dall'estero"
"l10n_it_document_type_18","TD18","Reverse charged vendor bill integration for the purchase of intra-EU goods","Integrazione fattura fornitore con reverse charge per acquisto di beni intracomunitari"
"l10n_it_document_type_19","TD19","Reverse charged vendor bill integration for purchase of goods from foreign markets","Integrazione fattura fornitore con reverse charge per acquisto merci estere"
"l10n_it_document_type_20","TD20","Self-invoice for invoice correction","Autofattura per regolarizzazione e integrazione delle fatture"
"l10n_it_document_type_21","TD21","Self-invoice for exceeded threshold","Autofattura per splafonamento"
"l10n_it_document_type_22","TD22","Withdrawal of goods from VAT warehouse","Estrazione beni da Deposito IVA"
"l10n_it_document_type_23","TD23","Withdrawal of goods from VAT warehouse with VAT settlement","Estrazione beni da Deposito IVA con versamento dell'IVA"
"l10n_it_document_type_24","TD24","Deferred invoice","Fattura differita"
"l10n_it_document_type_25","TD25","Deferred invoice for dropshipping","Fattura differita per dropshipping"
"l10n_it_document_type_26","TD26","Transfer of depreciable assets and internal transfers","Cessione di beni ammortizzabili e per passaggi interni"
"l10n_it_document_type_27","TD27","Self-invoice for self-consumption, gifts or for free services","Autofattura per autoconsumo, cessioni di beni senza rivalsa o prestazioni gratuite"
"l10n_it_document_type_28","TD28","Self-invoice for purchases from San Marino with VAT (paper invoice)","Autofattura per acquisti da San Marino con IVA (fattura cartacea)"
1 id code name name@it
2 l10n_it_document_type_01 TD01 Invoice Fattura
3 l10n_it_document_type_02 TD02 Deposit/advance on invoice Acconto/anticipo su fattura
4 l10n_it_document_type_03 TD03 Deposit/advance on vendor bill Acconto/anticipo su fattura fornitore
5 l10n_it_document_type_04 TD04 Credit note Nota di credito
6 l10n_it_document_type_05 TD05 Debit note Nota di debito
7 l10n_it_document_type_06 TD06 Vendor bill Fattura fornitore
8 l10n_it_document_type_07 TD07 Simplified invoice Fattura semplificata
9 l10n_it_document_type_08 TD08 Simplified credit note Nota di credito semplificata
10 l10n_it_document_type_09 TD09 Simplified debit note Nota di debito semplificata
11 l10n_it_document_type_16 TD16 Reverse charged vendor bill integration for domestic reverse charge Integrazione fattura fornitore con reverse charge interno
12 l10n_it_document_type_17 TD17 Reverse charged vendor bill integration for purchase of foreign services Integrazione fattura fornitore con reverse charge per acquisto di servizi dall'estero
13 l10n_it_document_type_18 TD18 Reverse charged vendor bill integration for the purchase of intra-EU goods Integrazione fattura fornitore con reverse charge per acquisto di beni intracomunitari
14 l10n_it_document_type_19 TD19 Reverse charged vendor bill integration for purchase of goods from foreign markets Integrazione fattura fornitore con reverse charge per acquisto merci estere
15 l10n_it_document_type_20 TD20 Self-invoice for invoice correction Autofattura per regolarizzazione e integrazione delle fatture
16 l10n_it_document_type_21 TD21 Self-invoice for exceeded threshold Autofattura per splafonamento
17 l10n_it_document_type_22 TD22 Withdrawal of goods from VAT warehouse Estrazione beni da Deposito IVA
18 l10n_it_document_type_23 TD23 Withdrawal of goods from VAT warehouse with VAT settlement Estrazione beni da Deposito IVA con versamento dell'IVA
19 l10n_it_document_type_24 TD24 Deferred invoice Fattura differita
20 l10n_it_document_type_25 TD25 Deferred invoice for dropshipping Fattura differita per dropshipping
21 l10n_it_document_type_26 TD26 Transfer of depreciable assets and internal transfers Cessione di beni ammortizzabili e per passaggi interni
22 l10n_it_document_type_27 TD27 Self-invoice for self-consumption, gifts or for free services Autofattura per autoconsumo, cessioni di beni senza rivalsa o prestazioni gratuite
23 l10n_it_document_type_28 TD28 Self-invoice for purchases from San Marino with VAT (paper invoice) Autofattura per acquisti da San Marino con IVA (fattura cartacea)

View file

@ -0,0 +1,3 @@
-- neutralize Fattura Elettronica (FatturaPA)
UPDATE res_company
SET l10n_it_edi_register = false;

View file

@ -0,0 +1,52 @@
-----BEGIN PRIVATE KEY-----
MIIJQQIBADANBgkqhkiG9w0BAQEFAASCCSswggknAgEAAoICAQC6x1d6eQ7vmV0b
dabsdctgZTwqoMYjia87Qu18S6DDcXmf0nXfTnTLRkxFGXh6LgtuqmqYyvEik6M8
4laKOt6CeCbY+6fKu5YnJAa01C4/F7hQ2HSPqDdk7Wj99LvT4W+KzcMPD8CLSXMu
yvznYaXI/YoeFbD+1Tg4G6ZsuNejM2Hzrq2ca72PIS1Q9vUn2YMUKcqHsgvDNl8W
WXCt2hhJurhd8lngCwxPB5i2ez23UIOOyp4LkASHHwdYWMWZBvr5bfXiAARoLl7N
WjrHQDJhZSlQCipQoRO8v3UNOS1RLA4bC0OWqlj00D/DvEZ8EeSuYOuuZxvB2UlH
s+Gk0VDWeKFJuUngx9O6vv87rEz3dFnRlMUhwqim37+D755j0LR7uesgc1j7sMJd
HAqKSo/C0WAdg9nJJeNY5twxp57vZX30DU9mdynEbH0fd9/7PfMpBzT767qjGSnp
7+xVNTiDyGTgXPJWEs9LLDfgIw37MfOmSz7yFH2FYsgOnsnPy1IRRqeMbYpUL/ye
1KNs1wXcCVcSVBwSq6Oc3yngS1m+moH8BIi50qzXazuy1LZRABTsGdTkrnEMuJvN
omyr7V/EzuOIOljRRNPOSZuR595SFS1m+gpt/6hDtmRFqsqvl4WBOrhadK1YPAJr
Tjm1y1Ju95A9Ehso+Q8ltF78H6ilfQIDAQABAoICAF0gjFzr5EcRxCsvV7m5p9xZ
zYyBmhlZCo51Od0KBk+8kgReltfvEevSkq+3WestbxTQEpM5SM7RJwhx3+1PGeea
ieARZeF+84hzfYaG7sIVjRh+PGvuVyRS/VD2R/qGgiuGmXW2iG3Kgww3OK8TcGpN
BCMo9JWy8TOEkc/Ov/HG6lVqaHTAAYVOaP5gC+9BFAqnJazP2O6N+w41LSn5vrdw
SoHJFwfO6mWzJ3EA9M4kblvxaajhN2i5z1s889Tvdo6MRZdYI9pgGHOyQ/FZ8GTA
YD9guiV2ktU+7tlXg2FgIm5YiOwj5nO2K7zn8IrnDwrlF03faicWtGN0bJLVrMRQ
y5xNXldDatts1NuocrvHsGqGLDbUwUMvmBA+yR9yOzSJK0mJOWsNIkUkcQiqWDUM
5ej/+4bs22iY2dF2stOmPGI158PwPOOz0lpkM5QGRFlsDdofD9REXwJhfLsZf9CJ
EZ7OZEmeMOxqTXYycNikzgYouvz+5a6WWUOgB41elDVIhO4BX8N+ao+8fY0yYMG3
JoV6KJN0n8EwnMkA1QczYxmWEHHMhXtmH7VgqVJyN4HzD3jfXFYXA0wOrRIIoARA
BO9U/XtOO6lYXOWprN5ihFgJfDIp9AeSAlN/PkRF+Q+QR/Spc8EECFGAwoNqcnlq
PrWzkvvhrjpxWg9d5r1/AoIBAQDWi1Txg3bmf0XwFOVhrki5HC4BOR0YFFLtvi34
032/j4HG+17e1VVD9P0ZYEojGR2mMgZY3OwwDeGC30pyzKo7YCcHqfTwwmboPjQ0
gQ1ErpF/5CDLdup3rVvqEKOQoo4vodjrDgWzVk6r+Wxanbd6PZOF7xtu9U576z0l
0J9UBSavtjyhLHvAYetJIxPrK4UC2WNBKES7Ug5EgMGfbQnYhzhjzQkEJ4B9NGMl
X7godfBfzpMwUBNR4FdbSrNAQ6jV2Y84J+MNunHt2oegJPzjQDi8Is8nPjcumEP3
KVF3GJiglWG/XG9ZULAe+EGD72Nat4tUQBLVJ3gvGC30i3NHAoIBAQDe3o37VPuH
7k8aldztQCez3vp7flji2FyyjHm/rMMPaW9aHN1qY6D7zvWXKw4D3XPeuoTBim5X
/fdu//HAU2nJK27fxGn6AFf938DO6b3AGvtn59q3JKzHnUHlck0hRkOOuYrp2OAt
UAwF4zuTdE1vWwPAEMsghsfodUF+dsJuYWJ/M+pcPyjDqq6p6IIBXM8ag4X+OeHO
HrCdPQMpBhHSrRkpjG5MC4H/mqkDdFPhPvS/5q0B4b1MEaC7iOzaREnx1HMLlANz
2drOGEqZjsSl05LUJo6JdTh4IQN0vuMyEdpwVAvnOMCuYarhccx8hT9WYhMN2eZh
b3FTFevJXRsbAoIBAED8JTeedYZt6LZG7g//ZYHEel7eeOSRS2k94Njs3rsGce3e
uCbRAam67GsiUnJ9KhDsOCX0jQolOjiVAAzz12ByyH+2yD2g9ODF7rQ0nts98U6G
wDRBCdZESYIFljW6N01QPc89CRcAPoYy39I20ZuSSTwZZ/rdDO/WGkh4/7nIcaZp
kcXUHovwXP9jQ6ZJIVnylPDojKEcwruXMI7kzUWr97WrJl7+xBmoo5tvee2vg6bR
gJ3ys1dql6tMXi1KETrtUkdVNZ4z6kx8k/Y7HeqLymOaO5sMalSPxI56EnX7mkeR
1/DJw+SO3zoSQm3/Nd4FmItleQ7djLbfIRRgpQMCggEAM/4lj2GnAHInACPAE5Uo
7fxx4Qd7wwgIsBq3eHDcXKcTNCmRufUeJECG6MpBjcNG+cn3mJMr5Nk5tSp+goiz
IBxC1G8k7g7QeEiP2XWML9nblsTvMFSc/kCAk/+TYNTcg9pjPuS6f7ex5lm5l0/F
lNndyRvh12e6EU/xhIg+GbQcX2KEJRsS7nrOHpNAaQL2yc+vHbzxIb3lI/mM2DAz
TjvVp+y7+n+gxzmUflrQCrc+L9qnt82q9KkUH0v1PYI64fDXGfdgytEjC3t9Q8+b
rrfqBBYuoIC5OMUy4jR6Gj8x/4yL7lg+EzBzxf5fXxlSyls86LlR1p9CB8kQZbyT
ywKCAQB0+4g0YTG4W0UfQZ2NvBuHA+YmkUghBxmvhv5HH/DbEFqarynxBH9A6JVq
vaKou4tN6WBIzjmwH/ORECVMBU0xyxMbI+/OI2PaAy4ZKd+47mOsFGS0Wz7IeLA1
6Ti3S31hXaKxqUs1UytE5bANI+cPAx/PzZEYtHNcQu2BU8mbMcTRXvYm7s3YiV1K
V+/MVmCrGMhSKHCsxzoMl6WRG7LRaSR8sAv+liVhFe6mESk/XYzIC88mRNKz0FPV
pP/YHL/tLgRXdmkIrxwORb7wIkZwJws3Ky59F03hSth4iMwsp39CZYd3qnAQoDwH
yEg8Sz5f+64iCzWSdX3DYZVhcNN4
-----END PRIVATE KEY-----

File diff suppressed because it is too large Load diff

View file

@ -1,11 +1,10 @@
# -*- coding: utf-8 -*-
# Part of Odoo. See LICENSE file for full copyright and licensing details.
from . import res_partner
from . import account_edi_proxy_user
from . import account_move
from . import account_move_send
from . import account_payment_method_line
from . import account_tax
from . import ddt
from . import l10n_it_document_type
from . import res_company
from . import res_config_settings
from . import account_chart_template
from . import account_invoice
from . import account_edi_format
from . import ddt
from . import mail_template
from . import res_partner

View file

@ -1,33 +0,0 @@
# -*- coding: utf-8 -*-
# Part of Odoo. See LICENSE file for full copyright and licensing details.
from odoo import models
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)
template = company.chart_template_id
if template == 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')
tax = self.env.ref(f'l10n_it.{company.id}_00eu', raise_if_not_found=False)
if tax:
tax.write({
'l10n_it_has_exoneration': True,
'l10n_it_kind_exoneration': 'N3.2',
'l10n_it_law_reference': 'Art. 41, DL n. 331/93',
})
service_tax = self.env.ref(f'l10n_it.{company.id}_00eus', raise_if_not_found=False)
if service_tax:
service_tax.write({
'l10n_it_has_exoneration': True,
'l10n_it_kind_exoneration': 'N3.2',
'l10n_it_law_reference': 'Art. 7ter, DPR 633/1972',
})
return result

View file

@ -0,0 +1,60 @@
# Part of Odoo. See LICENSE file for full copyright and licensing details.
import logging
from odoo import _, fields, models
from odoo.exceptions import UserError
_logger = logging.getLogger(__name__)
class Account_Edi_Proxy_ClientUser(models.Model):
_inherit = 'account_edi_proxy_client.user'
proxy_type = fields.Selection(selection_add=[('l10n_it_edi', 'Italian EDI')], ondelete={'l10n_it_edi': 'cascade'})
_unique_identification_l10n_it_edi = models.UniqueIndex(
"(edi_identification, proxy_type, edi_mode) WHERE (active AND proxy_type = 'l10n_it_edi')",
"This edi identification is already assigned to an active user",
)
def _get_proxy_urls(self):
urls = super()._get_proxy_urls()
urls['l10n_it_edi'] = {
'demo': False,
'prod': 'https://l10n-it-edi.api.odoo.com',
'test': 'https://iap-services-test.odoo.com',
}
return urls
def _get_proxy_identification(self, company, proxy_type):
if proxy_type == 'l10n_it_edi':
if not company.l10n_it_codice_fiscale:
raise UserError(_('Please fill your codice fiscale to be able to receive invoices from FatturaPA'))
return company.partner_id._l10n_it_edi_normalized_codice_fiscale()
return super()._get_proxy_identification(company, proxy_type)
def _toggle_proxy_user_active(self):
"""
Toggle the value of the ``active`` boolean field of the proxy_user,
and handle sending the reactivate/deactivate requests to the IAP side.
"""
self.ensure_one()
server_url = self._get_proxy_urls()['l10n_it_edi'][self.edi_mode]
if self.active:
self._make_request(f"{server_url}/api/l10n_it_edi/1/deactivate_user")
else:
self._make_request(f"{server_url}/api/l10n_it_edi/1/reactivate_user")
self.active = not self.active
def _get_iap_params(self, company, proxy_type, private_key_sudo):
iap_params = super()._get_iap_params(company, proxy_type, private_key_sudo)
iap_params['l10n_it_vat'] = company.vat
return iap_params
def _register_proxy_user(self, company, proxy_type, edi_mode):
if proxy_type == 'l10n_it_edi':
company = company._l10n_it_get_edi_company()
return super()._register_proxy_user(company, proxy_type, edi_mode)

View file

@ -1,485 +0,0 @@
# -*- coding:utf-8 -*-
# Part of Odoo. See LICENSE file for full copyright and licensing details.
import base64
from functools import reduce
import logging
import re
from datetime import datetime
from odoo import api, fields, models, _
from odoo.tools import float_repr, float_compare
from odoo.exceptions import UserError, ValidationError
_logger = logging.getLogger(__name__)
DEFAULT_FACTUR_ITALIAN_DATE_FORMAT = '%Y-%m-%d'
class AccountMove(models.Model):
_inherit = 'account.move'
l10n_it_edi_transaction = fields.Char(copy=False, string="FatturaPA Transaction")
l10n_it_edi_attachment_id = fields.Many2one('ir.attachment', copy=False, string="FatturaPA Attachment", ondelete="restrict")
l10n_it_stamp_duty = fields.Float(string="Dati Bollo", readonly=True, states={'draft': [('readonly', False)]})
l10n_it_ddt_id = fields.Many2one('l10n_it.ddt', string='DDT', readonly=True, states={'draft': [('readonly', False)]}, copy=False)
l10n_it_einvoice_name = fields.Char(compute='_compute_l10n_it_einvoice')
l10n_it_einvoice_id = fields.Many2one('ir.attachment', string="Electronic invoice", compute='_compute_l10n_it_einvoice')
def _get_l10n_it_amount_split_payment(self):
self.ensure_one()
if not self.is_sale_document(False):
return 0.0
sign = -1 if self.move_type == "out_invoice" else 1
return sum(sign * line.balance for line in self.line_ids.filtered(lambda l: l.tax_line_id and l.tax_line_id._l10n_it_is_split_payment()))
@api.depends('edi_document_ids', 'edi_document_ids.attachment_id')
def _compute_l10n_it_einvoice(self):
fattura_pa = self.env.ref('l10n_it_edi.edi_fatturaPA')
for invoice in self:
einvoice = invoice.edi_document_ids.filtered(lambda d: d.edi_format_id == fattura_pa).sudo()
invoice.l10n_it_einvoice_id = einvoice.attachment_id
invoice.l10n_it_einvoice_name = einvoice.attachment_id.name
@api.depends('l10n_it_edi_transaction')
def _compute_show_reset_to_draft_button(self):
super(AccountMove, self)._compute_show_reset_to_draft_button()
for move in self.filtered(lambda m: m.l10n_it_edi_transaction):
move.show_reset_to_draft_button = False
def invoice_generate_xml(self):
self.ensure_one()
report_name = self.env['account.edi.format']._l10n_it_edi_generate_electronic_invoice_filename(self)
data = "<?xml version='1.0' encoding='UTF-8'?>" + str(self._l10n_it_edi_export_invoice_as_xml())
description = _('Italian invoice: %s', self.move_type)
attachment = self.env['ir.attachment'].create({
'name': report_name,
'res_id': self.id,
'res_model': self._name,
'raw': data.encode(),
'description': description,
'type': 'binary',
})
self.message_post(
body=(_("E-Invoice is generated on %s by %s") % (fields.Datetime.now(), self.env.user.display_name))
)
return {'attachment': attachment}
def _is_commercial_partner_pa(self):
"""
Returns True if the destination of the FatturaPA belongs to the Public Administration.
"""
return len(self.commercial_partner_id.l10n_it_pa_index or '') == 6
def _l10n_it_edi_prepare_fatturapa_line_details(self, reverse_charge_refund=False, is_downpayment=False, convert_to_euros=True):
""" Returns a list of dictionaries passed to the template for the invoice lines (DettaglioLinee)
"""
invoice_lines = []
lines = self.invoice_line_ids.filtered(lambda l: not l.display_type in ('line_note', 'line_section'))
for num, line in enumerate(lines):
sign = -1 if line.move_id.is_inbound() else 1
price_subtotal = (line.balance * sign) if convert_to_euros else line.price_subtotal
# The price_subtotal should be inverted when the line is a reverse charge refund.
if reverse_charge_refund:
price_subtotal = -price_subtotal
# Unit price
price_unit = 0
if line.quantity and line.discount != 100.0:
price_unit = price_subtotal / ((1 - (line.discount or 0.0) / 100.0) * abs(line.quantity))
else:
price_unit = line.price_unit
description = line.name
# Down payment lines:
# If there was a down paid amount that has been deducted from this move,
# we need to put a reference to the down payment invoice in the DatiFattureCollegate tag
downpayment_moves = self.env['account.move']
if not is_downpayment and line.price_subtotal < 0:
downpayment_moves = line._get_downpayment_lines().mapped("move_id")
if downpayment_moves:
downpayment_moves_description = ', '.join([m.name for m in downpayment_moves])
sep = ', ' if description else ''
description = f"{description}{sep}{downpayment_moves_description}"
vat_tax = line.tax_ids.flatten_taxes_hierarchy().filtered(lambda t: t._l10n_it_filter_kind('vat') and t.amount >= 0)
invoice_lines.append({
'line': line,
'line_number': num + 1,
'description': description or 'NO NAME',
'unit_price': price_unit,
'subtotal_price': price_subtotal,
'vat_tax': vat_tax,
'downpayment_moves': downpayment_moves,
})
return invoice_lines
def _l10n_it_edi_prepare_fatturapa_tax_details(self, tax_details, reverse_charge_refund=False):
""" Returns a list of dictionaries passed to the template for the invoice lines (DatiRiepilogo)
"""
tax_lines = []
for _tax_name, tax_dict in tax_details['tax_details'].items():
# The assumption is that the company currency is EUR.
tax = tax_dict['tax']
base_amount = tax_dict['base_amount']
tax_amount = tax_dict['tax_amount']
tax_rate = tax.amount
tax_exigibility_code = (
'S' if tax._l10n_it_is_split_payment()
else 'D' if tax.tax_exigibility == 'on_payment'
else 'I' if tax.tax_exigibility == 'on_invoice'
else False
)
expected_base_amount = tax_amount * 100 / tax_rate if tax_rate else False
# Constraints within the edi make local rounding on price included taxes a problem.
# To solve this there is a <Arrotondamento> or 'rounding' field, such that:
# taxable base = sum(taxable base for each unit) + Arrotondamento
if tax.price_include and tax.amount_type == 'percent':
if expected_base_amount and float_compare(base_amount, expected_base_amount, 2):
tax_dict['rounding'] = base_amount - (tax_amount * 100 / tax_rate)
tax_dict['base_amount'] = base_amount - tax_dict['rounding']
tax_line_dict = {
'tax': tax,
'rounding': tax_dict.get('rounding', False),
'base_amount': tax_dict['base_amount'],
'tax_amount': tax_dict['tax_amount'],
'exigibility_code': tax_exigibility_code,
}
tax_lines.append(tax_line_dict)
return tax_lines
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']
return (repartition_line.factor_percent >= 0 and repartition_line.tax_id.amount >= 0)
def _prepare_fatturapa_export_values(self):
self.ensure_one()
def format_date(dt):
# Format the date in the italian standard.
dt = dt or datetime.now()
return dt.strftime(DEFAULT_FACTUR_ITALIAN_DATE_FORMAT)
def format_monetary(number, currency):
# Format the monetary values to avoid trailing decimals (e.g. 90.85000000000001).
return float_repr(number, min(2, currency.decimal_places))
def format_numbers(number):
#format number to str with between 2 and 8 decimals (event if it's .00)
number_splited = str(number).split('.')
if len(number_splited) == 1:
return "%.02f" % number
cents = number_splited[1]
if len(cents) > 8:
return "%.08f" % number
return float_repr(number, max(2, len(cents)))
def format_numbers_two(number):
#format number to str with 2 (event if it's .00)
return "%.02f" % number
def discount_type(discount):
return 'SC' if discount > 0 else 'MG'
def format_phone(number):
if not number:
return False
number = number.replace(' ', '').replace('/', '').replace('.', '')
if len(number) > 4 and len(number) < 13:
return number
return False
def get_vat_number(vat):
if vat[:2].isdecimal():
return vat.replace(' ', '')
return vat[2:].replace(' ', '')
def get_vat_country(vat):
if vat[:2].isdecimal():
return 'IT'
return vat[:2].upper()
def format_alphanumeric(text_to_convert):
return text_to_convert.encode('latin-1', 'replace').decode('latin-1') if text_to_convert else False
def get_move_invoice_template_date(move):
return move.date if self.env['account.edi.format']._l10n_it_edi_is_self_invoice(move) else move.invoice_date
def get_vat_values(partner):
""" Generate the VAT and country code needed by l10n_it_edi XML export.
VAT number:
If there is a VAT number and the partner is not in EU and San Marino, then the exported value is 'OO99999999999'
If there is a VAT number and the partner is in EU or San Marino, then remove the country prefix
If there is no VAT and the partner is not in Italy, then the exported value is '0000000'
If there is no VAT and the partner is in Italy, the VAT is not set and Codice Fiscale will be relevant in the XML.
If there is no VAT and no Codice Fiscale, the invoice is not even exported, so this case is not handled.
Country:
First, take the country configured on the partner.
If there's a codice fiscale and no country, the country is 'IT'.
"""
europe = self.env.ref('base.europe', raise_if_not_found=False)
in_eu = europe and partner.country_id and partner.country_id in europe.country_ids
is_sm = partner.country_code == 'SM'
normalized_vat = partner.vat
normalized_country = partner.country_code
has_vat = partner.vat and not partner.vat in ['/', 'NA']
if has_vat:
normalized_vat = partner.vat.replace(' ', '')
if in_eu:
# If the partner is from the EU, the country-code prefix of the VAT must be taken away
if not normalized_vat[:2].isdecimal():
normalized_vat = normalized_vat[2:]
# If customer is from San Marino
elif is_sm:
normalized_vat = normalized_vat if normalized_vat[:2].isdecimal() else normalized_vat[2:]
# The Tax Agency arbitrarily decided that non-EU VAT are not interesting,
# so this default code is used instead
# Detect the country code from the partner country instead
else:
normalized_vat = 'OO99999999999'
# If it has a codice fiscale (and no country), it's an Italian partner
if not normalized_country and partner.l10n_it_codice_fiscale:
normalized_country = 'IT'
# If customer has not VAT
elif not has_vat and partner.country_id and partner.country_id.code != 'IT':
normalized_vat = '0000000'
return {
'vat': normalized_vat,
'country_code': normalized_country,
}
formato_trasmissione = "FPA12" if self._is_commercial_partner_pa() else "FPR12"
# Flags
in_eu = self.env['account.edi.format']._l10n_it_edi_partner_in_eu
is_self_invoice = self.env['account.edi.format']._l10n_it_edi_is_self_invoice(self)
document_type = self.env['account.edi.format']._l10n_it_get_document_type(self)
if self.env['account.edi.format']._l10n_it_is_simplified_document_type(document_type):
formato_trasmissione = "FSM10"
# Represent if the document is a reverse charge refund in a single variable
reverse_charge = document_type in ['TD17', 'TD18', 'TD19']
is_downpayment = document_type in ['TD02']
reverse_charge_refund = self.move_type == 'in_refund' and reverse_charge
convert_to_euros = self.currency_id.name != 'EUR'
# b64encode returns a bytestring, the template tries to turn it to string,
# but only gets the repr(pdf) --> "b'<base64_data>'"
pdf = self.env['ir.actions.report']._render_qweb_pdf("account.account_invoices", self.id)[0]
pdf = base64.b64encode(pdf).decode()
pdf_name = re.sub(r'\W+', '', self.name) + '.pdf'
tax_details = self._prepare_edi_tax_details(filter_to_apply=self._l10n_it_edi_filter_fatturapa_tax_details)
company = self.company_id
partner = self.commercial_partner_id
buyer = partner if not is_self_invoice else company
seller = company if not is_self_invoice else partner
codice_destinatario = (
(is_self_invoice and company.partner_id.l10n_it_pa_index)
# San Marino is externally integrated with the SdI.
# The country as a whole has a single fixed Destination Code (i.e. "2R4GTO8").
# https://www.agenziaentrate.gov.it/portale/documents/20143/3788702/Modifiche+ProvvedimentonSanMarino+0248717-2021.pdf/429b5571-17b9-0cce-7f62-f79cf53086d7
or (partner.country_code == 'SM' and '2R4GTO8')
or partner.l10n_it_pa_index
or (partner.country_id.code == 'IT' and '0000000')
or 'XXXXXXX')
# Self-invoices are technically -100%/+100% repartitioned
# but functionally need to be exported as 100%
document_total = self.amount_total
if is_self_invoice:
document_total += sum([abs(v['tax_amount_currency']) for k, v in tax_details['tax_details'].items()])
if reverse_charge_refund:
document_total = -abs(document_total)
split_payment_amount = self._get_l10n_it_amount_split_payment()
if split_payment_amount:
document_total += split_payment_amount
# Reference line for finding the conversion rate used in the document
conversion_line = self.invoice_line_ids.sorted(lambda l: abs(l.balance), reverse=True)[0] if self.invoice_line_ids else None
conversion_rate = float_repr(
abs(conversion_line.balance / conversion_line.amount_currency), precision_digits=5,
) if convert_to_euros and conversion_line and conversion_line.amount_currency else None
invoice_lines = self._l10n_it_edi_prepare_fatturapa_line_details(reverse_charge_refund, is_downpayment, convert_to_euros)
tax_lines = self._l10n_it_edi_prepare_fatturapa_tax_details(tax_details, reverse_charge_refund)
# Reduce downpayment views to a single recordset
downpayment_moves = [l.get('downpayment_moves', self.env['account.move']) for l in invoice_lines]
downpayment_moves = self.browse(move.id for moves in downpayment_moves for move in moves)
# Create file content.
template_values = {
'record': self,
'balance_multiplicator': -1 if self.is_inbound() else 1,
'company': company,
'sender': company,
'sender_partner': company.partner_id,
'partner': partner,
'buyer': buyer,
'buyer_partner': partner if not is_self_invoice else company.partner_id,
'buyer_is_company': is_self_invoice or partner.is_company,
'seller': seller,
'seller_partner': company.partner_id if not is_self_invoice else partner,
'origin_document_type': False, # see module l10n_it_edi_origin_document, will be merged in master
'currency': self.currency_id or self.company_currency_id if not convert_to_euros else self.env.ref('base.EUR'),
'document_total': document_total,
'representative': company.l10n_it_tax_representative_partner_id,
'codice_destinatario': codice_destinatario,
'regime_fiscale': company.l10n_it_tax_system if not is_self_invoice else 'RF18',
'is_self_invoice': is_self_invoice,
'partner_bank': self.partner_bank_id,
'format_date': format_date,
'format_monetary': format_monetary,
'format_numbers': format_numbers,
'format_numbers_two': format_numbers_two,
'format_phone': format_phone,
'format_alphanumeric': format_alphanumeric,
'discount_type': discount_type,
'formato_trasmissione': formato_trasmissione,
'document_type': document_type,
'pdf': pdf,
'pdf_name': pdf_name,
'tax_details': tax_details,
'downpayment_moves': downpayment_moves,
'abs': abs,
'normalize_codice_fiscale': partner._l10n_it_normalize_codice_fiscale,
'get_vat_number': get_vat_number,
'get_vat_country': get_vat_country,
'in_eu': in_eu,
'rc_refund': reverse_charge_refund,
'invoice_lines': invoice_lines,
'tax_lines': tax_lines,
'conversion_rate': conversion_rate,
'buyer_info': get_vat_values(buyer),
'seller_info': get_vat_values(seller),
'get_move_invoice_template_date': get_move_invoice_template_date,
}
return template_values
def _post(self, soft=True):
# OVERRIDE
posted = super()._post(soft=soft)
return posted
def _compose_info_message(self, tree, element_tags):
output_str = ""
elements = tree.xpath(element_tags)
for element in elements:
output_str += "<ul>"
for line in element.iter():
if line.text:
text = " ".join(line.text.split())
if text:
output_str += "<li>%s: %s</li>" % (line.tag, text)
output_str += "</ul>"
return output_str
def _compose_multi_info_message(self, tree, element_tags):
output_str = "<ul>"
for element_tag in element_tags:
elements = tree.xpath(element_tag)
if not elements:
continue
for element in elements:
text = " ".join(element.text.split())
if text:
output_str += "<li>%s: %s</li>" % (element.tag, text)
return output_str + "</ul>"
class AccountTax(models.Model):
_name = "account.tax"
_inherit = "account.tax"
l10n_it_vat_due_date = fields.Selection([
("I", "[I] IVA ad esigibilità immediata"),
("D", "[D] IVA ad esigibilità differita"),
("S", "[S] Scissione dei pagamenti")], default="I", string="VAT due date")
l10n_it_has_exoneration = fields.Boolean(string="Has exoneration of tax (Italy)", help="Tax has a tax exoneration.")
l10n_it_kind_exoneration = fields.Selection(selection=[
("N1", "[N1] Escluse ex art. 15"),
("N2", "[N2] Non soggette"),
("N2.1", "[N2.1] Non soggette ad IVA ai sensi degli artt. Da 7 a 7-septies del DPR 633/72"),
("N2.2", "[N2.2] Non soggette altri casi"),
("N3", "[N3] Non imponibili"),
("N3.1", "[N3.1] Non imponibili esportazioni"),
("N3.2", "[N3.2] Non imponibili cessioni intracomunitarie"),
("N3.3", "[N3.3] Non imponibili cessioni verso San Marino"),
("N3.4", "[N3.4] Non imponibili operazioni assimilate alle cessioni allesportazione"),
("N3.5", "[N3.5] Non imponibili a seguito di dichiarazioni dintento"),
("N3.6", "[N3.6] Non imponibili altre operazioni che non concorrono alla formazione del plafond"),
("N4", "[N4] Esenti"),
("N5", "[N5] Regime del margine / IVA non esposta in fattura"),
("N6", "[N6] Inversione contabile (per le operazioni in reverse charge ovvero nei casi di autofatturazione per acquisti extra UE di servizi ovvero per importazioni di beni nei soli casi previsti)"),
("N6.1", "[N6.1] Inversione contabile cessione di rottami e altri materiali di recupero"),
("N6.2", "[N6.2] Inversione contabile cessione di oro e argento puro"),
("N6.3", "[N6.3] Inversione contabile subappalto nel settore edile"),
("N6.4", "[N6.4] Inversione contabile cessione di fabbricati"),
("N6.5", "[N6.5] Inversione contabile cessione di telefoni cellulari"),
("N6.6", "[N6.6] Inversione contabile cessione di prodotti elettronici"),
("N6.7", "[N6.7] Inversione contabile prestazioni comparto edile esettori connessi"),
("N6.8", "[N6.8] Inversione contabile operazioni settore energetico"),
("N6.9", "[N6.9] Inversione contabile altri casi"),
("N7", "[N7] IVA assolta in altro stato UE (prestazione di servizi di telecomunicazioni, tele-radiodiffusione ed elettronici ex art. 7-octies, comma 1 lett. a, b, art. 74-sexies DPR 633/72)")],
string="Exoneration",
help="Exoneration type",
default="N1")
l10n_it_law_reference = fields.Char(string="Law Reference", size=100)
@api.constrains('l10n_it_has_exoneration',
'l10n_it_kind_exoneration',
'l10n_it_law_reference',
'amount',
'invoice_repartition_line_ids',
'refund_repartition_line_ids')
def _check_exoneration_with_no_tax(self):
for tax in self:
if tax.l10n_it_has_exoneration:
if not tax.l10n_it_kind_exoneration or not tax.l10n_it_law_reference or tax.amount != 0:
raise ValidationError(_("If the tax has exoneration, you must enter a kind of exoneration, a law reference and the amount of the tax must be 0.0."))
if tax.l10n_it_kind_exoneration == 'N6' and tax._l10n_it_is_split_payment():
raise UserError(_("Split Payment is not compatible with exoneration of kind 'N6'"))
def _l10n_it_filter_kind(self, kind):
""" This can be overridden by l10n_it_edi_withholding for different kind of taxes (withholding, pension_fund)."""
return self if kind == 'vat' else self.env['account.tax']
def _l10n_it_is_split_payment(self):
""" Split payment means that the Public Administration buyer will pay VAT
to the tax agency instead of the vendor
"""
self.ensure_one()
tax_tags = self.get_tax_tags(is_refund=False, repartition_type='base') | self.get_tax_tags(is_refund=False, repartition_type='tax')
if not tax_tags:
return False
it_tax_report_ve38_lines = self.env['account.report.line'].search([
('report_id.country_id.code', '=', 'IT'),
('code', '=', 'VE38'),
])
if not it_tax_report_ve38_lines:
return False
ve38_lines_tags = it_tax_report_ve38_lines.expression_ids._get_matching_tags()
return bool(tax_tags & ve38_lines_tags)

File diff suppressed because it is too large Load diff

View file

@ -0,0 +1,146 @@
# Part of Odoo. See LICENSE file for full copyright and licensing details.
from odoo import _, api, models
import base64
class AccountMoveSend(models.AbstractModel):
_inherit = 'account.move.send'
@api.model
def _is_it_edi_applicable(self, move):
return all([
move.company_id.account_fiscal_country_id.code == 'IT'
and move._l10n_it_edi_ready_for_xml_export()
and move.l10n_it_edi_state != 'rejected'
])
def _get_all_extra_edis(self) -> dict:
# EXTENDS 'account'
res = super()._get_all_extra_edis()
res.update({'it_edi_send': {'label': _("Send to Tax Agency"), 'is_applicable': self._is_it_edi_applicable, 'help': _("Send the e-invoice XML to the Italian Tax Agency.")}})
return res
# -------------------------------------------------------------------------
# ALERTS
# -------------------------------------------------------------------------
def _get_alerts(self, moves, moves_data):
# EXTENDS 'account'
alerts = super()._get_alerts(moves, moves_data)
if it_moves := moves.filtered(lambda m: 'it_edi_send' in moves_data[m]['extra_edis'] or moves_data[m]['invoice_edi_format'] == 'it_edi_xml'):
if it_alerts := it_moves._l10n_it_edi_export_data_check():
alerts.update(**it_alerts)
# Invite the user to authorize Odoo and start using IT EDI in production mode
if 'prod' not in it_moves.mapped('l10n_it_edi_proxy_mode'):
alerts['l10n_it_edi_invite_authorize'] = {
'level': 'info',
'message': _("You must authorize Odoo in the Settings to use the IT EDI in production mode."),
'action_text': _("View Settings"),
'action': {
'name': _("Settings"),
'type': 'ir.actions.act_url',
'target': 'self',
'url': '/odoo/settings#l10n_it_edi_setting',
},
}
return alerts
# -------------------------------------------------------------------------
# SENDING METHODS
# -------------------------------------------------------------------------
def _get_invoice_extra_attachments(self, invoice):
# EXTENDS 'account'
return super()._get_invoice_extra_attachments(invoice) + self.env['ir.attachment'].search([
('res_model', '=', 'account.move'),
('res_field', '=', 'l10n_it_edi_attachment_file'),
('res_id', 'in', invoice.ids),
])
def _hook_invoice_document_before_pdf_report_render(self, invoice, invoice_data):
# EXTENDS 'account'
super()._hook_invoice_document_before_pdf_report_render(invoice, invoice_data)
if (
('it_edi_send' in invoice_data['extra_edis'] and not invoice.l10n_it_edi_attachment_file)
or (invoice_data['invoice_edi_format'] == 'it_edi_xml' and invoice._l10n_it_edi_ready_for_xml_export())
):
if errors := invoice._l10n_it_edi_export_data_check():
invoice_data['error'] = {
'error_title': _("Errors occurred while creating the e-invoice file:"),
'errors': [error['message'] for error in errors.values()],
}
def _hook_invoice_document_after_pdf_report_render(self, invoice, invoice_data):
# EXTENDS 'account'
super()._hook_invoice_document_after_pdf_report_render(invoice, invoice_data)
if (
invoice_data.get('pdf_attachment_values')
and (
('it_edi_send' in invoice_data['extra_edis'] and not invoice.l10n_it_edi_attachment_file)
or (invoice_data['invoice_edi_format'] == 'it_edi_xml' and invoice._l10n_it_edi_ready_for_xml_export())
)
):
invoice_data['l10n_it_edi_values'] = invoice._l10n_it_edi_get_attachment_values(
pdf_values=invoice_data['pdf_attachment_values'])
def _call_web_service_after_invoice_pdf_render(self, invoices_data):
# EXTENDS 'account'
super()._call_web_service_after_invoice_pdf_render(invoices_data)
attachments_vals = {}
moves = self.env['account.move']
# Filter only l10n_it_edi attachments
moves_data = {
move: move_data
for move, move_data in invoices_data.items()
if 'it_edi_send' in move_data['extra_edis']
}
# Prepare attachment data
for move, move_data in moves_data.items():
if attachment := move.l10n_it_edi_attachment_file:
attachments_vals[move] = {'name': move.l10n_it_edi_attachment_name, 'raw': base64.b64decode(attachment)}
moves |= move
elif edi_values := move_data.get('l10n_it_edi_values'):
attachments_vals[move] = edi_values
moves |= move
# Send
results = moves._l10n_it_edi_send(attachments_vals)
# Eventually update attachments with signed data
for move, move_data in moves_data.items():
if move.l10n_it_edi_attachment_file:
attachment_name = move.l10n_it_edi_attachment_name
elif attachment := move_data.get('l10n_it_edi_values'):
attachment_name = attachment['name']
attachment_data = results.get(attachment_name, {})
if attachment_data.get('signed') and (signed_data := attachment_data.get('signed_data')):
attachment['raw'] = signed_data.encode()
# Show that those moves couldn't be sent
if 'error_message' in attachment_data:
moves_data[move]['error'] = {'error_title': attachment_data['error_message']}
def _link_invoice_documents(self, invoices_data):
# EXTENDS 'account'
super()._link_invoice_documents(invoices_data)
move_ids_to_names = {}
for move, data in invoices_data.items():
if values := data.get('l10n_it_edi_values'):
move.l10n_it_edi_attachment_file = base64.b64encode(values['raw'])
move.l10n_it_edi_attachment_name = values['name']
move.invalidate_recordset(fnames=['l10n_it_edi_attachment_name', 'l10n_it_edi_attachment_file'])
move_ids_to_names[move.id] = values['name']
if move_ids_to_names:
attachments = self.env['ir.attachment'].search([
('res_model', '=', 'account.move'),
('res_field', '=', 'l10n_it_edi_attachment_file'),
('res_id', 'in', list(move_ids_to_names)),
])
for attachment in attachments:
attachment.name = move_ids_to_names.get(attachment.res_id)

View file

@ -0,0 +1,40 @@
from odoo import fields, models
L10N_IT_PAYMENT_METHOD_SELECTION = [
('MP01', "MP01 - Cash"),
('MP02', "MP02 - Check"),
('MP03', "MP03 - Cashier's check"),
('MP04', "MP04 - Cash at the Treasury"),
('MP05', "MP05 - Wire transfer"),
('MP06', "MP06 - Promissory note"),
('MP07', "MP07 - Bank slip"),
('MP08', "MP08 - Payment card"),
('MP09', "MP09 - RID"),
('MP10', "MP10 - RID users"),
('MP11', "MP11 - Fast RID"),
('MP12', "MP12 - RIBA"),
('MP13', "MP13 - MAV"),
('MP14', "MP14 - Treasury receipt"),
('MP15', "MP15 - Transfer of special accounting accounts"),
('MP16', "MP16 - Bank direct debit"),
('MP17', "MP17 - Postal domiciliation"),
('MP18', "MP18 - Postal account slip"),
('MP19', "MP19 - SEPA Direct Debit"),
('MP20', "MP20 - SEPA Direct Debit CORE"),
('MP21', "MP21 - SEPA Direct Debit B2B"),
('MP22', "MP22 - Withholding from sums already collected"),
('MP23', "MP23 - PagoPA"),
]
class AccountPaymentMethodLine(models.Model):
_inherit = "account.payment.method.line"
l10n_it_payment_method = fields.Selection(
selection=L10N_IT_PAYMENT_METHOD_SELECTION,
string="Italian Payment Method",
default='MP05',
)
def _get_l10n_it_payment_method_selection_code(self):
return [payment_method[0] for payment_method in L10N_IT_PAYMENT_METHOD_SELECTION]

View file

@ -0,0 +1,120 @@
from odoo import _, api, fields, models
from odoo.exceptions import ValidationError
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', '[TC01] National pension fund for lawyers and solicitors'),
('TC02', '[TC02] Pension fund for accountants with a degree'),
('TC03', '[TC03] Pension fund for surveyors'),
('TC04', '[TC04] National pension fund for associated engineers and architects'),
('TC05', '[TC05] National pension fund for notaries'),
('TC06', '[TC06] Pension fund for accountants without a degree and commercial experts'),
('TC07', '[TC07] ENASARCO pension fund for sales agents'),
('TC08', '[TC08] ENPACL pension fund for labor consultants'),
('TC09', '[TC09] ENPAM pension fund for doctors'),
('TC10', '[TC10] ENPAF pension fund for chemists'),
('TC11', '[TC11] ENPAV pension fund for veterinaries'),
('TC12', '[TC12] ENPAIA pension fund for people working in agriculture'),
('TC13', '[TC13] Pension fund for employees in delivery and marine agencies'),
('TC14', '[TC14] INPGI pension fund for journalists'),
('TC15', '[TC15] ONAOSI fund for sanitary orphans'),
('TC16', '[TC16] CASAGIT Additional pension fund for journalists'),
('TC17', '[TC17] EPPI pension fund for industrial experts'),
('TC18', '[TC18] EPAP pension fund'),
('TC19', '[TC19] ENPAB national pension fund for biologists'),
('TC20', '[TC20] ENPAPI national pension fund for nurses'),
('TC21', '[TC21] ENPAP national pension fund for psychologists'),
('TC22', '[TC22] INPS national pension fund'),
]
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_filter_kind(self, kind):
# EXTENDS l10n_it
match kind:
case 'withholding':
return self.filtered(lambda tax: tax.l10n_it_withholding_type)
case 'withholding_no_enasarco':
# Enasarco has both withholding and pension fund types,
# but it must be considered a pension fund for the checks.
return self.filtered(lambda tax:
tax.l10n_it_withholding_type
and tax.l10n_it_withholding_type != 'RT04'
)
case 'pension_fund':
return self.filtered(lambda tax: tax.l10n_it_pension_fund_type)
case 'vat':
return super()._l10n_it_filter_kind('vat').filtered(lambda tax:
not tax.l10n_it_withholding_type
and not tax.l10n_it_pension_fund_type,
)
case _:
return super()._l10n_it_filter_kind(kind)
@api.onchange("l10n_it_withholding_type")
def _onchange_l10n_it_withholding_type(self):
""" When no withholding type is selected, there should be no withholding reason, the field is hidden """
taxes_to_be_cleared = self.filtered(lambda tax: tax.l10n_it_withholding_reason and not tax.l10n_it_withholding_type)
taxes_to_be_cleared.l10n_it_withholding_reason = False
@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.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 == 'RT04') ^ (tax.l10n_it_pension_fund_type == 'TC07'):
raise ValidationError(_("Tax '%s' has one of withholding and pension fund types that do not relate to ENASARCO, and one that does.", tax.name))
if tax.l10n_it_withholding_type == 'RT04' and tax.l10n_it_withholding_reason != 'ZO':
raise ValidationError(_("Tax '%s' has withholding type ENASARCO, the withholding reason should be [ZO] - Other reason.", tax.name))

View file

@ -3,7 +3,8 @@
from odoo import fields, models, api
class L10nItDdt(models.Model):
class L10n_ItDdt(models.Model):
_name = 'l10n_it.ddt'
_description = 'Transport Document'
@ -11,8 +12,7 @@ class L10nItDdt(models.Model):
name = fields.Char(string="Numero DDT", size=20, help="Transport document number", required=True)
date = fields.Date(string="Data DDT", help="Transport document date", required=True)
def name_get(self):
res = []
@api.depends('date')
def _compute_display_name(self):
for ddt in self:
res.append((ddt.id, ("%s (%s)") % (ddt.name, ddt.date)))
return res
ddt.display_name = f"{ddt.name} ({ddt.date})"

View file

@ -0,0 +1,33 @@
from odoo import _, api, fields, models
from odoo.exceptions import ValidationError
class L10n_ItDocumentType(models.Model):
_name = 'l10n_it.document.type'
_description = 'Italian Document Type'
name = fields.Char(required=True, help='The document type name', translate=True)
code = fields.Char(required=True)
# not used, to be removed in master
type = fields.Selection(
selection=[
('sale', "Sale"),
('purchase', "Purchase"),
],
)
def _compute_display_name(self):
for document_type in self:
document_type.display_name = f"{document_type.code} - {document_type.name}"
@api.constrains('code')
def _check_code_unique(self):
duplicate = self._read_group(
domain=[],
groupby=['code'],
aggregates=['id:recordset'],
having=[('__count', '>', 1)],
limit=1,
)
if duplicate:
raise ValidationError(_('Document Type code must be unique.'))

View file

@ -1,18 +0,0 @@
# -*- coding: utf-8 -*-
from odoo import models
class MailTemplate(models.Model):
_inherit = "mail.template"
def _get_edi_attachments(self, document):
"""
Will return the information about the attachment of the edi document for adding the attachment in the mail.
Can be overridden where e.g. a zip-file needs to be sent with the individual files instead of the entire zip
:param document: an edi document
:return: list with a tuple with the name and base64 content of the attachment
"""
if document.edi_format_id.code == 'fattura_pa':
return {}
return super()._get_edi_attachments(document)

View file

@ -1,4 +1,3 @@
# -*- coding:utf-8 -*-
# Part of Odoo. See LICENSE file for full copyright and licensing details.
from odoo import api, fields, models, _
@ -25,14 +24,27 @@ TAX_SYSTEM = [
("RF19", "[RF19] Regime forfettario (art.1, c.54-89, L. 190/2014)"),
]
class ResCompany(models.Model):
_name = 'res.company'
_inherit = 'res.company'
l10n_it_codice_fiscale = fields.Char(string="Codice Fiscale", size=16, related='partner_id.l10n_it_codice_fiscale',
store=True, readonly=False, help="Fiscal code of your company")
l10n_it_tax_system = fields.Selection(selection=TAX_SYSTEM, string="Tax System",
help="Please select the Tax system to which you are subjected.")
l10n_it_edi_proxy_user_id = fields.Many2one(
comodel_name="account_edi_proxy_client.user",
compute="_compute_l10n_it_edi_proxy_user_id",
)
l10n_it_edi_register = fields.Boolean(default=False)
l10n_it_edi_purchase_journal_id = fields.Many2one(
comodel_name='account.journal',
string='Italian Default Purchase Journal',
domain=[('type', '=', 'purchase')],
compute='_compute_l10n_it_edi_purchase_journal_id',
store=True,
readonly=False,
)
# Economic and Administrative Index
l10n_it_has_eco_index = fields.Boolean(
@ -70,6 +82,12 @@ class ResCompany(models.Model):
Italy")
l10n_it_tax_representative_partner_id = fields.Many2one('res.partner', string='Tax representative partner')
@api.constrains('l10n_it_edi_purchase_journal_id')
def _check_l10n_it_edi_purchase_journal_id(self):
for company in self:
if company.l10n_it_edi_purchase_journal_id and not company.l10n_it_edi_purchase_journal_id.default_account_id:
raise ValidationError(_("The Italian default purchase journal requires a default account."))
@api.constrains('l10n_it_has_eco_index',
'l10n_it_eco_index_office',
'l10n_it_eco_index_number',
@ -91,7 +109,8 @@ class ResCompany(models.Model):
must be both present or not present. """
for record in self:
if (record.l10n_it_has_eco_index
and bool(record.l10n_it_eco_index_share_capital) ^ bool(record.l10n_it_eco_index_sole_shareholder)):
and (bool(record.l10n_it_eco_index_share_capital)
^ (record.l10n_it_eco_index_sole_shareholder and record.l10n_it_eco_index_sole_shareholder != 'NO'))):
raise ValidationError(_("If one of Share Capital or Sole Shareholder is present, "
"then they must be both filled out."))
@ -108,8 +127,78 @@ class ResCompany(models.Model):
if not record.l10n_it_tax_representative_partner_id.country_id:
raise ValidationError(_("Your tax representative partner must have a country."))
@api.depends("account_edi_proxy_client_ids", "l10n_it_codice_fiscale")
def _compute_l10n_it_edi_proxy_user_id(self):
for company in self:
edi_company = company._l10n_it_get_edi_company()
company.l10n_it_edi_proxy_user_id = edi_company.account_edi_proxy_client_ids.filtered(lambda x: x.proxy_type == 'l10n_it_edi')
# If we can't find any proxy user, create a new demo proxy user for this italian company.
# They must have the Codice Fiscale field filled for the registration process to work.
if not company.l10n_it_edi_proxy_user_id and company.l10n_it_codice_fiscale:
company.l10n_it_edi_proxy_user_id = self.env['account_edi_proxy_client.user']._register_proxy_user(
company=company,
proxy_type='l10n_it_edi',
edi_mode='demo',
)
@api.depends('country_code')
def _compute_l10n_it_edi_purchase_journal_id(self):
for company in self:
if not company.l10n_it_edi_purchase_journal_id and company.country_code == 'IT':
company.l10n_it_edi_purchase_journal_id = self.env['account.journal'].search([
*self.env['account.journal']._check_company_domain(company),
('type', '=', 'purchase'),
('default_account_id', '!=', False),
], limit=1)
else:
company.l10n_it_edi_purchase_journal_id = company.l10n_it_edi_purchase_journal_id
def _l10n_it_edi_export_check(self):
checks = {
'company_vat_codice_fiscale_missing': {
'fields': [('vat', 'l10n_it_codice_fiscale')],
'message': _("Company/ies should have a VAT number or Codice Fiscale."),
},
'company_address_missing': {
'fields': [('street', 'street2'), ('zip',), ('city',), ('country_id',)],
'message': _("Company/ies should have a complete address, verify their Street, City, Zipcode and Country."),
},
'company_l10n_it_tax_system_missing': {
'fields': [('l10n_it_tax_system',)],
'message': _("Company/ies should have a Tax System"),
},
}
errors = {}
for key, check in checks.items():
for fields_tuple in check.pop('fields'):
if invalid_records := self.filtered(lambda record: not any(record[field] for field in fields_tuple)):
errors[f"l10n_it_edi_{key}"] = {
'message': check['message'],
'action_text': _("View Company/ies"),
'action': invalid_records._get_records_action(name=_("Check Company Data")),
}
if self.filtered(lambda x: not x.l10n_it_edi_proxy_user_id):
errors['l10n_it_edi_settings_l10n_it_edi_proxy_user_id'] = {
'message': _("You need to set the Codice Fiscale on your company."),
'action_text': _("View Company/ies"),
'action': self._get_records_action(name=_("Check Company Data")),
}
return errors
@api.onchange("l10n_it_has_tax_representative")
def _onchange_l10n_it_has_tax_represeentative(self):
for company in self:
if not company.l10n_it_has_tax_representative:
company.l10n_it_tax_representative_partner_id = False
def _l10n_it_get_edi_company(self):
self.ensure_one()
if (
self.root_id.id != self.id
and self.l10n_it_codice_fiscale == self.root_id.l10n_it_codice_fiscale
and self.vat == self.root_id.vat
):
return self.root_id
else:
return self

View file

@ -1,100 +1,71 @@
# -*- coding: utf-8 -*-
# Part of Odoo. See LICENSE file for full copyright and licensing details.
from odoo import api, models, fields, _
from odoo.exceptions import UserError
class ResConfigSettings(models.TransientModel):
_inherit = 'res.config.settings'
is_edi_proxy_active = fields.Boolean(compute='_compute_is_edi_proxy_active')
l10n_it_edi_proxy_current_state = fields.Char(compute='_compute_l10n_it_edi_proxy_current_state')
l10n_it_edi_sdicoop_register = fields.Boolean(compute='_compute_l10n_it_edi_sdicoop_register', inverse='_set_l10n_it_edi_sdicoop_register_demo_mode')
l10n_it_edi_sdicoop_demo_mode = fields.Selection(
[('demo', 'Demo'),
('test', 'Test (experimental)'),
('prod', 'Official')],
compute='_compute_l10n_it_edi_sdicoop_demo_mode',
inverse='_set_l10n_it_edi_sdicoop_register_demo_mode',
readonly=False)
l10n_it_edi_register = fields.Boolean(
compute='_compute_l10n_it_edi_register',
inverse='_set_l10n_it_edi_register',
readonly=False,
)
l10n_it_edi_purchase_journal_id = fields.Many2one(
related='company_id.l10n_it_edi_purchase_journal_id',
readonly=False,
)
l10n_it_edi_show_purchase_journal_id = fields.Boolean(compute='_compute_l10n_it_edi_show_purchase_journal_id')
use_root_proxy_user = fields.Boolean(compute='_compute_use_root_proxy_user')
def _create_proxy_user(self, company_id):
fattura_pa = self.env.ref('l10n_it_edi.edi_fatturaPA')
edi_identification = fattura_pa._get_proxy_identification(company_id)
self.env['account_edi_proxy_client.user']._register_proxy_user(company_id, fattura_pa, edi_identification)
@api.depends('company_id.account_edi_proxy_client_ids', 'company_id.account_edi_proxy_client_ids.active')
def _compute_l10n_it_edi_sdicoop_demo_mode(self):
for config in self:
config.l10n_it_edi_sdicoop_demo_mode = self.env['account_edi_proxy_client.user']._get_demo_state()
def _set_l10n_it_edi_sdicoop_demo_mode(self):
for config in self:
self.env['ir.config_parameter'].set_param('account_edi_proxy_client.demo', config.l10n_it_edi_sdicoop_demo_mode)
@api.depends('company_id.account_edi_proxy_client_ids', 'company_id.account_edi_proxy_client_ids.active')
def _compute_is_edi_proxy_active(self):
for config in self:
config.is_edi_proxy_active = config.company_id.account_edi_proxy_client_ids
@api.depends('company_id.account_edi_proxy_client_ids', 'company_id.account_edi_proxy_client_ids.active')
def _compute_l10n_it_edi_proxy_current_state(self):
fattura_pa = self.env.ref('l10n_it_edi.edi_fatturaPA')
for config in self:
proxy_user = config.company_id.account_edi_proxy_client_ids.search([
('company_id', '=', config.company_id.id),
('edi_format_id', '=', fattura_pa.id),
], limit=1)
config.l10n_it_edi_proxy_current_state = 'inactive' if not proxy_user else 'demo' if proxy_user.id_client[:4] == 'demo' else 'active'
def _create_proxy_user(self, company_id, edi_mode):
return self.env['account_edi_proxy_client.user']._register_proxy_user(company_id, 'l10n_it_edi', edi_mode)
@api.depends('company_id')
def _compute_l10n_it_edi_sdicoop_register(self):
"""Needed because it expects a compute"""
self.l10n_it_edi_sdicoop_register = False
def button_create_proxy_user(self):
# For now, only fattura_pa uses the proxy.
# To use it for more, we have to either make the activation of the proxy on a format basis
# or create a user per format here (but also when installing new formats)
fattura_pa = self.env.ref('l10n_it_edi.edi_fatturaPA')
edi_identification = fattura_pa._get_proxy_identification(self.company_id)
if not edi_identification:
return
self.env['account_edi_proxy_client.user']._register_proxy_user(self.company_id, fattura_pa, edi_identification)
def _set_l10n_it_edi_sdicoop_register_demo_mode(self):
fattura_pa = self.env.ref('l10n_it_edi.edi_fatturaPA')
def _compute_l10n_it_edi_show_purchase_journal_id(self):
for config in self:
# Only show the setting when there exists more than 1 purchase journal.
purchase_journal_count = self.env['account.journal'].search_count([
*self.env['account.journal']._check_company_domain(config.company_id._l10n_it_get_edi_company()),
('type', '=', 'purchase'),
])
config.l10n_it_edi_show_purchase_journal_id = purchase_journal_count >= 2
proxy_user = self.env['account_edi_proxy_client.user'].search([
('company_id', '=', config.company_id.id),
('edi_format_id', '=', fattura_pa.id)
@api.depends('company_id')
def _compute_l10n_it_edi_register(self):
for config in self:
config.l10n_it_edi_register = config.company_id._l10n_it_get_edi_company().l10n_it_edi_register
def _set_l10n_it_edi_register(self):
for config in self:
company = config.company_id._l10n_it_get_edi_company()
company.l10n_it_edi_register = config.l10n_it_edi_register
proxy_user = self.env['account_edi_proxy_client.user'].sudo().search([
('company_id', '=', company.id),
('proxy_type', '=', 'l10n_it_edi'),
('edi_mode', '!=', 'demo'), # make sure it's a "real" proxy_user (edi_mode is 'test' or 'prod')
], limit=1)
real_proxy_users = self.env['account_edi_proxy_client.user'].sudo().search([
('id_client', 'not like', 'demo'),
])
if proxy_user and proxy_user.active != config.l10n_it_edi_register:
# Deactivate / Reactive the current proxy user based on the config's l10n_it_edi_register value
proxy_user._toggle_proxy_user_active()
elif config.l10n_it_edi_register and not proxy_user:
# Create a new proxy user
edi_mode = self.env['ir.config_parameter'].sudo().get_param('l10n_it_edi.proxy_user_edi_mode') or 'prod'
proxy_user = self._create_proxy_user(company, edi_mode)
# Update the config as per the selected radio button
previous_demo_state = proxy_user._get_demo_state()
self.env['ir.config_parameter'].set_param('account_edi_proxy_client.demo', config.l10n_it_edi_sdicoop_demo_mode)
if proxy_user:
# Delete any previously created demo proxy user
self.env['account_edi_proxy_client.user'].sudo().search([
('company_id', '=', company.id),
('proxy_type', '=', 'l10n_it_edi'),
('edi_mode', '=', 'demo'),
('id', '!=', proxy_user.id),
]).unlink()
# If the user is trying to change from a state in which they have a registered official or testing proxy client
# to another state, we should stop them
if real_proxy_users and previous_demo_state != config.l10n_it_edi_sdicoop_demo_mode:
raise UserError(_("The company has already registered with the service as 'Test' or 'Official', it cannot change."))
if config.l10n_it_edi_sdicoop_register:
# There should only be one user at a time, if there are no users, register one
if not proxy_user:
self._create_proxy_user(config.company_id)
return
# If there is a demo user, and we are transitioning from demo to test or production, we should
# delete all demo users and then create the new user.
elif proxy_user.id_client[:4] == 'demo' and config.l10n_it_edi_sdicoop_demo_mode != 'demo':
self.env['account_edi_proxy_client.user'].search([('id_client', '=like', 'demo%')]).sudo().unlink()
self._create_proxy_user(config.company_id)
@api.depends('company_id.account_edi_proxy_client_ids', 'company_id.account_edi_proxy_client_ids.active')
def _compute_use_root_proxy_user(self):
for record in self:
main_company = self.company_id.root_id
edi_company = self.company_id._l10n_it_get_edi_company()
record.use_root_proxy_user = edi_company == main_company and self.company_id != main_company

View file

@ -1,41 +1,143 @@
# -*- coding:utf-8 -*-
# Part of Odoo. See LICENSE file for full copyright and licensing details.
from stdnum.it import codicefiscale, iva
from odoo import api, fields, models, _
from odoo.exceptions import UserError
import re
class ResPartner(models.Model):
_name = 'res.partner'
_inherit = 'res.partner'
invoice_edi_format = fields.Selection(selection_add=[('it_edi_xml', 'Italy (Factura PA)')])
l10n_it_pec_email = fields.Char(string="PEC e-mail")
l10n_it_codice_fiscale = fields.Char(string="Codice Fiscale", size=16)
l10n_it_pa_index = fields.Char(string="Destination Code",
l10n_it_pa_index = fields.Char(
string="Destination Code (SDI)",
size=7,
help="Must contain the 6-character (or 7) code, present in the PA\
Index in the information relative to the electronic invoicing service,\
associated with the office which, within the addressee administration, deals\
with receiving (and processing) the invoice.")
help="Must contain the 6-character (or 7) code, present in the PA Index "
"in the information relative to the electronic invoicing service, "
"associated with the office which, within the addressee administration, deals "
"with receiving (and processing) the invoice.",
)
_sql_constraints = [
('l10n_it_codice_fiscale',
"CHECK(l10n_it_codice_fiscale IS NULL OR l10n_it_codice_fiscale = '' OR LENGTH(l10n_it_codice_fiscale) >= 11)",
"Codice fiscale must have between 11 and 16 characters."),
_l10n_it_codice_fiscale = models.Constraint(
"CHECK(l10n_it_codice_fiscale IS NULL OR l10n_it_codice_fiscale = '' OR LENGTH(l10n_it_codice_fiscale) >= 11)",
'Codice fiscale must have between 11 and 16 characters.',
)
_l10n_it_pa_index = models.Constraint(
"CHECK(l10n_it_pa_index IS NULL OR l10n_it_pa_index = '' OR LENGTH(l10n_it_pa_index) >= 6)",
'Destination Code (SDI) must have between 6 and 7 characters.',
)
('l10n_it_pa_index',
"CHECK(l10n_it_pa_index IS NULL OR l10n_it_pa_index = '' OR LENGTH(l10n_it_pa_index) >= 6)",
"Destination Code must have between 6 and 7 characters."),
]
def _l10n_it_edi_is_public_administration(self):
""" Returns True if the destination of the FatturaPA belongs to the Public Administration. """
self.ensure_one()
return self.country_id.code == 'IT' and len(self.l10n_it_pa_index or '') == 6
@api.model
def _l10n_it_normalize_codice_fiscale(self, codice):
if codice and re.match(r'^IT[0-9]{11}$', codice):
return codice[2:13]
return codice
def _l10n_it_edi_get_values(self):
""" Generates all partner values needed by l10n_it_edi XML export.
VAT number:
If there is a VAT number and the partner is not in EU, then we use the VAT number as is,
as an alphanumeric value identifying the counterparty, up to a maximum of
28 alphanumeric characters, on which the SdI does not perform validity checks.
If there is a VAT number and the partner is in EU, then remove the country prefix
If there is no VAT and the partner is not in EU, then the exported value is 'OO99999999999'
If there is no VAT and the partner is in EU, then the exported value is '0000000'
If there is no VAT and the partner is in Italy, the VAT is not set and Codice Fiscale will be relevant in the XML.
If there is no VAT and no Codice Fiscale, the invoice is not even exported, so this case is not handled.
Country:
First, try and deduct the country from the VAT number.
If not, take the country directly from the partner.
If there's a codice fiscale, the country is 'IT'.
PA Index:
If the partner is in Italy, then the l10n_it_pa_index is used, and '0000000' if missing.
If the partner is not in Italy, the default 'XXXXXXX' is used.
Codice Fiscale:
If the Tax Code is equal to the Italian VAT, it may mistakenly have the country prefix,
so we try and remove it if we can
Zip(code):
Non-italian countries are not mapped by the Tax Agency, so it's fixed at '00000'
"""
if not self or len(self) > 1:
return {}
europe = self.env.ref('base.europe', raise_if_not_found=False)
in_eu = not europe or not self.country_id or self.country_id in europe.country_ids
is_sm = self.country_id and self.country_id.code == "SM"
# VAT number and country code
normalized_vat = self.vat
normalized_country = self.country_code
if has_vat := self.vat not in [False, '/', 'NA']:
normalized_vat = self.vat.replace(' ', '')
if in_eu:
# If there is no country-code prefix, it's domestic to Italy
if normalized_vat[:2].isdecimal():
if not normalized_country:
normalized_country = 'IT'
# If the partner is from the EU, the country-code prefix of the VAT must be taken away
else:
if not normalized_country:
normalized_country = normalized_vat[:2].upper()
normalized_vat = normalized_vat[2:]
# If customer is from San Marino
elif is_sm:
normalized_vat = normalized_vat if normalized_vat[:2].isdecimal() else normalized_vat[2:]
# If it has a codice fiscale (and no country), it's an Italian partner
if not normalized_country and self.l10n_it_codice_fiscale:
normalized_country = 'IT'
elif not has_vat and self.country_id and self.country_id.code != 'IT':
if in_eu:
normalized_vat = '0000000'
else:
normalized_vat = 'OO99999999999'
if normalized_country == 'IT':
pa_index = (self.l10n_it_pa_index or '0000000').upper()
zipcode = self.zip
state_code = self.state_id and self.state_id.code
else:
# San Marino is externally integrated with the SdI.
# The country as a whole has a single fixed Destination Code.
# https://www.agenziaentrate.gov.it/portale/documents/20143/3788702/Modifiche+ProvvedimentonSanMarino+0248717-2021.pdf/429b5571-17b9-0cce-7f62-f79cf53086d7
pa_index = '2R4GTO8' if is_sm else 'XXXXXXX'
zipcode = '00000'
state_code = False
return {
'codice_fiscale': self._l10n_it_edi_normalized_codice_fiscale(),
'vat': normalized_vat,
'country_code': normalized_country,
'state_code': state_code,
'pa_index': pa_index,
'zip': zipcode,
'in_eu': in_eu,
'is_company': self.is_company,
'first_name': ' '.join(self.name.split()[:1]),
'last_name': ' '.join(self.name.split()[1:]),
}
def _l10n_it_edi_normalized_codice_fiscale(self, l10n_it_codice_fiscale=None):
""" Normalize the Italian Tax Code for export.
If the Tax Code is equal to the Italian VAT, it may mistakenly have the country prefix,
so we try and remove it if we can
"""
if l10n_it_codice_fiscale is None:
self.ensure_one()
l10n_it_codice_fiscale = self.l10n_it_codice_fiscale
if l10n_it_codice_fiscale:
if codicefiscale._code_re.match(l10n_it_codice_fiscale):
# Personal codice
return codicefiscale.compact(l10n_it_codice_fiscale)
# Company codice
return iva.compact(l10n_it_codice_fiscale)
@api.onchange('vat', 'country_id')
def _l10n_it_onchange_vat(self):
@ -44,7 +146,7 @@ class ResPartner(models.Model):
if self.country_code
else self.vat.startswith("IT")
):
self.l10n_it_codice_fiscale = self._l10n_it_normalize_codice_fiscale(self.vat)
self.l10n_it_codice_fiscale = self._l10n_it_edi_normalized_codice_fiscale(self.vat)
else:
self.l10n_it_codice_fiscale = False
@ -52,4 +154,70 @@ class ResPartner(models.Model):
def validate_codice_fiscale(self):
for record in self:
if record.l10n_it_codice_fiscale and (not codicefiscale.is_valid(record.l10n_it_codice_fiscale) and not iva.is_valid(record.l10n_it_codice_fiscale)):
raise UserError(_("Invalid Codice Fiscale '%s': should be like 'MRTMTT91D08F205J' for physical person and '12345670546' or 'IT12345670546' for businesses.", record.l10n_it_codice_fiscale))
raise UserError(_("Invalid Codice Fiscale '%s': should be like 'MRTMTT91D08F205J' for physical person and '12345670546' for businesses.", record.l10n_it_codice_fiscale))
def _l10n_it_edi_export_check(self, checks=None):
checks = checks or ['partner_vat_codice_fiscale_missing', 'partner_address_missing']
fields_to_check = {
'partner_vat_missing': {
'fields': [('vat',)],
'message': _("Partner(s) should have a VAT number."),
},
'partner_vat_codice_fiscale_missing': {
'fields': [('vat', 'l10n_it_codice_fiscale')],
'message': _("Partner(s) should have a VAT number or Codice Fiscale."),
},
'partner_country_missing': {
'fields': [('country_id',)],
'message': _("Partner(s) should have a Country when used for simplified invoices."),
},
'partner_address_missing': {
'fields': [('street', 'street2'), ('zip',), ('city',), ('country_id',)],
'message': _("Partner(s) should have a complete address, verify their Street, City, Zipcode and Country."),
},
}
selected_checks = {k: v for k, v in fields_to_check.items() if k in checks}
single_views = [(False, 'form')]
list_view = (self.env.ref('l10n_it_edi.res_partner_tree_l10n_it', raise_if_not_found=False))
multi_views = [(list_view.id if list_view else False, 'list'), (False, 'form')]
errors = {}
for key, check in selected_checks.items():
for fields_tuple in check['fields']:
if invalid_records := self.filtered(lambda record: not any(record[field] for field in fields_tuple)):
views = single_views if len(invalid_records) == 1 else multi_views
errors[f"l10n_it_edi_{key}"] = {
'message': check['message'],
'action_text': _("View Partner(s)"),
'action': invalid_records._get_records_action(name=_("Check Partner(s)"), views=views),
}
return errors
def _deduce_country_code(self):
if self.l10n_it_codice_fiscale:
return 'IT'
return super()._deduce_country_code()
def _peppol_eas_endpoint_depends(self):
# extends account_edi_ubl_cii
return super()._peppol_eas_endpoint_depends() + ['l10n_it_codice_fiscale']
def _get_frontend_writable_fields(self):
frontend_writable_fields = super()._get_frontend_writable_fields()
frontend_writable_fields.update({'l10n_it_codice_fiscale', 'l10n_it_pa_index'})
return frontend_writable_fields
def _get_suggested_invoice_edi_format(self):
# EXTENDS 'account'
res = super()._get_suggested_invoice_edi_format()
if self.country_code == 'IT':
return 'it_edi_xml'
else:
return res
def create_company(self):
res = super().create_company()
if res:
it_values = self._convert_fields_to_values(('l10n_it_codice_fiscale', 'l10n_it_pa_index'))
self.parent_id.update(it_values)
return res

View file

@ -1,2 +1,3 @@
"id","name","model_id:id","group_id:id","perm_read","perm_write","perm_create","perm_unlink"
"access_it_ddt_manager","it_ddt manager","model_l10n_it_ddt","account.group_account_invoice",1,1,1,1
"access_it_ddt_manager","it_ddt manager","model_l10n_it_ddt","account.group_account_invoice",1,1,1,1
"access_l10n_it_document_type","access_l10n_it_document_type","model_l10n_it_document_type","account.group_account_invoice",1,1,1,1

1 id name model_id:id group_id:id perm_read perm_write perm_create perm_unlink
2 access_it_ddt_manager it_ddt manager model_l10n_it_ddt account.group_account_invoice 1 1 1 1
3 access_l10n_it_document_type access_l10n_it_document_type model_l10n_it_document_type account.group_account_invoice 1 1 1 1

View file

@ -0,0 +1,30 @@
import { patch } from '@web/core/utils/patch';
import { patchDynamicContent } from '@web/public/utils';
import { CustomerAddress } from '@portal/interactions/address';
patch(CustomerAddress.prototype, {
setup() {
super.setup();
patchDynamicContent(this.dynamicContent, {
'input[name="vat"], select[name="country_id"]': {
't-on-change': this.computeCodiceFiscale.bind(this),
},
});
},
computeCodiceFiscale() {
const vat = this.el.querySelector('input[name="vat"]');
const countryValue = this.el.querySelector('select[name="country_id"]')
.selectedOptions[0]?.getAttribute('code');
const l10nItCodiceFiscaleInput = this.el.querySelector('input[name="l10n_it_codice_fiscale"]');
if (
l10nItCodiceFiscaleInput
&& vat
&& (vat.value.startsWith('IT') || countryValue === 'IT')
) {
l10nItCodiceFiscaleInput.value = /^IT[0-9]{11}$/.test(vat.value)
? vat.value.slice(2, 13) : vat.value;
}
},
});

View file

@ -0,0 +1,72 @@
import { registry } from "@web/core/registry";
registry.category("web_tour.tours").add("portal_compute_codice_fiscale", {
steps: () => [
{
content: "Check portal is loaded",
trigger: 'a[href*="/my/account"]:contains("Edit"):first',
run: "click",
expectUnloadPage: true,
},
{
content: "Load my account details",
trigger: 'input[value="IT User"]',
run: "click",
},
{
content: "Fill address form: phone",
trigger: `form.address_autoformat input[name="phone"]`,
run: "edit 99999999",
},
{
content: "Fill address form: email",
trigger: `form.address_autoformat input[name="email"]`,
run: "edit abc@odoo.com",
},
{
content: "Fill address form: vat",
trigger: `form.address_autoformat input[name="vat"]`,
run: "edit IT12345670017",
},
{
content: "Fill address form: street",
trigger: `form.address_autoformat input[name="street"]`,
run: "edit SO1 Billing Street, 33",
},
{
content: "Fill address form: city",
trigger: `form.address_autoformat input[name="city"]`,
run: "edit SO1BillingCity",
},
{
content: "Fill address form: zip",
trigger: `form.address_autoformat input[name="zip"]`,
run: "edit 10000",
},
{
id: "o_country_id",
content: "Select country with code 'IT' to trigger compute of Codice Fiscale",
trigger: 'select[name="country_id"]',
run: `selectByLabel Italy`,
},
{
content: "Check if the Codice Fiscale value matches",
trigger: "input[name='l10n_it_codice_fiscale']:value(12345670017)",
},
{
content: "Add state",
trigger: 'select[name="state_id"]',
run: "selectByIndex 2",
},
{
content: "Submit the form",
trigger: "button[id=save_address]",
run: "click",
expectUnloadPage: true,
},
{
content: "Check that we are back on the portal",
trigger: 'a[href*="/my/account"]:contains("Edit"):first',
},
],
});

View file

@ -1,7 +1,14 @@
# -*- coding: utf-8 -*-
# Part of Odoo. See LICENSE file for full copyright and licensing details.
from . import common
from . import test_account_move_document_type
from . import test_account_move_payment_method
from . import test_account_move_send
from . import test_edi_address
from . import test_edi_export
from . import test_edi_import
from . import test_edi_pa
from . import test_edi_reverse_charge
from . import test_it_document_type
from . import test_res_partner
from . import test_withholding

View file

@ -1,40 +1,68 @@
# -*- coding: utf-8 -*-
# Part of Odoo. See LICENSE file for full copyright and licensing details.
import base64
from lxml import etree
from unittest.mock import patch, MagicMock
from odoo import tools
from odoo.tests import tagged
from odoo.addons.account_edi.tests.common import AccountEdiTestCommon
from odoo.addons.account_edi_proxy_client.models.account_edi_proxy_user import AccountEdiProxyClientUser
from odoo.tools.misc import file_open
from odoo.addons.account.tests.common import AccountTestInvoicingCommon
@tagged('post_install_l10n', 'post_install', '-at_install')
class TestItEdi(AccountEdiTestCommon):
class TestItEdi(AccountTestInvoicingCommon):
class RepartitionLine:
def __init__(self, factor_percent, repartition_type, tag_ids):
self.factor_percent = factor_percent
self.repartition_type = repartition_type
self.tag_ids = tag_ids
@classmethod
def setUpClass(cls, chart_template_ref='l10n_it.l10n_it_chart_template_generic', edi_format_ref="l10n_it_edi.edi_fatturaPA"):
super().setUpClass(chart_template_ref=chart_template_ref, edi_format_ref=edi_format_ref)
def get_tag_ids(cls, tag_codes):
""" Helper function to define tag ids for taxes """
return cls.env['account.account.tag'].search([
('applicability', '=', 'taxes'),
('country_id.code', '=', 'IT'),
('name', 'in', tag_codes)]).ids
@classmethod
def repartition_lines(cls, *lines):
""" Helper function to define repartition lines in taxes """
return ([(5, 0, 0)] + [(0, 0, {
**line.__dict__,
'tag_ids': cls.get_tag_ids(line.tag_ids)
}) for line in lines])
@classmethod
@AccountTestInvoicingCommon.setup_country('it')
def setUpClass(cls):
super().setUpClass()
# Company data ------
cls.company_data_2 = cls.setup_other_company(
name='company_2_data',
vat='IT01234560157',
phone='0266766700',
email='test@test.it',
street="1234 Test Street",
zip="12345",
city="Prova",
l10n_it_codice_fiscale='01234560157',
l10n_it_tax_system="RF01",
)
cls.company = cls.company_data_2['company']
cls.company.l10n_it_codice_fiscale = '01234560157'
cls.company.partner_id.l10n_it_pa_index = "0803HR0"
cls.company.vat = 'IT01234560157'
cls.company.partner_id.write({
'l10n_it_pa_index': "0803HR0"
})
cls.test_bank = cls.env['res.partner.bank'].with_company(cls.company).create({
cls.test_bank = cls.env['res.partner.bank'].create({
'partner_id': cls.company.partner_id.id,
'acc_number': 'IT1212341234123412341234123',
'bank_name': 'BIG BANK',
'bank_bic': 'BIGGBANQ',
'allow_out_payment': True,
})
cls.company.l10n_it_tax_system = "RF01"
cls.company.street = "1234 Test Street"
cls.company.zip = "12345"
cls.company.city = "Prova"
cls.company.country_id = cls.env.ref('base.it')
# Partners
cls.italian_partner_a = cls.env['res.partner'].create({
'name': 'Alessi',
@ -44,8 +72,9 @@ class TestItEdi(AccountEdiTestCommon):
'street': 'Via Privata Alessi 6',
'zip': '28887',
'city': 'Milan',
'company_id': cls.company.id,
'company_id': False,
'is_company': True,
'invoice_edi_format': 'it_edi_xml',
})
cls.italian_partner_b = cls.env['res.partner'].create({
@ -57,7 +86,8 @@ class TestItEdi(AccountEdiTestCommon):
'street': 'Via Test PA',
'zip': '32121',
'city': 'PA Town',
'is_company': True
'is_company': True,
'invoice_edi_format': 'it_edi_xml',
})
cls.italian_partner_no_address_codice = cls.env['res.partner'].create({
@ -80,45 +110,79 @@ class TestItEdi(AccountEdiTestCommon):
})
# We create this because we are unable to post without a proxy user existing
cls.private_key_id = cls.env['certificate.key'].create({
'name': 'IT test key',
'content': base64.b64encode(file_open('l10n_it_edi/data/pkey.key', 'rb').read()),
})
cls.proxy_user = cls.env['account_edi_proxy_client.user'].create({
'proxy_type': 'l10n_it_edi',
'id_client': 'l10n_it_edi_test',
'company_id': cls.company.id,
'edi_format_id': cls.edi_format.id,
'edi_identification': 'l10n_it_edi_test',
'private_key': 'l10n_it_edi_test',
'private_key_id': cls.private_key_id.id,
})
cls.standard_line = {
'name': 'standard_line',
'quantity': 1,
'price_unit': 800.40,
'tax_ids': [(6, 0, [cls.company.account_sale_tax_id.id])]
}
cls.default_tax = cls.env['account.tax'].with_company(cls.company).create({
'name': "22% default",
'amount': 22.0,
'amount_type': 'percent',
})
cls.edi_basis_xml = cls._get_test_file_content('IT00470550013_basis.xml')
cls.edi_simplified_basis_xml = cls._get_test_file_content('IT00470550013_simpl.xml')
cls.module = 'l10n_it_edi'
@classmethod
def _get_test_file_content(cls, filename):
""" Get the content of a test file inside this module """
path = 'l10n_it_edi/tests/expected_xmls/' + filename
with tools.file_open(path, mode='rb') as test_file:
return test_file.read()
def _assert_export_invoice(self, invoice, filename):
path = f'{self.module}/tests/export_xmls/{filename}'
with tools.file_open(path, mode='rb') as fd:
expected_tree = etree.fromstring(fd.read())
xml = invoice._l10n_it_edi_render_xml()
invoice_etree = etree.fromstring(xml)
try:
self.assertXmlTreeEqual(invoice_etree, expected_tree)
except AssertionError as ae:
ae.args = (ae.args[0] + f"\nFile used for comparison: {filename}", )
raise
def _cleanup_etree(self, content, xpaths=None):
xpaths = {
**(xpaths or {}),
'//FatturaElettronicaBody/Allegati': 'Allegati',
'//DatiTrasmissione/ProgressivoInvio': 'ProgressivoInvio',
}
return self.with_applied_xpath(
etree.fromstring(content),
"".join([f"<xpath expr='{x}' position='replace'>{y}</xpath>" for x, y in xpaths.items()])
)
def _assert_import_invoice(self, filename, expected_values_list, xml_to_apply=None, move_type="in_invoice"):
""" Tests an invoice imported from an XML vendor bill file on the filesystem
against expected values. XPATHs can be applied with the `xml_to_apply`
argument to the XML content before it's imported.
"""
path = f'{self.module}/tests/import_xmls/{filename}'
with tools.file_open(path, mode='rb') as fd:
import_content = fd.read()
def _test_invoice_with_sample_file(self, invoice, filename, xpaths_file=None, xpaths_result=None):
invoice_xml = self.edi_format._l10n_it_edi_export_invoice_as_xml(invoice)
expected_xml = self._get_test_file_content(filename)
result = self._cleanup_etree(invoice_xml, xpaths_result)
expected = self._cleanup_etree(expected_xml, xpaths_file)
self.assertXmlTreeEqual(result, expected)
if xml_to_apply:
tree = self.with_applied_xpath(
etree.fromstring(import_content),
xml_to_apply
)
import_content = etree.tostring(tree)
attachment = self.env['ir.attachment'].create({
'name': filename,
'raw': import_content,
})
journal_type = {
'in_invoice': 'default_journal_purchase',
'out_invoice': 'default_journal_sale',
}[move_type]
purchase_journal = self.company_data_2[journal_type].with_context(default_move_type=move_type)
invoices = purchase_journal._create_document_from_attachment(attachment.ids)
expected_invoice_values_list = []
expected_invoice_line_ids_values_list = []
for expected_values in expected_values_list:
invoice_values = dict(expected_values)
if 'invoice_line_ids' in invoice_values:
expected_invoice_line_ids_values_list += invoice_values.pop('invoice_line_ids')
expected_invoice_values_list.append(invoice_values)
try:
self.assertRecordValues(invoices, expected_invoice_values_list)
if expected_invoice_line_ids_values_list:
self.assertRecordValues(invoices.invoice_line_ids, expected_invoice_line_ids_values_list)
except AssertionError as ae:
ae.args = (ae.args[0] + f"\nFile used for comparison: {filename}", )
raise
return invoices

View file

@ -1,42 +0,0 @@
<p:FatturaElettronicaSemplificata xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:ds="http://www.w3.org/2000/09/xmldsig#" xmlns:p="http://ivaservizi.agenziaentrate.gov.it/docs/xsd/fatture/v1.0" xsi:schemaLocation="http://ivaservizi.agenziaentrate.gov.it/docs/xsd/fatture/v1.0 http://www.fatturapa.gov.it/export/fatturazione/sdi/fatturapa/v1.0/Schema_del_file_xml_FatturaPA_versione_1.0.xsd" versione="FSM10">
<FatturaElettronicaHeader>
<DatiTrasmissione>
<IdTrasmittente>
<IdPaese>IT</IdPaese>
<IdCodice>01234560157</IdCodice>
</IdTrasmittente>
<ProgressivoInvio>___ignore___</ProgressivoInvio>
<FormatoTrasmissione>FSM10</FormatoTrasmissione>
<CodiceDestinatario>0000000</CodiceDestinatario>
</DatiTrasmissione>
<CedentePrestatore>
<IdFiscaleIVA>
<IdPaese>IT</IdPaese>
<IdCodice>01234560157</IdCodice>
</IdFiscaleIVA>
<CodiceFiscale>01234560157</CodiceFiscale>
<Denominazione>company_2_data</Denominazione>
<Sede>
<Indirizzo>1234 Test Street </Indirizzo>
<CAP>12345</CAP>
<Comune>Prova</Comune>
<Nazione>IT</Nazione>
</Sede>
<RegimeFiscale>RF01</RegimeFiscale>
</CedentePrestatore>
<CessionarioCommittente>
</CessionarioCommittente>
</FatturaElettronicaHeader>
<FatturaElettronicaBody>
<DatiGenerali>
<DatiGeneraliDocumento>
<TipoDocumento>TD07</TipoDocumento>
<Divisa>EUR</Divisa>
<Data>2022-03-24</Data>
<Numero>___ignore___</Numero>
</DatiGeneraliDocumento>
</DatiGenerali>
<DatiBeniServizi>
</DatiBeniServizi>
</FatturaElettronicaBody>
</p:FatturaElettronicaSemplificata>

View file

@ -1,113 +0,0 @@
<?xml version="1.0" encoding="UTF-8"?>
<p:FatturaElettronica versione="FPR12" 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">
<FatturaElettronicaHeader>
<DatiTrasmissione>
<IdTrasmittente>
<IdPaese>IT</IdPaese>
<IdCodice>01234560157</IdCodice>
</IdTrasmittente>
<ProgressivoInvio>00001</ProgressivoInvio>
<FormatoTrasmissione>FPR12</FormatoTrasmissione>
<CodiceDestinatario>ABC1234</CodiceDestinatario>
<ContattiTrasmittente/>
</DatiTrasmissione>
<CedentePrestatore>
<DatiAnagrafici>
<IdFiscaleIVA>
<IdPaese>IT</IdPaese>
<IdCodice>01234560157</IdCodice>
</IdFiscaleIVA>
<Anagrafica>
<Denominazione>SOCIETA' ALPHA SRL</Denominazione>
</Anagrafica>
<RegimeFiscale>RF19</RegimeFiscale>
</DatiAnagrafici>
<Sede>
<Indirizzo>VIALE ROMA 543</Indirizzo>
<CAP>07100</CAP>
<Comune>SASSARI</Comune>
<Provincia>SS</Provincia>
<Nazione>IT</Nazione>
</Sede>
</CedentePrestatore>
<CessionarioCommittente>
<DatiAnagrafici>
<CodiceFiscale>01234560157</CodiceFiscale>
<Anagrafica>
<Denominazione>DITTA BETA</Denominazione>
</Anagrafica>
</DatiAnagrafici>
<Sede>
<Indirizzo>VIA TORINO 38-B</Indirizzo>
<CAP>00145</CAP>
<Comune>ROMA</Comune>
<Provincia>RM</Provincia>
<Nazione>IT</Nazione>
</Sede>
</CessionarioCommittente>
</FatturaElettronicaHeader>
<FatturaElettronicaBody>
<DatiGenerali>
<DatiGeneraliDocumento>
<TipoDocumento>TD01</TipoDocumento>
<Divisa>EUR</Divisa>
<Data>2014-12-18</Data>
<Numero>01234567890</Numero>
<Causale>LA FATTURA FA RIFERIMENTO AD UNA OPERAZIONE AAAA BBBBBBBBBBBBBBBBBB CCC DDDDDDDDDDDDDDD E FFFFFFFFFFFFFFFFFFFF GGGGGGGGGG HHHHHHH II LLLLLLLLLLLLLLLLL MMM NNNNN OO PPPPPPPPPPP QQQQ RRRR SSSSSSSSSSSSSS</Causale>
<Causale>SEGUE DESCRIZIONE CAUSALE NEL CASO IN CUI NON SIANO STATI SUFFICIENTI 200 CARATTERI AAAAAAAAAAA BBBBBBBBBBBBBBBBB</Causale>
</DatiGeneraliDocumento>
<DatiOrdineAcquisto>
<RiferimentoNumeroLinea>1</RiferimentoNumeroLinea>
<IdDocumento>66685</IdDocumento>
<NumItem>1</NumItem>
</DatiOrdineAcquisto>
<DatiContratto>
<RiferimentoNumeroLinea>1</RiferimentoNumeroLinea>
<IdDocumento>01234567890</IdDocumento>
<Data>2012-09-01</Data>
<NumItem>5</NumItem>
<CodiceCUP>01234567890abc</CodiceCUP>
<CodiceCIG>456def</CodiceCIG>
</DatiContratto>
<DatiTrasporto>
<DatiAnagraficiVettore>
<IdFiscaleIVA>
<IdPaese>IT</IdPaese>
<IdCodice>24681012141</IdCodice>
</IdFiscaleIVA>
<Anagrafica>
<Denominazione>Trasporto spa</Denominazione>
</Anagrafica>
</DatiAnagraficiVettore>
<DataOraConsegna>2012-10-22T16:46:12.000+02:00</DataOraConsegna>
</DatiTrasporto>
</DatiGenerali>
<DatiBeniServizi>
<DettaglioLinee>
<NumeroLinea>1</NumeroLinea>
<Descrizione>DESCRIZIONE DELLA FORNITURA</Descrizione>
<Quantita>5.00</Quantita>
<PrezzoUnitario>1.00</PrezzoUnitario>
<PrezzoTotale>5.00</PrezzoTotale>
<AliquotaIVA>22.00</AliquotaIVA>
</DettaglioLinee>
<DatiRiepilogo>
<AliquotaIVA>22.00</AliquotaIVA>
<ImponibileImporto>5.00</ImponibileImporto>
<Imposta>1.10</Imposta>
<EsigibilitaIVA>I</EsigibilitaIVA>
</DatiRiepilogo>
</DatiBeniServizi>
<DatiPagamento>
<CondizioniPagamento>TP01</CondizioniPagamento>
<DettaglioPagamento>
<ModalitaPagamento>MP01</ModalitaPagamento>
<DataScadenzaPagamento>2015-01-30</DataScadenzaPagamento>
<ImportoPagamento>6.10</ImportoPagamento>
</DettaglioPagamento>
</DatiPagamento>
</FatturaElettronicaBody>
</p:FatturaElettronica>

View file

@ -1,71 +0,0 @@
<?xml version="1.0" encoding="UTF-8"?><?xml-stylesheet type="text/xsl" href="DT_v1.0.xsl"?>
<types:NotificaDecorrenzaTermini xmlns:types="http://www.fatturapa.gov.it/sdi/messaggi/v1.0" xmlns:ds="http://www.w3.org/2000/09/xmldsig#" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" IntermediarioConDupliceRuolo="Si" versione="1.0" xsi:schemaLocation="http://www.fatturapa.gov.it/sdi/messaggi/v1.0 MessaggiTypes_v1.0.xsd http://www.w3.org/2000/09/xmldsig# xmldsig-core-schema.xsd">
<IdentificativoSdI>111</IdentificativoSdI>
<NomeFile>IT01234567890_FPR01.xml</NomeFile>
<Descrizione>Notifica di esempio</Descrizione>
<MessageId>123456</MessageId>
<Note>Esempio</Note>
<ds:Signature xmlns:ds="http://www.w3.org/2000/09/xmldsig#" Id="Signature1">
<ds:SignedInfo>
<ds:CanonicalizationMethod Algorithm="http://www.w3.org/2001/10/xml-exc-c14n#"/>
<ds:SignatureMethod Algorithm="http://www.w3.org/2001/04/xmldsig-more#rsa-sha256"/>
<ds:Reference Id="reference-document" URI="">
<ds:Transforms>
<ds:Transform Algorithm="http://www.w3.org/2002/06/xmldsig-filter2">
<XPath xmlns="http://www.w3.org/2002/06/xmldsig-filter2" Filter="subtract">/descendant::ds:Signature</XPath>
</ds:Transform>
</ds:Transforms>
<ds:DigestMethod Algorithm="http://www.w3.org/2001/04/xmlenc#sha256"/>
<ds:DigestValue>g6h8KnGd+Y4DCdnGk5oIUbBwjJB3MMGlyizaFyCqH7I=</ds:DigestValue>
</ds:Reference>
<ds:Reference Id="reference-signedpropeties" Type="http://uri.etsi.org/01903#SignedProperties" URI="#SignedProperties_1">
<ds:DigestMethod Algorithm="http://www.w3.org/2001/04/xmlenc#sha256"/>
<ds:DigestValue>LkOlfB97QK/evb7mYg+KkxW3BSiZre63y3Qeh/rV28E=</ds:DigestValue>
</ds:Reference>
<ds:Reference Id="reference-keyinfo" URI="#KeyInfoId">
<ds:DigestMethod Algorithm="http://www.w3.org/2001/04/xmlenc#sha256"/>
<ds:DigestValue>BaZyFTXyxM8aIJhtiemem1lEwKR75ksXb33lsMqD89w=</ds:DigestValue>
</ds:Reference>
</ds:SignedInfo>
<ds:SignatureValue Id="SignatureValue1">
Z8/Kt/ZF/syaHxYr6/qoTz+nTJe3IV1m9Hj3WPOl1CZ/p5intUORW0IinpMum4rvPkLYpKPVbi39
WCJujEqVOVFw5xezZlwmrRghmUeyTyKazK7mKEEMXCad+FGCZj2Gz1nkqi5aNyNX/lN7m9Ix7rZ8
br3Fi3bi3nNMdyUmwog=
</ds:SignatureValue>
<ds:KeyInfo Id="KeyInfoId">
<ds:X509Data>
<ds:X509Certificate>
MIIEYDCCA0igAwIBAgIDEIgbMA0GCSqGSIb3DQEBBQUAMG0xCzAJBgNVBAYTAklUMR4wHAYDVQQK
ExVBZ2VuemlhIGRlbGxlIEVudHJhdGUxGzAZBgNVBAsTElNlcnZpemkgVGVsZW1hdGljaTEhMB8G
A1UEAxMYQ0EgQWdlbnppYSBkZWxsZSBFbnRyYXRlMB4XDTExMDcwNDEzMTkyNFoXDTE0MDcwNDEz
MTkyM1owdDELMAkGA1UEBhMCSVQxHjAcBgNVBAoTFUFnZW56aWEgZGVsbGUgRW50cmF0ZTEbMBkG
A1UECxMSU2Vydml6aSBUZWxlbWF0aWNpMSgwJgYDVQQDEx9TaXN0ZW1hIEludGVyc2NhbWJpbyBG
YXR0dXJhIFBBMIGfMA0GCSqGSIb3DQEBAQUAA4GNADCBiQKBgQDMxOQj1dj6xgQBwB/S5naHvVqP
FL25Y3GnAulrcaeO8ZFFK5fWKPgiBwfyJ7qdlzn/RF7y+w92XLgh9zROmNlIjsJcp3rRwsAiKjuW
CkqwVXE0/Qtvxpo2Eovk1SV4+rf+7WKSHtabjmWXbM2FVccyN2AOvfR4WAdpr4hHkoEIiwIDAQAB
o4IBhDCCAYAwDgYDVR0PAQH/BAQDAgZAMIGZBgNVHSMEgZEwgY6AFOpEPx8Z4zc+q6qUgqWf6/wW
un+1oXGkbzBtMQswCQYDVQQGEwJJVDEeMBwGA1UEChMVQWdlbnppYSBkZWxsZSBFbnRyYXRlMRsw
GQYDVQQLExJTZXJ2aXppIFRlbGVtYXRpY2kxITAfBgNVBAMTGENBIEFnZW56aWEgZGVsbGUgRW50
cmF0ZYIDEGJwMIGyBgNVHR8EgaowgacwgaSggaGggZ6GgZtsZGFwOi8vY2Fkcy5lbnRyYXRlLmZp
bmFuemUuaXQvY24lM2RDQSUyMEFnZW56aWElMjBkZWxsZSUyMEVudHJhdGUsb3UlM2RTZXJ2aXpp
JTIwVGVsZW1hdGljaSxvJTNkQWdlbnppYSUyMGRlbGxlJTIwRW50cmF0ZSxjJTNkaXQ/Y2VydGlm
aWNhdGVSZXZvY2F0aW9uTGlzdDAdBgNVHQ4EFgQUn+JY07NI6xlrCUXERiHoFFN66dkwDQYJKoZI
hvcNAQEFBQADggEBALZ0po2uLhLyZ8uiVfQUCAQd8s5o8ZJw2mcgZc/iaoNmDfcslZnTLWeuT6Gr
UFgG0uc1rY0UwWx/R1UOyc0ZesRo7Z6+kFmVubT1tbjLMuLjjUIyt4zWeNjf4PwNS0+s6Y6eC8tx
fOJmQNGQIbujWhAejoIteG01ciGeeII6AMnGK8KvbCA0UZmWl3Bou49zWajiEjtHFGkq/WNfDwRa
Fd4UWjR+UWS3rLahV7iOfh/+Yy7h1F0RzQuPJk7TCm7iHyc9QtgwxHHCmknRyNXMv6DeTOfK8ciq
uFWd6DasmblXLUm+uqhsWVRIkj2Bz63bpjuJU+8ptRfxHrVnzyCr9M4=
</ds:X509Certificate>
</ds:X509Data>
</ds:KeyInfo>
<ds:Object>
<xades:QualifyingProperties xmlns:xades="http://uri.etsi.org/01903/v1.3.2#" Target="#Signature1">
<xades:SignedProperties Id="SignedProperties_1">
<xades:SignedSignatureProperties>
<xades:SigningTime>2014-06-05T14:27:51Z</xades:SigningTime>
</xades:SignedSignatureProperties>
</xades:SignedProperties>
</xades:QualifyingProperties>
</ds:Object>
</ds:Signature>
</types:NotificaDecorrenzaTermini>

View file

@ -1,72 +0,0 @@
<?xml version="1.0" encoding="UTF-8"?><?xml-stylesheet type="text/xsl" href="RC_v1.0.xsl"?>
<types:RicevutaConsegna xmlns:types="http://www.fatturapa.gov.it/sdi/messaggi/v1.0" xmlns:ds="http://www.w3.org/2000/09/xmldsig#" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" IntermediarioConDupliceRuolo="Si" versione="1.0" xsi:schemaLocation="http://www.fatturapa.gov.it/sdi/messaggi/v1.0 MessaggiTypes_v1.0.xsd ">
<IdentificativoSdI>111</IdentificativoSdI>
<NomeFile>IT01234567890_FPR01.xml</NomeFile>
<DataOraRicezione>2013-06-06T12:00:00Z</DataOraRicezione>
<DataOraConsegna>2013-06-06T12:01:00Z</DataOraConsegna>
<Destinatario>
<Codice>AAA111</Codice>
<Descrizione>Amministrazione di prova</Descrizione>
</Destinatario>
<MessageId>123456</MessageId>
<Note>Esempio</Note>
<ds:Signature xmlns:ds="http://www.w3.org/2000/09/xmldsig#" Id="Signature1">
<ds:SignedInfo>
<ds:CanonicalizationMethod Algorithm="http://www.w3.org/2001/10/xml-exc-c14n#"/>
<ds:SignatureMethod Algorithm="http://www.w3.org/2001/04/xmldsig-more#rsa-sha256"/>
<ds:Reference Id="reference-document" URI="">
<ds:Transforms>
<ds:Transform Algorithm="http://www.w3.org/2002/06/xmldsig-filter2">
<XPath xmlns="http://www.w3.org/2002/06/xmldsig-filter2" Filter="subtract">/descendant::ds:Signature</XPath>
</ds:Transform>
</ds:Transforms>
<ds:DigestMethod Algorithm="http://www.w3.org/2001/04/xmlenc#sha256"/>
<ds:DigestValue>c+5ntDV6t4+PxIKEU6rbCUGu3ne9RMxoADu4yK4XIak=</ds:DigestValue>
</ds:Reference>
<ds:Reference Id="reference-signedpropeties" Type="http://uri.etsi.org/01903#SignedProperties" URI="#SignedProperties_1">
<ds:DigestMethod Algorithm="http://www.w3.org/2001/04/xmlenc#sha256"/>
<ds:DigestValue>AhiGZ+LPENybg4dQwMwjg0Nxdxzu+3M5i0w+UI6X89E=</ds:DigestValue>
</ds:Reference>
<ds:Reference Id="reference-keyinfo" URI="#KeyInfoId">
<ds:DigestMethod Algorithm="http://www.w3.org/2001/04/xmlenc#sha256"/>
<ds:DigestValue>BaZyFTXyxM8aIJhtiemem1lEwKR75ksXb33lsMqD89w=</ds:DigestValue>
</ds:Reference>
</ds:SignedInfo>
<ds:SignatureValue Id="SignatureValue1">G0FOBC+E8JKtJ5K2C+LBlvv3oarzkub7w2q5U1UQZnobWmFBbZ4WzgBNTMKUjdi2ZLkUpOSEwedf
VLgl5SyhaKYY6TizDNbxededjUpqKhyIgaWBLc/iDI6H//x+3axnLU4WwFzdr3AwqPQjPuugGX07
gOcjBHtbr7ie2Wr//o8=</ds:SignatureValue>
<ds:KeyInfo Id="KeyInfoId">
<ds:X509Data>
<ds:X509Certificate>MIIEYDCCA0igAwIBAgIDEIgbMA0GCSqGSIb3DQEBBQUAMG0xCzAJBgNVBAYTAklUMR4wHAYDVQQK
ExVBZ2VuemlhIGRlbGxlIEVudHJhdGUxGzAZBgNVBAsTElNlcnZpemkgVGVsZW1hdGljaTEhMB8G
A1UEAxMYQ0EgQWdlbnppYSBkZWxsZSBFbnRyYXRlMB4XDTExMDcwNDEzMTkyNFoXDTE0MDcwNDEz
MTkyM1owdDELMAkGA1UEBhMCSVQxHjAcBgNVBAoTFUFnZW56aWEgZGVsbGUgRW50cmF0ZTEbMBkG
A1UECxMSU2Vydml6aSBUZWxlbWF0aWNpMSgwJgYDVQQDEx9TaXN0ZW1hIEludGVyc2NhbWJpbyBG
YXR0dXJhIFBBMIGfMA0GCSqGSIb3DQEBAQUAA4GNADCBiQKBgQDMxOQj1dj6xgQBwB/S5naHvVqP
FL25Y3GnAulrcaeO8ZFFK5fWKPgiBwfyJ7qdlzn/RF7y+w92XLgh9zROmNlIjsJcp3rRwsAiKjuW
CkqwVXE0/Qtvxpo2Eovk1SV4+rf+7WKSHtabjmWXbM2FVccyN2AOvfR4WAdpr4hHkoEIiwIDAQAB
o4IBhDCCAYAwDgYDVR0PAQH/BAQDAgZAMIGZBgNVHSMEgZEwgY6AFOpEPx8Z4zc+q6qUgqWf6/wW
un+1oXGkbzBtMQswCQYDVQQGEwJJVDEeMBwGA1UEChMVQWdlbnppYSBkZWxsZSBFbnRyYXRlMRsw
GQYDVQQLExJTZXJ2aXppIFRlbGVtYXRpY2kxITAfBgNVBAMTGENBIEFnZW56aWEgZGVsbGUgRW50
cmF0ZYIDEGJwMIGyBgNVHR8EgaowgacwgaSggaGggZ6GgZtsZGFwOi8vY2Fkcy5lbnRyYXRlLmZp
bmFuemUuaXQvY24lM2RDQSUyMEFnZW56aWElMjBkZWxsZSUyMEVudHJhdGUsb3UlM2RTZXJ2aXpp
JTIwVGVsZW1hdGljaSxvJTNkQWdlbnppYSUyMGRlbGxlJTIwRW50cmF0ZSxjJTNkaXQ/Y2VydGlm
aWNhdGVSZXZvY2F0aW9uTGlzdDAdBgNVHQ4EFgQUn+JY07NI6xlrCUXERiHoFFN66dkwDQYJKoZI
hvcNAQEFBQADggEBALZ0po2uLhLyZ8uiVfQUCAQd8s5o8ZJw2mcgZc/iaoNmDfcslZnTLWeuT6Gr
UFgG0uc1rY0UwWx/R1UOyc0ZesRo7Z6+kFmVubT1tbjLMuLjjUIyt4zWeNjf4PwNS0+s6Y6eC8tx
fOJmQNGQIbujWhAejoIteG01ciGeeII6AMnGK8KvbCA0UZmWl3Bou49zWajiEjtHFGkq/WNfDwRa
Fd4UWjR+UWS3rLahV7iOfh/+Yy7h1F0RzQuPJk7TCm7iHyc9QtgwxHHCmknRyNXMv6DeTOfK8ciq
uFWd6DasmblXLUm+uqhsWVRIkj2Bz63bpjuJU+8ptRfxHrVnzyCr9M4=</ds:X509Certificate>
</ds:X509Data>
</ds:KeyInfo>
<ds:Object>
<xades:QualifyingProperties xmlns:xades="http://uri.etsi.org/01903/v1.3.2#" Target="#Signature1">
<xades:SignedProperties Id="SignedProperties_1">
<xades:SignedSignatureProperties>
<xades:SigningTime>2014-06-05T14:24:28Z</xades:SigningTime>
</xades:SignedSignatureProperties>
</xades:SignedProperties>
</xades:QualifyingProperties>
</ds:Object>
</ds:Signature>
</types:RicevutaConsegna>

View file

@ -0,0 +1,94 @@
<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>2022040001</ProgressivoInvio>
<FormatoTrasmissione>FPR12</FormatoTrasmissione>
<CodiceDestinatario>0803HR0</CodiceDestinatario>
<ContattiTrasmittente>
<Telefono>0266766700</Telefono>
<Email>test@test.it</Email>
</ContattiTrasmittente>
</DatiTrasmissione>
<CedentePrestatore>
<DatiAnagrafici>
<IdFiscaleIVA>
<IdPaese>FR</IdPaese>
<IdCodice>15437982937</IdCodice>
</IdFiscaleIVA>
<Anagrafica>
<Denominazione>Alessi</Denominazione>
</Anagrafica>
<RegimeFiscale>RF18</RegimeFiscale>
</DatiAnagrafici>
<Sede>
<Indirizzo>Avenue Test rue</Indirizzo>
<CAP>00000</CAP>
<Comune>Avignon</Comune>
<Nazione>FR</Nazione>
</Sede>
</CedentePrestatore>
<CessionarioCommittente>
<DatiAnagrafici>
<IdFiscaleIVA>
<IdPaese>IT</IdPaese>
<IdCodice>01234560157</IdCodice>
</IdFiscaleIVA>
<CodiceFiscale>01234560157</CodiceFiscale>
<Anagrafica>
<Denominazione>company_2_data</Denominazione>
</Anagrafica>
</DatiAnagrafici>
<Sede>
<Indirizzo>1234 Test Street</Indirizzo>
<CAP>12345</CAP>
<Comune>Prova</Comune>
<Nazione>IT</Nazione>
</Sede>
</CessionarioCommittente>
</FatturaElettronicaHeader>
<FatturaElettronicaBody>
<DatiGenerali>
<DatiGeneraliDocumento>
<TipoDocumento>TD18</TipoDocumento>
<Divisa>EUR</Divisa>
<Data>2022-04-01</Data>
<Numero>BILL/2022/04/0001</Numero>
<ImportoTotaleDocumento>832.42</ImportoTotaleDocumento>
</DatiGeneraliDocumento>
</DatiGenerali>
<DatiBeniServizi>
<DettaglioLinee>
<NumeroLinea>1</NumeroLinea>
<Descrizione>
Product B, taxed 4%
</Descrizione>
<Quantita>1.00</Quantita>
<PrezzoUnitario>800.40000000</PrezzoUnitario>
<PrezzoTotale>800.40000000</PrezzoTotale>
<AliquotaIVA>4.00</AliquotaIVA>
</DettaglioLinee>
<DatiRiepilogo>
<AliquotaIVA>4.00</AliquotaIVA>
<ImponibileImporto>800.40</ImponibileImporto>
<Imposta>32.02</Imposta>
<EsigibilitaIVA>I</EsigibilitaIVA>
</DatiRiepilogo>
</DatiBeniServizi>
<DatiPagamento>
<CondizioniPagamento>TP02</CondizioniPagamento>
<DettaglioPagamento>
<ModalitaPagamento>MP05</ModalitaPagamento>
<DataScadenzaPagamento>2022-03-24</DataScadenzaPagamento>
<ImportoPagamento>800.40</ImportoPagamento>
</DettaglioPagamento>
</DatiPagamento>
</FatturaElettronicaBody>
</p:FatturaElettronica>

View file

@ -1,14 +1,20 @@
<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">
<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>
<ProgressivoInvio>2022030001</ProgressivoInvio>
<ProgressivoInvio>2022040001</ProgressivoInvio>
<FormatoTrasmissione>FPR12</FormatoTrasmissione>
<CodiceDestinatario>0803HR0</CodiceDestinatario>
<ContattiTrasmittente>
<Telefono>0266766700</Telefono>
<Email>test@test.it</Email>
</ContattiTrasmittente>
</DatiTrasmissione>
<CedentePrestatore>
@ -51,7 +57,7 @@
<FatturaElettronicaBody>
<DatiGenerali>
<DatiGeneraliDocumento>
<TipoDocumento>TD18</TipoDocumento>
<TipoDocumento>TD19</TipoDocumento>
<Divisa>EUR</Divisa>
<Data>2022-04-01</Data>
<Numero>BILL/2022/04/0001</Numero>
@ -59,47 +65,42 @@
</DatiGeneraliDocumento>
</DatiGenerali>
<DatiBeniServizi>
<DettaglioLinee>
<NumeroLinea>1</NumeroLinea>
<Descrizione>
Product A
</Descrizione>
<Quantita>1.00</Quantita>
<PrezzoUnitario>800.400000</PrezzoUnitario>
<PrezzoTotale>800.40</PrezzoTotale>
<AliquotaIVA>22.00</AliquotaIVA>
</DettaglioLinee>
<DettaglioLinee>
<NumeroLinea>2</NumeroLinea>
<Descrizione>
Product B, taxed 4%
</Descrizione>
<Quantita>1.00</Quantita>
<PrezzoUnitario>800.400000</PrezzoUnitario>
<PrezzoTotale>800.40</PrezzoTotale>
<AliquotaIVA>4.00</AliquotaIVA>
</DettaglioLinee>
<DatiRiepilogo>
<AliquotaIVA>22.00</AliquotaIVA>
<ImponibileImporto>800.40</ImponibileImporto>
<Imposta>176.09</Imposta>
<EsigibilitaIVA>I</EsigibilitaIVA>
</DatiRiepilogo>
<DatiRiepilogo>
<AliquotaIVA>4.00</AliquotaIVA>
<ImponibileImporto>800.40</ImponibileImporto>
<Imposta>32.02</Imposta>
<EsigibilitaIVA>I</EsigibilitaIVA>
</DatiRiepilogo>
<DettaglioLinee>
<NumeroLinea>1</NumeroLinea>
<Descrizione>Product A</Descrizione>
<Quantita>1.00</Quantita>
<PrezzoUnitario>800.40000000</PrezzoUnitario>
<PrezzoTotale>800.40000000</PrezzoTotale>
<AliquotaIVA>22.00</AliquotaIVA>
</DettaglioLinee>
<DettaglioLinee>
<NumeroLinea>2</NumeroLinea>
<Descrizione>Product B, taxed 4% Already in Italy</Descrizione>
<Quantita>1.00</Quantita>
<PrezzoUnitario>800.40000000</PrezzoUnitario>
<PrezzoTotale>800.40000000</PrezzoTotale>
<AliquotaIVA>4.00</AliquotaIVA>
</DettaglioLinee>
<DatiRiepilogo>
<AliquotaIVA>22.00</AliquotaIVA>
<ImponibileImporto>800.40</ImponibileImporto>
<Imposta>176.09</Imposta>
<EsigibilitaIVA>I</EsigibilitaIVA>
</DatiRiepilogo>
<DatiRiepilogo>
<AliquotaIVA>4.00</AliquotaIVA>
<ImponibileImporto>800.40</ImponibileImporto>
<Imposta>32.02</Imposta>
<EsigibilitaIVA>I</EsigibilitaIVA>
</DatiRiepilogo>
</DatiBeniServizi>
<DatiPagamento>
<CondizioniPagamento>TP02</CondizioniPagamento>
<DettaglioPagamento>
<ModalitaPagamento>MP05</ModalitaPagamento>
<DataScadenzaPagamento>2022-03-24</DataScadenzaPagamento>
<ImportoPagamento>1600.80</ImportoPagamento>
</DettaglioPagamento>
<DettaglioPagamento>
<ModalitaPagamento>MP05</ModalitaPagamento>
<DataScadenzaPagamento>2022-03-24</DataScadenzaPagamento>
<ImportoPagamento>1600.80</ImportoPagamento>
</DettaglioPagamento>
</DatiPagamento>
<Allegati></Allegati>
</FatturaElettronicaBody>
</p:FatturaElettronica>

View file

@ -0,0 +1,106 @@
<p:FatturaElettronica xmlns:p="http://ivaservizi.agenziaentrate.gov.it/docs/xsd/fatture/v1.2"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xmlns:ds="http://www.w3.org/2000/09/xmldsig#"
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>2022040001</ProgressivoInvio>
<FormatoTrasmissione>FPR12</FormatoTrasmissione>
<CodiceDestinatario>0803HR0</CodiceDestinatario>
<ContattiTrasmittente>
<Telefono>0266766700</Telefono>
<Email>test@test.it</Email>
</ContattiTrasmittente>
</DatiTrasmissione>
<CedentePrestatore>
<DatiAnagrafici>
<IdFiscaleIVA>
<IdPaese>SM</IdPaese>
<IdCodice>6784</IdCodice>
</IdFiscaleIVA>
<Anagrafica>
<Denominazione>Prospectra</Denominazione>
</Anagrafica>
<RegimeFiscale>RF18</RegimeFiscale>
</DatiAnagrafici>
<Sede>
<Indirizzo>Via Ventotto Luglio 212 Centro Uffici</Indirizzo>
<CAP>00000</CAP>
<Comune>San Marino</Comune>
<Nazione>SM</Nazione>
</Sede>
</CedentePrestatore>
<CessionarioCommittente>
<DatiAnagrafici>
<IdFiscaleIVA>
<IdPaese>IT</IdPaese>
<IdCodice>01234560157</IdCodice>
</IdFiscaleIVA>
<CodiceFiscale>01234560157</CodiceFiscale>
<Anagrafica>
<Denominazione>company_2_data</Denominazione>
</Anagrafica>
</DatiAnagrafici>
<Sede>
<Indirizzo>1234 Test Street</Indirizzo>
<CAP>12345</CAP>
<Comune>Prova</Comune>
<Nazione>IT</Nazione>
</Sede>
</CessionarioCommittente>
</FatturaElettronicaHeader>
<FatturaElettronicaBody>
<DatiGenerali>
<DatiGeneraliDocumento>
<TipoDocumento>TD28</TipoDocumento>
<Divisa>EUR</Divisa>
<Data>2022-04-01</Data>
<Numero>BILL/2022/04/0001</Numero>
<ImportoTotaleDocumento>1808.91</ImportoTotaleDocumento>
</DatiGeneraliDocumento>
</DatiGenerali>
<DatiBeniServizi>
<DettaglioLinee>
<NumeroLinea>1</NumeroLinea>
<Descrizione>Product A</Descrizione>
<Quantita>1.00</Quantita>
<PrezzoUnitario>800.40000000</PrezzoUnitario>
<PrezzoTotale>800.40000000</PrezzoTotale>
<AliquotaIVA>22.00</AliquotaIVA>
</DettaglioLinee>
<DettaglioLinee>
<NumeroLinea>2</NumeroLinea>
<Descrizione>Product B, taxed 4%</Descrizione>
<Quantita>1.00</Quantita>
<PrezzoUnitario>800.40000000</PrezzoUnitario>
<PrezzoTotale>800.40000000</PrezzoTotale>
<AliquotaIVA>4.00</AliquotaIVA>
</DettaglioLinee>
<DatiRiepilogo>
<AliquotaIVA>22.00</AliquotaIVA>
<ImponibileImporto>800.40</ImponibileImporto>
<Imposta>176.09</Imposta>
<EsigibilitaIVA>I</EsigibilitaIVA>
</DatiRiepilogo>
<DatiRiepilogo>
<AliquotaIVA>4.00</AliquotaIVA>
<ImponibileImporto>800.40</ImponibileImporto>
<Imposta>32.02</Imposta>
<EsigibilitaIVA>I</EsigibilitaIVA>
</DatiRiepilogo>
</DatiBeniServizi>
<DatiPagamento>
<CondizioniPagamento>TP02</CondizioniPagamento>
<DettaglioPagamento>
<ModalitaPagamento>MP05</ModalitaPagamento>
<DataScadenzaPagamento>2022-03-24</DataScadenzaPagamento>
<ImportoPagamento>1600.80</ImportoPagamento>
</DettaglioPagamento>
</DatiPagamento>
</FatturaElettronicaBody>
</p:FatturaElettronica>

View file

@ -0,0 +1,96 @@
<p:FatturaElettronica xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xmlns:ds="http://www.w3.org/2000/09/xmldsig#"
xmlns:p="http://ivaservizi.agenziaentrate.gov.it/docs/xsd/fatture/v1.2"
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>2022040001</ProgressivoInvio>
<FormatoTrasmissione>FPR12</FormatoTrasmissione>
<CodiceDestinatario>0803HR0</CodiceDestinatario>
<ContattiTrasmittente>
<Telefono>0266766700</Telefono>
<Email>test@test.it</Email>
</ContattiTrasmittente>
</DatiTrasmissione>
<CedentePrestatore>
<DatiAnagrafici>
<IdFiscaleIVA>
<IdPaese>FR</IdPaese>
<IdCodice>15437982937</IdCodice>
</IdFiscaleIVA>
<Anagrafica>
<Denominazione>Alessi</Denominazione>
</Anagrafica>
<RegimeFiscale>RF18</RegimeFiscale>
</DatiAnagrafici>
<Sede>
<Indirizzo>Street test</Indirizzo>
<CAP>00000</CAP>
<Comune>Test</Comune>
<Nazione>FR</Nazione>
</Sede>
</CedentePrestatore>
<CessionarioCommittente>
<DatiAnagrafici>
<IdFiscaleIVA>
<IdPaese>IT</IdPaese>
<IdCodice>01234560157</IdCodice>
</IdFiscaleIVA>
<CodiceFiscale>01234560157</CodiceFiscale>
<Anagrafica>
<Denominazione>company_2_data</Denominazione>
</Anagrafica>
</DatiAnagrafici>
<Sede>
<Indirizzo>1234 Test Street</Indirizzo>
<CAP>12345</CAP>
<Comune>Prova</Comune>
<Nazione>IT</Nazione>
</Sede>
</CessionarioCommittente>
</FatturaElettronicaHeader>
<FatturaElettronicaBody>
<DatiGenerali>
<DatiGeneraliDocumento>
<TipoDocumento>TD18</TipoDocumento>
<Divisa>EUR</Divisa>
<Data>2022-04-01</Data>
<Numero>RBILL/2022/04/0001</Numero>
<ImportoTotaleDocumento>-976.49</ImportoTotaleDocumento>
</DatiGeneraliDocumento>
<DatiFattureCollegate>
<IdDocumento>BILL/2022/04/0001</IdDocumento>
<Data>2022-04-01</Data>
</DatiFattureCollegate>
</DatiGenerali>
<DatiBeniServizi>
<DettaglioLinee>
<NumeroLinea>1</NumeroLinea>
<Descrizione>Product A</Descrizione>
<Quantita>1.00</Quantita>
<PrezzoUnitario>-800.40000000</PrezzoUnitario>
<PrezzoTotale>-800.40000000</PrezzoTotale>
<AliquotaIVA>22.00</AliquotaIVA>
</DettaglioLinee>
<DatiRiepilogo>
<AliquotaIVA>22.00</AliquotaIVA>
<ImponibileImporto>-800.40</ImponibileImporto>
<Imposta>-176.09</Imposta>
<EsigibilitaIVA>I</EsigibilitaIVA>
</DatiRiepilogo>
</DatiBeniServizi>
<DatiPagamento>
<CondizioniPagamento>TP02</CondizioniPagamento>
<DettaglioPagamento>
<ModalitaPagamento>MP05</ModalitaPagamento>
<DataScadenzaPagamento>2022-04-01</DataScadenzaPagamento>
<ImportoPagamento>800.40</ImportoPagamento>
</DettaglioPagamento>
</DatiPagamento>
</FatturaElettronicaBody>
</p:FatturaElettronica>

View file

@ -0,0 +1,97 @@
<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>V202200001</ProgressivoInvio>
<FormatoTrasmissione>FPR12</FormatoTrasmissione>
<CodiceDestinatario>0000000</CodiceDestinatario>
<ContattiTrasmittente>
<Telefono>0266766700</Telefono>
<Email>test@test.it</Email>
</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>TD04</TipoDocumento>
<Divisa>EUR</Divisa>
<Data>2022-03-24</Data>
<Numero>RINV/2022/00001</Numero>
<ImportoTotaleDocumento>1830.98</ImportoTotaleDocumento>
</DatiGeneraliDocumento>
<DatiFattureCollegate>
<IdDocumento>___ignore___</IdDocumento>
<Data>___ignore___</Data>
</DatiFattureCollegate>
</DatiGenerali>
<DatiBeniServizi>
<DettaglioLinee>
<NumeroLinea>1</NumeroLinea>
<Descrizione>standard_line</Descrizione>
<Quantita>2.00</Quantita>
<PrezzoUnitario>800.40000000</PrezzoUnitario>
<PrezzoTotale>1600.80000000</PrezzoTotale>
<AliquotaIVA>22.00</AliquotaIVA>
</DettaglioLinee>
<DettaglioLinee>
<NumeroLinea>2</NumeroLinea>
<Descrizione>negative_line</Descrizione>
<Quantita>1.00</Quantita>
<PrezzoUnitario>-100.00000000</PrezzoUnitario>
<PrezzoTotale>-100.00000000</PrezzoTotale>
<AliquotaIVA>22.00</AliquotaIVA>
</DettaglioLinee>
<DatiRiepilogo>
<AliquotaIVA>22.00</AliquotaIVA>
<ImponibileImporto>1500.80</ImponibileImporto>
<Imposta>330.18</Imposta>
<EsigibilitaIVA>I</EsigibilitaIVA>
</DatiRiepilogo>
</DatiBeniServizi>
</FatturaElettronicaBody>
</p:FatturaElettronica>

View file

@ -1,3 +1,4 @@
<?xml version='1.0' encoding='UTF-8'?>
<p:FatturaElettronica xmlns:ds="http://www.w3.org/2000/09/xmldsig#" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:p="http://ivaservizi.agenziaentrate.gov.it/docs/xsd/fatture/v1.2" 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>
@ -5,10 +6,12 @@
<IdPaese>IT</IdPaese>
<IdCodice>01234560157</IdCodice>
</IdTrasmittente>
<ProgressivoInvio>___ignore___</ProgressivoInvio>
<ProgressivoInvio>2022030001</ProgressivoInvio>
<FormatoTrasmissione>FPR12</FormatoTrasmissione>
<CodiceDestinatario>0000000</CodiceDestinatario>
<ContattiTrasmittente>
<Telefono>0266766700</Telefono>
<Email>test@test.it</Email>
</ContattiTrasmittente>
</DatiTrasmissione>
<CedentePrestatore>
@ -24,7 +27,7 @@
<RegimeFiscale>RF01</RegimeFiscale>
</DatiAnagrafici>
<Sede>
<Indirizzo>1234 Test Street </Indirizzo>
<Indirizzo>1234 Test Street</Indirizzo>
<CAP>12345</CAP>
<Comune>Prova</Comune>
<Nazione>IT</Nazione>
@ -42,7 +45,7 @@
</Anagrafica>
</DatiAnagrafici>
<Sede>
<Indirizzo>Via Privata Alessi 6 </Indirizzo>
<Indirizzo>Via Privata Alessi 6</Indirizzo>
<CAP>28887</CAP>
<Comune>Milan</Comune>
<Nazione>IT</Nazione>
@ -52,22 +55,38 @@
<FatturaElettronicaBody>
<DatiGenerali>
<DatiGeneraliDocumento>
<TipoDocumento>TD01</TipoDocumento>
<Divisa>EUR</Divisa>
<Data>2022-03-24</Data>
<Numero>___ignore___</Numero>
<ImportoTotaleDocumento></ImportoTotaleDocumento>
<Numero>RBILL/2022/03/0001</Numero>
<ImportoTotaleDocumento>832.42</ImportoTotaleDocumento>
</DatiGeneraliDocumento>
<DatiFattureCollegate>
<IdDocumento>BILL/2022/03/0001</IdDocumento>
<Data>2022-03-24</Data>
</DatiFattureCollegate>
</DatiGenerali>
<DatiBeniServizi>
<DettaglioLinee>
<NumeroLinea>1</NumeroLinea>
<Descrizione>Product A</Descrizione>
<Quantita>1.00</Quantita>
<PrezzoUnitario>800.40000000</PrezzoUnitario>
<PrezzoTotale>800.40000000</PrezzoTotale>
<AliquotaIVA>4.00</AliquotaIVA>
</DettaglioLinee>
<DatiRiepilogo>
<AliquotaIVA>4.00</AliquotaIVA>
<ImponibileImporto>800.40</ImponibileImporto>
<Imposta>32.02</Imposta>
<EsigibilitaIVA>I</EsigibilitaIVA>
</DatiRiepilogo>
</DatiBeniServizi>
<DatiPagamento>
<CondizioniPagamento>TP02</CondizioniPagamento>
<DettaglioPagamento>
<ModalitaPagamento>MP05</ModalitaPagamento>
<DataScadenzaPagamento>2022-03-24</DataScadenzaPagamento>
<ImportoPagamento></ImportoPagamento>
<CodicePagamento>___ignore___</CodicePagamento>
<ImportoPagamento>832.42</ImportoPagamento>
</DettaglioPagamento>
</DatiPagamento>
</FatturaElettronicaBody>

View file

@ -0,0 +1,114 @@
<p:FatturaElettronica xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xmlns:ds="http://www.w3.org/2000/09/xmldsig#"
xmlns:p="http://ivaservizi.agenziaentrate.gov.it/docs/xsd/fatture/v1.2"
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>2022040001</ProgressivoInvio>
<FormatoTrasmissione>FPR12</FormatoTrasmissione>
<CodiceDestinatario>0803HR0</CodiceDestinatario>
<ContattiTrasmittente>
<Telefono>0266766700</Telefono>
<Email>test@test.it</Email>
</ContattiTrasmittente>
</DatiTrasmissione>
<CedentePrestatore>
<DatiAnagrafici>
<IdFiscaleIVA>
<IdPaese>FR</IdPaese>
<IdCodice>15437982937</IdCodice>
</IdFiscaleIVA>
<Anagrafica>
<Denominazione>Alessi</Denominazione>
</Anagrafica>
<RegimeFiscale>RF18</RegimeFiscale>
</DatiAnagrafici>
<Sede>
<Indirizzo>Avenue Test rue</Indirizzo>
<CAP>00000</CAP>
<Comune>Avignon</Comune>
<Nazione>FR</Nazione>
</Sede>
</CedentePrestatore>
<CessionarioCommittente>
<DatiAnagrafici>
<IdFiscaleIVA>
<IdPaese>IT</IdPaese>
<IdCodice>01234560157</IdCodice>
</IdFiscaleIVA>
<CodiceFiscale>01234560157</CodiceFiscale>
<Anagrafica>
<Denominazione>company_2_data</Denominazione>
</Anagrafica>
</DatiAnagrafici>
<Sede>
<Indirizzo>1234 Test Street</Indirizzo>
<CAP>12345</CAP>
<Comune>Prova</Comune>
<Nazione>IT</Nazione>
</Sede>
</CessionarioCommittente>
</FatturaElettronicaHeader>
<FatturaElettronicaBody>
<DatiGenerali>
<DatiGeneraliDocumento>
<TipoDocumento>TD18</TipoDocumento>
<Divisa>EUR</Divisa>
<Data>2022-04-01</Data>
<Numero>RBILL/2022/04/0001</Numero>
<ImportoTotaleDocumento>-1392.91</ImportoTotaleDocumento>
</DatiGeneraliDocumento>
<DatiFattureCollegate>
<IdDocumento>BILL/2022/04/0001</IdDocumento>
<Data>2022-04-01</Data>
</DatiFattureCollegate>
<DatiFattureCollegate>
<IdDocumento>BILL/2022/04/0002</IdDocumento>
<Data>2022-04-01</Data>
</DatiFattureCollegate>
</DatiGenerali>
<DatiBeniServizi>
<DettaglioLinee>
<NumeroLinea>1</NumeroLinea>
<Descrizione>Product A</Descrizione>
<Quantita>1.00</Quantita>
<PrezzoUnitario>-800.40000000</PrezzoUnitario>
<PrezzoTotale>-800.40000000</PrezzoTotale>
<AliquotaIVA>22.00</AliquotaIVA>
</DettaglioLinee>
<DettaglioLinee>
<NumeroLinea>2</NumeroLinea>
<Descrizione>Product B, taxed 4%</Descrizione>
<Quantita>1.00</Quantita>
<PrezzoUnitario>-400.40000000</PrezzoUnitario>
<PrezzoTotale>-400.40000000</PrezzoTotale>
<AliquotaIVA>4.00</AliquotaIVA>
</DettaglioLinee>
<DatiRiepilogo>
<AliquotaIVA>22.00</AliquotaIVA>
<ImponibileImporto>-800.40</ImponibileImporto>
<Imposta>-176.09</Imposta>
<EsigibilitaIVA>I</EsigibilitaIVA>
</DatiRiepilogo>
<DatiRiepilogo>
<AliquotaIVA>4.00</AliquotaIVA>
<ImponibileImporto>-400.40</ImponibileImporto>
<Imposta>-16.02</Imposta>
<EsigibilitaIVA>I</EsigibilitaIVA>
</DatiRiepilogo>
</DatiBeniServizi>
<DatiPagamento>
<CondizioniPagamento>TP02</CondizioniPagamento>
<DettaglioPagamento>
<ModalitaPagamento>MP05</ModalitaPagamento>
<DataScadenzaPagamento>2022-03-24</DataScadenzaPagamento>
<ImportoPagamento>1200.80</ImportoPagamento>
</DettaglioPagamento>
</DatiPagamento>
</FatturaElettronicaBody>
</p:FatturaElettronica>

View file

@ -0,0 +1,153 @@
<?xml version="1.0"?>
<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>
<ProgressivoInvio>___ignore___</ProgressivoInvio>
<FormatoTrasmissione>FPR12</FormatoTrasmissione>
<CodiceDestinatario>0000000</CodiceDestinatario>
<ContattiTrasmittente>
<Telefono>0266766700</Telefono>
<Email>test@test.it</Email>
</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>2022-03-24</Data>
<Numero>___ignore___</Numero>
<DatiRitenuta>
<TipoRitenuta>RT02</TipoRitenuta>
<ImportoRitenuta>86.25</ImportoRitenuta>
<AliquotaRitenuta>23.00</AliquotaRitenuta>
<CausalePagamento>ZO</CausalePagamento>
</DatiRitenuta>
<DatiRitenuta>
<TipoRitenuta>RT04</TipoRitenuta>
<ImportoRitenuta>63.75</ImportoRitenuta>
<AliquotaRitenuta>8.50</AliquotaRitenuta>
<CausalePagamento>ZO</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.00000000</PrezzoUnitario>
<PrezzoTotale>350.00000000</PrezzoTotale>
<AliquotaIVA>22.00</AliquotaIVA>
<Ritenuta>SI</Ritenuta>
<AltriDatiGestionali>
<TipoDato>CASSA-PREV</TipoDato>
<RiferimentoTesto>TC07 - ENASARCO (8.5%)</RiferimentoTesto>
<RiferimentoNumero>29.75000000</RiferimentoNumero>
</AltriDatiGestionali>
</DettaglioLinee>
<DettaglioLinee>
<NumeroLinea>2</NumeroLinea>
<Descrizione>Balance deposit for the past year</Descrizione>
<Quantita>1.00</Quantita>
<PrezzoUnitario>300.00000000</PrezzoUnitario>
<PrezzoTotale>300.00000000</PrezzoTotale>
<AliquotaIVA>22.00</AliquotaIVA>
<Ritenuta>SI</Ritenuta>
<AltriDatiGestionali>
<TipoDato>CASSA-PREV</TipoDato>
<RiferimentoTesto>TC07 - ENASARCO (8.5%)</RiferimentoTesto>
<RiferimentoNumero>25.50000000</RiferimentoNumero>
</AltriDatiGestionali>
</DettaglioLinee>
<DettaglioLinee>
<NumeroLinea>3</NumeroLinea>
<Descrizione>Ordinary accounting service for the trimester</Descrizione>
<Quantita>1.00</Quantita>
<PrezzoUnitario>50.00000000</PrezzoUnitario>
<PrezzoTotale>50.00000000</PrezzoTotale>
<AliquotaIVA>22.00</AliquotaIVA>
<Ritenuta>SI</Ritenuta>
<AltriDatiGestionali>
<TipoDato>CASSA-PREV</TipoDato>
<RiferimentoTesto>TC07 - ENASARCO (8.5%)</RiferimentoTesto>
<RiferimentoNumero>4.25000000</RiferimentoNumero>
</AltriDatiGestionali>
</DettaglioLinee>
<DettaglioLinee>
<NumeroLinea>4</NumeroLinea>
<Descrizione>Electronic invoices management</Descrizione>
<Quantita>1.00</Quantita>
<PrezzoUnitario>50.00000000</PrezzoUnitario>
<PrezzoTotale>50.00000000</PrezzoTotale>
<AliquotaIVA>22.00</AliquotaIVA>
<Ritenuta>SI</Ritenuta>
<AltriDatiGestionali>
<TipoDato>CASSA-PREV</TipoDato>
<RiferimentoTesto>TC07 - ENASARCO (8.5%)</RiferimentoTesto>
<RiferimentoNumero>4.25000000</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>___ignore___</CodicePagamento>
</DettaglioPagamento>
</DatiPagamento>
</FatturaElettronicaBody>
</p:FatturaElettronica>

View file

@ -0,0 +1,123 @@
<?xml version='1.0' encoding='UTF-8'?>
<p:FatturaElettronica xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:p="http://ivaservizi.agenziaentrate.gov.it/docs/xsd/fatture/v1.2" xmlns:ds="http://www.w3.org/2000/09/xmldsig#" 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>V202400003</ProgressivoInvio>
<FormatoTrasmissione>FPR12</FormatoTrasmissione>
<CodiceDestinatario>XXXXXXX</CodiceDestinatario>
<ContattiTrasmittente>
<Telefono>0266766700</Telefono>
<Email>test@test.it</Email>
</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>US</IdPaese>
<IdCodice>OO99999999999</IdCodice>
</IdFiscaleIVA>
<Anagrafica>
<Denominazione>US Partner</Denominazione>
</Anagrafica>
</DatiAnagrafici>
<Sede>
<Indirizzo>123 Rainbow Road</Indirizzo>
<CAP>00000</CAP>
<Comune>Test city</Comune>
<Nazione>US</Nazione>
</Sede>
</CessionarioCommittente>
</FatturaElettronicaHeader>
<FatturaElettronicaBody>
<DatiGenerali>
<DatiGeneraliDocumento>
<TipoDocumento>TD01</TipoDocumento>
<Divisa>EUR</Divisa>
<Data>2024-08-07</Data>
<Numero>INV/2024/00003</Numero>
<ImportoTotaleDocumento>474.62</ImportoTotaleDocumento>
</DatiGeneraliDocumento>
</DatiGenerali>
<DatiBeniServizi>
<DettaglioLinee>
<NumeroLinea>1</NumeroLinea>
<Descrizione>A productive product</Descrizione>
<Quantita>1.00</Quantita>
<PrezzoUnitario>659.99629252</PrezzoUnitario>
<PrezzoTotale>659.99629252</PrezzoTotale>
<AliquotaIVA>0.00</AliquotaIVA>
<Natura>N3.1</Natura>
<AltriDatiGestionali>
<TipoDato>DIVISA</TipoDato>
<RiferimentoTesto>USD</RiferimentoTesto>
<RiferimentoNumero>712.07000000</RiferimentoNumero>
</AltriDatiGestionali>
<AltriDatiGestionali>
<TipoDato>CAMBIO</TipoDato>
<RiferimentoNumero>1.07890000</RiferimentoNumero>
<RiferimentoData>2024-08-07</RiferimentoData>
</AltriDatiGestionali>
</DettaglioLinee>
<DettaglioLinee>
<NumeroLinea>2</NumeroLinea>
<Descrizione>A global discount</Descrizione>
<Quantita>1.00</Quantita>
<PrezzoUnitario>-185.37399203</PrezzoUnitario>
<PrezzoTotale>-185.37399203</PrezzoTotale>
<AliquotaIVA>0.00</AliquotaIVA>
<Natura>N3.1</Natura>
<AltriDatiGestionali>
<TipoDato>DIVISA</TipoDato>
<RiferimentoTesto>USD</RiferimentoTesto>
<RiferimentoNumero>-200.00000000</RiferimentoNumero>
</AltriDatiGestionali>
<AltriDatiGestionali>
<TipoDato>CAMBIO</TipoDato>
<RiferimentoNumero>1.07890000</RiferimentoNumero>
<RiferimentoData>2024-08-07</RiferimentoData>
</AltriDatiGestionali>
</DettaglioLinee>
<DatiRiepilogo>
<AliquotaIVA>0.00</AliquotaIVA>
<Natura>N3.1</Natura>
<Arrotondamento>-0.00230049</Arrotondamento>
<ImponibileImporto>474.62</ImponibileImporto>
<Imposta>0.00</Imposta>
<EsigibilitaIVA>I</EsigibilitaIVA>
<RiferimentoNormativo>Art. 8, c.1, lett.a - D.P.R. 633/1972</RiferimentoNormativo>
</DatiRiepilogo>
</DatiBeniServizi>
<DatiPagamento>
<CondizioniPagamento>TP02</CondizioniPagamento>
<DettaglioPagamento>
<ModalitaPagamento>MP05</ModalitaPagamento>
<DataScadenzaPagamento>2024-08-07</DataScadenzaPagamento>
<ImportoPagamento>512.07</ImportoPagamento>
<CodicePagamento>INV/2024/00003</CodicePagamento>
</DettaglioPagamento>
</DatiPagamento>
</FatturaElettronicaBody>
</p:FatturaElettronica>

View file

@ -0,0 +1,128 @@
<p:FatturaElettronica xmlns:p="http://ivaservizi.agenziaentrate.gov.it/docs/xsd/fatture/v1.2"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xmlns:ds="http://www.w3.org/2000/09/xmldsig#" 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>V202400002</ProgressivoInvio>
<FormatoTrasmissione>FPR12</FormatoTrasmissione>
<CodiceDestinatario>XXXXXXX</CodiceDestinatario>
<ContattiTrasmittente>
<Telefono>0266766700</Telefono>
<Email>test@test.it</Email>
</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>US</IdPaese>
<IdCodice>OO99999999999</IdCodice>
</IdFiscaleIVA>
<Anagrafica>
<Denominazione>US Partner</Denominazione>
</Anagrafica>
</DatiAnagrafici>
<Sede>
<Indirizzo>123 Rainbow Road</Indirizzo>
<CAP>00000</CAP>
<Comune>Test city</Comune>
<Nazione>US</Nazione>
</Sede>
</CessionarioCommittente>
</FatturaElettronicaHeader>
<FatturaElettronicaBody>
<DatiGenerali>
<DatiGeneraliDocumento>
<TipoDocumento>TD01</TipoDocumento>
<Divisa>EUR</Divisa>
<Data>2024-08-06</Data>
<Numero>INV/2024/00002</Numero>
<ImportoTotaleDocumento>468.31</ImportoTotaleDocumento>
</DatiGeneraliDocumento>
</DatiGenerali>
<DatiBeniServizi>
<DettaglioLinee>
<NumeroLinea>1</NumeroLinea>
<Descrizione>A productive product</Descrizione>
<Quantita>1.00</Quantita>
<PrezzoUnitario>659.99629252</PrezzoUnitario>
<ScontoMaggiorazione>
<Tipo>SC</Tipo>
<Percentuale>15.00</Percentuale>
</ScontoMaggiorazione>
<PrezzoTotale>560.99684864</PrezzoTotale>
<AliquotaIVA>0.00</AliquotaIVA>
<Natura>N3.1</Natura>
<AltriDatiGestionali>
<TipoDato>DIVISA</TipoDato>
<RiferimentoTesto>USD</RiferimentoTesto>
<RiferimentoNumero>605.25950000</RiferimentoNumero>
</AltriDatiGestionali>
<AltriDatiGestionali>
<TipoDato>CAMBIO</TipoDato>
<RiferimentoNumero>1.07890000</RiferimentoNumero>
<RiferimentoData>2024-08-06</RiferimentoData>
</AltriDatiGestionali>
</DettaglioLinee>
<DettaglioLinee>
<NumeroLinea>2</NumeroLinea>
<Descrizione>A global discount</Descrizione>
<Quantita>1.00</Quantita>
<PrezzoUnitario>-92.68699601</PrezzoUnitario>
<PrezzoTotale>-92.68699601</PrezzoTotale>
<AliquotaIVA>0.00</AliquotaIVA>
<Natura>N3.1</Natura>
<AltriDatiGestionali>
<TipoDato>DIVISA</TipoDato>
<RiferimentoTesto>USD</RiferimentoTesto>
<RiferimentoNumero>-100.00000000</RiferimentoNumero>
</AltriDatiGestionali>
<AltriDatiGestionali>
<TipoDato>CAMBIO</TipoDato>
<RiferimentoNumero>1.07890000</RiferimentoNumero>
<RiferimentoData>2024-08-06</RiferimentoData>
</AltriDatiGestionali>
</DettaglioLinee>
<DatiRiepilogo>
<AliquotaIVA>0.00</AliquotaIVA>
<Natura>N3.1</Natura>
<Arrotondamento>0.00014737</Arrotondamento>
<ImponibileImporto>468.31</ImponibileImporto>
<Imposta>0.00</Imposta>
<EsigibilitaIVA>I</EsigibilitaIVA>
<RiferimentoNormativo>Art. 8, c.1, lett.a - D.P.R. 633/1972</RiferimentoNormativo>
</DatiRiepilogo>
</DatiBeniServizi>
<DatiPagamento>
<CondizioniPagamento>TP02</CondizioniPagamento>
<DettaglioPagamento>
<ModalitaPagamento>MP05</ModalitaPagamento>
<DataScadenzaPagamento>2024-08-06</DataScadenzaPagamento>
<ImportoPagamento>505.26</ImportoPagamento>
<CodicePagamento>INV/2024/00002</CodicePagamento>
</DettaglioPagamento>
</DatiPagamento>
</FatturaElettronicaBody>
</p:FatturaElettronica>

View file

@ -0,0 +1,108 @@
<?xml version='1.0' encoding='UTF-8'?>
<p:FatturaElettronica xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:p="http://ivaservizi.agenziaentrate.gov.it/docs/xsd/fatture/v1.2" xmlns:ds="http://www.w3.org/2000/09/xmldsig#" 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>V202400001</ProgressivoInvio>
<FormatoTrasmissione>FPR12</FormatoTrasmissione>
<CodiceDestinatario>XXXXXXX</CodiceDestinatario>
<ContattiTrasmittente>
<Telefono>0266766700</Telefono>
<Email>test@test.it</Email>
</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>US</IdPaese>
<IdCodice>OO99999999999</IdCodice>
</IdFiscaleIVA>
<Anagrafica>
<Denominazione>US Partner</Denominazione>
</Anagrafica>
</DatiAnagrafici>
<Sede>
<Indirizzo>123 Rainbow Road</Indirizzo>
<CAP>00000</CAP>
<Comune>Test city</Comune>
<Nazione>US</Nazione>
</Sede>
</CessionarioCommittente>
</FatturaElettronicaHeader>
<FatturaElettronicaBody>
<DatiGenerali>
<DatiGeneraliDocumento>
<TipoDocumento>TD01</TipoDocumento>
<Divisa>EUR</Divisa>
<Data>2024-08-07</Data>
<Numero>INV/2024/00001</Numero>
<ImportoTotaleDocumento>841.50</ImportoTotaleDocumento>
</DatiGeneraliDocumento>
</DatiGenerali>
<DatiBeniServizi>
<DettaglioLinee>
<NumeroLinea>1</NumeroLinea>
<Descrizione>A productive product</Descrizione>
<Quantita>1.00</Quantita>
<PrezzoUnitario>989.99907313</PrezzoUnitario>
<ScontoMaggiorazione>
<Tipo>SC</Tipo>
<Percentuale>15.00</Percentuale>
</ScontoMaggiorazione>
<PrezzoTotale>841.49921216</PrezzoTotale>
<AliquotaIVA>0.00</AliquotaIVA>
<Natura>N3.1</Natura>
<AltriDatiGestionali>
<TipoDato>DIVISA</TipoDato>
<RiferimentoTesto>USD</RiferimentoTesto>
<RiferimentoNumero>907.89350000</RiferimentoNumero>
</AltriDatiGestionali>
<AltriDatiGestionali>
<TipoDato>CAMBIO</TipoDato>
<RiferimentoNumero>1.07890000</RiferimentoNumero>
<RiferimentoData>2024-08-07</RiferimentoData>
</AltriDatiGestionali>
</DettaglioLinee>
<DatiRiepilogo>
<AliquotaIVA>0.00</AliquotaIVA>
<Natura>N3.1</Natura>
<Arrotondamento>0.00078784</Arrotondamento>
<ImponibileImporto>841.50</ImponibileImporto>
<Imposta>0.00</Imposta>
<EsigibilitaIVA>I</EsigibilitaIVA>
<RiferimentoNormativo>Art. 8, c.1, lett.a - D.P.R. 633/1972</RiferimentoNormativo>
</DatiRiepilogo>
</DatiBeniServizi>
<DatiPagamento>
<CondizioniPagamento>TP02</CondizioniPagamento>
<DettaglioPagamento>
<ModalitaPagamento>MP05</ModalitaPagamento>
<DataScadenzaPagamento>2024-08-07</DataScadenzaPagamento>
<ImportoPagamento>907.89</ImportoPagamento>
<CodicePagamento>INV/2024/00001</CodicePagamento>
</DettaglioPagamento>
</DatiPagamento>
</FatturaElettronicaBody>
</p:FatturaElettronica>

View file

@ -0,0 +1,153 @@
<?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>
<ProgressivoInvio>___ignore___</ProgressivoInvio>
<FormatoTrasmissione>FPR12</FormatoTrasmissione>
<CodiceDestinatario>0000000</CodiceDestinatario>
<ContattiTrasmittente>
<Telefono>0266766700</Telefono>
<Email>test@test.it</Email>
</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>
</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.00000000</PrezzoUnitario>
<PrezzoTotale>350.00000000</PrezzoTotale>
<AliquotaIVA>0.00</AliquotaIVA>
<Natura>N2.2</Natura>
<AltriDatiGestionali>
<TipoDato>AswCassPre</TipoDato>
<RiferimentoTesto>TC22 (4%)</RiferimentoTesto>
</AltriDatiGestionali>
</DettaglioLinee>
<DettaglioLinee>
<NumeroLinea>2</NumeroLinea>
<Descrizione>
Balance deposit for the past year
</Descrizione>
<Quantita>1.00</Quantita>
<PrezzoUnitario>300.00000000</PrezzoUnitario>
<PrezzoTotale>300.00000000</PrezzoTotale>
<AliquotaIVA>0.00</AliquotaIVA>
<Natura>N2.2</Natura>
<AltriDatiGestionali>
<TipoDato>AswCassPre</TipoDato>
<RiferimentoTesto>TC22 (4%)</RiferimentoTesto>
</AltriDatiGestionali>
</DettaglioLinee>
<DettaglioLinee>
<NumeroLinea>3</NumeroLinea>
<Descrizione>
Ordinary accounting service for the trimester
</Descrizione>
<Quantita>1.00</Quantita>
<PrezzoUnitario>50.00000000</PrezzoUnitario>
<PrezzoTotale>50.00000000</PrezzoTotale>
<AliquotaIVA>0.00</AliquotaIVA>
<Natura>N2.2</Natura>
<AltriDatiGestionali>
<TipoDato>AswCassPre</TipoDato>
<RiferimentoTesto>TC22 (4%)</RiferimentoTesto>
</AltriDatiGestionali>
</DettaglioLinee>
<DettaglioLinee>
<NumeroLinea>4</NumeroLinea>
<Descrizione>
Electronic invoices management
</Descrizione>
<Quantita>1.00</Quantita>
<PrezzoUnitario>50.00000000</PrezzoUnitario>
<PrezzoTotale>50.00000000</PrezzoTotale>
<AliquotaIVA>0.00</AliquotaIVA>
<Natura>N2.2</Natura>
<AltriDatiGestionali>
<TipoDato>AswCassPre</TipoDato>
<RiferimentoTesto>TC22 (4%)</RiferimentoTesto>
</AltriDatiGestionali>
</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>

View file

@ -0,0 +1,67 @@
<p:FatturaElettronicaSemplificata xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xmlns:ds="http://www.w3.org/2000/09/xmldsig#"
xmlns:p="http://ivaservizi.agenziaentrate.gov.it/docs/xsd/fatture/v1.0"
xsi:schemaLocation="http://ivaservizi.agenziaentrate.gov.it/docs/xsd/fatture/v1.0 http://www.fatturapa.gov.it/export/fatturazione/sdi/fatturapa/v1.0/Schema_del_file_xml_FatturaPA_versione_1.0.xsd"
versione="FSM10">
<FatturaElettronicaHeader>
<DatiTrasmissione>
<IdTrasmittente>
<IdPaese>IT</IdPaese>
<IdCodice>01234560157</IdCodice>
</IdTrasmittente>
<ProgressivoInvio>V202200001</ProgressivoInvio>
<FormatoTrasmissione>FSM10</FormatoTrasmissione>
<CodiceDestinatario>0000000</CodiceDestinatario>
</DatiTrasmissione>
<CedentePrestatore>
<IdFiscaleIVA>
<IdPaese>IT</IdPaese>
<IdCodice>01234560157</IdCodice>
</IdFiscaleIVA>
<CodiceFiscale>01234560157</CodiceFiscale>
<Denominazione>company_2_data</Denominazione>
<Sede>
<Indirizzo>1234 Test Street</Indirizzo>
<CAP>12345</CAP>
<Comune>Prova</Comune>
<Nazione>IT</Nazione>
</Sede>
<RegimeFiscale>RF01</RegimeFiscale>
</CedentePrestatore>
<CessionarioCommittente>
<IdentificativiFiscali>
<CodiceFiscale>00465840031</CodiceFiscale>
</IdentificativiFiscali>
</CessionarioCommittente>
</FatturaElettronicaHeader>
<FatturaElettronicaBody>
<DatiGenerali>
<DatiGeneraliDocumento>
<TipoDocumento>TD07</TipoDocumento>
<Divisa>EUR</Divisa>
<Data>2022-03-24</Data>
<Numero>INV/2022/00001</Numero>
</DatiGeneraliDocumento>
</DatiGenerali>
<DatiBeniServizi>
<Descrizione>
cheap_line
</Descrizione>
<Importo>122.00</Importo>
<DatiIVA>
<Imposta>22.00</Imposta>
</DatiIVA>
</DatiBeniServizi>
<DatiBeniServizi>
<Descrizione>
cheap_line_2
</Descrizione>
<Importo>24.40</Importo>
<DatiIVA>
<Imposta>4.40</Imposta>
</DatiIVA>
</DatiBeniServizi>
</FatturaElettronicaBody>
</p:FatturaElettronicaSemplificata>

View file

@ -0,0 +1,94 @@
<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>V202200001</ProgressivoInvio>
<FormatoTrasmissione>FPR12</FormatoTrasmissione>
<CodiceDestinatario>0000000</CodiceDestinatario>
<ContattiTrasmittente>
<Telefono>0266766700</Telefono>
<Email>test@test.it</Email>
</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>2022-03-24</Data>
<Numero>INV/2022/00001</Numero>
<ImportoTotaleDocumento>38.50</ImportoTotaleDocumento>
</DatiGeneraliDocumento>
</DatiGenerali>
<DatiBeniServizi>
<DettaglioLinee>
<NumeroLinea>1</NumeroLinea>
<Descrizione>standard_line</Descrizione>
<Quantita>10.00</Quantita>
<PrezzoUnitario>3.15600000</PrezzoUnitario>
<PrezzoTotale>31.56000000</PrezzoTotale>
<AliquotaIVA>22.00</AliquotaIVA>
</DettaglioLinee>
<DatiRiepilogo>
<AliquotaIVA>22.00</AliquotaIVA>
<ImponibileImporto>31.56</ImponibileImporto>
<Imposta>6.94</Imposta>
<EsigibilitaIVA>I</EsigibilitaIVA>
</DatiRiepilogo>
</DatiBeniServizi>
<DatiPagamento>
<CondizioniPagamento>TP02</CondizioniPagamento>
<DettaglioPagamento>
<ModalitaPagamento>MP05</ModalitaPagamento>
<DataScadenzaPagamento>2022-03-24</DataScadenzaPagamento>
<ImportoPagamento>38.50</ImportoPagamento>
<CodicePagamento>INV/2022/00001</CodicePagamento>
</DettaglioPagamento>
</DatiPagamento>
</FatturaElettronicaBody>
</p:FatturaElettronica>

View file

@ -0,0 +1,86 @@
<?xml version='1.0' encoding='UTF-8'?>
<p:FatturaElettronica xmlns:ds="http://www.w3.org/2000/09/xmldsig#" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:p="http://ivaservizi.agenziaentrate.gov.it/docs/xsd/fatture/v1.2" 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>V202200001</ProgressivoInvio>
<FormatoTrasmissione>FPR12</FormatoTrasmissione>
<CodiceDestinatario>0000000</CodiceDestinatario>
<ContattiTrasmittente>
<Telefono>0266766700</Telefono>
<Email>test@test.it</Email>
</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>TD04</TipoDocumento>
<Divisa>EUR</Divisa>
<Data>2022-03-24</Data>
<Numero>RINV/2022/00001</Numero>
<ImportoTotaleDocumento>610.00</ImportoTotaleDocumento>
</DatiGeneraliDocumento>
<DatiFattureCollegate>
<IdDocumento>INV/2022/00001</IdDocumento>
<Data>2022-03-24</Data>
</DatiFattureCollegate>
</DatiGenerali>
<DatiBeniServizi>
<DettaglioLinee>
<NumeroLinea>1</NumeroLinea>
<Descrizione>Product A</Descrizione>
<Quantita>1.00</Quantita>
<PrezzoUnitario>500.00000000</PrezzoUnitario>
<PrezzoTotale>500.00000000</PrezzoTotale>
<AliquotaIVA>22.00</AliquotaIVA>
</DettaglioLinee>
<DatiRiepilogo>
<AliquotaIVA>22.00</AliquotaIVA>
<ImponibileImporto>500.00</ImponibileImporto>
<Imposta>110.00</Imposta>
<EsigibilitaIVA>I</EsigibilitaIVA>
</DatiRiepilogo>
</DatiBeniServizi>
</FatturaElettronicaBody>
</p:FatturaElettronica>

View file

@ -1,4 +1,8 @@
<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">
<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>
@ -9,6 +13,8 @@
<FormatoTrasmissione>FPR12</FormatoTrasmissione>
<CodiceDestinatario>XXXXXXX</CodiceDestinatario>
<ContattiTrasmittente>
<Telefono>0266766700</Telefono>
<Email>test@test.it</Email>
</ContattiTrasmittente>
</DatiTrasmissione>
<CedentePrestatore>
@ -24,7 +30,7 @@
<RegimeFiscale>RF01</RegimeFiscale>
</DatiAnagrafici>
<Sede>
<Indirizzo>1234 Test Street </Indirizzo>
<Indirizzo>1234 Test Street</Indirizzo>
<CAP>12345</CAP>
<Comune>Prova</Comune>
<Nazione>IT</Nazione>
@ -41,7 +47,7 @@
</Anagrafica>
</DatiAnagrafici>
<Sede>
<Indirizzo>Avenue Test rue </Indirizzo>
<Indirizzo>Avenue Test rue</Indirizzo>
<CAP>00000</CAP>
<Comune>Avignon</Comune>
<Nazione>FR</Nazione>
@ -59,42 +65,45 @@
</DatiGeneraliDocumento>
</DatiGenerali>
<DatiBeniServizi>
<DettaglioLinee>
<NumeroLinea>1</NumeroLinea>
<Descrizione>
Product A
</Descrizione>
<Quantita>1.00</Quantita>
<PrezzoUnitario>800.400000</PrezzoUnitario>
<PrezzoTotale>800.40</PrezzoTotale>
<AliquotaIVA>0.00</AliquotaIVA>
</DettaglioLinee>
<DettaglioLinee>
<NumeroLinea>2</NumeroLinea>
<Descrizione>
Product B
</Descrizione>
<Quantita>1.00</Quantita>
<PrezzoUnitario>800.400000</PrezzoUnitario>
<PrezzoTotale>800.40</PrezzoTotale>
<AliquotaIVA>0.00</AliquotaIVA>
</DettaglioLinee>
<DatiRiepilogo>
<AliquotaIVA>0.00</AliquotaIVA>
<ImponibileImporto>1600.80</ImponibileImporto>
<Imposta>0.00</Imposta>
<EsigibilitaIVA>I</EsigibilitaIVA>
</DatiRiepilogo>
<DettaglioLinee>
<NumeroLinea>1</NumeroLinea>
<Descrizione>
Product A
</Descrizione>
<Quantita>1.00</Quantita>
<PrezzoUnitario>800.40000000</PrezzoUnitario>
<PrezzoTotale>800.40000000</PrezzoTotale>
<AliquotaIVA>0.00</AliquotaIVA>
<Natura>N1</Natura>
</DettaglioLinee>
<DettaglioLinee>
<NumeroLinea>2</NumeroLinea>
<Descrizione>
Product B
</Descrizione>
<Quantita>1.00</Quantita>
<PrezzoUnitario>800.40000000</PrezzoUnitario>
<PrezzoTotale>800.40000000</PrezzoTotale>
<AliquotaIVA>0.00</AliquotaIVA>
<Natura>N1</Natura>
</DettaglioLinee>
<DatiRiepilogo>
<AliquotaIVA>0.00</AliquotaIVA>
<Natura>N1</Natura>
<ImponibileImporto>1600.80</ImponibileImporto>
<Imposta>0.00</Imposta>
<EsigibilitaIVA>I</EsigibilitaIVA>
<RiferimentoNormativo>test</RiferimentoNormativo>
</DatiRiepilogo>
</DatiBeniServizi>
<DatiPagamento>
<CondizioniPagamento>TP02</CondizioniPagamento>
<DettaglioPagamento>
<ModalitaPagamento>MP05</ModalitaPagamento>
<DataScadenzaPagamento>2022-03-24</DataScadenzaPagamento>
<ImportoPagamento>1600.80</ImportoPagamento>
<CodicePagamento>___ignore___</CodicePagamento>
</DettaglioPagamento>
<DettaglioPagamento>
<ModalitaPagamento>MP05</ModalitaPagamento>
<DataScadenzaPagamento>2022-03-24</DataScadenzaPagamento>
<ImportoPagamento>1600.80</ImportoPagamento>
<CodicePagamento>___ignore___</CodicePagamento>
</DettaglioPagamento>
</DatiPagamento>
<Allegati></Allegati>
</FatturaElettronicaBody>
</p:FatturaElettronica>

View file

@ -0,0 +1,98 @@
<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>
<ProgressivoInvio>V202200001</ProgressivoInvio>
<FormatoTrasmissione>FPR12</FormatoTrasmissione>
<CodiceDestinatario>0000000</CodiceDestinatario>
<ContattiTrasmittente>
<Telefono>0266766700</Telefono>
<Email>test@test.it</Email>
</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>2022-03-24</Data>
<Numero>INV/2022/00001</Numero>
<ImportoTotaleDocumento>0.00</ImportoTotaleDocumento>
</DatiGeneraliDocumento>
</DatiGenerali>
<DatiBeniServizi>
<DettaglioLinee>
<NumeroLinea>1</NumeroLinea>
<Descrizione>nothing shady just a gift for my friend</Descrizione>
<Quantita>1.00</Quantita>
<PrezzoUnitario>800.40000000</PrezzoUnitario>
<ScontoMaggiorazione>
<Tipo>SC</Tipo>
<Percentuale>100.00</Percentuale>
</ScontoMaggiorazione>
<PrezzoTotale>0.00000000</PrezzoTotale>
<AliquotaIVA>22.00</AliquotaIVA>
</DettaglioLinee>
<DatiRiepilogo>
<AliquotaIVA>22.00</AliquotaIVA>
<ImponibileImporto>0.00</ImponibileImporto>
<Imposta>0.00</Imposta>
<EsigibilitaIVA>I</EsigibilitaIVA>
</DatiRiepilogo>
</DatiBeniServizi>
<DatiPagamento>
<CondizioniPagamento>TP02</CondizioniPagamento>
<DettaglioPagamento>
<ModalitaPagamento>MP05</ModalitaPagamento>
<DataScadenzaPagamento>2022-03-24</DataScadenzaPagamento>
<ImportoPagamento>0.00</ImportoPagamento>
<CodicePagamento>INV/2022/00001</CodicePagamento>
</DettaglioPagamento>
</DatiPagamento>
</FatturaElettronicaBody>
</p:FatturaElettronica>

View file

@ -0,0 +1,129 @@
<?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>
<Telefono>0266766700</Telefono>
<Email>test@test.it</Email>
</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>2022-03-24</Data>
<Numero>___ignore___</Numero>
<ImportoTotaleDocumento>750.00</ImportoTotaleDocumento>
</DatiGeneraliDocumento>
</DatiGenerali>
<DatiBeniServizi>
<DettaglioLinee>
<NumeroLinea>1</NumeroLinea>
<Descrizione>
Construction subcontracting service January
</Descrizione>
<Quantita>1.00</Quantita>
<PrezzoUnitario>350.00000000</PrezzoUnitario>
<PrezzoTotale>350.00000000</PrezzoTotale>
<AliquotaIVA>0.00</AliquotaIVA>
<Natura>N6.3</Natura>
</DettaglioLinee>
<DettaglioLinee>
<NumeroLinea>2</NumeroLinea>
<Descrizione>
Construction subcontracting service February
</Descrizione>
<Quantita>1.00</Quantita>
<PrezzoUnitario>300.00000000</PrezzoUnitario>
<PrezzoTotale>300.00000000</PrezzoTotale>
<AliquotaIVA>0.00</AliquotaIVA>
<Natura>N6.3</Natura>
</DettaglioLinee>
<DettaglioLinee>
<NumeroLinea>3</NumeroLinea>
<Descrizione>
Construction subcontracting service March
</Descrizione>
<Quantita>1.00</Quantita>
<PrezzoUnitario>50.00000000</PrezzoUnitario>
<PrezzoTotale>50.00000000</PrezzoTotale>
<AliquotaIVA>0.00</AliquotaIVA>
<Natura>N6.3</Natura>
</DettaglioLinee>
<DettaglioLinee>
<NumeroLinea>4</NumeroLinea>
<Descrizione>
Construction subcontracting service April
</Descrizione>
<Quantita>1.00</Quantita>
<PrezzoUnitario>50.00000000</PrezzoUnitario>
<PrezzoTotale>50.00000000</PrezzoTotale>
<AliquotaIVA>0.00</AliquotaIVA>
<Natura>N6.3</Natura>
</DettaglioLinee>
<DatiRiepilogo>
<AliquotaIVA>0.00</AliquotaIVA>
<Natura>N6.3</Natura>
<ImponibileImporto>750.00</ImponibileImporto>
<Imposta>0.00</Imposta>
<EsigibilitaIVA>I</EsigibilitaIVA>
<RiferimentoNormativo>test</RiferimentoNormativo>
</DatiRiepilogo>
</DatiBeniServizi>
<DatiPagamento>
<CondizioniPagamento>TP02</CondizioniPagamento>
<DettaglioPagamento>
<ModalitaPagamento>MP05</ModalitaPagamento>
<DataScadenzaPagamento>2022-03-24</DataScadenzaPagamento>
<ImportoPagamento>750.00</ImportoPagamento>
<CodicePagamento>___ignore___</CodicePagamento>
</DettaglioPagamento>
</DatiPagamento>
</FatturaElettronicaBody>
</p:FatturaElettronica>

View file

@ -0,0 +1,89 @@
<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>
<ProgressivoInvio>V202200001</ProgressivoInvio>
<FormatoTrasmissione>FPR12</FormatoTrasmissione>
<CodiceDestinatario>N8MIMM9</CodiceDestinatario>
<ContattiTrasmittente>
<Telefono>0266766700</Telefono>
<Email>test@test.it</Email>
</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>
<CodiceFiscale>MRTMTT91D08F205J</CodiceFiscale>
<Anagrafica>
<Nome>Alessi</Nome>
</Anagrafica>
</DatiAnagrafici>
<Sede>
<Indirizzo></Indirizzo>
<CAP></CAP>
<Nazione>IT</Nazione>
</Sede>
</CessionarioCommittente>
</FatturaElettronicaHeader>
<FatturaElettronicaBody>
<DatiGenerali>
<DatiGeneraliDocumento>
<TipoDocumento>TD01</TipoDocumento>
<Divisa>EUR</Divisa>
<Data>2022-03-24</Data>
<Numero>INV/2022/00001</Numero>
<ImportoTotaleDocumento>976.49</ImportoTotaleDocumento>
</DatiGeneraliDocumento>
</DatiGenerali>
<DatiBeniServizi>
<DettaglioLinee>
<NumeroLinea>1</NumeroLinea>
<Descrizione>line1</Descrizione>
<Quantita>1.00</Quantita>
<PrezzoUnitario>800.40000000</PrezzoUnitario>
<PrezzoTotale>800.40000000</PrezzoTotale>
<AliquotaIVA>22.00</AliquotaIVA>
</DettaglioLinee>
<DatiRiepilogo>
<AliquotaIVA>22.00</AliquotaIVA>
<ImponibileImporto>800.40</ImponibileImporto>
<Imposta>176.09</Imposta>
<EsigibilitaIVA>I</EsigibilitaIVA>
</DatiRiepilogo>
</DatiBeniServizi>
<DatiPagamento>
<CondizioniPagamento>TP02</CondizioniPagamento>
<DettaglioPagamento>
<ModalitaPagamento>MP15</ModalitaPagamento>
<DataScadenzaPagamento>2022-03-24</DataScadenzaPagamento>
<ImportoPagamento>976.49</ImportoPagamento>
<CodicePagamento>INV/2022/00001</CodicePagamento>
</DettaglioPagamento>
</DatiPagamento>
</FatturaElettronicaBody>
</p:FatturaElettronica>

View file

@ -0,0 +1,102 @@
<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>V202200001</ProgressivoInvio>
<FormatoTrasmissione>FPR12</FormatoTrasmissione>
<CodiceDestinatario>0000000</CodiceDestinatario>
<ContattiTrasmittente>
<Telefono>0266766700</Telefono>
<Email>test@test.it</Email>
</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>2022-03-24</Data>
<Numero>INV/2022/00001</Numero>
<ImportoTotaleDocumento>1830.98</ImportoTotaleDocumento>
</DatiGeneraliDocumento>
</DatiGenerali>
<DatiBeniServizi>
<DettaglioLinee>
<NumeroLinea>1</NumeroLinea>
<Descrizione>standard_line</Descrizione>
<Quantita>2.00</Quantita>
<PrezzoUnitario>800.40000000</PrezzoUnitario>
<PrezzoTotale>1600.80000000</PrezzoTotale>
<AliquotaIVA>22.00</AliquotaIVA>
</DettaglioLinee>
<DettaglioLinee>
<NumeroLinea>2</NumeroLinea>
<Descrizione>negative_line</Descrizione>
<Quantita>1.00</Quantita>
<PrezzoUnitario>-100.00000000</PrezzoUnitario>
<PrezzoTotale>-100.00000000</PrezzoTotale>
<AliquotaIVA>22.00</AliquotaIVA>
</DettaglioLinee>
<DatiRiepilogo>
<AliquotaIVA>22.00</AliquotaIVA>
<ImponibileImporto>1500.80</ImponibileImporto>
<Imposta>330.18</Imposta>
<EsigibilitaIVA>I</EsigibilitaIVA>
</DatiRiepilogo>
</DatiBeniServizi>
<DatiPagamento>
<CondizioniPagamento>TP02</CondizioniPagamento>
<DettaglioPagamento>
<ModalitaPagamento>MP05</ModalitaPagamento>
<DataScadenzaPagamento>2022-03-24</DataScadenzaPagamento>
<ImportoPagamento>1830.98</ImportoPagamento>
<CodicePagamento>INV/2022/00001</CodicePagamento>
</DettaglioPagamento>
</DatiPagamento>
</FatturaElettronicaBody>
</p:FatturaElettronica>

View file

@ -0,0 +1,110 @@
<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>V202200001</ProgressivoInvio>
<FormatoTrasmissione>FPR12</FormatoTrasmissione>
<CodiceDestinatario>0000000</CodiceDestinatario>
<ContattiTrasmittente>
<Telefono>0266766700</Telefono>
<Email>test@test.it</Email>
</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>2022-03-24</Data>
<Numero>INV/2022/00001</Numero>
<ImportoTotaleDocumento>2929.46</ImportoTotaleDocumento>
</DatiGeneraliDocumento>
</DatiGenerali>
<DatiBeniServizi>
<DettaglioLinee>
<NumeroLinea>1</NumeroLinea>
<Descrizione>?????</Descrizione>
<Quantita>1.00</Quantita>
<PrezzoUnitario>800.40000000</PrezzoUnitario>
<PrezzoTotale>800.40000000</PrezzoTotale>
<AliquotaIVA>22.00</AliquotaIVA>
</DettaglioLinee>
<DettaglioLinee>
<NumeroLinea>2</NumeroLinea>
<Descrizione>--</Descrizione>
<Quantita>1.00</Quantita>
<PrezzoUnitario>800.40000000</PrezzoUnitario>
<PrezzoTotale>800.40000000</PrezzoTotale>
<AliquotaIVA>22.00</AliquotaIVA>
</DettaglioLinee>
<DettaglioLinee>
<NumeroLinea>3</NumeroLinea>
<Descrizione>this should be the same as it was</Descrizione>
<Quantita>1.00</Quantita>
<PrezzoUnitario>800.40000000</PrezzoUnitario>
<PrezzoTotale>800.40000000</PrezzoTotale>
<AliquotaIVA>22.00</AliquotaIVA>
</DettaglioLinee>
<DatiRiepilogo>
<AliquotaIVA>22.00</AliquotaIVA>
<ImponibileImporto>2401.20</ImponibileImporto>
<Imposta>528.26</Imposta>
<EsigibilitaIVA>I</EsigibilitaIVA>
</DatiRiepilogo>
</DatiBeniServizi>
<DatiPagamento>
<CondizioniPagamento>TP02</CondizioniPagamento>
<DettaglioPagamento>
<ModalitaPagamento>MP05</ModalitaPagamento>
<DataScadenzaPagamento>2022-03-24</DataScadenzaPagamento>
<ImportoPagamento>2929.46</ImportoPagamento>
<CodicePagamento>INV/2022/00001</CodicePagamento>
</DettaglioPagamento>
</DatiPagamento>
</FatturaElettronicaBody>
</p:FatturaElettronica>

View file

@ -0,0 +1,118 @@
<p:FatturaElettronica xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xmlns:p="http://ivaservizi.agenziaentrate.gov.it/docs/xsd/fatture/v1.2"
xmlns:ds="http://www.w3.org/2000/09/xmldsig#"
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>V202200001</ProgressivoInvio>
<FormatoTrasmissione>FPR12</FormatoTrasmissione>
<CodiceDestinatario>0000000</CodiceDestinatario>
<ContattiTrasmittente>
<Telefono>0266766700</Telefono>
<Email>test@test.it</Email>
</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>2022-03-24</Data>
<Numero>INV/2022/00001</Numero>
<ImportoTotaleDocumento>1464.73</ImportoTotaleDocumento>
</DatiGeneraliDocumento>
</DatiGenerali>
<DatiBeniServizi>
<DettaglioLinee>
<NumeroLinea>1</NumeroLinea>
<Descrizione>no discount</Descrizione>
<Quantita>1.00</Quantita>
<PrezzoUnitario>800.40000000</PrezzoUnitario>
<PrezzoTotale>800.40000000</PrezzoTotale>
<AliquotaIVA>22.00</AliquotaIVA>
</DettaglioLinee>
<DettaglioLinee>
<NumeroLinea>2</NumeroLinea>
<Descrizione>special discount</Descrizione>
<Quantita>1.00</Quantita>
<PrezzoUnitario>800.40000000</PrezzoUnitario>
<ScontoMaggiorazione>
<Tipo>SC</Tipo>
<Percentuale>50.00</Percentuale>
</ScontoMaggiorazione>
<PrezzoTotale>400.20000000</PrezzoTotale>
<AliquotaIVA>22.00</AliquotaIVA>
</DettaglioLinee>
<DettaglioLinee>
<NumeroLinea>3</NumeroLinea>
<Descrizione>an offer you can&#39;t refuse</Descrizione>
<Quantita>1.00</Quantita>
<PrezzoUnitario>800.40000000</PrezzoUnitario>
<ScontoMaggiorazione>
<Tipo>SC</Tipo>
<Percentuale>100.00</Percentuale>
</ScontoMaggiorazione>
<PrezzoTotale>0.00000000</PrezzoTotale>
<AliquotaIVA>22.00</AliquotaIVA>
</DettaglioLinee>
<DatiRiepilogo>
<AliquotaIVA>22.00</AliquotaIVA>
<ImponibileImporto>1200.60</ImponibileImporto>
<Imposta>264.13</Imposta>
<EsigibilitaIVA>I</EsigibilitaIVA>
</DatiRiepilogo>
</DatiBeniServizi>
<DatiPagamento>
<CondizioniPagamento>TP02</CondizioniPagamento>
<DettaglioPagamento>
<ModalitaPagamento>MP05</ModalitaPagamento>
<DataScadenzaPagamento>2022-03-24</DataScadenzaPagamento>
<ImportoPagamento>1464.73</ImportoPagamento>
<CodicePagamento>INV/2022/00001</CodicePagamento>
</DettaglioPagamento>
</DatiPagamento>
</FatturaElettronicaBody>
</p:FatturaElettronica>

View file

@ -0,0 +1,111 @@
<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>
<ProgressivoInvio>V202200001</ProgressivoInvio>
<FormatoTrasmissione>FPR12</FormatoTrasmissione>
<CodiceDestinatario>0000000</CodiceDestinatario>
<ContattiTrasmittente>
<Telefono>0266766700</Telefono>
<Email>test@test.it</Email>
</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>2022-03-24</Data>
<Numero>INV/2022/00001</Numero>
<ImportoTotaleDocumento>2577.29</ImportoTotaleDocumento>
</DatiGeneraliDocumento>
</DatiGenerali>
<DatiBeniServizi>
<DettaglioLinee>
<NumeroLinea>1</NumeroLinea>
<Descrizione>something price included</Descrizione>
<Quantita>1.00</Quantita>
<PrezzoUnitario>656.06557377</PrezzoUnitario>
<PrezzoTotale>656.06557377</PrezzoTotale>
<AliquotaIVA>22.00</AliquotaIVA>
</DettaglioLinee>
<DettaglioLinee>
<NumeroLinea>2</NumeroLinea>
<Descrizione>something else price included</Descrizione>
<Quantita>1.00</Quantita>
<PrezzoUnitario>656.06557377</PrezzoUnitario>
<PrezzoTotale>656.06557377</PrezzoTotale>
<AliquotaIVA>22.00</AliquotaIVA>
</DettaglioLinee>
<DettaglioLinee>
<NumeroLinea>3</NumeroLinea>
<Descrizione>something not price included</Descrizione>
<Quantita>1.00</Quantita>
<PrezzoUnitario>800.40000000</PrezzoUnitario>
<PrezzoTotale>800.40000000</PrezzoTotale>
<AliquotaIVA>22.00</AliquotaIVA>
</DettaglioLinee>
<DatiRiepilogo>
<AliquotaIVA>22.00</AliquotaIVA>
<Arrotondamento>-0.00114754</Arrotondamento>
<ImponibileImporto>2112.53</ImponibileImporto>
<Imposta>464.76</Imposta>
<EsigibilitaIVA>I</EsigibilitaIVA>
</DatiRiepilogo>
</DatiBeniServizi>
<DatiPagamento>
<CondizioniPagamento>TP02</CondizioniPagamento>
<DettaglioPagamento>
<ModalitaPagamento>MP05</ModalitaPagamento>
<DataScadenzaPagamento>2022-03-24</DataScadenzaPagamento>
<ImportoPagamento>2577.29</ImportoPagamento>
<CodicePagamento>INV/2022/00001</CodicePagamento>
</DettaglioPagamento>
</DatiPagamento>
</FatturaElettronicaBody>
</p:FatturaElettronica>

View file

@ -0,0 +1,57 @@
<p:FatturaElettronicaSemplificata xmlns:ds="http://www.w3.org/2000/09/xmldsig#"
xmlns:p="http://ivaservizi.agenziaentrate.gov.it/docs/xsd/fatture/v1.0"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://ivaservizi.agenziaentrate.gov.it/docs/xsd/fatture/v1.0 http://www.fatturapa.gov.it/export/fatturazione/sdi/fatturapa/v1.0/Schema_del_file_xml_FatturaPA_versione_1.0.xsd" versione="FSM10">
<FatturaElettronicaHeader>
<DatiTrasmissione>
<IdTrasmittente>
<IdPaese>IT</IdPaese>
<IdCodice>07149930583</IdCodice>
</IdTrasmittente>
<ProgressivoInvio>V202200001</ProgressivoInvio>
<FormatoTrasmissione>FSM10</FormatoTrasmissione>
<CodiceDestinatario>0000000</CodiceDestinatario>
</DatiTrasmissione>
<CedentePrestatore>
<IdFiscaleIVA>
<IdPaese>IT</IdPaese>
<IdCodice>01234560157</IdCodice>
</IdFiscaleIVA>
<CodiceFiscale>07149930583</CodiceFiscale>
<Denominazione>company_2_data</Denominazione>
<Sede>
<Indirizzo>1234 Test Street</Indirizzo>
<CAP>12345</CAP>
<Comune>Prova</Comune>
<Nazione>IT</Nazione>
</Sede>
<RegimeFiscale>RF01</RegimeFiscale>
</CedentePrestatore>
<CessionarioCommittente>
<IdentificativiFiscali>
<IdFiscaleIVA>
<IdPaese>IT</IdPaese>
<IdCodice>00465840031</IdCodice>
</IdFiscaleIVA>
</IdentificativiFiscali>
</CessionarioCommittente>
</FatturaElettronicaHeader>
<FatturaElettronicaBody>
<DatiGenerali>
<DatiGeneraliDocumento>
<TipoDocumento>TD07</TipoDocumento>
<Divisa>EUR</Divisa>
<Data>2022-03-24</Data>
<Numero>INV/2022/00001</Numero>
</DatiGeneraliDocumento>
</DatiGenerali>
<DatiBeniServizi>
<Descrizione>
400_line
</Descrizione>
<Importo>400.00</Importo>
<DatiIVA>
<Imposta>72.13</Imposta>
</DatiIVA>
</DatiBeniServizi>
</FatturaElettronicaBody>
</p:FatturaElettronicaSemplificata>

View file

@ -0,0 +1,94 @@
<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>07149930583</IdCodice>
</IdTrasmittente>
<ProgressivoInvio>V202200001</ProgressivoInvio>
<FormatoTrasmissione>FPR12</FormatoTrasmissione>
<CodiceDestinatario>0000000</CodiceDestinatario>
<ContattiTrasmittente>
<Telefono>0266766700</Telefono>
<Email>test@test.it</Email>
</ContattiTrasmittente>
</DatiTrasmissione>
<CedentePrestatore>
<DatiAnagrafici>
<IdFiscaleIVA>
<IdPaese>IT</IdPaese>
<IdCodice>01698911003</IdCodice>
</IdFiscaleIVA>
<CodiceFiscale>07149930583</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>2022-03-24</Data>
<Numero>INV/2022/00001</Numero>
<ImportoTotaleDocumento>976.49</ImportoTotaleDocumento>
</DatiGeneraliDocumento>
</DatiGenerali>
<DatiBeniServizi>
<DettaglioLinee>
<NumeroLinea>1</NumeroLinea>
<Descrizione>line1</Descrizione>
<Quantita>1.00</Quantita>
<PrezzoUnitario>800.40000000</PrezzoUnitario>
<PrezzoTotale>800.40000000</PrezzoTotale>
<AliquotaIVA>22.00</AliquotaIVA>
</DettaglioLinee>
<DatiRiepilogo>
<AliquotaIVA>22.00</AliquotaIVA>
<ImponibileImporto>800.40</ImponibileImporto>
<Imposta>176.09</Imposta>
<EsigibilitaIVA>I</EsigibilitaIVA>
</DatiRiepilogo>
</DatiBeniServizi>
<DatiPagamento>
<CondizioniPagamento>TP02</CondizioniPagamento>
<DettaglioPagamento>
<ModalitaPagamento>MP05</ModalitaPagamento>
<DataScadenzaPagamento>2022-03-24</DataScadenzaPagamento>
<ImportoPagamento>976.49</ImportoPagamento>
<CodicePagamento>INV/2022/00001</CodicePagamento>
</DettaglioPagamento>
</DatiPagamento>
</FatturaElettronicaBody>
</p:FatturaElettronica>

View file

@ -0,0 +1,94 @@
<p:FatturaElettronica xmlns:ds="http://www.w3.org/2000/09/xmldsig#"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xmlns:p="http://ivaservizi.agenziaentrate.gov.it/docs/xsd/fatture/v1.2"
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>V202200001</ProgressivoInvio>
<FormatoTrasmissione>FPR12</FormatoTrasmissione>
<CodiceDestinatario>0000000</CodiceDestinatario>
<ContattiTrasmittente>
<Telefono>0266766700</Telefono>
<Email>test@test.it</Email>
</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>2022-03-24</Data>
<Numero>INV/2022/00001</Numero>
<ImportoTotaleDocumento>976.49</ImportoTotaleDocumento>
</DatiGeneraliDocumento>
</DatiGenerali>
<DatiBeniServizi>
<DettaglioLinee>
<NumeroLinea>1</NumeroLinea>
<Descrizione>High-quality ergonomic office chair. Breathable mesh back and cushioned seat. Adjustable height and lumbar support. Supports up to 120 kg weight capacity. Ideal for home and corporate workspaces.</Descrizione>
<Quantita>1.00</Quantita>
<PrezzoUnitario>800.40000000</PrezzoUnitario>
<PrezzoTotale>800.40000000</PrezzoTotale>
<AliquotaIVA>22.00</AliquotaIVA>
</DettaglioLinee>
<DatiRiepilogo>
<AliquotaIVA>22.00</AliquotaIVA>
<ImponibileImporto>800.40</ImponibileImporto>
<Imposta>176.09</Imposta>
<EsigibilitaIVA>I</EsigibilitaIVA>
</DatiRiepilogo>
</DatiBeniServizi>
<DatiPagamento>
<CondizioniPagamento>TP02</CondizioniPagamento>
<DettaglioPagamento>
<ModalitaPagamento>MP05</ModalitaPagamento>
<DataScadenzaPagamento>2022-03-24</DataScadenzaPagamento>
<ImportoPagamento>976.49</ImportoPagamento>
<CodicePagamento>INV/2022/00001</CodicePagamento>
</DettaglioPagamento>
</DatiPagamento>
</FatturaElettronicaBody>
</p:FatturaElettronica>

View file

@ -0,0 +1,109 @@
<?xml version='1.0' encoding='UTF-8'?>
<p:FatturaElettronica xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:p="http://ivaservizi.agenziaentrate.gov.it/docs/xsd/fatture/v1.2" xmlns:ds="http://www.w3.org/2000/09/xmldsig#" 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>V202200001</ProgressivoInvio>
<FormatoTrasmissione>FPR12</FormatoTrasmissione>
<CodiceDestinatario>XXXXXXX</CodiceDestinatario>
<ContattiTrasmittente>
<Telefono>0266766700</Telefono>
<Email>test@test.it</Email>
</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>BE</IdPaese>
<IdCodice>0477472701</IdCodice>
</IdFiscaleIVA>
<Anagrafica>
<Denominazione>Alessi</Denominazione>
</Anagrafica>
</DatiAnagrafici>
<Sede>
<Indirizzo></Indirizzo>
<CAP>00000</CAP>
<Nazione>BE</Nazione>
</Sede>
</CessionarioCommittente>
</FatturaElettronicaHeader>
<FatturaElettronicaBody>
<DatiGenerali>
<DatiGeneraliDocumento>
<TipoDocumento>TD01</TipoDocumento>
<Divisa>EUR</Divisa>
<Data>2022-03-24</Data>
<Numero>INV/2022/00001</Numero>
<ImportoTotaleDocumento>120.00</ImportoTotaleDocumento>
</DatiGeneraliDocumento>
</DatiGenerali>
<DatiBeniServizi>
<DettaglioLinee>
<NumeroLinea>1</NumeroLinea>
<Descrizione>Product A</Descrizione>
<Quantita>1.00</Quantita>
<PrezzoUnitario>100.00000000</PrezzoUnitario>
<PrezzoTotale>100.00000000</PrezzoTotale>
<AliquotaIVA>0.00</AliquotaIVA>
<Natura>N7</Natura>
</DettaglioLinee>
<DettaglioLinee>
<NumeroLinea>2</NumeroLinea>
<Descrizione>VAT IT 20.0 collected via OSS</Descrizione>
<Quantita>1.00</Quantita>
<PrezzoUnitario>20.00000000</PrezzoUnitario>
<PrezzoTotale>20.00000000</PrezzoTotale>
<AliquotaIVA>0.00</AliquotaIVA>
<Natura>N2.2</Natura>
</DettaglioLinee>
<DatiRiepilogo>
<AliquotaIVA>0.00</AliquotaIVA>
<Natura>N7</Natura>
<ImponibileImporto>100.00</ImponibileImporto>
<Imposta>0.00</Imposta>
<EsigibilitaIVA>I</EsigibilitaIVA>
<RiferimentoNormativo>Fuori dall'Unione Europea</RiferimentoNormativo>
</DatiRiepilogo>
<DatiRiepilogo>
<AliquotaIVA>0.00</AliquotaIVA>
<Natura>N2.2</Natura>
<ImponibileImporto>20.00</ImponibileImporto>
<Imposta>0.00</Imposta>
<EsigibilitaIVA>I</EsigibilitaIVA>
<RiferimentoNormativo>Fuori dall'Unione Europea</RiferimentoNormativo>
</DatiRiepilogo>
</DatiBeniServizi>
<DatiPagamento>
<CondizioniPagamento>TP02</CondizioniPagamento>
<DettaglioPagamento>
<ModalitaPagamento>MP05</ModalitaPagamento>
<DataScadenzaPagamento>2022-03-24</DataScadenzaPagamento>
<ImportoPagamento>120.00</ImportoPagamento>
<CodicePagamento>INV/2022/00001</CodicePagamento>
</DettaglioPagamento>
</DatiPagamento>
</FatturaElettronicaBody>
</p:FatturaElettronica>

View file

@ -0,0 +1,111 @@
<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>V202200001</ProgressivoInvio>
<FormatoTrasmissione>FPR12</FormatoTrasmissione>
<CodiceDestinatario>0000000</CodiceDestinatario>
<ContattiTrasmittente>
<Telefono>0266766700</Telefono>
<Email>test@test.it</Email>
</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>2022-03-24</Data>
<Numero>INV/2022/00001</Numero>
<ImportoTotaleDocumento>122.00</ImportoTotaleDocumento>
</DatiGeneraliDocumento>
</DatiGenerali>
<DatiBeniServizi>
<DettaglioLinee>
<NumeroLinea>1</NumeroLinea>
<Descrizione>standard_line</Descrizione>
<Quantita>1.00</Quantita>
<PrezzoUnitario>100.02000000</PrezzoUnitario>
<PrezzoTotale>100.02000000</PrezzoTotale>
<AliquotaIVA>22.00</AliquotaIVA>
</DettaglioLinee>
<DettaglioLinee>
<NumeroLinea>2</NumeroLinea>
<Descrizione>Rounding to 0.05</Descrizione>
<Quantita>1.00</Quantita>
<PrezzoUnitario>-0.02000000</PrezzoUnitario>
<PrezzoTotale>-0.02000000</PrezzoTotale>
<AliquotaIVA>0.00</AliquotaIVA>
<Natura>N2.2</Natura>
</DettaglioLinee>
<DatiRiepilogo>
<AliquotaIVA>22.00</AliquotaIVA>
<ImponibileImporto>100.02</ImponibileImporto>
<Imposta>22.00</Imposta>
<EsigibilitaIVA>I</EsigibilitaIVA>
</DatiRiepilogo>
<DatiRiepilogo>
<AliquotaIVA>0.00</AliquotaIVA>
<Natura>N2.2</Natura>
<ImponibileImporto>-0.02</ImponibileImporto>
<Imposta>0.00</Imposta>
<EsigibilitaIVA>I</EsigibilitaIVA>
<RiferimentoNormativo>Fuori dall'Unione Europea</RiferimentoNormativo>
</DatiRiepilogo>
</DatiBeniServizi>
<DatiPagamento>
<CondizioniPagamento>TP02</CondizioniPagamento>
<DettaglioPagamento>
<ModalitaPagamento>MP05</ModalitaPagamento>
<DataScadenzaPagamento>2022-03-24</DataScadenzaPagamento>
<ImportoPagamento>122.00</ImportoPagamento>
<CodicePagamento>INV/2022/00001</CodicePagamento>
</DettaglioPagamento>
</DatiPagamento>
</FatturaElettronicaBody>
</p:FatturaElettronica>

View file

@ -0,0 +1,150 @@
<?xml version="1.0"?>
<p:FatturaElettronica xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xmlns:ds="http://www.w3.org/2000/09/xmldsig#"
xmlns:p="http://ivaservizi.agenziaentrate.gov.it/docs/xsd/fatture/v1.2" 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>
<Telefono>0266766700</Telefono>
<Email>test@test.it</Email>
</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>2022-03-24</Data>
<Numero>___ignore___</Numero>
<DatiRitenuta>
<TipoRitenuta>RT02</TipoRitenuta>
<ImportoRitenuta>150.00</ImportoRitenuta>
<AliquotaRitenuta>20.00</AliquotaRitenuta>
<CausalePagamento>A</CausalePagamento>
</DatiRitenuta>
<DatiCassaPrevidenziale>
<TipoCassa>TC01</TipoCassa>
<AlCassa>4.00</AlCassa>
<ImportoContributoCassa>30.00</ImportoContributoCassa>
<ImponibileCassa>750.00</ImponibileCassa>
<AliquotaIVA>22.00</AliquotaIVA>
</DatiCassaPrevidenziale>
<ImportoTotaleDocumento>951.60</ImportoTotaleDocumento>
</DatiGeneraliDocumento>
</DatiGenerali>
<DatiBeniServizi>
<DettaglioLinee>
<NumeroLinea>1</NumeroLinea>
<Descrizione>Ordinary accounting service for the year</Descrizione>
<Quantita>1.00</Quantita>
<PrezzoUnitario>350.00000000</PrezzoUnitario>
<PrezzoTotale>350.00000000</PrezzoTotale>
<AliquotaIVA>22.00</AliquotaIVA>
<Ritenuta>SI</Ritenuta>
<AltriDatiGestionali>
<TipoDato>AswCassPre</TipoDato>
<RiferimentoTesto>TC01 (4%)</RiferimentoTesto>
</AltriDatiGestionali>
</DettaglioLinee>
<DettaglioLinee>
<NumeroLinea>2</NumeroLinea>
<Descrizione>Balance deposit for the past year</Descrizione>
<Quantita>1.00</Quantita>
<PrezzoUnitario>300.00000000</PrezzoUnitario>
<PrezzoTotale>300.00000000</PrezzoTotale>
<AliquotaIVA>22.00</AliquotaIVA>
<Ritenuta>SI</Ritenuta>
<AltriDatiGestionali>
<TipoDato>AswCassPre</TipoDato>
<RiferimentoTesto>TC01 (4%)</RiferimentoTesto>
</AltriDatiGestionali>
</DettaglioLinee>
<DettaglioLinee>
<NumeroLinea>3</NumeroLinea>
<Descrizione>Ordinary accounting service for the trimester</Descrizione>
<Quantita>1.00</Quantita>
<PrezzoUnitario>50.00000000</PrezzoUnitario>
<PrezzoTotale>50.00000000</PrezzoTotale>
<AliquotaIVA>22.00</AliquotaIVA>
<Ritenuta>SI</Ritenuta>
<AltriDatiGestionali>
<TipoDato>AswCassPre</TipoDato>
<RiferimentoTesto>TC01 (4%)</RiferimentoTesto>
</AltriDatiGestionali>
</DettaglioLinee>
<DettaglioLinee>
<NumeroLinea>4</NumeroLinea>
<Descrizione>Electronic invoices management</Descrizione>
<Quantita>1.00</Quantita>
<PrezzoUnitario>50.00000000</PrezzoUnitario>
<PrezzoTotale>50.00000000</PrezzoTotale>
<AliquotaIVA>22.00</AliquotaIVA>
<Ritenuta>SI</Ritenuta>
<AltriDatiGestionali>
<TipoDato>AswCassPre</TipoDato>
<RiferimentoTesto>TC01 (4%)</RiferimentoTesto>
</AltriDatiGestionali>
</DettaglioLinee>
<DatiRiepilogo>
<AliquotaIVA>22.00</AliquotaIVA>
<ImponibileImporto>780.00</ImponibileImporto>
<Imposta>171.60</Imposta>
<EsigibilitaIVA>I</EsigibilitaIVA>
</DatiRiepilogo>
</DatiBeniServizi>
<DatiPagamento>
<CondizioniPagamento>TP02</CondizioniPagamento>
<DettaglioPagamento>
<ModalitaPagamento>MP05</ModalitaPagamento>
<DataScadenzaPagamento>2022-03-24</DataScadenzaPagamento>
<ImportoPagamento>801.60</ImportoPagamento>
<CodicePagamento>___ignore___</CodicePagamento>
</DettaglioPagamento>
</DatiPagamento>
</FatturaElettronicaBody>
</p:FatturaElettronica>

View file

@ -0,0 +1,105 @@
<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>V202500001</ProgressivoInvio>
<FormatoTrasmissione>FPR12</FormatoTrasmissione>
<CodiceDestinatario>0000000</CodiceDestinatario>
<ContattiTrasmittente>
<Telefono>0266766700</Telefono>
<Email>test@test.it</Email>
</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>2025-02-24</Data>
<Numero>INV/2025/00001</Numero>
<ImportoTotaleDocumento>78.90</ImportoTotaleDocumento>
</DatiGeneraliDocumento>
</DatiGenerali>
<DatiBeniServizi>
<DettaglioLinee>
<NumeroLinea>1</NumeroLinea>
<Descrizione>test line</Descrizione>
<Quantita>1.00</Quantita>
<PrezzoUnitario>64.66662579</PrezzoUnitario>
<PrezzoTotale>64.66662579</PrezzoTotale>
<AliquotaIVA>22.00</AliquotaIVA>
<AltriDatiGestionali>
<TipoDato>DIVISA</TipoDato>
<RiferimentoTesto>USD</RiferimentoTesto>
<RiferimentoNumero>100.00000000</RiferimentoNumero>
</AltriDatiGestionali>
<AltriDatiGestionali>
<TipoDato>CAMBIO</TipoDato>
<RiferimentoNumero>1.54639273</RiferimentoNumero>
<RiferimentoData>2025-02-24</RiferimentoData>
</AltriDatiGestionali>
</DettaglioLinee>
<DatiRiepilogo>
<AliquotaIVA>22.00</AliquotaIVA>
<Arrotondamento>0.00337421</Arrotondamento>
<ImponibileImporto>64.67</ImponibileImporto>
<Imposta>14.23</Imposta>
<EsigibilitaIVA>I</EsigibilitaIVA>
</DatiRiepilogo>
</DatiBeniServizi>
<DatiPagamento>
<CondizioniPagamento>TP02</CondizioniPagamento>
<DettaglioPagamento>
<ModalitaPagamento>MP05</ModalitaPagamento>
<DataScadenzaPagamento>2025-03-07</DataScadenzaPagamento>
<ImportoPagamento>122.00</ImportoPagamento>
<CodicePagamento>INV/2025/00001</CodicePagamento>
</DettaglioPagamento>
</DatiPagamento>
</FatturaElettronicaBody>
</p:FatturaElettronica>

View file

@ -6,9 +6,12 @@
<IdPaese>IT</IdPaese>
<IdCodice>01234560157</IdCodice>
</IdTrasmittente>
<ProgressivoInvio>___ignore___</ProgressivoInvio>
<FormatoTrasmissione>FPA12</FormatoTrasmissione>
<CodiceDestinatario>123456</CodiceDestinatario>
<ContattiTrasmittente>
<Telefono>0266766700</Telefono>
<Email>test@test.it</Email>
</ContattiTrasmittente>
</DatiTrasmissione>
<CedentePrestatore>
@ -70,8 +73,8 @@
<NumeroLinea>1</NumeroLinea>
<Descrizione>standard_line</Descrizione>
<Quantita>1.00</Quantita>
<PrezzoUnitario>800.400000</PrezzoUnitario>
<PrezzoTotale>800.40</PrezzoTotale>
<PrezzoUnitario>800.40000000</PrezzoUnitario>
<PrezzoTotale>800.40000000</PrezzoTotale>
<AliquotaIVA>22.00</AliquotaIVA>
</DettaglioLinee>
<DatiRiepilogo>

View file

@ -6,9 +6,12 @@
<IdPaese>IT</IdPaese>
<IdCodice>01234560157</IdCodice>
</IdTrasmittente>
<ProgressivoInvio>___ignore___</ProgressivoInvio>
<FormatoTrasmissione>FPA12</FormatoTrasmissione>
<CodiceDestinatario>123456</CodiceDestinatario>
<ContattiTrasmittente>
<Telefono>0266766700</Telefono>
<Email>test@test.it</Email>
</ContattiTrasmittente>
</DatiTrasmissione>
<CedentePrestatore>
@ -68,8 +71,8 @@
<NumeroLinea>1</NumeroLinea>
<Descrizione>standard_line</Descrizione>
<Quantita>1.00</Quantita>
<PrezzoUnitario>800.400000</PrezzoUnitario>
<PrezzoTotale>800.40</PrezzoTotale>
<PrezzoUnitario>800.40000000</PrezzoUnitario>
<PrezzoTotale>800.40000000</PrezzoTotale>
<AliquotaIVA>22.00</AliquotaIVA>
</DettaglioLinee>
<DatiRiepilogo>

View file

@ -0,0 +1,119 @@
<?xml version='1.0' encoding='UTF-8'?>
<p:FatturaElettronica xmlns:ds="http://www.w3.org/2000/09/xmldsig#" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:p="http://ivaservizi.agenziaentrate.gov.it/docs/xsd/fatture/v1.2" 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>V202500003</ProgressivoInvio>
<FormatoTrasmissione>FPR12</FormatoTrasmissione>
<CodiceDestinatario>0000000</CodiceDestinatario>
<ContattiTrasmittente>
<Telefono>0266766700</Telefono>
<Email>test@test.it</Email>
</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>2025-02-03</Data>
<Numero>INV/2025/00003</Numero>
<ImportoTotaleDocumento>94.00</ImportoTotaleDocumento>
</DatiGeneraliDocumento>
<DatiOrdineAcquisto>
<IdDocumento>SO-IT0001</IdDocumento>
</DatiOrdineAcquisto>
<DatiFattureCollegate>
<IdDocumento>INV/2025/00001</IdDocumento>
<Data>2025-02-03</Data>
</DatiFattureCollegate>
<DatiFattureCollegate>
<IdDocumento>INV/2025/00002</IdDocumento>
<Data>2025-02-03</Data>
</DatiFattureCollegate>
</DatiGenerali>
<DatiBeniServizi>
<DettaglioLinee>
<NumeroLinea>1</NumeroLinea>
<Descrizione>Test Service Product</Descrizione>
<Quantita>1.00</Quantita>
<PrezzoUnitario>200.00000000</PrezzoUnitario>
<PrezzoTotale>200.00000000</PrezzoTotale>
<AliquotaIVA>22.00</AliquotaIVA>
</DettaglioLinee>
<DettaglioLinee>
<NumeroLinea>2</NumeroLinea>
<Descrizione>Down Payment (ref: INV/2025/00001 on 02/03/2025), INV/2025/00001</Descrizione>
<Quantita>1.00</Quantita>
<PrezzoUnitario>-40.98360656</PrezzoUnitario>
<PrezzoTotale>-40.98360656</PrezzoTotale>
<AliquotaIVA>22.00</AliquotaIVA>
</DettaglioLinee>
<DettaglioLinee>
<NumeroLinea>3</NumeroLinea>
<Descrizione>Down Payment (ref: INV/2025/00002 on 02/03/2025), INV/2025/00002</Descrizione>
<Quantita>1.00</Quantita>
<PrezzoUnitario>-81.96721311</PrezzoUnitario>
<PrezzoTotale>-81.96721311</PrezzoTotale>
<AliquotaIVA>22.00</AliquotaIVA>
</DettaglioLinee>
<DatiRiepilogo>
<AliquotaIVA>22.00</AliquotaIVA>
<Arrotondamento>0.00081967</Arrotondamento>
<ImponibileImporto>77.05</ImponibileImporto>
<Imposta>16.95</Imposta>
<EsigibilitaIVA>I</EsigibilitaIVA>
</DatiRiepilogo>
</DatiBeniServizi>
<DatiPagamento>
<CondizioniPagamento>TP02</CondizioniPagamento>
<DettaglioPagamento>
<ModalitaPagamento>MP05</ModalitaPagamento>
<DataScadenzaPagamento>2025-02-03</DataScadenzaPagamento>
<ImportoPagamento>94.00</ImportoPagamento>
<CodicePagamento>INV/2025/00003</CodicePagamento>
</DettaglioPagamento>
</DatiPagamento>
</FatturaElettronicaBody>
</p:FatturaElettronica>

View file

@ -0,0 +1,127 @@
<?xml version="1.0"?>
<p:FatturaElettronica xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xmlns:ds="http://www.w3.org/2000/09/xmldsig#"
xmlns:p="http://ivaservizi.agenziaentrate.gov.it/docs/xsd/fatture/v1.2" 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>
<Telefono>0266766700</Telefono>
<Email>test@test.it</Email>
</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>2022-03-24</Data>
<Numero>___ignore___</Numero>
<DatiRitenuta>
<TipoRitenuta>RT02</TipoRitenuta>
<ImportoRitenuta>34.50</ImportoRitenuta>
<AliquotaRitenuta>23.00</AliquotaRitenuta>
<CausalePagamento>ZO</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.00000000</PrezzoUnitario>
<PrezzoTotale>350.00000000</PrezzoTotale>
<AliquotaIVA>22.00</AliquotaIVA>
<Ritenuta>SI</Ritenuta>
</DettaglioLinee>
<DettaglioLinee>
<NumeroLinea>2</NumeroLinea>
<Descrizione>Balance deposit for the past year</Descrizione>
<Quantita>1.00</Quantita>
<PrezzoUnitario>300.00000000</PrezzoUnitario>
<PrezzoTotale>300.00000000</PrezzoTotale>
<AliquotaIVA>22.00</AliquotaIVA>
<Ritenuta>SI</Ritenuta>
</DettaglioLinee>
<DettaglioLinee>
<NumeroLinea>3</NumeroLinea>
<Descrizione>Ordinary accounting service for the trimester</Descrizione>
<Quantita>1.00</Quantita>
<PrezzoUnitario>50.00000000</PrezzoUnitario>
<PrezzoTotale>50.00000000</PrezzoTotale>
<AliquotaIVA>22.00</AliquotaIVA>
<Ritenuta>SI</Ritenuta>
</DettaglioLinee>
<DettaglioLinee>
<NumeroLinea>4</NumeroLinea>
<Descrizione>Electronic invoices management</Descrizione>
<Quantita>1.00</Quantita>
<PrezzoUnitario>50.00000000</PrezzoUnitario>
<PrezzoTotale>50.00000000</PrezzoTotale>
<AliquotaIVA>22.00</AliquotaIVA>
<Ritenuta>SI</Ritenuta>
</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>880.50</ImportoPagamento>
<CodicePagamento>___ignore___</CodicePagamento>
</DettaglioPagamento>
</DatiPagamento>
</FatturaElettronicaBody>
</p:FatturaElettronica>

View file

@ -0,0 +1,127 @@
<?xml version="1.0"?>
<p:FatturaElettronica xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xmlns:ds="http://www.w3.org/2000/09/xmldsig#"
xmlns:p="http://ivaservizi.agenziaentrate.gov.it/docs/xsd/fatture/v1.2" 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>
<Telefono>0266766700</Telefono>
<Email>test@test.it</Email>
</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>2022-03-24</Data>
<Numero>___ignore___</Numero>
<DatiRitenuta>
<TipoRitenuta>RT02</TipoRitenuta>
<ImportoRitenuta>86.25</ImportoRitenuta>
<AliquotaRitenuta>23.00</AliquotaRitenuta>
<CausalePagamento>ZO</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.00000000</PrezzoUnitario>
<PrezzoTotale>350.00000000</PrezzoTotale>
<AliquotaIVA>22.00</AliquotaIVA>
<Ritenuta>SI</Ritenuta>
</DettaglioLinee>
<DettaglioLinee>
<NumeroLinea>2</NumeroLinea>
<Descrizione>Balance deposit for the past year</Descrizione>
<Quantita>1.00</Quantita>
<PrezzoUnitario>300.00000000</PrezzoUnitario>
<PrezzoTotale>300.00000000</PrezzoTotale>
<AliquotaIVA>22.00</AliquotaIVA>
<Ritenuta>SI</Ritenuta>
</DettaglioLinee>
<DettaglioLinee>
<NumeroLinea>3</NumeroLinea>
<Descrizione>Ordinary accounting service for the trimester</Descrizione>
<Quantita>1.00</Quantita>
<PrezzoUnitario>50.00000000</PrezzoUnitario>
<PrezzoTotale>50.00000000</PrezzoTotale>
<AliquotaIVA>22.00</AliquotaIVA>
<Ritenuta>SI</Ritenuta>
</DettaglioLinee>
<DettaglioLinee>
<NumeroLinea>4</NumeroLinea>
<Descrizione>Electronic invoices management</Descrizione>
<Quantita>1.00</Quantita>
<PrezzoUnitario>50.00000000</PrezzoUnitario>
<PrezzoTotale>50.00000000</PrezzoTotale>
<AliquotaIVA>22.00</AliquotaIVA>
<Ritenuta>SI</Ritenuta>
</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>828.75</ImportoPagamento>
<CodicePagamento>___ignore___</CodicePagamento>
</DettaglioPagamento>
</DatiPagamento>
</FatturaElettronicaBody>
</p:FatturaElettronica>

View file

@ -0,0 +1,127 @@
<?xml version="1.0"?>
<p:FatturaElettronica xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xmlns:ds="http://www.w3.org/2000/09/xmldsig#"
xmlns:p="http://ivaservizi.agenziaentrate.gov.it/docs/xsd/fatture/v1.2" 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>
<Telefono>0266766700</Telefono>
<Email>test@test.it</Email>
</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>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.00000000</PrezzoUnitario>
<PrezzoTotale>350.00000000</PrezzoTotale>
<AliquotaIVA>22.00</AliquotaIVA>
<Ritenuta>SI</Ritenuta>
</DettaglioLinee>
<DettaglioLinee>
<NumeroLinea>2</NumeroLinea>
<Descrizione>Balance deposit for the past year</Descrizione>
<Quantita>1.00</Quantita>
<PrezzoUnitario>300.00000000</PrezzoUnitario>
<PrezzoTotale>300.00000000</PrezzoTotale>
<AliquotaIVA>22.00</AliquotaIVA>
<Ritenuta>SI</Ritenuta>
</DettaglioLinee>
<DettaglioLinee>
<NumeroLinea>3</NumeroLinea>
<Descrizione>Ordinary accounting service for the trimester</Descrizione>
<Quantita>1.00</Quantita>
<PrezzoUnitario>50.00000000</PrezzoUnitario>
<PrezzoTotale>50.00000000</PrezzoTotale>
<AliquotaIVA>22.00</AliquotaIVA>
<Ritenuta>SI</Ritenuta>
</DettaglioLinee>
<DettaglioLinee>
<NumeroLinea>4</NumeroLinea>
<Descrizione>Electronic invoices management</Descrizione>
<Quantita>1.00</Quantita>
<PrezzoUnitario>50.00000000</PrezzoUnitario>
<PrezzoTotale>50.00000000</PrezzoTotale>
<AliquotaIVA>22.00</AliquotaIVA>
<Ritenuta>SI</Ritenuta>
</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>

View file

@ -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.00000000</PrezzoUnitario>
<PrezzoTotale>350.00000000</PrezzoTotale>
<Ritenuta>SI</Ritenuta>
<AliquotaIVA>22.00</AliquotaIVA>
<AltriDatiGestionali>
<TipoDato>CASSA-PREV</TipoDato>
<RiferimentoTesto>TC07 - ENASARCO (8.5%)</RiferimentoTesto>
<RiferimentoNumero>29.75000000</RiferimentoNumero>
<RiferimentoData/>
</AltriDatiGestionali>
</DettaglioLinee>
<DettaglioLinee>
<NumeroLinea>2</NumeroLinea>
<Descrizione>
Balance deposit for the past year
</Descrizione>
<Quantita>1.00</Quantita>
<PrezzoUnitario>300.00000000</PrezzoUnitario>
<PrezzoTotale>300.00000000</PrezzoTotale>
<Ritenuta>SI</Ritenuta>
<AliquotaIVA>22.00</AliquotaIVA>
<AltriDatiGestionali>
<TipoDato>CASSA-PREV</TipoDato>
<RiferimentoTesto>TC07 - ENASARCO (8.5%)</RiferimentoTesto>
<RiferimentoNumero>25.50000000</RiferimentoNumero>
<RiferimentoData/>
</AltriDatiGestionali>
</DettaglioLinee>
<DettaglioLinee>
<NumeroLinea>3</NumeroLinea>
<Descrizione>
Ordinary accounting service for the trimester
</Descrizione>
<Quantita>1.00</Quantita>
<PrezzoUnitario>50.00000000</PrezzoUnitario>
<PrezzoTotale>50.00000000</PrezzoTotale>
<Ritenuta>SI</Ritenuta>
<AliquotaIVA>22.00</AliquotaIVA>
<AltriDatiGestionali>
<TipoDato>CASSA-PREV</TipoDato>
<RiferimentoTesto>TC07 - ENASARCO (8.5%)</RiferimentoTesto>
<RiferimentoNumero>4.25000000</RiferimentoNumero>
<RiferimentoData/>
</AltriDatiGestionali>
</DettaglioLinee>
<DettaglioLinee>
<NumeroLinea>4</NumeroLinea>
<Descrizione>
Electronic invoices management
</Descrizione>
<Quantita>1.00</Quantita>
<PrezzoUnitario>50.00000000</PrezzoUnitario>
<PrezzoTotale>50.00000000</PrezzoTotale>
<Ritenuta>SI</Ritenuta>
<AliquotaIVA>22.00</AliquotaIVA>
<AltriDatiGestionali>
<TipoDato>CASSA-PREV</TipoDato>
<RiferimentoTesto>TC07 - ENASARCO (8.5%)</RiferimentoTesto>
<RiferimentoNumero>4.25000000</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>

View file

@ -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>

View file

@ -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>
<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.00000000</PrezzoUnitario>
<PrezzoTotale>350.00000000</PrezzoTotale>
<Ritenuta>SI</Ritenuta>
<AliquotaIVA>22.00</AliquotaIVA>
<AltriDatiGestionali>
<TipoDato>AswCassPre</TipoDato>
<RiferimentoTesto>TC22 (4%)</RiferimentoTesto>
</AltriDatiGestionali>
</DettaglioLinee>
<DettaglioLinee>
<NumeroLinea>2</NumeroLinea>
<Descrizione>
Balance deposit for the past year
</Descrizione>
<Quantita>1.00</Quantita>
<PrezzoUnitario>300.00000000</PrezzoUnitario>
<PrezzoTotale>300.00000000</PrezzoTotale>
<Ritenuta>SI</Ritenuta>
<AliquotaIVA>22.00</AliquotaIVA>
<AltriDatiGestionali>
<TipoDato>AswCassPre</TipoDato>
<RiferimentoTesto>TC22 (4%)</RiferimentoTesto>
</AltriDatiGestionali>
</DettaglioLinee>
<DettaglioLinee>
<NumeroLinea>3</NumeroLinea>
<Descrizione>
Ordinary accounting service for the trimester
</Descrizione>
<Quantita>1.00</Quantita>
<PrezzoUnitario>50.00000000</PrezzoUnitario>
<PrezzoTotale>50.00000000</PrezzoTotale>
<Ritenuta>SI</Ritenuta>
<AliquotaIVA>22.00</AliquotaIVA>
<AltriDatiGestionali>
<TipoDato>AswCassPre</TipoDato>
<RiferimentoTesto>TC22 (4%)</RiferimentoTesto>
</AltriDatiGestionali>
</DettaglioLinee>
<DettaglioLinee>
<NumeroLinea>4</NumeroLinea>
<Descrizione>
Electronic invoices management
</Descrizione>
<Quantita>1.00</Quantita>
<PrezzoUnitario>50.00000000</PrezzoUnitario>
<PrezzoTotale>50.00000000</PrezzoTotale>
<Ritenuta>SI</Ritenuta>
<AliquotaIVA>22.00</AliquotaIVA>
<AltriDatiGestionali>
<TipoDato>AswCassPre</TipoDato>
<RiferimentoTesto>TC22 (4%)</RiferimentoTesto>
</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>795.00</ImportoPagamento>
<CodicePagamento>INV/2022/03/0010</CodicePagamento>
</DettaglioPagamento>
</DatiPagamento>
</FatturaElettronicaBody>
</p:FatturaElettronica>

View file

@ -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>34.50</ImportoRitenuta>
<AliquotaRitenuta>23.00</AliquotaRitenuta>
<CausalePagamento>ZO</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.00000000</PrezzoUnitario>
<PrezzoTotale>350.00000000</PrezzoTotale>
<AliquotaIVA>22.00</AliquotaIVA>
<Ritenuta>SI</Ritenuta>
</DettaglioLinee>
<DettaglioLinee>
<NumeroLinea>2</NumeroLinea>
<Descrizione>Balance deposit for the past year</Descrizione>
<Quantita>1.00</Quantita>
<PrezzoUnitario>300.00000000</PrezzoUnitario>
<PrezzoTotale>300.00000000</PrezzoTotale>
<AliquotaIVA>22.00</AliquotaIVA>
<Ritenuta>SI</Ritenuta>
</DettaglioLinee>
<DettaglioLinee>
<NumeroLinea>3</NumeroLinea>
<Descrizione>Ordinary accounting service for the trimester</Descrizione>
<Quantita>1.00</Quantita>
<PrezzoUnitario>50.00000000</PrezzoUnitario>
<PrezzoTotale>50.00000000</PrezzoTotale>
<AliquotaIVA>22.00</AliquotaIVA>
<Ritenuta>SI</Ritenuta>
</DettaglioLinee>
<DettaglioLinee>
<NumeroLinea>4</NumeroLinea>
<Descrizione>Electronic invoices management</Descrizione>
<Quantita>1.00</Quantita>
<PrezzoUnitario>50.00000000</PrezzoUnitario>
<PrezzoTotale>50.00000000</PrezzoTotale>
<AliquotaIVA>22.00</AliquotaIVA>
<Ritenuta>SI</Ritenuta>
</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>880.50</ImportoPagamento>
<CodicePagamento>___ignore___</CodicePagamento>
</DettaglioPagamento>
</DatiPagamento>
</FatturaElettronicaBody>
</p:FatturaElettronica>

View file

@ -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>86.25</ImportoRitenuta>
<AliquotaRitenuta>23.00</AliquotaRitenuta>
<CausalePagamento>ZO</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.00000000</PrezzoUnitario>
<PrezzoTotale>350.00000000</PrezzoTotale>
<AliquotaIVA>22.00</AliquotaIVA>
<Ritenuta>SI</Ritenuta>
</DettaglioLinee>
<DettaglioLinee>
<NumeroLinea>2</NumeroLinea>
<Descrizione>Balance deposit for the past year</Descrizione>
<Quantita>1.00</Quantita>
<PrezzoUnitario>300.00000000</PrezzoUnitario>
<PrezzoTotale>300.00000000</PrezzoTotale>
<AliquotaIVA>22.00</AliquotaIVA>
<Ritenuta>SI</Ritenuta>
</DettaglioLinee>
<DettaglioLinee>
<NumeroLinea>3</NumeroLinea>
<Descrizione>Ordinary accounting service for the trimester</Descrizione>
<Quantita>1.00</Quantita>
<PrezzoUnitario>50.00000000</PrezzoUnitario>
<PrezzoTotale>50.00000000</PrezzoTotale>
<AliquotaIVA>22.00</AliquotaIVA>
<Ritenuta>SI</Ritenuta>
</DettaglioLinee>
<DettaglioLinee>
<NumeroLinea>4</NumeroLinea>
<Descrizione>Electronic invoices management</Descrizione>
<Quantita>1.00</Quantita>
<PrezzoUnitario>50.00000000</PrezzoUnitario>
<PrezzoTotale>50.00000000</PrezzoTotale>
<AliquotaIVA>22.00</AliquotaIVA>
<Ritenuta>SI</Ritenuta>
</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>828.75</ImportoPagamento>
<CodicePagamento>___ignore___</CodicePagamento>
</DettaglioPagamento>
</DatiPagamento>
</FatturaElettronicaBody>
</p:FatturaElettronica>

View file

@ -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.00000000</PrezzoUnitario>
<PrezzoTotale>350.00000000</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.00000000</PrezzoUnitario>
<PrezzoTotale>300.00000000</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.00000000</PrezzoUnitario>
<PrezzoTotale>50.00000000</PrezzoTotale>
<Ritenuta>SI</Ritenuta>
<AliquotaIVA>22.00</AliquotaIVA>
</DettaglioLinee>
<DettaglioLinee>
<NumeroLinea>4</NumeroLinea>
<Descrizione>Electronic invoices management</Descrizione>
<Quantita>1.00</Quantita>
<PrezzoUnitario>50.00000000</PrezzoUnitario>
<PrezzoTotale>50.00000000</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>

View file

@ -0,0 +1,133 @@
<p:FatturaElettronica versione="FPR12" 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">
<FatturaElettronicaHeader>
<DatiTrasmissione>
<IdTrasmittente>
<IdPaese>IT</IdPaese>
<IdCodice>01234560157</IdCodice>
</IdTrasmittente>
<ProgressivoInvio>00001</ProgressivoInvio>
<FormatoTrasmissione>FPR12</FormatoTrasmissione>
<CodiceDestinatario>ABC1234</CodiceDestinatario>
<ContattiTrasmittente/>
</DatiTrasmissione>
<CedentePrestatore>
<DatiAnagrafici>
<IdFiscaleIVA>
<IdPaese>IT</IdPaese>
<IdCodice>00313371213</IdCodice>
</IdFiscaleIVA>
<CodiceFiscale>93026890017</CodiceFiscale>
<Anagrafica>
<Denominazione>SOCIETA' ALPHA SRL</Denominazione>
</Anagrafica>
<RegimeFiscale>RF19</RegimeFiscale>
</DatiAnagrafici>
<Sede>
<Indirizzo>VIALE ROMA 543</Indirizzo>
<CAP>07100</CAP>
<Comune>SASSARI</Comune>
<Provincia>SS</Provincia>
<Nazione>IT</Nazione>
</Sede>
</CedentePrestatore>
<CessionarioCommittente>
<DatiAnagrafici>
<CodiceFiscale>01234560157</CodiceFiscale>
<Anagrafica>
<Denominazione>DITTA BETA</Denominazione>
</Anagrafica>
</DatiAnagrafici>
<Sede>
<Indirizzo>VIA TORINO 38-B</Indirizzo>
<CAP>00145</CAP>
<Comune>ROMA</Comune>
<Provincia>RM</Provincia>
<Nazione>IT</Nazione>
</Sede>
</CessionarioCommittente>
</FatturaElettronicaHeader>
<FatturaElettronicaBody>
<DatiGenerali>
<DatiGeneraliDocumento>
<TipoDocumento>TD01</TipoDocumento>
<Divisa>EUR</Divisa>
<Data>2014-12-18</Data>
<Numero>01234567888</Numero>
<Causale>LA FATTURA FA RIFERIMENTO AD UNA OPERAZIONE AAAA BBBBBBBBBBBBBBBBBB CCC DDDDDDDDDDDDDDD E
FFFFFFFFFFFFFFFFFFFF GGGGGGGGGG HHHHHHH II LLLLLLLLLLLLLLLLL MMM NNNNN OO PPPPPPPPPPP QQQQ RRRR
SSSSSSSSSSSSSS
</Causale>
<Causale>SEGUE DESCRIZIONE CAUSALE NEL CASO IN CUI NON SIANO STATI SUFFICIENTI 200 CARATTERI AAAAAAAAAAA
BBBBBBBBBBBBBBBBB
</Causale>
</DatiGeneraliDocumento>
<DatiOrdineAcquisto>
<RiferimentoNumeroLinea>1</RiferimentoNumeroLinea>
<IdDocumento>66685</IdDocumento>
<NumItem>1</NumItem>
</DatiOrdineAcquisto>
<DatiContratto>
<RiferimentoNumeroLinea>1</RiferimentoNumeroLinea>
<IdDocumento>01234567890</IdDocumento>
<Data>2012-09-01</Data>
<NumItem>5</NumItem>
<CodiceCUP>01234567890abc</CodiceCUP>
<CodiceCIG>456def</CodiceCIG>
</DatiContratto>
<DatiTrasporto>
<DatiAnagraficiVettore>
<IdFiscaleIVA>
<IdPaese>IT</IdPaese>
<IdCodice>24681012141</IdCodice>
</IdFiscaleIVA>
<Anagrafica>
<Denominazione>Trasporto spa</Denominazione>
</Anagrafica>
</DatiAnagraficiVettore>
<DataOraConsegna>2012-10-22T16:46:12.000+02:00</DataOraConsegna>
</DatiTrasporto>
</DatiGenerali>
<DatiBeniServizi>
<DettaglioLinee>
<NumeroLinea>1</NumeroLinea>
<Descrizione>Cool stuff</Descrizione>
<Quantita>5.00</Quantita>
<PrezzoUnitario>1.00</PrezzoUnitario>
<PrezzoTotale>5.00</PrezzoTotale>
<AliquotaIVA>22.00</AliquotaIVA>
</DettaglioLinee>
<DettaglioLinee>
<NumeroLinea>2</NumeroLinea>
<Descrizione>OtherAccount</Descrizione>
<Quantita>3.00</Quantita>
<PrezzoUnitario>8.00</PrezzoUnitario>
<PrezzoTotale>24.00</PrezzoTotale>
<AliquotaIVA>22.00</AliquotaIVA>
</DettaglioLinee>
<DettaglioLinee>
<NumeroLinea>3</NumeroLinea>
<Descrizione>GuessTaxes</Descrizione>
<Quantita>1.00</Quantita>
<PrezzoUnitario>10.00</PrezzoUnitario>
<PrezzoTotale>10.00</PrezzoTotale>
</DettaglioLinee>
<DatiRiepilogo>
<AliquotaIVA>22.00</AliquotaIVA>
<ImponibileImporto>29.00</ImponibileImporto>
<Imposta>6.38</Imposta>
<EsigibilitaIVA>I</EsigibilitaIVA>
</DatiRiepilogo>
</DatiBeniServizi>
<DatiPagamento>
<CondizioniPagamento>TP01</CondizioniPagamento>
<DettaglioPagamento>
<ModalitaPagamento>MP01</ModalitaPagamento>
<DataScadenzaPagamento>2015-01-30</DataScadenzaPagamento>
<ImportoPagamento>36.48</ImportoPagamento>
</DettaglioPagamento>
</DatiPagamento>
</FatturaElettronicaBody>
</p:FatturaElettronica>

View file

@ -0,0 +1,126 @@
<p:FatturaElettronica versione="FPR12" 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">
<FatturaElettronicaHeader>
<DatiTrasmissione>
<IdTrasmittente>
<IdPaese>IT</IdPaese>
<IdCodice>01234560157</IdCodice>
</IdTrasmittente>
<ProgressivoInvio>00001</ProgressivoInvio>
<FormatoTrasmissione>FPR12</FormatoTrasmissione>
<CodiceDestinatario>ABC1234</CodiceDestinatario>
<ContattiTrasmittente/>
</DatiTrasmissione>
<CedentePrestatore>
<DatiAnagrafici>
<IdFiscaleIVA>
<IdPaese>IT</IdPaese>
<IdCodice>00313371213</IdCodice>
</IdFiscaleIVA>
<CodiceFiscale>93026890017</CodiceFiscale>
<Anagrafica>
<Denominazione>SOCIETA' ALPHA SRL</Denominazione>
</Anagrafica>
<RegimeFiscale>RF19</RegimeFiscale>
</DatiAnagrafici>
<Sede>
<Indirizzo>VIALE ROMA 543</Indirizzo>
<CAP>07100</CAP>
<Comune>SASSARI</Comune>
<Provincia>SS</Provincia>
<Nazione>IT</Nazione>
</Sede>
</CedentePrestatore>
<CessionarioCommittente>
<DatiAnagrafici>
<CodiceFiscale>01234560157</CodiceFiscale>
<Anagrafica>
<Denominazione>DITTA BETA</Denominazione>
</Anagrafica>
</DatiAnagrafici>
<Sede>
<Indirizzo>VIA TORINO 38-B</Indirizzo>
<CAP>00145</CAP>
<Comune>ROMA</Comune>
<Provincia>RM</Provincia>
<Nazione>IT</Nazione>
</Sede>
</CessionarioCommittente>
</FatturaElettronicaHeader>
<FatturaElettronicaBody>
<DatiGenerali>
<DatiGeneraliDocumento>
<TipoDocumento>TD01</TipoDocumento>
<Divisa>EUR</Divisa>
<Data>2014-12-18</Data>
<Numero>01234567888</Numero>
<Causale>LA FATTURA FA RIFERIMENTO AD UNA OPERAZIONE AAAA BBBBBBBBBBBBBBBBBB CCC DDDDDDDDDDDDDDD E
FFFFFFFFFFFFFFFFFFFF GGGGGGGGGG HHHHHHH II LLLLLLLLLLLLLLLLL MMM NNNNN OO PPPPPPPPPPP QQQQ RRRR
SSSSSSSSSSSSSS
</Causale>
<Causale>SEGUE DESCRIZIONE CAUSALE NEL CASO IN CUI NON SIANO STATI SUFFICIENTI 200 CARATTERI AAAAAAAAAAA
BBBBBBBBBBBBBBBBB
</Causale>
</DatiGeneraliDocumento>
<DatiOrdineAcquisto>
<RiferimentoNumeroLinea>1</RiferimentoNumeroLinea>
<IdDocumento>66685</IdDocumento>
<NumItem>1</NumItem>
</DatiOrdineAcquisto>
<DatiContratto>
<RiferimentoNumeroLinea>1</RiferimentoNumeroLinea>
<IdDocumento>01234567890</IdDocumento>
<Data>2012-09-01</Data>
<NumItem>5</NumItem>
<CodiceCUP>01234567890abc</CodiceCUP>
<CodiceCIG>456def</CodiceCIG>
</DatiContratto>
<DatiTrasporto>
<DatiAnagraficiVettore>
<IdFiscaleIVA>
<IdPaese>IT</IdPaese>
<IdCodice>24681012141</IdCodice>
</IdFiscaleIVA>
<Anagrafica>
<Denominazione>Trasporto spa</Denominazione>
</Anagrafica>
</DatiAnagraficiVettore>
<DataOraConsegna>2012-10-22T16:46:12.000+02:00</DataOraConsegna>
</DatiTrasporto>
</DatiGenerali>
<DatiBeniServizi>
<DettaglioLinee>
<NumeroLinea>1</NumeroLinea>
<CodiceArticolo>
<CodiceTipo>INTRAAAA</CodiceTipo>
<CodiceValore>38119234</CodiceValore>
</CodiceArticolo>
<CodiceArticolo>
<CodiceTipo>Codice</CodiceTipo>
<CodiceValore>abcdefgh</CodiceValore>
</CodiceArticolo>
<Descrizione>Soluzione</Descrizione>
<Quantita>1.00</Quantita>
<UnitaMisura>NR</UnitaMisura>
<PrezzoUnitario>25.00000000</PrezzoUnitario>
<PrezzoTotale>25.00</PrezzoTotale>
<AliquotaIVA>22.00</AliquotaIVA>
</DettaglioLinee>
<AliquotaIVA>22.00</AliquotaIVA>
<ImponibileImporto>29.00</ImponibileImporto>
<Imposta>6.38</Imposta>
<EsigibilitaIVA>I</EsigibilitaIVA>
</DatiRiepilogo>
</DatiBeniServizi>
<DatiPagamento>
<CondizioniPagamento>TP01</CondizioniPagamento>
<DettaglioPagamento>
<ModalitaPagamento>MP01</ModalitaPagamento>
<DataScadenzaPagamento>2015-01-30</DataScadenzaPagamento>
<ImportoPagamento>36.48</ImportoPagamento>
</DettaglioPagamento>
</DatiPagamento>
</FatturaElettronicaBody>
</p:FatturaElettronica>

View file

@ -0,0 +1,144 @@
<?xml version="1.0" encoding="utf-8"?>
<p:FatturaElettronica versione="FPR12" 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">
<FatturaElettronicaHeader>
<DatiTrasmissione>
<IdTrasmittente>
<IdPaese>IT</IdPaese>
<IdCodice>01234560157</IdCodice>
</IdTrasmittente>
<ProgressivoInvio>00001</ProgressivoInvio>
<FormatoTrasmissione>FPR12</FormatoTrasmissione>
<CodiceDestinatario>ABC1234</CodiceDestinatario>
<ContattiTrasmittente/>
</DatiTrasmissione>
<CedentePrestatore>
<DatiAnagrafici>
<IdFiscaleIVA>
<IdPaese>IT</IdPaese>
<IdCodice>01234560157</IdCodice>
</IdFiscaleIVA>
<CodiceFiscale>01234560157</CodiceFiscale>
<Anagrafica>
<Denominazione>SOCIETA' ALPHA SRL</Denominazione>
</Anagrafica>
<RegimeFiscale>RF19</RegimeFiscale>
</DatiAnagrafici>
<Sede>
<Indirizzo>VIALE ROMA 543</Indirizzo>
<CAP>07100</CAP>
<Comune>SASSARI</Comune>
<Provincia>SS</Provincia>
<Nazione>IT</Nazione>
</Sede>
</CedentePrestatore>
<CessionarioCommittente>
<DatiAnagrafici>
<CodiceFiscale>01234560157</CodiceFiscale>
<Anagrafica>
<Denominazione>DITTA BETA</Denominazione>
</Anagrafica>
</DatiAnagrafici>
<Sede>
<Indirizzo>VIA TORINO 38-B</Indirizzo>
<CAP>00145</CAP>
<Comune>ROMA</Comune>
<Provincia>RM</Provincia>
<Nazione>IT</Nazione>
</Sede>
</CessionarioCommittente>
</FatturaElettronicaHeader>
<FatturaElettronicaBody>
<DatiGenerali>
<DatiGeneraliDocumento>
<TipoDocumento>TD01</TipoDocumento>
<Divisa>EUR</Divisa>
<Data>2014-12-18</Data>
<Numero>01234567890</Numero>
<Causale>
LA FATTURA FA RIFERIMENTO AD UNA OPERAZIONE AAAA BBBBBBBBBBBBBBBBBB CCC DDDDDDDDDDDDDDD
</Causale>
<ImportoTotaleDocumento>35.07</ImportoTotaleDocumento>
</DatiGeneraliDocumento>
<DatiOrdineAcquisto>
<RiferimentoNumeroLinea>1</RiferimentoNumeroLinea>
<IdDocumento>66685</IdDocumento>
<NumItem>1</NumItem>
</DatiOrdineAcquisto>
<DatiContratto>
<RiferimentoNumeroLinea>1</RiferimentoNumeroLinea>
<IdDocumento>01234567890</IdDocumento>
<Data>2012-09-01</Data>
<NumItem>5</NumItem>
<CodiceCUP>01234567890abc</CodiceCUP>
<CodiceCIG>456def</CodiceCIG>
</DatiContratto>
<DatiTrasporto>
<DatiAnagraficiVettore>
<IdFiscaleIVA>
<IdPaese>IT</IdPaese>
<IdCodice>24681012141</IdCodice>
</IdFiscaleIVA>
<Anagrafica>
<Denominazione>Trasporto spa</Denominazione>
</Anagrafica>
</DatiAnagraficiVettore>
<DataOraConsegna>2012-10-22T16:46:12.000+02:00</DataOraConsegna>
</DatiTrasporto>
</DatiGenerali>
<DatiBeniServizi>
<DettaglioLinee>
<NumeroLinea>1</NumeroLinea>
<Descrizione>DESCRIZIONE DELLA FORNITURA</Descrizione>
<Quantita>5.00</Quantita>
<PrezzoUnitario>1.00</PrezzoUnitario>
<PrezzoTotale>5.00</PrezzoTotale>
<AliquotaIVA>22.00</AliquotaIVA>
</DettaglioLinee>
<DettaglioLinee>
<NumeroLinea>2</NumeroLinea>
<Descrizione>DESCRIZIONE DELLA FORNITURA 2</Descrizione>
<Quantita>5.00</Quantita>
<PrezzoUnitario>10.00</PrezzoUnitario>
<ScontoMaggiorazione>
<Tipo>SC</Tipo>
<Importo>5.00</Importo>
</ScontoMaggiorazione>
<ScontoMaggiorazione>
<Tipo>SC</Tipo>
<Percentuale>5.00</Percentuale>
</ScontoMaggiorazione>
<PrezzoTotale>23.75</PrezzoTotale>
<AliquotaIVA>22</AliquotaIVA>
</DettaglioLinee>
<DettaglioLinee>
<NumeroLinea>3</NumeroLinea>
<Descrizione>RIGA DESCRITTIVA A 0</Descrizione>
<Quantita>1.00</Quantita>
<PrezzoUnitario>0.00</PrezzoUnitario>
<ScontoMaggiorazione>
<Tipo>SC</Tipo>
<Importo>0.00</Importo>
</ScontoMaggiorazione>
<PrezzoTotale>0.00</PrezzoTotale>
<AliquotaIVA>22</AliquotaIVA>
</DettaglioLinee>
<DatiRiepilogo>
<AliquotaIVA>22.00</AliquotaIVA>
<ImponibileImporto>28.75</ImponibileImporto>
<Imposta>6.32</Imposta>
<EsigibilitaIVA>I</EsigibilitaIVA>
</DatiRiepilogo>
</DatiBeniServizi>
<DatiPagamento>
<CondizioniPagamento>TP01</CondizioniPagamento>
<DettaglioPagamento>
<ModalitaPagamento>MP01</ModalitaPagamento>
<DataScadenzaPagamento>2015-01-30</DataScadenzaPagamento>
<ImportoPagamento>35.07</ImportoPagamento>
</DettaglioPagamento>
</DatiPagamento>
</FatturaElettronicaBody>
</p:FatturaElettronica>

View file

@ -0,0 +1,117 @@
<p:FatturaElettronica versione="FPR12" 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">
<FatturaElettronicaHeader>
<DatiTrasmissione>
<IdTrasmittente>
<IdPaese>IT</IdPaese>
<IdCodice>01234560157</IdCodice>
</IdTrasmittente>
<ProgressivoInvio>00001</ProgressivoInvio>
<FormatoTrasmissione>FPR12</FormatoTrasmissione>
<CodiceDestinatario>ABC1234</CodiceDestinatario>
<ContattiTrasmittente/>
</DatiTrasmissione>
<CedentePrestatore>
<DatiAnagrafici>
<IdFiscaleIVA>
<IdPaese>IT</IdPaese>
<IdCodice>01234560157</IdCodice>
</IdFiscaleIVA>
<Anagrafica>
<Denominazione>SOCIETA' ALPHA SRL</Denominazione>
</Anagrafica>
<RegimeFiscale>RF19</RegimeFiscale>
</DatiAnagrafici>
<Sede>
<Indirizzo>VIALE ROMA 543</Indirizzo>
<CAP>07100</CAP>
<Comune>SASSARI</Comune>
<Provincia>SS</Provincia>
<Nazione>IT</Nazione>
</Sede>
</CedentePrestatore>
<CessionarioCommittente>
<DatiAnagrafici>
<CodiceFiscale>01234560157</CodiceFiscale>
<Anagrafica>
<Denominazione>DITTA BETA</Denominazione>
</Anagrafica>
</DatiAnagrafici>
<Sede>
<Indirizzo>VIA TORINO 38-B</Indirizzo>
<CAP>00145</CAP>
<Comune>ROMA</Comune>
<Provincia>RM</Provincia>
<Nazione>IT</Nazione>
</Sede>
</CessionarioCommittente>
</FatturaElettronicaHeader>
<FatturaElettronicaBody>
<DatiGenerali>
<DatiGeneraliDocumento>
<TipoDocumento>TD01</TipoDocumento>
<Divisa>EUR</Divisa>
<Data>2014-12-18</Data>
<Numero>01234567890</Numero>
<Causale>LA FATTURA FA RIFERIMENTO AD UNA OPERAZIONE AAAA BBBBBBBBBBBBBBBBBB CCC DDDDDDDDDDDDDDD E
FFFFFFFFFFFFFFFFFFFF GGGGGGGGGG HHHHHHH II LLLLLLLLLLLLLLLLL MMM NNNNN OO PPPPPPPPPPP QQQQ RRRR
SSSSSSSSSSSSSS
</Causale>
<Causale>SEGUE DESCRIZIONE CAUSALE NEL CASO IN CUI NON SIANO STATI SUFFICIENTI 200 CARATTERI AAAAAAAAAAA
BBBBBBBBBBBBBBBBB
</Causale>
</DatiGeneraliDocumento>
<DatiOrdineAcquisto>
<RiferimentoNumeroLinea>1</RiferimentoNumeroLinea>
<IdDocumento>66685</IdDocumento>
<NumItem>1</NumItem>
</DatiOrdineAcquisto>
<DatiContratto>
<RiferimentoNumeroLinea>1</RiferimentoNumeroLinea>
<IdDocumento>01234567890</IdDocumento>
<Data>2012-09-01</Data>
<NumItem>5</NumItem>
<CodiceCUP>01234567890abc</CodiceCUP>
<CodiceCIG>456def</CodiceCIG>
</DatiContratto>
<DatiTrasporto>
<DatiAnagraficiVettore>
<IdFiscaleIVA>
<IdPaese>IT</IdPaese>
<IdCodice>24681012141</IdCodice>
</IdFiscaleIVA>
<Anagrafica>
<Denominazione>Trasporto spa</Denominazione>
</Anagrafica>
</DatiAnagraficiVettore>
<DataOraConsegna>2012-10-22T16:46:12.000+02:00</DataOraConsegna>
</DatiTrasporto>
</DatiGenerali>
<DatiBeniServizi>
<DettaglioLinee>
<NumeroLinea>1</NumeroLinea>
<Descrizione>DESCRIZIONE DELLA FORNITURA</Descrizione>
<Quantita>5.00</Quantita>
<PrezzoUnitario>1.00</PrezzoUnitario>
<PrezzoTotale>5.00</PrezzoTotale>
<AliquotaIVA>22.00</AliquotaIVA>
</DettaglioLinee>
<DatiRiepilogo>
<AliquotaIVA>22.00</AliquotaIVA>
<ImponibileImporto>5.00</ImponibileImporto>
<Imposta>1.10</Imposta>
<EsigibilitaIVA>I</EsigibilitaIVA>
</DatiRiepilogo>
</DatiBeniServizi>
<DatiPagamento>
<CondizioniPagamento>TP01</CondizioniPagamento>
<DettaglioPagamento>
<ModalitaPagamento>MP01</ModalitaPagamento>
<DataScadenzaPagamento>2015-01-30</DataScadenzaPagamento>
<ImportoPagamento>6.10</ImportoPagamento>
</DettaglioPagamento>
</DatiPagamento>
</FatturaElettronicaBody>
</p:FatturaElettronica>

View file

@ -0,0 +1,111 @@
<p:FatturaElettronica versione="FPR12" 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">
<FatturaElettronicaHeader>
<DatiTrasmissione>
<IdTrasmittente>
<IdPaese>IT</IdPaese>
<IdCodice>01234560157</IdCodice>
</IdTrasmittente>
<ProgressivoInvio>00001</ProgressivoInvio>
<FormatoTrasmissione>FPR12</FormatoTrasmissione>
<CodiceDestinatario>ABC1234</CodiceDestinatario>
<ContattiTrasmittente/>
</DatiTrasmissione>
<CedentePrestatore>
<DatiAnagrafici>
<IdFiscaleIVA>
<IdPaese>IT</IdPaese>
<IdCodice>01234560157</IdCodice>
</IdFiscaleIVA>
<Anagrafica>
<Denominazione>SOCIETA' ALPHA SRL</Denominazione>
</Anagrafica>
<RegimeFiscale>RF19</RegimeFiscale>
</DatiAnagrafici>
<Sede>
<Indirizzo>VIALE ROMA 543</Indirizzo>
<CAP>07100</CAP>
<Comune>SASSARI</Comune>
<Provincia>SS</Provincia>
<Nazione>IT</Nazione>
</Sede>
</CedentePrestatore>
<CessionarioCommittente>
<DatiAnagrafici>
<CodiceFiscale>01234560157</CodiceFiscale>
<Anagrafica>
<Denominazione>DITTA BETA</Denominazione>
</Anagrafica>
</DatiAnagrafici>
<Sede>
<Indirizzo>VIA TORINO 38-B</Indirizzo>
<CAP>00145</CAP>
<Comune>ROMA</Comune>
<Provincia>RM</Provincia>
<Nazione>IT</Nazione>
</Sede>
</CessionarioCommittente>
</FatturaElettronicaHeader>
<FatturaElettronicaBody>
<DatiGenerali>
<DatiGeneraliDocumento>
<TipoDocumento>TD01</TipoDocumento>
<Divisa>EUR</Divisa>
<Data>2014-12-18</Data>
<Numero>01234567890</Numero>
<Causale>Test</Causale>
</DatiGeneraliDocumento>
<DatiOrdineAcquisto>
<RiferimentoNumeroLinea>1</RiferimentoNumeroLinea>
<IdDocumento>66685</IdDocumento>
<NumItem>1</NumItem>
</DatiOrdineAcquisto>
<DatiContratto>
<RiferimentoNumeroLinea>1</RiferimentoNumeroLinea>
<IdDocumento>01234567890</IdDocumento>
<Data>2012-09-01</Data>
<NumItem>5</NumItem>
<CodiceCUP>01234567890abc</CodiceCUP>
<CodiceCIG>456def</CodiceCIG>
</DatiContratto>
<DatiTrasporto>
<DatiAnagraficiVettore>
<IdFiscaleIVA>
<IdPaese>IT</IdPaese>
<IdCodice>24681012141</IdCodice>
</IdFiscaleIVA>
<Anagrafica>
<Denominazione>Trasporto spa</Denominazione>
</Anagrafica>
</DatiAnagraficiVettore>
<DataOraConsegna>2012-10-22T16:46:12.000+02:00</DataOraConsegna>
</DatiTrasporto>
</DatiGenerali>
<DatiBeniServizi>
<DettaglioLinee>
<NumeroLinea>1</NumeroLinea>
<Descrizione>DESCRIZIONE DELLA FORNITURA</Descrizione>
<Quantita>5.00</Quantita>
<PrezzoUnitario>-1.00</PrezzoUnitario>
<PrezzoTotale>-5.00</PrezzoTotale>
<AliquotaIVA>22.00</AliquotaIVA>
</DettaglioLinee>
<DatiRiepilogo>
<AliquotaIVA>22.00</AliquotaIVA>
<ImponibileImporto>-5.00</ImponibileImporto>
<Imposta>-1.10</Imposta>
<EsigibilitaIVA>I</EsigibilitaIVA>
</DatiRiepilogo>
</DatiBeniServizi>
<DatiPagamento>
<CondizioniPagamento>TP01</CondizioniPagamento>
<DettaglioPagamento>
<ModalitaPagamento>MP01</ModalitaPagamento>
<DataScadenzaPagamento>2015-01-30</DataScadenzaPagamento>
<ImportoPagamento>-6.10</ImportoPagamento>
</DettaglioPagamento>
</DatiPagamento>
</FatturaElettronicaBody>
</p:FatturaElettronica>

View file

@ -0,0 +1,156 @@
<?xml version="1.0" encoding="UTF-8"?>
<p:FatturaElettronica versione="FPR12" 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">
<FatturaElettronicaHeader>
<DatiTrasmissione>
<IdTrasmittente>
<IdPaese>IT</IdPaese>
<IdCodice>05979361218</IdCodice>
</IdTrasmittente>
<ProgressivoInvio>00001</ProgressivoInvio>
<FormatoTrasmissione>FPR12</FormatoTrasmissione>
<CodiceDestinatario>0000000</CodiceDestinatario>
<ContattiTrasmittente />
</DatiTrasmissione>
<CedentePrestatore>
<DatiAnagrafici>
<IdFiscaleIVA>
<IdPaese>IT</IdPaese>
<IdCodice>02780790107</IdCodice>
</IdFiscaleIVA>
<Anagrafica>
<Denominazione>SOCIETA' ALPHA SRL</Denominazione>
</Anagrafica>
<RegimeFiscale>RF01</RegimeFiscale>
</DatiAnagrafici>
<Sede>
<Indirizzo>VIALE ROMA 543</Indirizzo>
<CAP>07100</CAP>
<Comune>SASSARI</Comune>
<Provincia>SS</Provincia>
<Nazione>IT</Nazione>
</Sede>
</CedentePrestatore>
<CessionarioCommittente>
<DatiAnagrafici>
<IdFiscaleIVA>
<IdPaese>IT</IdPaese>
<IdCodice>01234560157</IdCodice>
</IdFiscaleIVA>
<Anagrafica>
<Denominazione>company_2_data</Denominazione>
</Anagrafica>
</DatiAnagrafici>
<Sede>
<Indirizzo>VIA TORINO 38-B</Indirizzo>
<CAP>00145</CAP>
<Comune>ROMA</Comune>
<Provincia>RM</Provincia>
<Nazione>IT</Nazione>
</Sede>
</CessionarioCommittente>
</FatturaElettronicaHeader>
<FatturaElettronicaBody>
<DatiGenerali>
<DatiGeneraliDocumento>
<TipoDocumento>TD01</TipoDocumento>
<Divisa>EUR</Divisa>
<Data>2014-12-18</Data>
<Numero>___ignore___</Numero>
</DatiGeneraliDocumento>
<DatiOrdineAcquisto>
<RiferimentoNumeroLinea>1</RiferimentoNumeroLinea>
<IdDocumento>___ignore___</IdDocumento>
<NumItem>1</NumItem>
</DatiOrdineAcquisto>
<DatiTrasporto>
<DatiAnagraficiVettore>
<IdFiscaleIVA>
<IdPaese>IT</IdPaese>
<IdCodice>04507990150</IdCodice>
</IdFiscaleIVA>
<Anagrafica>
<Denominazione>Trasporto spa</Denominazione>
</Anagrafica>
</DatiAnagraficiVettore>
<DataOraConsegna>2012-10-22T16:46:12.000+02:00</DataOraConsegna>
</DatiTrasporto>
</DatiGenerali>
<DatiBeniServizi>
<DettaglioLinee>
<NumeroLinea>1</NumeroLinea>
<CodiceArticolo>
<CodiceTipo>INT</CodiceTipo>
<CodiceValore>ART123</CodiceValore>
</CodiceArticolo>
<Descrizione>DESCRIZIONE DELLA FORNITURA</Descrizione>
<Quantita>5.00</Quantita>
<PrezzoUnitario>1.00</PrezzoUnitario>
<PrezzoTotale>5.00</PrezzoTotale>
<AliquotaIVA>22.00</AliquotaIVA>
</DettaglioLinee>
<DettaglioLinee>
<NumeroLinea>2</NumeroLinea>
<Descrizione>FORNITURE VARIE PER UFFICIO</Descrizione>
<Quantita>10.00</Quantita>
<PrezzoUnitario>2.00</PrezzoUnitario>
<PrezzoTotale>20.00</PrezzoTotale>
<AliquotaIVA>22.00</AliquotaIVA>
</DettaglioLinee>
<DatiRiepilogo>
<AliquotaIVA>22.00</AliquotaIVA>
<ImponibileImporto>25.00</ImponibileImporto>
<Imposta>5.50</Imposta>
<EsigibilitaIVA>I</EsigibilitaIVA>
</DatiRiepilogo>
</DatiBeniServizi>
<DatiPagamento>
<CondizioniPagamento>TP01</CondizioniPagamento>
<DettaglioPagamento>
<ModalitaPagamento>MP01</ModalitaPagamento>
<DataScadenzaPagamento>2015-01-30</DataScadenzaPagamento>
<ImportoPagamento>32.50</ImportoPagamento>
</DettaglioPagamento>
</DatiPagamento>
</FatturaElettronicaBody>
<FatturaElettronicaBody>
<DatiGenerali>
<DatiGeneraliDocumento>
<TipoDocumento>TD01</TipoDocumento>
<Divisa>EUR</Divisa>
<Data>2014-12-20</Data>
<Numero>___ignore___</Numero>
</DatiGeneraliDocumento>
<DatiOrdineAcquisto>
<RiferimentoNumeroLinea>1</RiferimentoNumeroLinea>
<IdDocumento>___ignore___</IdDocumento>
<NumItem>1</NumItem>
</DatiOrdineAcquisto>
</DatiGenerali>
<DatiBeniServizi>
<DettaglioLinee>
<NumeroLinea>1</NumeroLinea>
<Descrizione>DESCRIZIONE DEL SERVIZIO</Descrizione>
<PrezzoUnitario>2000.00</PrezzoUnitario>
<PrezzoTotale>2000.00</PrezzoTotale>
<AliquotaIVA>22.00</AliquotaIVA>
</DettaglioLinee>
<DatiRiepilogo>
<AliquotaIVA>22.00</AliquotaIVA>
<ImponibileImporto>2000.00</ImponibileImporto>
<Imposta>440.00</Imposta>
<EsigibilitaIVA>I</EsigibilitaIVA>
</DatiRiepilogo>
</DatiBeniServizi>
<DatiPagamento>
<CondizioniPagamento>TP01</CondizioniPagamento>
<DettaglioPagamento>
<ModalitaPagamento>MP19</ModalitaPagamento>
<DataScadenzaPagamento>___ignore___</DataScadenzaPagamento>
<ImportoPagamento>2440.00</ImportoPagamento>
</DettaglioPagamento>
</DatiPagamento>
</FatturaElettronicaBody>
</p:FatturaElettronica>

View file

@ -0,0 +1,121 @@
<p:FatturaElettronica versione="FPR12" 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">
<FatturaElettronicaHeader>
<DatiTrasmissione>
<IdTrasmittente>
<IdPaese>IT</IdPaese>
<IdCodice>01234560157</IdCodice>
</IdTrasmittente>
<ProgressivoInvio>V202200001</ProgressivoInvio>
<FormatoTrasmissione>FPR12</FormatoTrasmissione>
<CodiceDestinatario>0000000</CodiceDestinatario>
<ContattiTrasmittente>
<Telefono>0266766700</Telefono>
<Email>test@test.it</Email>
</ContattiTrasmittente>
</DatiTrasmissione>
<CedentePrestatore>
<DatiAnagrafici>
<IdFiscaleIVA>
<IdPaese>IT</IdPaese>
<IdCodice>00313371213</IdCodice>
</IdFiscaleIVA>
<CodiceFiscale>93026890017</CodiceFiscale>
<Anagrafica>
<Denominazione>SOCIETA' ALPHA SRL</Denominazione>
</Anagrafica>
<RegimeFiscale>RF19</RegimeFiscale>
</DatiAnagrafici>
<Sede>
<Indirizzo>VIALE ROMA 543</Indirizzo>
<CAP>07100</CAP>
<Comune>SASSARI</Comune>
<Provincia>SS</Provincia>
<Nazione>IT</Nazione>
</Sede>
</CedentePrestatore>
<CessionarioCommittente>
<DatiAnagrafici>
<CodiceFiscale>01234560157</CodiceFiscale>
<Anagrafica>
<Denominazione>DITTA BETA</Denominazione>
</Anagrafica>
</DatiAnagrafici>
<Sede>
<Indirizzo>VIA TORINO 38-B</Indirizzo>
<CAP>00145</CAP>
<Comune>ROMA</Comune>
<Provincia>RM</Provincia>
<Nazione>IT</Nazione>
</Sede>
</CessionarioCommittente>
</FatturaElettronicaHeader>
<FatturaElettronicaBody>
<DatiGenerali>
<DatiGeneraliDocumento>
<TipoDocumento>TD04</TipoDocumento>
<Divisa>EUR</Divisa>
<Data>2014-12-18</Data>
<Numero>01234567890</Numero>
<Causale>LA FATTURA FA RIFERIMENTO AD UNA OPERAZIONE AAAA BBBBBBBBBBBBBBBBBB CCC DDDDDDDDDDDDDDD E
FFFFFFFFFFFFFFFFFFFF GGGGGGGGGG HHHHHHH II LLLLLLLLLLLLLLLLL MMM NNNNN OO PPPPPPPPPPP QQQQ RRRR
SSSSSSSSSSSSSS
</Causale>
<Causale>SEGUE DESCRIZIONE CAUSALE NEL CASO IN CUI NON SIANO STATI SUFFICIENTI 200 CARATTERI AAAAAAAAAAA
BBBBBBBBBBBBBBBBB
</Causale>
</DatiGeneraliDocumento>
<DatiOrdineAcquisto>
<RiferimentoNumeroLinea>1</RiferimentoNumeroLinea>
<IdDocumento>PO-001</IdDocumento>
<NumItem>1</NumItem>
</DatiOrdineAcquisto>
<DatiContratto>
<RiferimentoNumeroLinea>1</RiferimentoNumeroLinea>
<IdDocumento>01234567890</IdDocumento>
<Data>2012-09-01</Data>
<NumItem>5</NumItem>
<CodiceCUP>01234567890abc</CodiceCUP>
<CodiceCIG>456def</CodiceCIG>
</DatiContratto>
<DatiTrasporto>
<DatiAnagraficiVettore>
<IdFiscaleIVA>
<IdPaese>IT</IdPaese>
<IdCodice>24681012141</IdCodice>
</IdFiscaleIVA>
<Anagrafica>
<Denominazione>Trasporto spa</Denominazione>
</Anagrafica>
</DatiAnagraficiVettore>
<DataOraConsegna>2012-10-22T16:46:12.000+02:00</DataOraConsegna>
</DatiTrasporto>
</DatiGenerali>
<DatiBeniServizi>
<DettaglioLinee>
<NumeroLinea>1</NumeroLinea>
<Descrizione>DESCRIZIONE DELLA FORNITURA</Descrizione>
<Quantita>5.00</Quantita>
<PrezzoUnitario>1.00</PrezzoUnitario>
<PrezzoTotale>5.00</PrezzoTotale>
<AliquotaIVA>22.00</AliquotaIVA>
</DettaglioLinee>
<DatiRiepilogo>
<AliquotaIVA>22.00</AliquotaIVA>
<ImponibileImporto>5.00</ImponibileImporto>
<Imposta>1.10</Imposta>
<EsigibilitaIVA>I</EsigibilitaIVA>
</DatiRiepilogo>
</DatiBeniServizi>
<DatiPagamento>
<CondizioniPagamento>TP01</CondizioniPagamento>
<DettaglioPagamento>
<ModalitaPagamento>MP01</ModalitaPagamento>
<DataScadenzaPagamento>2015-01-30</DataScadenzaPagamento>
<ImportoPagamento>6.10</ImportoPagamento>
</DettaglioPagamento>
</DatiPagamento>
</FatturaElettronicaBody>
</p:FatturaElettronica>

View file

@ -0,0 +1,129 @@
<?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>
<Telefono>0266766700</Telefono>
<Email>test@test.it</Email>
</ContattiTrasmittente>
</DatiTrasmissione>
<CedentePrestatore>
<DatiAnagrafici>
<IdFiscaleIVA>
<IdPaese>IT</IdPaese>
<IdCodice>00465840031</IdCodice>
</IdFiscaleIVA>
<CodiceFiscale>93026890017</CodiceFiscale>
<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>
</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>
<ImportoTotaleDocumento>750.00</ImportoTotaleDocumento>
</DatiGeneraliDocumento>
</DatiGenerali>
<DatiBeniServizi>
<DettaglioLinee>
<NumeroLinea>1</NumeroLinea>
<Descrizione>
Construction subcontracting service January
</Descrizione>
<Quantita>1.00</Quantita>
<PrezzoUnitario>350.00000000</PrezzoUnitario>
<PrezzoTotale>350.00</PrezzoTotale>
<AliquotaIVA>0.00</AliquotaIVA>
<Natura>N6.3</Natura>
</DettaglioLinee>
<DettaglioLinee>
<NumeroLinea>2</NumeroLinea>
<Descrizione>
Construction subcontracting service February
</Descrizione>
<Quantita>1.00</Quantita>
<PrezzoUnitario>300.00000000</PrezzoUnitario>
<PrezzoTotale>300.00</PrezzoTotale>
<AliquotaIVA>0.00</AliquotaIVA>
<Natura>N6.3</Natura>
</DettaglioLinee>
<DettaglioLinee>
<NumeroLinea>3</NumeroLinea>
<Descrizione>
Construction subcontracting service March
</Descrizione>
<Quantita>1.00</Quantita>
<PrezzoUnitario>50.00000000</PrezzoUnitario>
<PrezzoTotale>50.00</PrezzoTotale>
<AliquotaIVA>0.00</AliquotaIVA>
<Natura>N6.3</Natura>
</DettaglioLinee>
<DettaglioLinee>
<NumeroLinea>4</NumeroLinea>
<Descrizione>
Construction subcontracting service April
</Descrizione>
<Quantita>1.00</Quantita>
<PrezzoUnitario>50.00000000</PrezzoUnitario>
<PrezzoTotale>50.00</PrezzoTotale>
<AliquotaIVA>0.00</AliquotaIVA>
<Natura>N6.3</Natura>
</DettaglioLinee>
<DatiRiepilogo>
<AliquotaIVA>0.00</AliquotaIVA>
<Natura>N6.3</Natura>
<ImponibileImporto>750.00</ImponibileImporto>
<Imposta>0.00</Imposta>
<EsigibilitaIVA>I</EsigibilitaIVA>
<RiferimentoNormativo>test</RiferimentoNormativo>
</DatiRiepilogo>
</DatiBeniServizi>
<DatiPagamento>
<CondizioniPagamento>TP02</CondizioniPagamento>
<DettaglioPagamento>
<ModalitaPagamento>MP05</ModalitaPagamento>
<DataScadenzaPagamento>2022-03-24</DataScadenzaPagamento>
<ImportoPagamento>750.00</ImportoPagamento>
<CodicePagamento>___ignore___</CodicePagamento>
</DettaglioPagamento>
</DatiPagamento>
</FatturaElettronicaBody>
</p:FatturaElettronica>

View file

@ -0,0 +1,61 @@
<p:FatturaElettronicaSemplificata xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xmlns:ds="http://www.w3.org/2000/09/xmldsig#"
xmlns:p="http://ivaservizi.agenziaentrate.gov.it/docs/xsd/fatture/v1.0"
xsi:schemaLocation="http://ivaservizi.agenziaentrate.gov.it/docs/xsd/fatture/v1.0 http://www.fatturapa.gov.it/export/fatturazione/sdi/fatturapa/v1.0/Schema_del_file_xml_FatturaPA_versione_1.0.xsd"
versione="FSM10">
<FatturaElettronicaHeader>
<DatiTrasmissione>
<IdTrasmittente>
<IdPaese>IT</IdPaese>
<IdCodice>01234560157</IdCodice>
</IdTrasmittente>
<ProgressivoInvio>V202200001</ProgressivoInvio>
<FormatoTrasmissione>FSM10</FormatoTrasmissione>
<CodiceDestinatario>123456</CodiceDestinatario>
</DatiTrasmissione>
<CedentePrestatore>
<IdFiscaleIVA>
<IdPaese>IT</IdPaese>
<IdCodice>01234560157</IdCodice>
</IdFiscaleIVA>
<CodiceFiscale>01234560157</CodiceFiscale>
<Denominazione>company_2_data</Denominazione>
<Sede>
<Indirizzo>1234 Test Street</Indirizzo>
<CAP>12345</CAP>
<Comune>Prova</Comune>
<Nazione>IT</Nazione>
</Sede>
<RegimeFiscale>RF01</RegimeFiscale>
</CedentePrestatore>
<CessionarioCommittente>
<IdentificativiFiscali>
<IdFiscaleIVA>
<IdPaese>IT</IdPaese>
<IdCodice>06655971007</IdCodice>
</IdFiscaleIVA>
<CodiceFiscale>06655971007</CodiceFiscale>
</IdentificativiFiscali>
</CessionarioCommittente>
</FatturaElettronicaHeader>
<FatturaElettronicaBody>
<DatiGenerali>
<DatiGeneraliDocumento>
<TipoDocumento>TD07</TipoDocumento>
<Divisa>EUR</Divisa>
<Data>2022-03-24</Data>
<Numero>INV/2022/00001</Numero>
</DatiGeneraliDocumento>
</DatiGenerali>
<DatiBeniServizi>
<Descrizione>
cheap_line
</Descrizione>
<Importo>122.00</Importo>
<DatiIVA>
<Imposta>22.00</Imposta>
</DatiIVA>
</DatiBeniServizi>
</FatturaElettronicaBody>
</p:FatturaElettronicaSemplificata>

View file

@ -0,0 +1,68 @@
from odoo import fields
from odoo.tests import tagged
from odoo.addons.l10n_it_edi.tests.common import TestItEdi
@tagged('post_install_l10n', 'post_install', '-at_install')
class TestItAccountMoveDocumentType(TestItEdi):
def test_account_move_document_type(self):
# l10n_it_document_type_01: "TD01 - Invoice (Immediate or Accompanying if <DatiTrasporto> or <DatiDDT> are completed)"
# l10n_it_document_type_04: "TD04 - Credit note"
dt_invoice = self.env.ref('l10n_it_edi.l10n_it_document_type_01')
dt_credit_note = self.env.ref('l10n_it_edi.l10n_it_document_type_04')
invoice_x = self.init_invoice("out_invoice", amounts=[1000])
# the compute method does nothing for moves that are not posted
self.assertFalse(invoice_x.l10n_it_document_type)
invoice_x.action_post()
self.assertEqual(invoice_x.l10n_it_document_type, dt_invoice)
# create a draft credit note
reversal_wizard = self.env['account.move.reversal'].with_context(active_model='account.move', active_ids=invoice_x.ids).create({
'reason': 'XXX',
'journal_id': invoice_x.journal_id.id,
})
reversal = reversal_wizard.refund_moves()
credit_note_x = self.env['account.move'].browse(reversal['res_id'])
self.assertFalse(credit_note_x.l10n_it_document_type)
# post the credit note
credit_note_x.action_post()
self.assertEqual(credit_note_x.l10n_it_document_type, dt_credit_note)
invoice_y = self.init_invoice("out_invoice", amounts=[2000], post=True)
self.assertEqual(invoice_y.l10n_it_document_type, dt_invoice)
# create a credit note that is posted directly
reversal_wizard = self.env['account.move.reversal'].with_context(active_model='account.move', active_ids=invoice_y.ids).create({
'reason': 'YYY',
'journal_id': invoice_y.journal_id.id,
})
reversal_wizard.modify_moves()
credit_note_y = invoice_y.reversal_move_ids[0]
self.assertEqual(credit_note_y.l10n_it_document_type, dt_credit_note)
def test_td01_assigned_on_posted_in_invoice(self):
"""Test that TD01 is correctly assigned to an in_invoice after posting."""
dt_invoice = self.env.ref('l10n_it_edi.l10n_it_document_type_01')
invoice_x = self.init_invoice("in_invoice", amounts=[1000])
self.assertFalse(invoice_x.l10n_it_document_type)
invoice_x.action_post()
self.assertEqual(invoice_x.l10n_it_document_type, dt_invoice)
def test_td01_assigned_on_imported_in_invoice(self):
td01 = self.env.ref('l10n_it_edi.l10n_it_document_type_01')
self._assert_import_invoice('IT01234567890_FPR01.xml', [{
'move_type': 'in_invoice',
'invoice_date': fields.Date.from_string('2014-12-18'),
'amount_untaxed': 5.0,
'amount_tax': 1.1,
'invoice_line_ids': [{
'quantity': 5.0,
'price_unit': 1.0,
'debit': 5.0,
}],
'l10n_it_payment_method': 'MP01',
'l10n_it_document_type': td01.id,
}])

View file

@ -0,0 +1,34 @@
from odoo.tests import tagged
from odoo.addons.l10n_it_edi.tests.common import TestItEdi
@tagged('post_install_l10n', 'post_install', '-at_install')
class TestItAccountMovePaymentMethod(TestItEdi):
def test_account_move_payment_method(self):
move = self.init_invoice("out_invoice", amounts=[1000], post=True)
# When the move is created we put the default value MP05
self.assertEqual(move.l10n_it_payment_method, 'MP05')
payment_method = self.env['account.payment.method'].sudo().create({
'name': 'Test Payment Method',
'code': 'test_payment_method',
'payment_type': 'inbound',
})
new_payment_method_line = self.env['account.payment.method.line'].create({
'name': 'new payment method line',
'payment_method_id': payment_method.id,
'journal_id': self.company_data['default_journal_bank'].id,
'l10n_it_payment_method': 'MP07',
})
# When registering a payment with a payment method, the payment method on the move will be overwritten
self.env['account.payment.register'].with_context(
active_model='account.move',
active_ids=move.ids,
).create({
'payment_method_line_id': new_payment_method_line.id,
})._create_payments()
self.assertEqual(move.l10n_it_payment_method, 'MP07')

View file

@ -0,0 +1,274 @@
# Part of Odoo. See LICENSE file for full copyright and licensing details.
from unittest.mock import patch
from odoo.tests import tagged
from odoo.addons.account.tests.test_account_move_send import TestAccountMoveSendCommon
from odoo.addons.account_edi_proxy_client.models.account_edi_proxy_user import AccountEdiProxyError
from odoo.addons.l10n_it_edi.tests.common import TestItEdi
@tagged('post_install_l10n', 'post_install', '-at_install')
class TestItAccountMoveSend(TestItEdi, TestAccountMoveSendCommon):
def init_invoice(self, partners, company=None, taxes=None):
invoices = self.env['account.move']
for partner in partners:
invoices |= super().init_invoice(
"out_invoice",
partner=partner,
company=company or self.company,
amounts=[1000],
taxes=taxes or self.default_tax,
post=True)
return invoices
def get_attachments(self, res_id):
return self.env['ir.attachment'].with_company(self.company).search([
('res_model', '=', 'account.move'),
('res_id', '=', res_id),
('res_field', 'in', ('invoice_pdf_report_file', 'l10n_it_edi_attachment_file')),
])
def generate_l10n_it_edi_send_attachments(self, invoices, from_cron=False):
moves_data = {invoice: self.env['account.move.send']._get_default_sending_settings(invoice, from_cron=from_cron) for invoice in invoices}
with patch('odoo.addons.l10n_it_edi.models.account_move_send.AccountMoveSend._call_web_service_after_invoice_pdf_render'):
self.env['account.move.send']._generate_invoice_documents(moves_data)
def test_invoice_multi_without_l10n_it_edi_xml_export(self):
# Prepare
invoice1, invoice2 = self.init_invoice(self.italian_partner_a + self.italian_partner_a)
(self.italian_partner_a + self.italian_partner_b).with_company(invoice1.company_id).invoice_edi_format = False
def _get_default_extra_edis(self, move):
# in batch sending we use default settings, which is to use italian gov edi, bypass it
return {}
with patch(
'odoo.addons.account.models.account_move_send.AccountMoveSend._get_default_extra_edis',
_get_default_extra_edis
):
self.env['account.move.send']._generate_and_send_invoices(invoice1 + invoice2)
# Asserts
self.assertEqual((invoice1 + invoice2).mapped('sending_data'), [False, False])
self.assertEqual(1, len(self.get_attachments(invoice1.id)))
self.assertTrue(invoice1.invoice_pdf_report_id)
self.assertFalse(invoice1.l10n_it_edi_attachment_file)
self.assertFalse(invoice1.is_being_sent)
self.assertEqual(1, len(self.get_attachments(invoice2.id)))
self.assertTrue(invoice2.invoice_pdf_report_id)
self.assertFalse(invoice2.l10n_it_edi_attachment_file)
self.assertFalse(invoice2.is_being_sent)
def test_invoice_multi_with_l10n_it_edi_xml_export(self):
# Prepare
invoice1, invoice2 = self.init_invoice(self.italian_partner_a + self.italian_partner_a)
(self.italian_partner_a + self.italian_partner_b).with_company(invoice1.company_id).invoice_edi_format = 'it_edi_xml'
def _get_default_extra_edis(self, move):
# in batch sending we use default settings, which is to use italian gov edi, bypass it
return {}
with patch(
'odoo.addons.account.models.account_move_send.AccountMoveSend._get_default_extra_edis',
_get_default_extra_edis
):
self.env['account.move.send']._generate_and_send_invoices(invoice1 + invoice2, sending_methods=['email'])
# Asserts
self.assertEqual((invoice1 + invoice2).mapped('sending_data'), [False, False])
self.assertEqual(2, len(self.get_attachments(invoice1.id)))
self.assertTrue(invoice1.invoice_pdf_report_id)
self.assertTrue(invoice1.l10n_it_edi_attachment_file)
self.assertFalse(invoice1.is_being_sent)
self.assertEqual(2, len(self.get_attachments(invoice2.id)))
self.assertTrue(invoice2.invoice_pdf_report_id)
self.assertTrue(invoice2.l10n_it_edi_attachment_file)
self.assertFalse(invoice2.is_being_sent)
def test_invoice_with_cig_or_cup_or_both(self):
self.italian_partner_a.write({'l10n_it_pa_index': '1234567'})
invoice_valid = self.init_invoice(self.italian_partner_a)
invoice_cig_only = self.init_invoice(self.italian_partner_a)
invoice_cup_only = self.init_invoice(self.italian_partner_a)
invoice_cig_cup = self.init_invoice(self.italian_partner_a)
invoice_valid.write({
'l10n_it_cig': '1234567',
'l10n_it_cup': '7654321',
'l10n_it_origin_document_type': 'purchase_order'
})
invoice_cig_only.write({
'l10n_it_cig': '1234567',
'l10n_it_cup': False,
'l10n_it_origin_document_type': False
})
invoice_cup_only.write({
'l10n_it_cig': False,
'l10n_it_cup': '7654321',
'l10n_it_origin_document_type': False
})
invoice_cig_cup.write({
'l10n_it_cig': '1234567',
'l10n_it_cup': '7654321',
'l10n_it_origin_document_type': False
})
valid = invoice_valid._l10n_it_edi_base_export_check()
cig = invoice_cig_only._l10n_it_edi_base_export_check()
cup = invoice_cup_only._l10n_it_edi_base_export_check()
cig_cup = invoice_cig_cup._l10n_it_edi_base_export_check()
self.assertNotIn('move_missing_origin_document_field', valid)
self.assertIn('move_missing_origin_document_field', cig)
self.assertIn('move_missing_origin_document_field', cup)
self.assertIn('move_missing_origin_document_field', cig_cup)
def test_invoice_send_with_multiple_company(self):
second_company = self.company_data['company']
second_company.write({
'vat': 'IT12345670017',
'phone': '0266766700',
'email': 'test@test.it',
'street': '1234 Test Street',
'zip': '12345',
'city': 'Prova',
'l10n_it_codice_fiscale': '12345670017',
'l10n_it_tax_system': 'RF01'
})
second_proxy = self.env['account_edi_proxy_client.user'].create({
'proxy_type': 'l10n_it_edi',
'id_client': 'l10n_it_edi_test_second_company',
'company_id': second_company.id,
'edi_identification': 'l10n_it_edi_test_second_company',
'private_key_id': self.private_key_id.id,
'edi_mode': 'demo',
})
self.proxy_user.edi_mode = 'demo'
invoice1 = self.init_invoice(self.italian_partner_a)
invoice2 = self.init_invoice(
self.italian_partner_a,
second_company,
self.company_data['default_tax_sale']
)
with patch('odoo.addons.l10n_it_edi.models.account_move.AccountMove._l10n_it_edi_upload_single', return_value={}, autospec=True) as mock_check:
self.env['account.move.send'].with_context(allowed_company_ids=[second_company.id, self.company.id])._generate_and_send_invoices(invoice2 + invoice1, sending_methods=['email'])
self.assertEqual(mock_check.call_count, 2)
res_call_invoice1, res_call_invoice2 = mock_check.call_args_list
res_invoice1, res_invoice2 = res_call_invoice2[0][0], res_call_invoice1[0][0]
self.assertEqual(res_invoice1, invoice1)
self.assertEqual(res_invoice2, invoice2)
self.assertEqual(res_invoice1.company_id.l10n_it_edi_proxy_user_id, self.proxy_user)
self.assertEqual(res_invoice2.company_id.l10n_it_edi_proxy_user_id, second_proxy)
def test_l10n_it_edi_send_success(self):
invoice = self.init_invoice(self.italian_partner_a)
self.generate_l10n_it_edi_send_attachments(invoice)
success = {'id_transaction': "SDI ID 1", 'signed': False, 'signed_data': False}
with patch('odoo.addons.l10n_it_edi.models.account_move.AccountMove._l10n_it_edi_upload_single', return_value=success) as mock_check:
attachments_vals = {invoice: {'name': invoice.l10n_it_edi_attachment_name, 'raw': invoice.l10n_it_edi_attachment_file}}
results = invoice._l10n_it_edi_send(attachments_vals)
self.assertEqual(mock_check.call_count, 1)
self.assertEqual(results, {invoice.l10n_it_edi_attachment_name: success})
self.assertEqual(invoice.l10n_it_edi_state, "processing")
self.assertEqual(invoice.l10n_it_edi_transaction, success['id_transaction'])
def test_l10n_it_edi_send_proxy_error(self):
invoice = self.init_invoice(self.italian_partner_a)
self.generate_l10n_it_edi_send_attachments(invoice)
proxy_error = {'error': 'error_code', 'error_description': 'error_description'}
with patch('odoo.addons.l10n_it_edi.models.account_move.AccountMove._l10n_it_edi_upload_single', return_value=proxy_error) as mock_check:
attachments_vals = {invoice: {'name': invoice.l10n_it_edi_attachment_name, 'raw': invoice.l10n_it_edi_attachment_file}}
results = invoice._l10n_it_edi_send(attachments_vals)
proxy_error['error_message'] = invoice._l10n_it_edi_upload_error_message(proxy_error['error'], proxy_error['error_description'])
self.assertEqual(mock_check.call_count, 1)
self.assertEqual(results, {invoice.l10n_it_edi_attachment_name: proxy_error})
self.assertFalse(invoice.l10n_it_edi_state)
self.assertFalse(invoice.l10n_it_edi_transaction)
def test_l10n_it_edi_send_proxy_exception(self):
invoice = self.init_invoice(self.italian_partner_a)
self.generate_l10n_it_edi_send_attachments(invoice)
with patch('odoo.addons.l10n_it_edi.models.account_move.AccountMove._l10n_it_edi_upload_single', side_effect=AccountEdiProxyError('error_code', message='error_description')) as mock_check:
attachments_vals = {invoice: {'name': invoice.l10n_it_edi_attachment_name, 'raw': invoice.l10n_it_edi_attachment_file}}
results = invoice._l10n_it_edi_send(attachments_vals)
self.assertEqual(mock_check.call_count, 1)
self.assertIn('error_message', results[invoice.l10n_it_edi_attachment_name])
self.assertFalse(invoice.l10n_it_edi_state)
self.assertFalse(invoice.l10n_it_edi_transaction)
def test_l10n_it_edi_send_from_cron(self):
invoices = self.init_invoice(self.italian_partner_a) | self.init_invoice(self.italian_partner_a)
invoices.sending_data = {'author_user_id': self.env.user.id, 'author_partner_id': self.env.user.partner_id.id}
self.generate_l10n_it_edi_send_attachments(invoices, from_cron=True)
success = {'id_transaction': "SDI ID 1", 'signed': False, 'signed_data': False}
proxy_error = {'error': 'error_code', 'error_description': 'error_description'}
def _l10n_it_edi_upload_single(record, file):
return success if file['filename'] == 'file_1.xml' else proxy_error
with patch('odoo.addons.l10n_it_edi.models.account_move.AccountMove._l10n_it_edi_upload_single', side_effect=_l10n_it_edi_upload_single, autospec=True) as mock_check:
invoices[0].l10n_it_edi_attachment_name = 'file_1.xml'
attachments_vals = {invoice: {'name': invoice.l10n_it_edi_attachment_name, 'raw': invoice.l10n_it_edi_attachment_file} for invoice in invoices}
results = invoices._l10n_it_edi_send(attachments_vals)
self.assertEqual(mock_check.call_count, 2)
self.assertEqual(results, {
invoices[0].l10n_it_edi_attachment_name: success,
invoices[1].l10n_it_edi_attachment_name: proxy_error
})
self.assertEqual(invoices[0].l10n_it_edi_state, "processing")
self.assertEqual(invoices[0].l10n_it_edi_transaction, success['id_transaction'])
self.assertTrue(invoices[0].l10n_it_edi_header)
self.assertFalse(invoices[1].l10n_it_edi_state)
self.assertFalse(invoices[1].l10n_it_edi_transaction)
self.assertTrue(invoices[1].l10n_it_edi_header)
def test_enasarco_no_warnings(self):
self.proxy_user.edi_mode = 'demo'
ref = self.env['account.chart.template'].with_company(self.proxy_user.company_id).ref
self.partner_a.write({
"l10n_it_codice_fiscale": "PERTLELPALQZRTSN",
'country_id': self.env.ref('base.it').id,
'street': 'Test street',
'city': 'Test town',
'zip': '32121',
})
invoice = self.init_invoice(partners=self.partner_a, taxes=ref('22v') | ref('23vwo') | ref('enasarcov'))
wizard = self.create_send_and_print(invoice, sending_methods=['l10n_it_edi'])
non_info_alerts = {k: v for k, v in wizard.alerts.items() if v.get('level') != 'info'}
self.assertFalse(non_info_alerts)
def test_l10n_it_edi_foreign_currency(self):
invoice = self.env['account.move'].create({
'move_type': 'out_invoice',
'partner_id': self.italian_partner_a.id,
'company_id': self.company.id,
'currency_id': self.env.ref('base.USD').id,
'invoice_line_ids': [(0, 0, {
'name': 'Zero total line',
'quantity': 1.0,
'price_unit': 100.0,
'discount': 100.0,
'tax_ids': [(6, 0, self.default_tax.ids)],
})],
})
invoice.action_post()
self.generate_l10n_it_edi_send_attachments(invoice)
self.assertTrue(invoice.l10n_it_edi_attachment_file)

View file

@ -0,0 +1,21 @@
from odoo.tests import tagged
from odoo.addons.base.tests.common import HttpCaseWithUserPortal
from odoo.addons.l10n_it_edi.tests.common import TestItEdi
@tagged('post_install_l10n', 'post_install', '-at_install')
class TestUi(HttpCaseWithUserPortal, TestItEdi):
def test_portal_user_codice_fiscale(self):
self.env.company.country_id = self.env.ref('base.it')
it_user_portal = self._create_new_portal_user(name='IT User')
# If website is installed, the website's company (main_company) should also have country as Italy
company = self.env.ref('base.main_company')
company.account_fiscal_country_id = company.country_id = self.env.company.country_id
self.start_tour("/my", 'portal_compute_codice_fiscale', login="portal_user")
self.assertEqual(
it_user_portal.l10n_it_codice_fiscale,
'12345670017',
"The user should have the Codice Fiscale filled according to the VAT",
)

View file

@ -1,19 +1,19 @@
# -*- coding: utf-8 -*-
# Part of Odoo. See LICENSE file for full copyright and licensing details.
import datetime
import logging
import uuid
from freezegun import freeze_time
from lxml import etree
from unittest.mock import MagicMock, patch
from unittest.mock import patch
from odoo import Command, fields, sql_db
from odoo.tests import tagged
from odoo import fields, sql_db, tools, Command
from odoo.exceptions import ValidationError
from odoo.tests import new_test_user, tagged
from odoo.addons.l10n_it_edi.tests.common import TestItEdi
from odoo.addons.l10n_it_edi.tools.remove_signature import remove_signature
import logging
_logger = logging.getLogger(__name__)
@tagged('post_install_l10n', 'post_install', '-at_install')
class TestItEdiImport(TestItEdi):
""" Main test class for the l10n_it_edi vendor bills XML import"""
@ -42,69 +42,153 @@ class TestItEdiImport(TestItEdi):
</FatturaElettronicaBody>
</p:FatturaElettronica>"""
@classmethod
def setUpClass(cls):
super().setUpClass()
# Build test data.
# invoice_filename1 is used for vendor bill receipts tests
# invoice_filename2 is used for vendor bill tests
cls.invoice_filename1 = 'IT01234567890_FPR01.xml'
cls.invoice_filename2 = 'IT01234567890_FPR02.xml'
cls.signed_invoice_filename = 'IT01234567890_FPR01.xml.p7m'
cls.wrongly_signed_invoice_filename = 'IT09633951000_NpFwF.xml.p7m'
cls.invoice_content = cls._get_test_file_content(cls.invoice_filename1)
cls.signed_invoice_content = cls._get_test_file_content(cls.signed_invoice_filename)
cls.wrongly_signed_invoice_content = cls._get_test_file_content(cls.wrongly_signed_invoice_filename)
cls.invoice = cls.env['account.move'].create({
'move_type': 'in_invoice',
'ref': '01234567890'
})
cls.attachment = cls.env['ir.attachment'].create({
'name': cls.invoice_filename1,
'raw': cls.invoice_content,
'res_id': cls.invoice.id,
'res_model': 'account.move',
})
cls.edi_document = cls.env['account.edi.document'].create({
'edi_format_id': cls.edi_format.id,
'move_id': cls.invoice.id,
'attachment_id': cls.attachment.id,
'state': 'sent'
})
cls.test_invoice_xmls = {k: cls._get_test_file_content(v) for k, v in [
('normal_1', 'IT01234567890_FPR01.xml'),
('signed', 'IT01234567890_FPR01.xml.p7m'),
]}
def mock_commit(self):
pass
# -----------------------------
#
# Vendor bills
#
# -----------------------------
def test_receive_vendor_bill(self):
""" Test a sample e-invoice file from https://www.fatturapa.gov.it/export/documenti/fatturapa/v1.2/IT01234567890_FPR01.xml """
content = etree.fromstring(self.invoice_content)
invoices = self.edi_format._create_invoice_from_xml_tree(self.invoice_filename2, content)
self.assertTrue(bool(invoices))
""" Test a sample e-invoice file from
https://www.fatturapa.gov.it/export/documenti/fatturapa/v1.2/IT01234567890_FPR01.xml
"""
# Added to ensures that a 0.00 unit price from XML is preserved.
applied_xml = """
<xpath expr="//FatturaElettronicaBody/DatiBeniServizi/DettaglioLinee" position="after">
<DettaglioLinee>
<NumeroLinea>2</NumeroLinea>
<Descrizione>[TEST] Test Product</Descrizione>
<Quantita>1.00</Quantita>
<PrezzoUnitario>0.00</PrezzoUnitario>
<PrezzoTotale>0.00</PrezzoTotale>
<AliquotaIVA>22.00</AliquotaIVA>
</DettaglioLinee>
</xpath>
"""
self._assert_import_invoice('IT01234567890_FPR01.xml', [{
'move_type': 'in_invoice',
'invoice_date': fields.Date.from_string('2014-12-18'),
'amount_untaxed': 5.0,
'amount_tax': 1.1,
'invoice_line_ids': [
{
'quantity': 5.0,
'price_unit': 1.0,
'debit': 5.0,
},
{
'quantity': 1.0,
'price_unit': 0.0,
'debit': 0.0,
},
],
}], applied_xml)
def test_receive_vendor_bill_sconto_maggiorazione(self):
""" Test a sample e-invoice file with
ScontoMaggiorazione on lines
"""
self._assert_import_invoice('IT01234567890_DISC1.xml', [{
'move_type': 'in_invoice',
'invoice_date': fields.Date.from_string('2014-12-18'),
'amount_untaxed': 28.75,
'amount_tax': 6.32,
'invoice_line_ids': [{
'quantity': 5.0,
'price_unit': 1.0,
'discount': 0,
'debit': 5.0,
},
{
'quantity': 5.0,
'price_unit': 10.0,
'discount': 52.5,
'debit': 23.75,
},
{
'quantity': 1.0,
'price_unit': 0.0,
'discount': 0.0,
'debit': 0.0,
}],
}])
def test_receive_negative_vendor_bill(self):
""" Same vendor bill as test_receive_vendor_bill but negative unit price """
self._assert_import_invoice('IT01234567890_FPR02.xml', [{
'move_type': 'in_invoice',
'invoice_date': fields.Date.from_string('2014-12-18'),
'amount_untaxed': -5.0,
'amount_tax': -1.1,
'invoice_line_ids': [{
'quantity': 5.0,
'price_unit': -1.0,
'credit': 5.0,
}],
}])
def test_import_refund_with_linked_po(self):
if self.env['ir.module.module']._get('purchase').state != 'installed':
self.skipTest("purchase module is not installed")
product = self.env['product.product'].create({
'name': 'DESCRIZIONE DELLA FORNITURA',
'supplier_taxes_id': [Command.set(self.default_tax.ids)],
})
purchase = self.env['purchase.order'].with_company(self.company).with_context(tracking_disable=True).create(
{
'partner_id': self.italian_partner_a.id,
'partner_ref': 'PO-001',
'order_line': [
Command.create({
'product_qty': 10.0,
'product_id': product.id,
'price_unit': 1.0,
'name': 'DESCRIZIONE DELLA FORNITURA',
}),
],
})
purchase.button_confirm()
self._assert_import_invoice('IT01234567890_FPR04.xml', [{
'move_type': 'in_refund',
'invoice_origin': purchase.name,
'invoice_date': fields.Date.from_string('2014-12-18'),
'amount_untaxed': 5.0,
'amount_tax': 1.1,
'is_purchase_matched': True,
'invoice_line_ids': [{
'display_type': 'line_section',
'quantity': 0.0,
'price_unit': 0.0,
'credit': 0.0,
}, {
'display_type': 'product',
'quantity': 5.0,
'price_unit': 1.0,
'credit': 5.0,
}, {
'display_type': 'line_section',
'quantity': 0.0,
'price_unit': 0.0,
'credit': 0.0,
}],
}])
def test_receive_signed_vendor_bill(self):
""" Test a signed (P7M) sample e-invoice file from https://www.fatturapa.gov.it/export/documenti/fatturapa/v1.2/IT01234567890_FPR01.xml """
with freeze_time('2020-04-06'):
content = etree.fromstring(remove_signature(self.signed_invoice_content))
invoices = self.edi_format._create_invoice_from_xml_tree(self.signed_invoice_filename, content)
self.assertRecordValues(invoices, [{
'company_id': self.company.id,
'name': 'BILL/2014/12/0001',
'invoice_date': datetime.date(2014, 12, 18),
'ref': '01234567890',
}])
""" Test a signed (P7M) sample e-invoice file from
https://www.fatturapa.gov.it/export/documenti/fatturapa/v1.2/IT01234567890_FPR01.xml
"""
self._assert_import_invoice('IT01234567890_FPR01.xml.p7m', [{
'ref': '01234567890',
'invoice_date': fields.Date.from_string('2014-12-18'),
'amount_untaxed': 5.0,
'amount_tax': 1.1,
'invoice_line_ids': [{
'quantity': 5.0,
'price_unit': 1.0,
}],
}])
def test_receive_wrongly_signed_vendor_bill(self):
"""
@ -125,34 +209,94 @@ class TestItEdiImport(TestItEdi):
task-3502910
"""
with freeze_time('2019-01-01'):
filename, content = (
self.wrongly_signed_invoice_filename,
self.wrongly_signed_invoice_content,
)
tree = self.edi_format._decode_p7m_to_xml(filename, content)
invoices = self.edi_format._create_invoice_from_xml_tree(filename, tree)
self.assertRecordValues(invoices, [{
'name': 'BILL/2023/09/0001',
self._assert_import_invoice('IT09633951000_NpFwF.xml.p7m', [{
'ref': '333333333333333',
'invoice_date': fields.Date.from_string('2023-09-08'),
'amount_untaxed': 57.54,
'amount_untaxed': 39.54,
'amount_tax': 3.95,
}])
def test_import_invoice_with_multiple_same_vat(self):
(self.italian_partner_a | self.italian_partner_b).update({
'vat': "IT06655971007",
'l10n_it_codice_fiscale': '06655971007',
})
self._assert_import_invoice('IT01234567892_FPR01.xml', [{
'partner_id': self.italian_partner_b.id,
}], move_type="out_invoice")
self.italian_partner_b.active = False
self._assert_import_invoice('IT01234567892_FPR01.xml', [{
'partner_id': self.italian_partner_a.id,
}], move_type="out_invoice")
def test_receive_bill_sequence(self):
""" Ensure that the received bill gets assigned the right sequence. """
def mock_commit(self):
pass
super_create = self.env.registry['account.move'].create
created_moves = []
def mock_create(self, vals_list):
moves = super_create(self, vals_list)
created_moves.extend(moves)
return moves
filename = 'IT01234567890_FPR02.xml'
with (patch.object(self.proxy_user.__class__, '_decrypt_data', return_value=self.fake_test_content),
patch.object(sql_db.Cursor, "commit", mock_commit),
patch.object(self.env.registry['account.move'], 'create', mock_create),
freeze_time('2019-01-01')):
self.env['account.move'].with_company(self.company)._l10n_it_edi_process_downloads({
'999999999': {
'filename': filename,
'file': self.fake_test_content,
'key': str(uuid.uuid4()),
}},
self.proxy_user,
)
self.assertEqual(len(created_moves), 1)
def test_cron_receives_bill_in_preferred_journal(self):
""" Ensure that the received bill is in the preferred journal set from the setting. """
preferred_journal = self.company_data_2['default_journal_purchase'].copy()
filename = 'IT01234567890_FPR02.xml'
with self.assertRaisesRegex(ValidationError, "The Italian default purchase journal requires a default account."):
# When copying journal, the default_account_id are not copied.
# It should raise an error when we try to set the company's default purchase journal in the Settings.
self.company.l10n_it_edi_purchase_journal_id = preferred_journal
preferred_journal.default_account_id = self.company_data_2['default_journal_purchase'].default_account_id.id
with tools.file_open(f'{self.module}/tests/import_xmls/{filename}', mode='rb') as fd:
fake_bill_content = fd.read()
with (patch.object(self.env.registry['account_edi_proxy_client.user'], '_decrypt_data', return_value=fake_bill_content),
freeze_time('2019-01-01')):
self.env['account.move'].with_company(self.company)._l10n_it_edi_process_downloads({
'999999999': {
'filename': filename,
'file': fake_bill_content,
'key': str(uuid.uuid4()),
}},
self.proxy_user,
)
imported_bill = self.env['account.move'].with_company(self.company).search([])
self.assertEqual(len(imported_bill), 1)
self.assertRecordValues(imported_bill.journal_id, [{
'id': preferred_journal.id,
'default_account_id': self.company_data_2['default_journal_purchase'].default_account_id.id,
}])
def test_cron_receives_bill_from_another_company(self):
""" Ensure that when from one of your company, you bill the other, the
import isn't impeded because of conflicts with the filename """
fattura_pa = self.env.ref('l10n_it_edi.edi_fatturaPA')
content = self.fake_test_content.encode()
# Our test content is not encrypted
proxy_user = MagicMock()
proxy_user.company_id = self.company
proxy_user._decrypt_data.return_value = content
other_company = self.company_data['company']
filename = 'IT01234567890_FPR02.xml'
def mock_commit(self):
pass
invoice = self.env['account.move'].with_company(other_company).create({
'move_type': 'out_invoice',
@ -166,22 +310,27 @@ class TestItEdiImport(TestItEdi):
})
self.env['ir.attachment'].with_company(other_company).create({
'name': filename,
'datas': content,
'datas': self.fake_test_content,
'res_model': 'account.move',
'res_id': invoice.id,
'res_field': 'l10n_it_edi_attachment_file',
})
with patch.object(sql_db.Cursor, "commit", self.mock_commit):
fattura_pa._save_incoming_attachment_fattura_pa(
proxy_user=proxy_user,
id_transaction='9999999999',
filename=filename,
content=content,
key=None)
with (patch.object(self.proxy_user.__class__, '_decrypt_data', return_value=self.fake_test_content),
patch.object(sql_db.Cursor, "commit", mock_commit)):
self.env['account.move'].with_company(self.company)._l10n_it_edi_process_downloads(
{'999999999': {
'filename': filename,
'file': self.fake_test_content,
'key': str(uuid.uuid4()),
}},
self.proxy_user,
)
attachment = self.env['ir.attachment'].search([
('name', '=', 'IT01234567890_FPR02.xml'),
('res_model', '=', 'account.move'),
('res_field', '=', 'l10n_it_edi_attachment_file'),
('company_id', '=', self.company.id),
])
self.assertTrue(attachment)
@ -190,55 +339,278 @@ class TestItEdiImport(TestItEdi):
def test_receive_same_vendor_bill_twice(self):
""" Test that the second time we are receiving an SdiCoop invoice, the second is discarded """
fattura_pa = self.env.ref('l10n_it_edi.edi_fatturaPA')
content = self.fake_test_content.encode()
# Our test content is not encrypted
proxy_user = MagicMock()
proxy_user.company_id = self.company
proxy_user._decrypt_data.return_value = content
ProxyUser = self.env['account_edi_proxy_client.user']
proxy_user = ProxyUser.create({
'company_id': self.company.id,
'proxy_type': 'l10n_it_edi',
'id_client': str(uuid.uuid4()),
'edi_identification': ProxyUser._get_proxy_identification(self.company, 'l10n_it_edi'),
'private_key_id': self.private_key_id.id,
})
with patch.object(sql_db.Cursor, "commit", self.mock_commit):
for dummy in range(2):
fattura_pa._save_incoming_attachment_fattura_pa(
proxy_user=proxy_user,
id_transaction='9999999999',
filename=self.invoice_filename2,
content=content,
key=None)
filename = 'IT01234567890_FPR02.xml'
def mock_commit(self):
pass
with (patch.object(proxy_user.__class__, '_decrypt_data', return_value=self.fake_test_content),
patch.object(sql_db.Cursor, "commit", mock_commit),
tools.mute_logger("odoo.addons.l10n_it_edi.models.account_move")):
for _dummy in range(2):
processed = self.env['account.move']._l10n_it_edi_process_downloads({
'999999999': {
'filename': filename,
'file': self.fake_test_content,
'key': str(uuid.uuid4()),
}},
proxy_user,
)
# The Proxy ACK must be sent in both cases of import success and failure.
self.assertEqual(processed['proxy_acks'], ['999999999'])
# There should be one attachement with this filename
attachments = self.env['ir.attachment'].search([('name', '=', self.invoice_filename2)])
attachments = self.env['ir.attachment'].search([
('name', '=', 'IT01234567890_FPR02.xml'),
('res_model', '=', 'account.move'),
('res_field', '=', 'l10n_it_edi_attachment_file'),
])
self.assertEqual(len(attachments), 1)
invoices = self.env['account.move'].search([('payment_reference', '=', 'TWICE_TEST')])
self.assertEqual(len(invoices), 1)
def test_receive_bill_with_global_discount(self):
content = self.with_applied_xpath(
etree.fromstring(self.invoice_content),
'''
<xpath expr="//FatturaElettronicaBody/DatiGenerali/DatiGeneraliDocumento" position="inside">
<ScontoMaggiorazione>
<Tipo>SC</Tipo>
<Importo>2</Importo>
</ScontoMaggiorazione>
</xpath>
''')
invoices = self.edi_format._create_invoice_from_xml_tree(self.invoice_filename2, content)
applied_xml = """
<xpath expr="//FatturaElettronicaBody/DatiGenerali/DatiGeneraliDocumento" position="inside">
<ScontoMaggiorazione>
<Tipo>SC</Tipo>
<Importo>2</Importo>
</ScontoMaggiorazione>
</xpath>
"""
self.assertRecordValues(invoices, [{
'amount_untaxed': 3.0,
self._assert_import_invoice('IT01234567890_FPR01.xml', [{
'invoice_date': fields.Date.from_string('2014-12-18'),
'amount_untaxed': 5.0,
'amount_tax': 1.1,
}])
self.assertRecordValues(invoices.invoice_line_ids, [
{
'quantity': 5.0,
'name': 'DESCRIZIONE DELLA FORNITURA',
'price_unit': 1.0,
},
{
'invoice_line_ids': [
{
'quantity': 5.0,
'name': 'DESCRIZIONE DELLA FORNITURA',
'price_unit': 1.0,
},
],
}], applied_xml)
def test_receive_bill_with_multiple_discounts_in_line(self):
applied_xml = """
<xpath expr="//FatturaElettronicaBody/DatiBeniServizi/DettaglioLinee[1]" position="inside">
<ScontoMaggiorazione>
<Tipo>SC</Tipo>
<Percentuale>50.00</Percentuale>
</ScontoMaggiorazione>
<ScontoMaggiorazione>
<Tipo>SC</Tipo>
<Percentuale>25.00</Percentuale>
</ScontoMaggiorazione>
<ScontoMaggiorazione>
<Tipo>SC</Tipo>
<Percentuale>20.00</Percentuale>
</ScontoMaggiorazione>
</xpath>
<xpath expr="//FatturaElettronicaBody/DatiBeniServizi/DettaglioLinee[1]/PrezzoTotale" position="replace">
<PrezzoTotale>1.50000000</PrezzoTotale>
</xpath>
"""
self._assert_import_invoice('IT01234567890_FPR01.xml', [{
'invoice_date': fields.Date.from_string('2014-12-18'),
'amount_untaxed': 1.5,
'amount_tax': 0.33,
'invoice_line_ids': [
{
'quantity': 5.0,
'name': 'DESCRIZIONE DELLA FORNITURA',
'price_unit': 1.0,
'discount': 70.0,
}
],
}], applied_xml)
def test_receive_two_bills_in_one_file(self):
self._assert_import_invoice('IT01234567890_FPR03.xml', [
{
'invoice_date': fields.Date.from_string('2014-12-18'),
'amount_tax': 5.5,
'amount_untaxed': 25.0,
'invoice_line_ids': [
{
'name': 'DESCRIZIONE DELLA FORNITURA',
'price_unit': 1.0,
'quantity': 5.0,
},
{
'name': 'FORNITURE VARIE PER UFFICIO',
'price_unit': 2.0,
'quantity': 10.0,
}
],
},
{
'invoice_date': fields.Date.from_string('2014-12-20'),
'amount_untaxed': 2000.0,
'amount_tax': 440.0,
'invoice_line_ids': [{
'name': 'DESCRIZIONE DEL SERVIZIO',
'price_unit': 2000.0,
'quantity': 1.0,
'name': 'SCONTO',
'price_unit': -2,
}
])
}],
},
])
def test_receive_bill_with_maggiorazione_discount(self):
""" Test a sample e-invoice file with a discount of type MG (Maggiorazione). """
applied_xml = """
<xpath expr="//FatturaElettronicaBody/DatiBeniServizi/DettaglioLinee[1]" position="inside">
<ScontoMaggiorazione>
<Tipo>MG</Tipo>
<Percentuale>10.00</Percentuale>
</ScontoMaggiorazione>
</xpath>
<xpath expr="//FatturaElettronicaBody/DatiBeniServizi/DettaglioLinee[1]/PrezzoTotale" position="replace">
<PrezzoTotale>5.50</PrezzoTotale>
</xpath>
"""
self._assert_import_invoice('IT01234567890_FPR01.xml', [{
'invoice_date': fields.Date.from_string('2014-12-18'),
'amount_untaxed': 5.5,
'amount_tax': 1.21,
'invoice_line_ids': [
{
'quantity': 5.0,
'name': 'DESCRIZIONE DELLA FORNITURA',
'price_unit': 1.0,
'discount': -10.0,
},
],
}], applied_xml)
def test_invoice_user_can_compute_is_self_invoice(self):
"""Ensure that a user having only group_account_invoice can compute field l10n_it_edi_is_self_invoice"""
user = new_test_user(self.env, login='jag', groups='account.group_account_invoice')
move = self.env['account.move'].create({'move_type': 'in_invoice'})
move.with_user(user).read(['l10n_it_edi_is_self_invoice']) # should not raise
def test_l10n_it_payment_method_correctly_imported(self):
self._assert_import_invoice('IT01234567890_FPR01.xml', [{
'move_type': 'in_invoice',
'invoice_date': fields.Date.from_string('2014-12-18'),
'amount_untaxed': 5.0,
'amount_tax': 1.1,
'invoice_line_ids': [{
'quantity': 5.0,
'price_unit': 1.0,
'debit': 5.0,
}],
'l10n_it_payment_method': 'MP01',
}])
def test_import_vendor_bill_with_ref_service_valid_tax(self):
"""Ensure that importing vendor bill with a referenced service product, with a service tax of 22% S
only applies one tax on the product
"""
sale_tax = self.env['account.tax'].search([('display_name', '=', '22%'), ('company_id', '=', self.company.id)])[0]
supplier_tax = self.env['account.tax'].search([('display_name', '=', '22% S'), ('company_id', '=', self.company.id)])[0]
self.env['product.product'].create({
'name': 'Servizio tecnico',
'default_code': 'abcdefgh',
'type': 'service',
'list_price': 150.0,
'taxes_id': [Command.set([sale_tax.id])],
'supplier_taxes_id': [Command.set([supplier_tax.id])],
})
self._assert_import_invoice('IT01234567889_FPR03.xml', [{
'move_type': 'in_invoice',
'invoice_date': fields.Date.from_string('2014-12-18'),
'amount_untaxed': 25.0,
'amount_tax': 5.5,
}])
def test_cron_import_bill_from_another_company_without_conflicts(self):
"""
Ensure that in a multi-company environment, importing a bill containing products
restricted to another company does not fail due to company inconsistencies.
"""
test_product = self.env['product.product'].create({
'name': 'Test Product',
'default_code': 'TEST',
'barcode': 'TEST',
'standard_price': 75.0,
'company_id': self.company_data['company'].id,
})
self.env['product.supplierinfo'].create({
'product_id': test_product.id,
'product_code': 'TEST',
'partner_id': self.company_data_2["company"].partner_id.id,
})
applied_xml = """
<xpath expr="//FatturaElettronicaBody/DatiBeniServizi/DettaglioLinee" position="after">
<DettaglioLinee>
<NumeroLinea>2</NumeroLinea>
<CodiceArticolo>
<CodiceTipo>EAN</CodiceTipo>
<CodiceValore>TEST</CodiceValore>
</CodiceArticolo>
<Descrizione>[TEST] Test Product</Descrizione>
<Quantita>1.00</Quantita>
<PrezzoUnitario>5.00</PrezzoUnitario>
<PrezzoTotale>5.00</PrezzoTotale>
<AliquotaIVA>22.00</AliquotaIVA>
</DettaglioLinee>
<DettaglioLinee>
<NumeroLinea>3</NumeroLinea>
<CodiceArticolo>
<CodiceTipo>INTERNAL</CodiceTipo>
<CodiceValore>TEST</CodiceValore>
</CodiceArticolo>
<Descrizione>[TEST] Test Product</Descrizione>
<Quantita>2.00</Quantita>
<PrezzoUnitario>4.00</PrezzoUnitario>
<PrezzoTotale>8.00</PrezzoTotale>
<AliquotaIVA>22.00</AliquotaIVA>
</DettaglioLinee>
</xpath>
"""
self._assert_import_invoice('IT01234567890_FPR01.xml', [{
'move_type': 'in_invoice',
'invoice_date': fields.Date.from_string('2014-12-18'),
'amount_untaxed': 18.0,
'amount_tax': 3.96,
'invoice_line_ids': [
{
"product_id": False,
'name': 'DESCRIZIONE DELLA FORNITURA',
'quantity': 5.0,
'price_unit': 1.0,
'debit': 5.0,
},
{
'product_id': False,
'name': '[TEST] Test Product',
'quantity': 1.0,
'price_unit': 5.0,
'debit': 5.0,
},
{
'product_id': False,
'name': '[TEST] Test Product',
'quantity': 2.0,
'price_unit': 4.0,
'debit': 8.0,
},
],
}], applied_xml)

View file

@ -0,0 +1,65 @@
# Part of Odoo. See LICENSE file for full copyright and licensing details.
import datetime
from odoo.addons.l10n_it_edi.tests.common import TestItEdi
from odoo.tests.common import tagged
from odoo import Command
@tagged('post_install_l10n', 'post_install', '-at_install')
class TestItEdiPa(TestItEdi):
@classmethod
def setUpClass(cls):
super().setUpClass()
cls.Move = cls.env['account.move'].with_company(cls.company)
journal_code = cls.company_data_2['default_journal_sale'].code
cls.split_payment_tax = cls.env['account.tax'].with_company(cls.company).search([('name', '=', '22% SP')])
cls.split_payment_line_data = {
'name': 'standard_line',
'quantity': 1,
'price_unit': 800.40,
'tax_ids': [Command.set(cls.split_payment_tax.ids)],
}
cls.pa_partner_invoice_data = {
'move_type': 'out_invoice',
'invoice_date': datetime.date(2022, 3, 24),
'invoice_date_due': datetime.date(2022, 3, 24),
'partner_id': cls.italian_partner_b.id,
'partner_bank_id': cls.test_bank.id,
'invoice_line_ids': [
Command.create(cls.split_payment_line_data),
],
'l10n_it_origin_document_type': 'purchase_order',
'l10n_it_origin_document_date': datetime.date(2022, 3, 23),
'l10n_it_origin_document_name': f"{journal_code}/2022/0001",
'l10n_it_cup': '0123456789',
'l10n_it_cig': '0987654321'
}
cls.pa_partner_invoice = cls.Move.create(cls.pa_partner_invoice_data)
cls.pa_partner_invoice_2 = cls.Move.create({
**cls.pa_partner_invoice_data,
'l10n_it_origin_document_type': False,
})
cls.pa_partner_invoice._post()
def test_send_pa_partner(self):
""" ImportoTotaleDocumento must include VAT
ImportoPagamento must be without VAT
EsigibilitaIva of the Split payment tax must be 'S'
The orgin_document fields must appear in the XML.
Use reference validator: https://fex-app.com/servizi/inizia
"""
self._assert_export_invoice(self.pa_partner_invoice, 'split_payment.xml')
credit_note_wizard = self.env['account.move.reversal'] \
.with_context(active_model='account.move', active_ids=self.pa_partner_invoice.ids) \
.create({
'date': datetime.date(2022, 3, 25),
'journal_id': self.pa_partner_invoice.journal_id.id,
})
action = credit_note_wizard.reverse_moves()
credit_note = self.env['account.move'].browse(action['res_id'])
credit_note.action_post()
self._assert_export_invoice(credit_note, 'split_payment_cn.xml')

Some files were not shown because too many files have changed in this diff Show more