mirror of
https://github.com/bringout/oca-ocb-accounting.git
synced 2026-04-24 01:42:03 +02:00
19.0 vanilla
This commit is contained in:
parent
ba20ce7443
commit
768b70e05e
2357 changed files with 1057103 additions and 712486 deletions
|
|
@ -5,17 +5,17 @@ Electronic invoicing module
|
|||
===========================
|
||||
|
||||
Allows to export and import formats: E-FFF, UBL Bis 3, EHF3, NLCIUS, Factur-X (CII), XRechnung (UBL).
|
||||
When generating the PDF on the invoice, the PDF will be embedded inside the xml for all UBL formats. This allows the
|
||||
receiver to retrieve the PDF with only the xml file. Note that **EHF3 is fully implemented by UBL Bis 3** (`reference
|
||||
When generating the PDF on the invoice, the PDF will be embedded inside the xml for all UBL formats. This allows the
|
||||
receiver to retrieve the PDF with only the xml file. Note that **EHF3 is fully implemented by UBL Bis 3** (`reference
|
||||
<https://anskaffelser.dev/postaward/g3/spec/current/billing-3.0/norway/#_implementation>`_).
|
||||
|
||||
The formats can be chosen from the journal (Journal > Advanced Settings) linked to the invoice.
|
||||
The formats can be chosen from the journal (Journal > Advanced Settings) linked to the invoice.
|
||||
|
||||
Note that E-FFF, NLCIUS and XRechnung (UBL) are only available for Belgian, Dutch and German companies,
|
||||
respectively. UBL Bis 3 is only available for companies which country is present in the `EAS list
|
||||
Note that E-FFF, NLCIUS and XRechnung (UBL) are only available for Belgian, Dutch and German companies,
|
||||
respectively. UBL Bis 3 is only available for companies which country is present in the `EAS list
|
||||
<https://docs.peppol.eu/poacc/billing/3.0/codelist/eas/>`_.
|
||||
|
||||
Note also that in order for Chorus Pro to automatically detect the "PDF/A-3 (Factur-X)" format, you need to activate
|
||||
Note also that in order for Chorus Pro to automatically detect the "PDF/A-3 (Factur-X)" format, you need to activate
|
||||
the "Factur-X PDF/A-3" option on the journal. This option will also validate the xml against the Factur-X and Chorus
|
||||
Pro rules and show the errors.
|
||||
|
||||
|
|
@ -28,35 +28,14 @@ pip install odoo-bringout-oca-ocb-account_edi_ubl_cii
|
|||
|
||||
## Dependencies
|
||||
|
||||
This addon depends on:
|
||||
- account_edi
|
||||
|
||||
## Manifest Information
|
||||
|
||||
- **Name**: Import/Export electronic invoices with UBL/CII
|
||||
- **Version**: 1.0
|
||||
- **Category**: Accounting/Accounting
|
||||
- **License**: LGPL-3
|
||||
- **Installable**: True
|
||||
- account
|
||||
|
||||
## Source
|
||||
|
||||
Based on [OCA/OCB](https://github.com/OCA/OCB) branch 16.0, addon `account_edi_ubl_cii`.
|
||||
- Repository: https://github.com/OCA/OCB
|
||||
- Branch: 19.0
|
||||
- Path: addons/account_edi_ubl_cii
|
||||
|
||||
## 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
|
||||
- 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.
|
||||
|
|
|
|||
|
|
@ -1,3 +1,13 @@
|
|||
# -*- coding: utf-8 -*-
|
||||
|
||||
from . import models
|
||||
from . import wizard
|
||||
|
||||
|
||||
def uninstall_hook(env):
|
||||
env["res.partner"]._clear_removed_edi_formats(
|
||||
"facturx",
|
||||
"nlcius",
|
||||
"ubl_a_nz",
|
||||
"ubl_bis3",
|
||||
"ubl_sg",
|
||||
"xrechnung",
|
||||
)
|
||||
|
|
|
|||
|
|
@ -1,4 +1,3 @@
|
|||
# -*- coding: utf-8 -*-
|
||||
{
|
||||
'name': "Import/Export electronic invoices with UBL/CII",
|
||||
'version': '1.0',
|
||||
|
|
@ -8,29 +7,36 @@ Electronic invoicing module
|
|||
===========================
|
||||
|
||||
Allows to export and import formats: E-FFF, UBL Bis 3, EHF3, NLCIUS, Factur-X (CII), XRechnung (UBL).
|
||||
When generating the PDF on the invoice, the PDF will be embedded inside the xml for all UBL formats. This allows the
|
||||
receiver to retrieve the PDF with only the xml file. Note that **EHF3 is fully implemented by UBL Bis 3** (`reference
|
||||
When generating the PDF on the invoice, the PDF will be embedded inside the xml for all UBL formats. This allows the
|
||||
receiver to retrieve the PDF with only the xml file. Note that **EHF3 is fully implemented by UBL Bis 3** (`reference
|
||||
<https://anskaffelser.dev/postaward/g3/spec/current/billing-3.0/norway/#_implementation>`_).
|
||||
|
||||
The formats can be chosen from the journal (Journal > Advanced Settings) linked to the invoice.
|
||||
The formats can be chosen from the journal (Journal > Advanced Settings) linked to the invoice.
|
||||
|
||||
Note that E-FFF, NLCIUS and XRechnung (UBL) are only available for Belgian, Dutch and German companies,
|
||||
respectively. UBL Bis 3 is only available for companies which country is present in the `EAS list
|
||||
Note that E-FFF, NLCIUS and XRechnung (UBL) are only available for Belgian, Dutch and German companies,
|
||||
respectively. UBL Bis 3 is only available for companies which country is present in the `EAS list
|
||||
<https://docs.peppol.eu/poacc/billing/3.0/codelist/eas/>`_.
|
||||
|
||||
Note also that in order for Chorus Pro to automatically detect the "PDF/A-3 (Factur-X)" format, you need to activate
|
||||
Note also that in order for Chorus Pro to automatically detect the "PDF/A-3 (Factur-X)" format, you need to activate
|
||||
the "Factur-X PDF/A-3" option on the journal. This option will also validate the xml against the Factur-X and Chorus
|
||||
Pro rules and show the errors.
|
||||
""",
|
||||
'depends': ['account_edi'],
|
||||
'depends': ['account'],
|
||||
'data': [
|
||||
'data/account_edi_data.xml',
|
||||
'data/cii_22_templates.xml',
|
||||
'data/ubl_20_templates.xml',
|
||||
'data/ubl_21_templates.xml',
|
||||
'views/account_tax_views.xml',
|
||||
'views/account_move_views.xml',
|
||||
'views/res_partner_views.xml',
|
||||
'report/account_edi_ubl_cii_report_templates.xml',
|
||||
],
|
||||
'assets': {
|
||||
'web.assets_backend': [
|
||||
'account_edi_ubl_cii/static/src/scss/**/*',
|
||||
],
|
||||
},
|
||||
'installable': True,
|
||||
'application': False,
|
||||
'auto_install': True,
|
||||
'author': 'Odoo S.A.',
|
||||
'license': 'LGPL-3',
|
||||
'uninstall_hook': 'uninstall_hook',
|
||||
}
|
||||
|
|
|
|||
|
|
@ -1,42 +0,0 @@
|
|||
<?xml version="1.0" encoding="utf-8"?>
|
||||
<odoo>
|
||||
<record id="edi_facturx_1_0_05" model="account.edi.format">
|
||||
<field name="name">Factur-X (PDF/A-3)</field>
|
||||
<field name="code">facturx_1_0_05</field>
|
||||
</record>
|
||||
|
||||
<record id="edi_nlcius_1" model="account.edi.format">
|
||||
<field name="name">NLCIUS (Netherlands)</field>
|
||||
<field name="code">nlcius_1</field>
|
||||
</record>
|
||||
|
||||
<record id="ubl_bis3" model="account.edi.format">
|
||||
<field name="name">Peppol BIS Billing 3.0</field>
|
||||
<field name="code">ubl_bis3</field>
|
||||
</record>
|
||||
|
||||
<record id="ubl_de" model="account.edi.format">
|
||||
<field name="name">XRechnung UBL (Germany)</field>
|
||||
<field name="code">ubl_de</field>
|
||||
</record>
|
||||
|
||||
<record id="edi_ubl_2_1" model="account.edi.format">
|
||||
<field name="name">UBL 2.1</field>
|
||||
<field name="code">ubl_2_1</field>
|
||||
</record>
|
||||
|
||||
<record id="edi_efff_1" model="account.edi.format">
|
||||
<field name="name">E-FFF (BE)</field>
|
||||
<field name="code">efff_1</field>
|
||||
</record>
|
||||
|
||||
<record id="ubl_a_nz" model="account.edi.format">
|
||||
<field name="name">A-NZ BIS Billing 3.0</field>
|
||||
<field name="code">ubl_a_nz</field>
|
||||
</record>
|
||||
|
||||
<record id="ubl_sg" model="account.edi.format">
|
||||
<field name="name">SG BIS Billing 3.0</field>
|
||||
<field name="code">ubl_sg</field>
|
||||
</record>
|
||||
</odoo>
|
||||
|
|
@ -5,7 +5,9 @@
|
|||
<t t-set="line" t-value="line_vals['line']"/>
|
||||
<t xmlns:ram="urn:un:unece:uncefact:data:standard:ReusableAggregateBusinessInformationEntity:100"
|
||||
xmlns:rsm="urn:un:unece:uncefact:data:standard:CrossIndustryInvoice:100"
|
||||
xmlns:udt="urn:un:unece:uncefact:data:standard:UnqualifiedDataType:100">
|
||||
xmlns:udt="urn:un:unece:uncefact:data:standard:UnqualifiedDataType:100"
|
||||
xmlns:qdt="urn:un:unece:uncefact:data:standard:QualifiedDataType:100"
|
||||
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance">
|
||||
|
||||
<ram:IncludedSupplyChainTradeLineItem>
|
||||
<!-- Line number. -->
|
||||
|
|
@ -22,17 +24,14 @@
|
|||
<ram:SellerAssignedID
|
||||
t-if="line.product_id and line.product_id.default_code"
|
||||
t-out="line.product_id.default_code"/>
|
||||
<!-- TODO:
|
||||
<ram:Name t-esc="line.product_id.name or line.name"/>
|
||||
<ram:Description t-esc="line.name" t-if="line.name != line.product_id.name"/>
|
||||
-->
|
||||
<ram:Name t-esc="line.name"/>
|
||||
<ram:Name t-out="line.product_id.name"/>
|
||||
<ram:Description t-out="line.name" t-if="line.name != line.product_id.name"/>
|
||||
</ram:SpecifiedTradeProduct>
|
||||
|
||||
<!-- Amounts. -->
|
||||
<ram:SpecifiedLineTradeAgreement>
|
||||
<!-- Line information: unit_price
|
||||
NB: the gross_price_unit should be the price tax excluded !
|
||||
NB: the gross_price_unit should be the price tax excluded!
|
||||
if price_unit = 100 and tax 10% price_include -> then the gross_price_unit is 91
|
||||
-->
|
||||
<ram:GrossPriceProductTradePrice>
|
||||
|
|
@ -56,7 +55,7 @@
|
|||
<ram:SpecifiedLineTradeDelivery>
|
||||
<ram:BilledQuantity
|
||||
t-att-unitCode="line_vals.get('unece_uom_code')"
|
||||
t-out="line.quantity"/> <!-- /!\ The quantity is the line.quantity since we keep the unece_uom_code ! -->
|
||||
t-out="line_vals.get('quantity')"/>
|
||||
</ram:SpecifiedLineTradeDelivery>
|
||||
|
||||
<ram:SpecifiedLineTradeSettlement>
|
||||
|
|
@ -69,6 +68,16 @@
|
|||
</ram:ApplicableTradeTax>
|
||||
</t>
|
||||
|
||||
<!-- Billing Period -->
|
||||
<ram:BillingSpecifiedPeriod t-if="line_vals.get('billing_start') and line_vals.get('billing_end')">
|
||||
<ram:StartDateTime>
|
||||
<udt:DateTimeString format="102" t-out="format_date(line_vals['billing_start'])"/>
|
||||
</ram:StartDateTime>
|
||||
<ram:EndDateTime>
|
||||
<udt:DateTimeString format="102" t-out="format_date(line_vals['billing_end'])"/>
|
||||
</ram:EndDateTime>
|
||||
</ram:BillingSpecifiedPeriod>
|
||||
|
||||
<!-- Allowance/Charge on the line -->
|
||||
<t t-foreach="line_vals.get('allowance_charge_vals_list')" t-as="allowance_charge_vals">
|
||||
<ram:SpecifiedTradeAllowanceCharge>
|
||||
|
|
@ -94,21 +103,23 @@
|
|||
<template id="account_invoice_partner_facturx_export_22">
|
||||
<t xmlns:ram="urn:un:unece:uncefact:data:standard:ReusableAggregateBusinessInformationEntity:100"
|
||||
xmlns:rsm="urn:un:unece:uncefact:data:standard:CrossIndustryInvoice:100"
|
||||
xmlns:udt="urn:un:unece:uncefact:data:standard:UnqualifiedDataType:100">
|
||||
xmlns:udt="urn:un:unece:uncefact:data:standard:UnqualifiedDataType:100"
|
||||
xmlns:qdt="urn:un:unece:uncefact:data:standard:QualifiedDataType:100"
|
||||
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance">
|
||||
<!-- Contact. -->
|
||||
<ram:Name t-out="partner.display_name"/>
|
||||
<ram:Name t-out="partner.display_name if partner.name else partner.commercial_partner_id.display_name"/>
|
||||
<ram:SpecifiedLegalOrganization t-if="specified_legal_organization_val">
|
||||
<ram:ID t-att-schemeID="str('0002')"
|
||||
t-out="specified_legal_organization_val"/>
|
||||
</ram:SpecifiedLegalOrganization>
|
||||
|
||||
<ram:DefinedTradeContact t-if="not hide_dtc">
|
||||
<ram:PersonName t-esc="partner.name"/>
|
||||
<ram:TelephoneUniversalCommunication t-if="partner.phone or partner.mobile">
|
||||
<ram:CompleteNumber t-esc="partner.phone or partner.mobile"/>
|
||||
<ram:PersonName t-out="partner.name"/>
|
||||
<ram:TelephoneUniversalCommunication t-if="partner.phone">
|
||||
<ram:CompleteNumber t-out="partner.phone"/>
|
||||
</ram:TelephoneUniversalCommunication>
|
||||
<ram:EmailURIUniversalCommunication t-if="partner.email">
|
||||
<ram:URIID schemeID='SMTP' t-esc="partner.email"/>
|
||||
<ram:URIID t-out="partner.email"/>
|
||||
</ram:EmailURIUniversalCommunication>
|
||||
</ram:DefinedTradeContact>
|
||||
|
||||
|
|
@ -120,7 +131,9 @@
|
|||
<template id="account_invoice_address_facturx_export_22">
|
||||
<t xmlns:ram="urn:un:unece:uncefact:data:standard:ReusableAggregateBusinessInformationEntity:100"
|
||||
xmlns:rsm="urn:un:unece:uncefact:data:standard:CrossIndustryInvoice:100"
|
||||
xmlns:udt="urn:un:unece:uncefact:data:standard:UnqualifiedDataType:100">
|
||||
xmlns:udt="urn:un:unece:uncefact:data:standard:UnqualifiedDataType:100"
|
||||
xmlns:qdt="urn:un:unece:uncefact:data:standard:QualifiedDataType:100"
|
||||
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance">
|
||||
<!-- Address. -->
|
||||
<ram:PostalTradeAddress>
|
||||
<ram:PostcodeCode t-out="partner.zip"/>
|
||||
|
|
@ -137,7 +150,9 @@
|
|||
<rsm:CrossIndustryInvoice
|
||||
xmlns:ram="urn:un:unece:uncefact:data:standard:ReusableAggregateBusinessInformationEntity:100"
|
||||
xmlns:rsm="urn:un:unece:uncefact:data:standard:CrossIndustryInvoice:100"
|
||||
xmlns:udt="urn:un:unece:uncefact:data:standard:UnqualifiedDataType:100">
|
||||
xmlns:udt="urn:un:unece:uncefact:data:standard:UnqualifiedDataType:100"
|
||||
xmlns:qdt="urn:un:unece:uncefact:data:standard:QualifiedDataType:100"
|
||||
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance">
|
||||
<!-- Factur-x level:
|
||||
* minimum or basicwl: urn:factur-x.eu:1p0...
|
||||
* basic: urn:cen.eu:en16931:2017:compliant:factur-x.eu:1p0:basic
|
||||
|
|
@ -180,7 +195,11 @@
|
|||
</t>
|
||||
|
||||
<!-- VAT. -->
|
||||
<ram:SpecifiedTaxRegistration t-if="record.company_id.vat">
|
||||
<ram:SpecifiedTaxRegistration t-if="record.fiscal_position_id.foreign_vat">
|
||||
<ram:ID schemeID="VA" t-out="record.fiscal_position_id.foreign_vat"/>
|
||||
</ram:SpecifiedTaxRegistration>
|
||||
|
||||
<ram:SpecifiedTaxRegistration t-elif="record.company_id.vat">
|
||||
<ram:ID schemeID="VA" t-out="record.company_id.vat"/>
|
||||
</ram:SpecifiedTaxRegistration>
|
||||
</ram:SellerTradeParty>
|
||||
|
|
@ -236,7 +255,7 @@
|
|||
|
||||
<!-- Bank account. -->
|
||||
<ram:SpecifiedTradeSettlementPaymentMeans t-if="record.partner_bank_id.sanitized_acc_number">
|
||||
<ram:TypeCode>42</ram:TypeCode>
|
||||
<ram:TypeCode t-out="payment_means_code"/>
|
||||
<ram:PayeePartyCreditorFinancialAccount>
|
||||
<ram:IBANID
|
||||
t-if="record.partner_bank_id.acc_type == 'iban'"
|
||||
|
|
@ -282,6 +301,10 @@
|
|||
<ram:DueDateDateTime t-if="record.invoice_date_due">
|
||||
<udt:DateTimeString format="102" t-out="format_date(record.invoice_date_due)"/>
|
||||
</ram:DueDateDateTime>
|
||||
<ram:ApplicableTradePaymentDiscountTerms t-if="record.invoice_payment_term_id.early_discount and record.invoice_payment_term_id.early_pay_discount_computation == 'mixed'">
|
||||
<ram:BasisPeriodMeasure unitCode="DAY" t-out="record.invoice_payment_term_id.discount_days"/>
|
||||
<ram:CalculationPercent t-out="record.invoice_payment_term_id.discount_percentage"/>
|
||||
</ram:ApplicableTradePaymentDiscountTerms>
|
||||
</ram:SpecifiedTradePaymentTerms>
|
||||
|
||||
<!-- Summary. -->
|
||||
|
|
@ -310,12 +333,12 @@
|
|||
<rdf:RDF xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#">
|
||||
<rdf:Description xmlns:pdfaid="http://www.aiim.org/pdfa/ns/id/" rdf:about="">
|
||||
<pdfaid:part>3</pdfaid:part>
|
||||
<pdfaid:conformance>B</pdfaid:conformance>
|
||||
<pdfaid:conformance>A</pdfaid:conformance>
|
||||
</rdf:Description>
|
||||
<rdf:Description xmlns:dc="http://purl.org/dc/elements/1.1/" rdf:about="">
|
||||
<dc:title>
|
||||
<rdf:Alt>
|
||||
<rdf:li t-att="{'xml:lang': 'x-default'}" t-esc="title"/>
|
||||
<rdf:li t-att="{'xml:lang': 'x-default'}" t-out="title"/>
|
||||
</rdf:Alt>
|
||||
</dc:title>
|
||||
<dc:creator>
|
||||
|
|
@ -334,8 +357,8 @@
|
|||
</rdf:Description>
|
||||
<rdf:Description xmlns:xmp="http://ns.adobe.com/xap/1.0/" rdf:about="">
|
||||
<xmp:CreatorTool>Odoo</xmp:CreatorTool>
|
||||
<xmp:CreateDate t-esc="date"/>
|
||||
<xmp:ModifyDate t-esc="date"/>
|
||||
<xmp:CreateDate t-out="date"/>
|
||||
<xmp:ModifyDate t-out="date"/>
|
||||
</rdf:Description>
|
||||
<rdf:Description xmlns:pdfaExtension="http://www.aiim.org/pdfa/ns/extension/"
|
||||
xmlns:pdfaSchema="http://www.aiim.org/pdfa/ns/schema#"
|
||||
|
|
|
|||
|
|
@ -1,414 +0,0 @@
|
|||
<?xml version="1.0" encoding="utf-8"?>
|
||||
<odoo>
|
||||
|
||||
<template id="ubl_20_AddressType">
|
||||
<t xmlns="urn:oasis:names:specification:ubl:schema:xsd:Invoice-2"
|
||||
xmlns:cac="urn:oasis:names:specification:ubl:schema:xsd:CommonAggregateComponents-2"
|
||||
xmlns:cbc="urn:oasis:names:specification:ubl:schema:xsd:CommonBasicComponents-2">
|
||||
<cbc:StreetName t-out="vals.get('street_name')"/>
|
||||
<cbc:AdditionalStreetName t-out="vals.get('additional_street_name')"/>
|
||||
<cbc:CityName t-out="vals.get('city_name')"/>
|
||||
<cbc:PostalZone t-out="vals.get('postal_zone')"/>
|
||||
<cbc:CountrySubentity t-out="vals.get('country_subentity')"/>
|
||||
<cbc:CountrySubentityCode t-out="vals.get('country_subentity_code')"/>
|
||||
<cac:Country>
|
||||
<t t-set="country_vals" t-value="vals.get('country_vals', {})"/>
|
||||
<cbc:IdentificationCode
|
||||
t-att="country_vals.get('identification_code_attrs', {})"
|
||||
t-out="country_vals.get('identification_code')"/>
|
||||
<cbc:Name t-out="country_vals.get('name')"/>
|
||||
</cac:Country>
|
||||
</t>
|
||||
</template>
|
||||
|
||||
<template id="ubl_20_PartyType">
|
||||
<t xmlns="urn:oasis:names:specification:ubl:schema:xsd:Invoice-2"
|
||||
xmlns:cac="urn:oasis:names:specification:ubl:schema:xsd:CommonAggregateComponents-2"
|
||||
xmlns:cbc="urn:oasis:names:specification:ubl:schema:xsd:CommonBasicComponents-2">
|
||||
<t t-set="partner" t-value="vals.get('partner') or builder.env['res.partner']"/>
|
||||
<cbc:EndpointID
|
||||
t-att="vals.get('endpoint_id_attrs', {})"
|
||||
t-out="vals.get('endpoint_id')"/>
|
||||
<t t-foreach="vals.get('party_identification_vals', [])" t-as="party_vals">
|
||||
<cac:PartyIdentification>
|
||||
<cbc:ID
|
||||
t-att="party_vals.get('id_attrs', {})"
|
||||
t-out="party_vals.get('id')"/>
|
||||
</cac:PartyIdentification>
|
||||
</t>
|
||||
<t t-foreach="vals.get('party_name_vals', [])" t-as="party_vals">
|
||||
<cac:PartyName>
|
||||
<cbc:Name t-out="party_vals.get('name')"/>
|
||||
</cac:PartyName>
|
||||
</t>
|
||||
<cac:PostalAddress>
|
||||
<t t-call="{{AddressType_template}}">
|
||||
<t t-set="vals" t-value="vals.get('postal_address_vals', {})"/>
|
||||
</t>
|
||||
</cac:PostalAddress>
|
||||
<t t-foreach="vals.get('party_tax_scheme_vals', [])" t-as="foreach_vals">
|
||||
<cac:PartyTaxScheme>
|
||||
<cbc:RegistrationName t-out="foreach_vals.get('registration_name')"/>
|
||||
<cbc:CompanyID
|
||||
t-att="foreach_vals.get('company_id_attrs', {})"
|
||||
t-out="foreach_vals.get('company_id')"/>
|
||||
<cac:RegistrationAddress>
|
||||
<t t-call="{{AddressType_template}}">
|
||||
<t t-set="vals" t-value="foreach_vals.get('registration_address_vals', {})"/>
|
||||
</t>
|
||||
</cac:RegistrationAddress>
|
||||
<cac:TaxScheme>
|
||||
<cbc:ID t-out="foreach_vals.get('tax_scheme_id')"/>
|
||||
</cac:TaxScheme>
|
||||
</cac:PartyTaxScheme>
|
||||
</t>
|
||||
|
||||
<t t-foreach="vals.get('party_legal_entity_vals', [])" t-as="foreach_vals">
|
||||
<cac:PartyLegalEntity>
|
||||
<cbc:RegistrationName t-out="foreach_vals.get('registration_name')"/>
|
||||
<cbc:CompanyID
|
||||
t-att="foreach_vals.get('company_id_attrs', {})"
|
||||
t-out="foreach_vals.get('company_id')"/>
|
||||
<cac:RegistrationAddress>
|
||||
<t t-call="{{AddressType_template}}">
|
||||
<t t-set="vals" t-value="foreach_vals.get('registration_address_vals', {})"/>
|
||||
</t>
|
||||
</cac:RegistrationAddress>
|
||||
</cac:PartyLegalEntity>
|
||||
</t>
|
||||
<cac:Contact>
|
||||
<t t-set="contact_vals" t-value="vals.get('contact_vals', {})"/>
|
||||
<cbc:ID t-out="contact_vals.get('id')"/>
|
||||
<cbc:Name t-out="contact_vals.get('name')"/>
|
||||
<cbc:Telephone t-out="contact_vals.get('telephone')"/>
|
||||
<cbc:ElectronicMail t-out="contact_vals.get('electronic_mail')"/>
|
||||
</cac:Contact>
|
||||
</t>
|
||||
</template>
|
||||
|
||||
<template id="ubl_20_PaymentMeansType">
|
||||
<t xmlns="urn:oasis:names:specification:ubl:schema:xsd:Invoice-2"
|
||||
xmlns:cac="urn:oasis:names:specification:ubl:schema:xsd:CommonAggregateComponents-2"
|
||||
xmlns:cbc="urn:oasis:names:specification:ubl:schema:xsd:CommonBasicComponents-2">
|
||||
<cbc:PaymentMeansCode
|
||||
t-att="vals.get('payment_means_code_attrs', {})"
|
||||
t-out="vals.get('payment_means_code')"/>
|
||||
<cbc:PaymentDueDate t-out="vals.get('payment_due_date')"/>
|
||||
<cbc:InstructionID t-out="vals.get('instruction_id')"/>
|
||||
<t t-foreach="vals.get('payment_id_vals', [])" t-as="payment_id">
|
||||
<cbc:PaymentID t-out="payment_id"/>
|
||||
</t>
|
||||
<cac:PayeeFinancialAccount>
|
||||
<t t-set="payee_financial_account_vals" t-value="vals.get('payee_financial_account_vals', {})"/>
|
||||
<cbc:ID
|
||||
t-att="payee_financial_account_vals.get('id_attrs', {})"
|
||||
t-out="payee_financial_account_vals.get('id')"/>
|
||||
<cac:FinancialInstitutionBranch>
|
||||
<t t-set="financial_institution_branch_vals" t-value="payee_financial_account_vals.get('financial_institution_branch_vals', {})"/>
|
||||
<cbc:ID
|
||||
t-att="financial_institution_branch_vals.get('id_attrs', {})"
|
||||
t-out="financial_institution_branch_vals.get('id')"/>
|
||||
<cac:FinancialInstitution>
|
||||
<t t-set="financial_institution_vals" t-value="financial_institution_branch_vals.get('financial_institution_vals', {})"/>
|
||||
<cbc:ID
|
||||
t-att="financial_institution_vals.get('id_attrs', {})"
|
||||
t-out="financial_institution_vals.get('id')"/>
|
||||
<cbc:Name t-out="financial_institution_vals.get('name')"/>
|
||||
<cac:Address>
|
||||
<t t-call="{{AddressType_template}}">
|
||||
<t t-set="vals" t-value="financial_institution_vals.get('address_vals', {})"/>
|
||||
</t>
|
||||
</cac:Address>
|
||||
</cac:FinancialInstitution>
|
||||
</cac:FinancialInstitutionBranch>
|
||||
</cac:PayeeFinancialAccount>
|
||||
</t>
|
||||
</template>
|
||||
|
||||
<template id="ubl_20_TaxCategoryType">
|
||||
<t xmlns="urn:oasis:names:specification:ubl:schema:xsd:Invoice-2"
|
||||
xmlns:cac="urn:oasis:names:specification:ubl:schema:xsd:CommonAggregateComponents-2"
|
||||
xmlns:cbc="urn:oasis:names:specification:ubl:schema:xsd:CommonBasicComponents-2">
|
||||
<cbc:ID
|
||||
t-att="vals.get('id_attrs', {})"
|
||||
t-out="vals.get('id')"/>
|
||||
<cbc:Name t-out="vals.get('name')"/>
|
||||
<cbc:Percent t-out="vals.get('percent')"/>
|
||||
<cbc:TaxExemptionReasonCode
|
||||
t-out="vals.get('tax_exemption_reason_code')"/>
|
||||
<cbc:TaxExemptionReason
|
||||
t-out="vals.get('tax_exemption_reason')"/>
|
||||
<cac:TaxScheme>
|
||||
<cbc:ID t-translation="off" t-out="vals.get('tax_scheme_id')"/>
|
||||
</cac:TaxScheme>
|
||||
</t>
|
||||
</template>
|
||||
|
||||
<template id="ubl_20_TaxTotalType">
|
||||
<t xmlns="urn:oasis:names:specification:ubl:schema:xsd:Invoice-2"
|
||||
xmlns:cac="urn:oasis:names:specification:ubl:schema:xsd:CommonAggregateComponents-2"
|
||||
xmlns:cbc="urn:oasis:names:specification:ubl:schema:xsd:CommonBasicComponents-2">
|
||||
<cbc:TaxAmount
|
||||
t-att-currencyID="vals['currency'].name"
|
||||
t-out="format_float(vals.get('tax_amount'), vals.get('currency_dp'))"/>
|
||||
<t t-foreach="vals.get('tax_subtotal_vals', [])" t-as="foreach_vals">
|
||||
<cac:TaxSubtotal>
|
||||
<cbc:TaxableAmount
|
||||
t-att-currencyID="foreach_vals['currency'].name"
|
||||
t-out="format_float(foreach_vals.get('taxable_amount'), foreach_vals.get('currency_dp'))"/>
|
||||
<cbc:TaxAmount
|
||||
t-att-currencyID="foreach_vals['currency'].name"
|
||||
t-out="format_float(foreach_vals.get('tax_amount'), foreach_vals.get('currency_dp'))"/>
|
||||
<cbc:Percent t-out="foreach_vals.get('percent')"/>
|
||||
<cac:TaxCategory>
|
||||
<t t-call="{{TaxCategoryType_template}}">
|
||||
<t t-set="vals" t-value="foreach_vals.get('tax_category_vals', {})"/>
|
||||
</t>
|
||||
</cac:TaxCategory>
|
||||
</cac:TaxSubtotal>
|
||||
</t>
|
||||
</t>
|
||||
</template>
|
||||
|
||||
<template id="ubl_20_AllowanceChargeType">
|
||||
<t xmlns="urn:oasis:names:specification:ubl:schema:xsd:Invoice-2"
|
||||
xmlns:cac="urn:oasis:names:specification:ubl:schema:xsd:CommonAggregateComponents-2"
|
||||
xmlns:cbc="urn:oasis:names:specification:ubl:schema:xsd:CommonBasicComponents-2">
|
||||
<cbc:ChargeIndicator t-out="vals.get('charge_indicator')"/>
|
||||
<cbc:AllowanceChargeReasonCode t-out="vals.get('allowance_charge_reason_code')"/>
|
||||
<cbc:AllowanceChargeReason t-out="vals.get('allowance_charge_reason')"/>
|
||||
<cbc:MultiplierFactorNumeric t-out="vals.get('multiplier_factor')"/>
|
||||
<cbc:Amount
|
||||
t-att-currencyID="vals.get('currency_name')"
|
||||
t-out="format_float(vals.get('amount'), vals.get('currency_dp'))"/>
|
||||
<t t-foreach="vals.get('tax_category_vals', [])" t-as="foreach_vals">
|
||||
<cac:TaxCategory>
|
||||
<t t-call="{{TaxCategoryType_template}}">
|
||||
<t t-set="vals" t-value="foreach_vals"/>
|
||||
</t>
|
||||
</cac:TaxCategory>
|
||||
</t>
|
||||
</t>
|
||||
</template>
|
||||
|
||||
<template id="ubl_20_InvoiceLineType">
|
||||
<t xmlns="urn:oasis:names:specification:ubl:schema:xsd:Invoice-2"
|
||||
xmlns:cac="urn:oasis:names:specification:ubl:schema:xsd:CommonAggregateComponents-2"
|
||||
xmlns:cbc="urn:oasis:names:specification:ubl:schema:xsd:CommonBasicComponents-2">
|
||||
<cbc:ID t-out="vals.get('id')"/>
|
||||
<cbc:Note t-out="vals.get('note')"/>
|
||||
<cbc:InvoicedQuantity
|
||||
t-if="invoice.move_type == 'out_invoice'"
|
||||
t-att="vals.get('invoiced_quantity_attrs', {})"
|
||||
t-out="vals.get('invoiced_quantity')"/>
|
||||
<cbc:CreditedQuantity
|
||||
t-if="invoice.move_type == 'out_refund'"
|
||||
t-att="vals.get('invoiced_quantity_attrs', {})"
|
||||
t-out="vals.get('invoiced_quantity')"/>
|
||||
<cbc:LineExtensionAmount
|
||||
t-att-currencyID="vals['currency'].name"
|
||||
t-out="format_float(vals.get('line_extension_amount'), vals.get('currency_dp'))"/>
|
||||
<!-- AllowanceCharge is only present for InvoiceLine, not for CreditNoteLine in UBL 2.0
|
||||
(they are both present in UBL 2.1 and next)
|
||||
http://www.datypic.com/sc/ubl20/e-cac_CreditNoteLine.html
|
||||
http://www.datypic.com/sc/ubl20/e-cac_InvoiceLine.html
|
||||
-->
|
||||
<t t-if="invoice.move_type == 'out_invoice'">
|
||||
<t t-foreach="vals.get('allowance_charge_vals', [])" t-as="foreach_vals">
|
||||
<cac:AllowanceCharge>
|
||||
<t t-call="{{AllowanceChargeType_template}}">
|
||||
<t t-set="vals" t-value="foreach_vals"/>
|
||||
</t>
|
||||
</cac:AllowanceCharge>
|
||||
</t>
|
||||
</t>
|
||||
<t t-foreach="vals.get('tax_total_vals', [])" t-as="foreach_vals">
|
||||
<cac:TaxTotal>
|
||||
<t t-call="{{TaxTotalType_template}}">
|
||||
<t t-set="vals" t-value="foreach_vals"/>
|
||||
</t>
|
||||
</cac:TaxTotal>
|
||||
</t>
|
||||
<cac:Item>
|
||||
<t t-set="item_vals" t-value="vals.get('item_vals', {})"/>
|
||||
<cbc:Description t-out="item_vals.get('description')"/>
|
||||
<cbc:Name t-out="item_vals.get('name')"/>
|
||||
<cac:SellersItemIdentification>
|
||||
<cbc:ID t-out="item_vals.get('sellers_item_identification_vals', {}).get('id')"/>
|
||||
</cac:SellersItemIdentification>
|
||||
<t t-foreach="item_vals.get('classified_tax_category_vals', [])" t-as="foreach_vals">
|
||||
<cac:ClassifiedTaxCategory>
|
||||
<t t-call="{{TaxCategoryType_template}}">
|
||||
<t t-set="vals" t-value="foreach_vals"/>
|
||||
</t>
|
||||
</cac:ClassifiedTaxCategory>
|
||||
</t>
|
||||
</cac:Item>
|
||||
<cac:Price>
|
||||
<t t-set="vals" t-value="vals.get('price_vals', {})"/>
|
||||
<cbc:PriceAmount
|
||||
t-att-currencyID="vals['currency'].name"
|
||||
t-out="vals.get('price_amount')"/>
|
||||
<!-- nbr of item units to which the price applies), i.e.: 1 Dozen = 12 units, not mandatory -->
|
||||
<cbc:BaseQuantity
|
||||
t-att="vals.get('base_quantity_attrs', {})"
|
||||
t-out="vals.get('base_quantity')"/>
|
||||
</cac:Price>
|
||||
</t>
|
||||
</template>
|
||||
|
||||
<template id="ubl_20_InvoiceType">
|
||||
<t xmlns="urn:oasis:names:specification:ubl:schema:xsd:Invoice-2"
|
||||
xmlns:cac="urn:oasis:names:specification:ubl:schema:xsd:CommonAggregateComponents-2"
|
||||
xmlns:cbc="urn:oasis:names:specification:ubl:schema:xsd:CommonBasicComponents-2">
|
||||
<cbc:UBLVersionID t-out="vals.get('ubl_version_id')"/>
|
||||
<cbc:CustomizationID t-out="vals.get('customization_id')"/>
|
||||
<cbc:ProfileID t-out="vals.get('profile_id')"/>
|
||||
<cbc:ID t-out="vals.get('id')"/>
|
||||
<cbc:IssueDate t-out="vals.get('issue_date')"/>
|
||||
<cbc:InvoiceTypeCode
|
||||
t-if="invoice.move_type == 'out_invoice'"
|
||||
t-att="vals.get('invoice_type_code_attrs', {})"
|
||||
t-out="vals.get('invoice_type_code')"
|
||||
/>
|
||||
<t t-foreach="vals.get('note_vals', [])" t-as="note">
|
||||
<cbc:Note t-out="note"/>
|
||||
</t>
|
||||
<cbc:DocumentCurrencyCode
|
||||
t-att="vals.get('document_currency_code_attrs', {})"
|
||||
t-out="invoice.currency_id.name.upper()"/>
|
||||
<t t-foreach="vals.get('invoice_period_vals_list', [])" t-as="foreach_vals">
|
||||
<cac:InvoicePeriod>
|
||||
<cbc:StartDate t-out="foreach_vals.get('start_date')"/>
|
||||
<cbc:EndDate t-out="foreach_vals.get('end_date')"/>
|
||||
</cac:InvoicePeriod>
|
||||
</t>
|
||||
<cac:OrderReference>
|
||||
<cbc:ID t-esc="vals.get('order_reference')"/>
|
||||
<cbc:SalesOrderID t-esc="vals.get('sales_order_id')"/>
|
||||
</cac:OrderReference>
|
||||
<cac:BillingReference t-if="vals.get('billing_reference_vals')">
|
||||
<cac:InvoiceDocumentReference>
|
||||
<cbc:ID t-out="vals['billing_reference_vals'].get('id')"/>
|
||||
<cbc:IssueDate t-out="vals['billing_reference_vals'].get('issue_date')"/>
|
||||
</cac:InvoiceDocumentReference>
|
||||
</cac:BillingReference>
|
||||
<cac:AccountingSupplierParty>
|
||||
<t t-set="accounting_supplier_vals" t-value="vals.get('accounting_supplier_party_vals', {})"/>
|
||||
<cac:Party>
|
||||
<t t-call="{{PartyType_template}}">
|
||||
<t t-set="vals" t-value="accounting_supplier_vals.get('party_vals', {})"/>
|
||||
</t>
|
||||
</cac:Party>
|
||||
</cac:AccountingSupplierParty>
|
||||
<cac:AccountingCustomerParty>
|
||||
<t t-set="accounting_customer_vals" t-value="vals.get('accounting_customer_party_vals', {})"/>
|
||||
<cac:Party>
|
||||
<t t-call="{{PartyType_template}}">
|
||||
<t t-set="vals" t-value="accounting_customer_vals.get('party_vals', {})"/>
|
||||
</t>
|
||||
</cac:Party>
|
||||
</cac:AccountingCustomerParty>
|
||||
<t id="delivery_foreach" t-foreach="vals.get('delivery_vals_list', [])" t-as="foreach_vals">
|
||||
<cac:Delivery>
|
||||
<cbc:ActualDeliveryDate t-out="foreach_vals.get('actual_delivery_date')"/>
|
||||
<cac:DeliveryLocation>
|
||||
<cac:Address>
|
||||
<t t-call="{{AddressType_template}}">
|
||||
<t t-set="vals"
|
||||
t-value="foreach_vals.get('delivery_location_vals', {}).get('delivery_address_vals', {})"/>
|
||||
</t>
|
||||
</cac:Address>
|
||||
</cac:DeliveryLocation>
|
||||
</cac:Delivery>
|
||||
</t>
|
||||
<!-- In UBL 2.0 PaymentMeans is only present for Invoice
|
||||
while in UBL 2.1, it is present for Invoice and CreditNote
|
||||
http://www.datypic.com/sc/ubl20/e-ns19_Invoice.html
|
||||
http://www.datypic.com/sc/ubl20/e-ns14_CreditNote.html -->
|
||||
<t t-if="invoice.move_type == 'out_invoice'">
|
||||
<t t-foreach="vals.get('payment_means_vals_list', [])" t-as="foreach_vals">
|
||||
<cac:PaymentMeans>
|
||||
<t t-call="{{PaymentMeansType_template}}">
|
||||
<t t-set="vals" t-value="foreach_vals"/>
|
||||
</t>
|
||||
</cac:PaymentMeans>
|
||||
</t>
|
||||
</t>
|
||||
<t t-foreach="vals.get('payment_terms_vals', [])" t-as="foreach_vals">
|
||||
<cac:PaymentTerms>
|
||||
<t t-foreach="foreach_vals.get('note_vals', [])" t-as="note">
|
||||
<cbc:Note t-out="note"/>
|
||||
</t>
|
||||
</cac:PaymentTerms>
|
||||
</t>
|
||||
<t t-foreach="vals.get('allowance_charge_vals', [])" t-as="foreach_vals">
|
||||
<cac:AllowanceCharge>
|
||||
<t t-call="{{AllowanceChargeType_template}}">
|
||||
<t t-set="vals" t-value="foreach_vals"/>
|
||||
</t>
|
||||
</cac:AllowanceCharge>
|
||||
</t>
|
||||
<t t-foreach="vals.get('tax_total_vals', [])" t-as="foreach_vals">
|
||||
<cac:TaxTotal>
|
||||
<t t-call="{{TaxTotalType_template}}">
|
||||
<t t-set="vals" t-value="foreach_vals"/>
|
||||
</t>
|
||||
</cac:TaxTotal>
|
||||
</t>
|
||||
<cac:LegalMonetaryTotal>
|
||||
<t t-set="monetary_tot_vals" t-value="vals.get('legal_monetary_total_vals', {})"/>
|
||||
<cbc:LineExtensionAmount
|
||||
t-att-currencyID="monetary_tot_vals['currency'].name"
|
||||
t-out="format_float(monetary_tot_vals.get('line_extension_amount'), monetary_tot_vals.get('currency_dp'))"/>
|
||||
<cbc:TaxExclusiveAmount
|
||||
t-att-currencyID="monetary_tot_vals['currency'].name"
|
||||
t-out="format_float(monetary_tot_vals.get('tax_exclusive_amount'), monetary_tot_vals.get('currency_dp'))"/>
|
||||
<cbc:TaxInclusiveAmount
|
||||
t-att-currencyID="monetary_tot_vals['currency'].name"
|
||||
t-out="format_float(monetary_tot_vals.get('tax_inclusive_amount'), monetary_tot_vals.get('currency_dp'))"/>
|
||||
<cbc:AllowanceTotalAmount
|
||||
t-att-currencyID="monetary_tot_vals['currency'].name"
|
||||
t-out="format_float(monetary_tot_vals.get('allowance_total_amount'), monetary_tot_vals.get('currency_dp'))"/>
|
||||
<cbc:ChargeTotalAmount
|
||||
t-att-currencyID="monetary_tot_vals['currency'].name"
|
||||
t-out="format_float(monetary_tot_vals.get('charge_total_amount'), monetary_tot_vals.get('currency_dp'))"/>
|
||||
<cbc:PrepaidAmount
|
||||
t-att-currencyID="monetary_tot_vals['currency'].name"
|
||||
t-out="format_float(monetary_tot_vals.get('prepaid_amount'), monetary_tot_vals.get('currency_dp'))"/>
|
||||
<cbc:PayableAmount
|
||||
t-att-currencyID="monetary_tot_vals['currency'].name"
|
||||
t-out="format_float(monetary_tot_vals.get('payable_amount'), monetary_tot_vals.get('currency_dp'))"/>
|
||||
</cac:LegalMonetaryTotal>
|
||||
<t t-foreach="vals.get('invoice_line_vals', [])" t-as="foreach_vals">
|
||||
<cac:InvoiceLine t-if="invoice.move_type == 'out_invoice'">
|
||||
<t t-call="{{InvoiceLineType_template}}">
|
||||
<t t-set="vals" t-value="foreach_vals"/>
|
||||
</t>
|
||||
</cac:InvoiceLine>
|
||||
<cac:CreditNoteLine t-if="invoice.move_type == 'out_refund'">
|
||||
<t t-call="{{InvoiceLineType_template}}">
|
||||
<t t-set="vals" t-value="foreach_vals"/>
|
||||
</t>
|
||||
</cac:CreditNoteLine>
|
||||
</t>
|
||||
</t>
|
||||
</template>
|
||||
|
||||
<template id="ubl_20_Invoice">
|
||||
<Invoice xmlns="urn:oasis:names:specification:ubl:schema:xsd:Invoice-2"
|
||||
xmlns:cac="urn:oasis:names:specification:ubl:schema:xsd:CommonAggregateComponents-2"
|
||||
xmlns:cbc="urn:oasis:names:specification:ubl:schema:xsd:CommonBasicComponents-2">
|
||||
<t t-call="{{InvoiceType_template}}"/>
|
||||
</Invoice>
|
||||
</template>
|
||||
|
||||
<template id="ubl_20_CreditNote">
|
||||
<CreditNote xmlns="urn:oasis:names:specification:ubl:schema:xsd:CreditNote-2"
|
||||
xmlns:cac="urn:oasis:names:specification:ubl:schema:xsd:CommonAggregateComponents-2"
|
||||
xmlns:cbc="urn:oasis:names:specification:ubl:schema:xsd:CommonBasicComponents-2">
|
||||
<t t-call="{{InvoiceType_template}}"/>
|
||||
</CreditNote>
|
||||
</template>
|
||||
|
||||
</odoo>
|
||||
|
|
@ -1,64 +0,0 @@
|
|||
<?xml version="1.0" encoding="utf-8"?>
|
||||
<odoo>
|
||||
|
||||
<template id="ubl_21_InvoiceLineType" inherit_id="account_edi_ubl_cii.ubl_20_InvoiceLineType" primary="True">
|
||||
<xpath expr="//*[local-name()='Item']" position="before">
|
||||
<t t-if="invoice.move_type == 'out_refund'">
|
||||
<!-- AllowanceCharge and TaxTotal are swapped in the CreditLine
|
||||
w.r.t InvoiceLine. see: http://www.datypic.com/sc/ubl21/e-cac_InvoiceLine.html
|
||||
vs http://www.datypic.com/sc/ubl21/e-cac_CreditNoteLine.html-->
|
||||
<t t-foreach="vals.get('allowance_charge_vals', [])" t-as="foreach_vals">
|
||||
<cac:AllowanceCharge
|
||||
xmlns="urn:oasis:names:specification:ubl:schema:xsd:Invoice-2"
|
||||
xmlns:cac="urn:oasis:names:specification:ubl:schema:xsd:CommonAggregateComponents-2"
|
||||
xmlns:cbc="urn:oasis:names:specification:ubl:schema:xsd:CommonBasicComponents-2">
|
||||
<t t-call="{{AllowanceChargeType_template}}">
|
||||
<t t-set="vals" t-value="foreach_vals"/>
|
||||
</t>
|
||||
</cac:AllowanceCharge>
|
||||
</t>
|
||||
</t>
|
||||
</xpath>
|
||||
</template>
|
||||
|
||||
<template id="ubl_21_InvoiceType" inherit_id="account_edi_ubl_cii.ubl_20_InvoiceType" primary="True">
|
||||
<xpath expr="//*[local-name()='IssueDate']" position="after">
|
||||
<cbc:DueDate
|
||||
xmlns="urn:oasis:names:specification:ubl:schema:xsd:Invoice-2"
|
||||
xmlns:cac="urn:oasis:names:specification:ubl:schema:xsd:CommonAggregateComponents-2"
|
||||
xmlns:cbc="urn:oasis:names:specification:ubl:schema:xsd:CommonBasicComponents-2"
|
||||
t-if="invoice.move_type == 'out_invoice'"
|
||||
t-out="vals.get('due_date')"/>
|
||||
<cbc:CreditNoteTypeCode
|
||||
xmlns="urn:oasis:names:specification:ubl:schema:xsd:Invoice-2"
|
||||
xmlns:cac="urn:oasis:names:specification:ubl:schema:xsd:CommonAggregateComponents-2"
|
||||
xmlns:cbc="urn:oasis:names:specification:ubl:schema:xsd:CommonBasicComponents-2"
|
||||
t-if="invoice.move_type == 'out_refund'"
|
||||
t-att="vals.get('invoice_type_code_attrs', {})"
|
||||
t-out="vals.get('credit_note_type_code')"
|
||||
/>
|
||||
</xpath>
|
||||
<xpath expr="//*[local-name()='DocumentCurrencyCode']" position="after">
|
||||
<cbc:BuyerReference
|
||||
xmlns="urn:oasis:names:specification:ubl:schema:xsd:Invoice-2"
|
||||
xmlns:cac="urn:oasis:names:specification:ubl:schema:xsd:CommonAggregateComponents-2"
|
||||
xmlns:cbc="urn:oasis:names:specification:ubl:schema:xsd:CommonBasicComponents-2"
|
||||
t-out="vals.get('buyer_reference')"/>
|
||||
</xpath>
|
||||
<xpath expr="//*[@id='delivery_foreach']" position="after">
|
||||
<t t-if="invoice.move_type == 'out_refund'">
|
||||
<t t-foreach="vals.get('payment_means_vals_list', [])" t-as="foreach_vals">
|
||||
<cac:PaymentMeans
|
||||
xmlns="urn:oasis:names:specification:ubl:schema:xsd:Invoice-2"
|
||||
xmlns:cac="urn:oasis:names:specification:ubl:schema:xsd:CommonAggregateComponents-2"
|
||||
xmlns:cbc="urn:oasis:names:specification:ubl:schema:xsd:CommonBasicComponents-2">
|
||||
<t t-call="{{PaymentMeansType_template}}">
|
||||
<t t-set="vals" t-value="foreach_vals"/>
|
||||
</t>
|
||||
</cac:PaymentMeans>
|
||||
</t>
|
||||
</t>
|
||||
</xpath>
|
||||
</template>
|
||||
|
||||
</odoo>
|
||||
File diff suppressed because it is too large
Load diff
|
|
@ -1,410 +0,0 @@
|
|||
# Translation of Odoo Server.
|
||||
# This file contains the translation of the following modules:
|
||||
# * account_edi_ubl_cii
|
||||
#
|
||||
msgid ""
|
||||
msgstr ""
|
||||
"Project-Id-Version: Odoo Server 16.0\n"
|
||||
"Report-Msgid-Bugs-To: \n"
|
||||
"POT-Creation-Date: 2025-02-10 08:26+0000\n"
|
||||
"PO-Revision-Date: 2022-09-22 05:44+0000\n"
|
||||
"Language-Team: Afrikaans (https://app.transifex.com/odoo/teams/41243/af/)\n"
|
||||
"MIME-Version: 1.0\n"
|
||||
"Content-Type: text/plain; charset=UTF-8\n"
|
||||
"Content-Transfer-Encoding: \n"
|
||||
"Language: af\n"
|
||||
"Plural-Forms: nplurals=2; plural=(n != 1);\n"
|
||||
|
||||
#. module: account_edi_ubl_cii
|
||||
#: model_terms:ir.ui.view,arch_db:account_edi_ubl_cii.account_invoice_pdfa_3_facturx_metadata
|
||||
msgid "1.0"
|
||||
msgstr ""
|
||||
|
||||
#. module: account_edi_ubl_cii
|
||||
#: model_terms:ir.ui.view,arch_db:account_edi_ubl_cii.account_invoice_facturx_export_22
|
||||
msgid "42"
|
||||
msgstr ""
|
||||
|
||||
#. module: account_edi_ubl_cii
|
||||
#. odoo-python
|
||||
#: code:addons/account_edi_ubl_cii/models/account_edi_common.py:0
|
||||
#, python-format
|
||||
msgid "<strong>Format used to import the invoice: %s</strong>"
|
||||
msgstr ""
|
||||
|
||||
#. module: account_edi_ubl_cii
|
||||
#. odoo-python
|
||||
#: code:addons/account_edi_ubl_cii/models/account_edi_common.py:0
|
||||
#, python-format
|
||||
msgid ""
|
||||
"<strong>Format used to import the invoice: %s</strong> <p><li> %s </li></p>"
|
||||
msgstr ""
|
||||
|
||||
#. module: account_edi_ubl_cii
|
||||
#. odoo-python
|
||||
#: code:addons/account_edi_ubl_cii/models/account_edi_common.py:0
|
||||
#, python-format
|
||||
msgid "A payment of %s was detected."
|
||||
msgstr ""
|
||||
|
||||
#. module: account_edi_ubl_cii
|
||||
#: model:ir.model,name:account_edi_ubl_cii.model_account_edi_xml_ubl_a_nz
|
||||
msgid "A-NZ BIS Billing 3.0"
|
||||
msgstr ""
|
||||
|
||||
#. module: account_edi_ubl_cii
|
||||
#. odoo-python
|
||||
#: code:addons/account_edi_ubl_cii/models/account_edi_common.py:0
|
||||
#: code:addons/account_edi_ubl_cii/models/account_edi_common.py:0
|
||||
#, python-format
|
||||
msgid "Articles 226 items 11 to 15 Directive 2006/112/EN"
|
||||
msgstr ""
|
||||
|
||||
#. module: account_edi_ubl_cii
|
||||
#. odoo-python
|
||||
#: code:addons/account_edi_ubl_cii/models/account_edi_common.py:0
|
||||
#, python-format
|
||||
msgid "At least one of the following fields %s is required on %s."
|
||||
msgstr ""
|
||||
|
||||
#. module: account_edi_ubl_cii
|
||||
#: model:ir.model,name:account_edi_ubl_cii.model_account_edi_xml_ubl_de
|
||||
msgid "BIS3 DE (XRechnung)"
|
||||
msgstr ""
|
||||
|
||||
#. module: account_edi_ubl_cii
|
||||
#: model:ir.model,name:account_edi_ubl_cii.model_account_edi_common
|
||||
msgid ""
|
||||
"Common functions for EDI documents: generate the data, the constraints, etc"
|
||||
msgstr ""
|
||||
|
||||
#. module: account_edi_ubl_cii
|
||||
#. odoo-python
|
||||
#: code:addons/account_edi_ubl_cii/models/account_edi_xml_ubl_20.py:0
|
||||
#: code:addons/account_edi_ubl_cii/models/account_edi_xml_ubl_20.py:0
|
||||
#, python-format
|
||||
msgid "Conditional cash/payment discount"
|
||||
msgstr ""
|
||||
|
||||
#. module: account_edi_ubl_cii
|
||||
#. odoo-python
|
||||
#: code:addons/account_edi_ubl_cii/models/account_edi_xml_cii_facturx.py:0
|
||||
#: code:addons/account_edi_ubl_cii/models/account_edi_xml_ubl_20.py:0
|
||||
#, python-format
|
||||
msgid ""
|
||||
"Could not retrieve currency: %s. Did you enable the multicurrency option and"
|
||||
" activate the currency ?"
|
||||
msgstr ""
|
||||
|
||||
#. module: account_edi_ubl_cii
|
||||
#. odoo-python
|
||||
#: code:addons/account_edi_ubl_cii/models/account_edi_common.py:0
|
||||
#: code:addons/account_edi_ubl_cii/models/account_edi_common.py:0
|
||||
#, python-format
|
||||
msgid "Could not retrieve the tax: %s %% for line '%s'."
|
||||
msgstr ""
|
||||
|
||||
#. module: account_edi_ubl_cii
|
||||
#. odoo-python
|
||||
#: code:addons/account_edi_ubl_cii/models/account_edi_common.py:0
|
||||
#, python-format
|
||||
msgid "Could not retrieve the unit of measure for line with label '%s'."
|
||||
msgstr ""
|
||||
|
||||
#. module: account_edi_ubl_cii
|
||||
#. odoo-python
|
||||
#: code:addons/account_edi_ubl_cii/models/account_edi_common.py:0
|
||||
#, python-format
|
||||
msgid "Down Payment"
|
||||
msgstr ""
|
||||
|
||||
#. module: account_edi_ubl_cii
|
||||
#. odoo-python
|
||||
#: code:addons/account_edi_ubl_cii/models/account_edi_common.py:0
|
||||
#, python-format
|
||||
msgid "Down Payments"
|
||||
msgstr ""
|
||||
|
||||
#. module: account_edi_ubl_cii
|
||||
#: model:ir.model,name:account_edi_ubl_cii.model_account_edi_xml_ubl_efff
|
||||
msgid "E-FFF (BE)"
|
||||
msgstr ""
|
||||
|
||||
#. module: account_edi_ubl_cii
|
||||
#: model:ir.model,name:account_edi_ubl_cii.model_account_edi_format
|
||||
msgid "EDI format"
|
||||
msgstr ""
|
||||
|
||||
#. module: account_edi_ubl_cii
|
||||
#: model_terms:ir.ui.view,arch_db:account_edi_ubl_cii.account_invoice_pdfa_3_facturx_metadata
|
||||
msgid "EN 16931"
|
||||
msgstr ""
|
||||
|
||||
#. module: account_edi_ubl_cii
|
||||
#. odoo-python
|
||||
#: code:addons/account_edi_ubl_cii/models/account_edi_xml_ubl_bis3.py:0
|
||||
#, python-format
|
||||
msgid "Each invoice line shall have one and only one tax."
|
||||
msgstr ""
|
||||
|
||||
#. module: account_edi_ubl_cii
|
||||
#. odoo-python
|
||||
#: code:addons/account_edi_ubl_cii/models/account_edi_xml_ubl_bis3.py:0
|
||||
#, python-format
|
||||
msgid "Each invoice line should have a product or a label."
|
||||
msgstr ""
|
||||
|
||||
#. module: account_edi_ubl_cii
|
||||
#. odoo-python
|
||||
#: code:addons/account_edi_ubl_cii/models/account_edi_common.py:0
|
||||
#, python-format
|
||||
msgid "Each invoice line should have at least one tax."
|
||||
msgstr ""
|
||||
|
||||
#. module: account_edi_ubl_cii
|
||||
#: model:ir.model,name:account_edi_ubl_cii.model_mail_template
|
||||
msgid "Email Templates"
|
||||
msgstr ""
|
||||
|
||||
#. module: account_edi_ubl_cii
|
||||
#. odoo-python
|
||||
#: code:addons/account_edi_ubl_cii/models/account_edi_format.py:0
|
||||
#, python-format
|
||||
msgid ""
|
||||
"Errors occured while creating the EDI document (format: %s). The receiver "
|
||||
"might refuse it."
|
||||
msgstr ""
|
||||
|
||||
#. module: account_edi_ubl_cii
|
||||
#. odoo-python
|
||||
#: code:addons/account_edi_ubl_cii/models/account_edi_common.py:0
|
||||
#, python-format
|
||||
msgid "Export outside the EU"
|
||||
msgstr ""
|
||||
|
||||
#. module: account_edi_ubl_cii
|
||||
#: model:ir.model,name:account_edi_ubl_cii.model_account_edi_xml_cii
|
||||
msgid "Factur-x/XRechnung CII 2.2.0"
|
||||
msgstr ""
|
||||
|
||||
#. module: account_edi_ubl_cii
|
||||
#. odoo-python
|
||||
#: code:addons/account_edi_ubl_cii/models/account_edi_xml_ubl_bis3.py:0
|
||||
#: code:addons/account_edi_ubl_cii/models/account_edi_xml_ubl_bis3.py:0
|
||||
#, python-format
|
||||
msgid ""
|
||||
"For intracommunity supply, the actual delivery date or the invoicing period "
|
||||
"should be included."
|
||||
msgstr ""
|
||||
|
||||
#. module: account_edi_ubl_cii
|
||||
#. odoo-python
|
||||
#: code:addons/account_edi_ubl_cii/models/account_edi_xml_ubl_bis3.py:0
|
||||
#, python-format
|
||||
msgid "For intracommunity supply, the delivery address should be included."
|
||||
msgstr ""
|
||||
|
||||
#. module: account_edi_ubl_cii
|
||||
#. odoo-python
|
||||
#: code:addons/account_edi_ubl_cii/models/account_edi_common.py:0
|
||||
#, python-format
|
||||
msgid "Intra-Community supply"
|
||||
msgstr ""
|
||||
|
||||
#. module: account_edi_ubl_cii
|
||||
#: model_terms:ir.ui.view,arch_db:account_edi_ubl_cii.account_invoice_pdfa_3_facturx_metadata
|
||||
msgid "Invoice generated by Odoo"
|
||||
msgstr ""
|
||||
|
||||
#. module: account_edi_ubl_cii
|
||||
#. odoo-python
|
||||
#: code:addons/account_edi_ubl_cii/models/account_edi_xml_ubl_bis3.py:0
|
||||
#: code:addons/account_edi_ubl_cii/models/account_edi_xml_ubl_bis3.py:0
|
||||
#, python-format
|
||||
msgid "No Electronic Address Scheme (EAS) could be found for %s."
|
||||
msgstr ""
|
||||
|
||||
#. module: account_edi_ubl_cii
|
||||
#. odoo-python
|
||||
#: code:addons/account_edi_ubl_cii/models/account_edi_common.py:0
|
||||
#, python-format
|
||||
msgid ""
|
||||
"No gross price, net price nor line subtotal amount found for line in xml"
|
||||
msgstr ""
|
||||
|
||||
#. module: account_edi_ubl_cii
|
||||
#: model_terms:ir.ui.view,arch_db:account_edi_ubl_cii.account_invoice_pdfa_3_facturx_metadata
|
||||
msgid "Odoo"
|
||||
msgstr ""
|
||||
|
||||
#. module: account_edi_ubl_cii
|
||||
#: model:ir.model,name:account_edi_ubl_cii.model_ir_actions_report
|
||||
msgid "Report Action"
|
||||
msgstr ""
|
||||
|
||||
#. module: account_edi_ubl_cii
|
||||
#: model:ir.model,name:account_edi_ubl_cii.model_account_edi_xml_ubl_sg
|
||||
msgid "SG BIS Billing 3.0"
|
||||
msgstr ""
|
||||
|
||||
#. module: account_edi_ubl_cii
|
||||
#: model:ir.model,name:account_edi_ubl_cii.model_account_edi_xml_ubl_nl
|
||||
msgid "SI-UBL 2.0 (NLCIUS)"
|
||||
msgstr ""
|
||||
|
||||
#. module: account_edi_ubl_cii
|
||||
#. odoo-python
|
||||
#: code:addons/account_edi_ubl_cii/models/account_edi_common.py:0
|
||||
#, python-format
|
||||
msgid "Tax '%s' is invalid: %s"
|
||||
msgstr ""
|
||||
|
||||
#. module: account_edi_ubl_cii
|
||||
#. odoo-python
|
||||
#: code:addons/account_edi_ubl_cii/models/account_edi_xml_ubl_bis3.py:0
|
||||
#, python-format
|
||||
msgid ""
|
||||
"The VAT number of the supplier does not seem to be valid. It should be of "
|
||||
"the form: NO179728982MVA."
|
||||
msgstr ""
|
||||
|
||||
#. module: account_edi_ubl_cii
|
||||
#. odoo-python
|
||||
#: code:addons/account_edi_ubl_cii/models/account_edi_xml_ubl_bis3.py:0
|
||||
#, python-format
|
||||
msgid "The VAT of the %s should be prefixed with its country code."
|
||||
msgstr ""
|
||||
|
||||
#. module: account_edi_ubl_cii
|
||||
#. odoo-python
|
||||
#: code:addons/account_edi_ubl_cii/models/account_edi_xml_ubl_bis3.py:0
|
||||
#, python-format
|
||||
msgid "The country is required for the %s."
|
||||
msgstr ""
|
||||
|
||||
#. module: account_edi_ubl_cii
|
||||
#. odoo-python
|
||||
#: code:addons/account_edi_ubl_cii/models/account_edi_xml_cii_facturx.py:0
|
||||
#: code:addons/account_edi_ubl_cii/models/account_edi_xml_ubl_20.py:0
|
||||
#, python-format
|
||||
msgid "The currency '%s' is not active."
|
||||
msgstr ""
|
||||
|
||||
#. module: account_edi_ubl_cii
|
||||
#. odoo-python
|
||||
#: code:addons/account_edi_ubl_cii/models/account_edi_xml_ubl_bis3.py:0
|
||||
#, python-format
|
||||
msgid "The customer %s must have a Bronnoysund company registry."
|
||||
msgstr ""
|
||||
|
||||
#. module: account_edi_ubl_cii
|
||||
#. odoo-python
|
||||
#: code:addons/account_edi_ubl_cii/models/account_edi_xml_ubl_bis3.py:0
|
||||
#, python-format
|
||||
msgid "The customer %s must have a KVK or OIN number."
|
||||
msgstr ""
|
||||
|
||||
#. module: account_edi_ubl_cii
|
||||
#. odoo-python
|
||||
#: code:addons/account_edi_ubl_cii/models/account_edi_common.py:0
|
||||
#: code:addons/account_edi_ubl_cii/models/account_edi_common.py:0
|
||||
#, python-format
|
||||
msgid "The element %s is required on %s."
|
||||
msgstr ""
|
||||
|
||||
#. module: account_edi_ubl_cii
|
||||
#. odoo-python
|
||||
#: code:addons/account_edi_ubl_cii/models/account_edi_common.py:0
|
||||
#, python-format
|
||||
msgid "The field %s is required on %s."
|
||||
msgstr ""
|
||||
|
||||
#. module: account_edi_ubl_cii
|
||||
#. odoo-python
|
||||
#: code:addons/account_edi_ubl_cii/models/account_edi_xml_cii_facturx.py:0
|
||||
#, python-format
|
||||
msgid ""
|
||||
"The field 'Sanitized Account Number' is required on the Recipient Bank."
|
||||
msgstr ""
|
||||
|
||||
#. module: account_edi_ubl_cii
|
||||
#. odoo-python
|
||||
#: code:addons/account_edi_ubl_cii/models/account_edi_xml_cii_facturx.py:0
|
||||
#: code:addons/account_edi_ubl_cii/models/account_edi_xml_ubl_20.py:0
|
||||
#, python-format
|
||||
msgid ""
|
||||
"The invoice has been converted into a credit note and the quantities have "
|
||||
"been reverted."
|
||||
msgstr ""
|
||||
|
||||
#. module: account_edi_ubl_cii
|
||||
#. odoo-python
|
||||
#: code:addons/account_edi_ubl_cii/models/account_edi_format.py:0
|
||||
#, python-format
|
||||
msgid ""
|
||||
"The journal in which to upload should either be a sale or a purchase "
|
||||
"journal."
|
||||
msgstr ""
|
||||
|
||||
#. module: account_edi_ubl_cii
|
||||
#. odoo-python
|
||||
#: code:addons/account_edi_ubl_cii/models/account_edi_xml_ubl_bis3.py:0
|
||||
#, python-format
|
||||
msgid "The supplier %s must have a Bronnoysund company registry."
|
||||
msgstr ""
|
||||
|
||||
#. module: account_edi_ubl_cii
|
||||
#. odoo-python
|
||||
#: code:addons/account_edi_ubl_cii/models/account_edi_xml_ubl_bis3.py:0
|
||||
#, python-format
|
||||
msgid "The supplier %s must have a KVK or OIN number."
|
||||
msgstr ""
|
||||
|
||||
#. module: account_edi_ubl_cii
|
||||
#: model:ir.model,name:account_edi_ubl_cii.model_account_edi_xml_ubl_20
|
||||
msgid "UBL 2.0"
|
||||
msgstr ""
|
||||
|
||||
#. module: account_edi_ubl_cii
|
||||
#: model:ir.model,name:account_edi_ubl_cii.model_account_edi_xml_ubl_21
|
||||
msgid "UBL 2.1"
|
||||
msgstr ""
|
||||
|
||||
#. module: account_edi_ubl_cii
|
||||
#: model:ir.model,name:account_edi_ubl_cii.model_account_edi_xml_ubl_bis3
|
||||
msgid "UBL BIS Billing 3.0.12"
|
||||
msgstr ""
|
||||
|
||||
#. module: account_edi_ubl_cii
|
||||
#. odoo-python
|
||||
#: code:addons/account_edi_ubl_cii/models/account_edi_xml_cii_facturx.py:0
|
||||
#, python-format
|
||||
msgid ""
|
||||
"When the Canary Island General Indirect Tax (IGIC) applies, the tax rate on "
|
||||
"each invoice line should be greater than 0."
|
||||
msgstr ""
|
||||
|
||||
#. module: account_edi_ubl_cii
|
||||
#. odoo-python
|
||||
#: code:addons/account_edi_ubl_cii/models/account_edi_xml_cii_facturx.py:0
|
||||
#, python-format
|
||||
msgid ""
|
||||
"You should include at least one tax per invoice line. [BR-CO-04]-Each "
|
||||
"Invoice line (BG-25) shall be categorized with an Invoiced item VAT category"
|
||||
" code (BT-151)."
|
||||
msgstr ""
|
||||
|
||||
#. module: account_edi_ubl_cii
|
||||
#: model_terms:ir.ui.view,arch_db:account_edi_ubl_cii.account_invoice_pdfa_3_facturx_metadata
|
||||
msgid "factur-x.xml"
|
||||
msgstr ""
|
||||
|
||||
#. module: account_edi_ubl_cii
|
||||
#: model_terms:ir.ui.view,arch_db:account_edi_ubl_cii.account_invoice_pdfa_3_facturx_metadata
|
||||
msgid "fx"
|
||||
msgstr ""
|
||||
|
||||
#. module: account_edi_ubl_cii
|
||||
#: model_terms:ir.ui.view,arch_db:account_edi_ubl_cii.account_invoice_pdfa_3_facturx_metadata
|
||||
msgid "urn:factur-x:pdfa:CrossIndustryDocument:invoice:1p0#"
|
||||
msgstr ""
|
||||
|
|
@ -1,424 +0,0 @@
|
|||
# Translation of Odoo Server.
|
||||
# This file contains the translation of the following modules:
|
||||
# * account_edi_ubl_cii
|
||||
#
|
||||
msgid ""
|
||||
msgstr ""
|
||||
"Project-Id-Version: Odoo Server 16.0\n"
|
||||
"Report-Msgid-Bugs-To: \n"
|
||||
"POT-Creation-Date: 2024-02-06 13:31+0000\n"
|
||||
"PO-Revision-Date: 2022-09-22 05:44+0000\n"
|
||||
"Language-Team: Amharic (https://app.transifex.com/odoo/teams/41243/am/)\n"
|
||||
"MIME-Version: 1.0\n"
|
||||
"Content-Type: text/plain; charset=UTF-8\n"
|
||||
"Content-Transfer-Encoding: \n"
|
||||
"Language: am\n"
|
||||
"Plural-Forms: nplurals=2; plural=(n > 1);\n"
|
||||
|
||||
#. module: account_edi_ubl_cii
|
||||
#: model_terms:ir.ui.view,arch_db:account_edi_ubl_cii.account_invoice_pdfa_3_facturx_metadata
|
||||
msgid "1.0"
|
||||
msgstr ""
|
||||
|
||||
#. module: account_edi_ubl_cii
|
||||
#: model_terms:ir.ui.view,arch_db:account_edi_ubl_cii.account_invoice_facturx_export_22
|
||||
msgid "42"
|
||||
msgstr ""
|
||||
|
||||
#. module: account_edi_ubl_cii
|
||||
#. odoo-python
|
||||
#: code:addons/account_edi_ubl_cii/models/account_edi_common.py:0
|
||||
#, python-format
|
||||
msgid "<strong>Format used to import the invoice: %s</strong>"
|
||||
msgstr ""
|
||||
|
||||
#. module: account_edi_ubl_cii
|
||||
#. odoo-python
|
||||
#: code:addons/account_edi_ubl_cii/models/account_edi_common.py:0
|
||||
#, python-format
|
||||
msgid ""
|
||||
"<strong>Format used to import the invoice: %s</strong> <p><li> %s </li></p>"
|
||||
msgstr ""
|
||||
|
||||
#. module: account_edi_ubl_cii
|
||||
#. odoo-python
|
||||
#: code:addons/account_edi_ubl_cii/models/account_edi_common.py:0
|
||||
#, python-format
|
||||
msgid "A payment of %s was detected."
|
||||
msgstr ""
|
||||
|
||||
#. module: account_edi_ubl_cii
|
||||
#: model:ir.model,name:account_edi_ubl_cii.model_account_edi_xml_ubl_a_nz
|
||||
msgid "A-NZ BIS Billing 3.0"
|
||||
msgstr ""
|
||||
|
||||
#. module: account_edi_ubl_cii
|
||||
#. odoo-python
|
||||
#: code:addons/account_edi_ubl_cii/models/account_edi_common.py:0
|
||||
#: code:addons/account_edi_ubl_cii/models/account_edi_common.py:0
|
||||
#, python-format
|
||||
msgid "Articles 226 items 11 to 15 Directive 2006/112/EN"
|
||||
msgstr ""
|
||||
|
||||
#. module: account_edi_ubl_cii
|
||||
#. odoo-python
|
||||
#: code:addons/account_edi_ubl_cii/models/account_edi_common.py:0
|
||||
#, python-format
|
||||
msgid "At least one of the following fields %s is required on %s."
|
||||
msgstr ""
|
||||
|
||||
#. module: account_edi_ubl_cii
|
||||
#: model:ir.model,name:account_edi_ubl_cii.model_account_edi_xml_ubl_de
|
||||
msgid "BIS3 DE (XRechnung)"
|
||||
msgstr ""
|
||||
|
||||
#. module: account_edi_ubl_cii
|
||||
#: model:ir.model,name:account_edi_ubl_cii.model_account_edi_common
|
||||
msgid ""
|
||||
"Common functions for EDI documents: generate the data, the constraints, etc"
|
||||
msgstr ""
|
||||
|
||||
#. module: account_edi_ubl_cii
|
||||
#. odoo-python
|
||||
#: code:addons/account_edi_ubl_cii/models/account_edi_xml_ubl_20.py:0
|
||||
#: code:addons/account_edi_ubl_cii/models/account_edi_xml_ubl_20.py:0
|
||||
#, python-format
|
||||
msgid "Conditional cash/payment discount"
|
||||
msgstr ""
|
||||
|
||||
#. module: account_edi_ubl_cii
|
||||
#. odoo-python
|
||||
#: code:addons/account_edi_ubl_cii/models/account_edi_xml_cii_facturx.py:0
|
||||
#: code:addons/account_edi_ubl_cii/models/account_edi_xml_ubl_20.py:0
|
||||
#, python-format
|
||||
msgid ""
|
||||
"Could not retrieve currency: %s. Did you enable the multicurrency option and"
|
||||
" activate the currency ?"
|
||||
msgstr ""
|
||||
|
||||
#. module: account_edi_ubl_cii
|
||||
#. odoo-python
|
||||
#: code:addons/account_edi_ubl_cii/models/account_edi_common.py:0
|
||||
#: code:addons/account_edi_ubl_cii/models/account_edi_common.py:0
|
||||
#, python-format
|
||||
msgid "Could not retrieve the tax: %s %% for line '%s'."
|
||||
msgstr ""
|
||||
|
||||
#. module: account_edi_ubl_cii
|
||||
#. odoo-python
|
||||
#: code:addons/account_edi_ubl_cii/models/account_edi_common.py:0
|
||||
#, python-format
|
||||
msgid "Could not retrieve the unit of measure for line with label '%s'."
|
||||
msgstr ""
|
||||
|
||||
#. module: account_edi_ubl_cii
|
||||
#. odoo-python
|
||||
#: code:addons/account_edi_ubl_cii/models/account_edi_common.py:0
|
||||
#, python-format
|
||||
msgid "Down Payment"
|
||||
msgstr ""
|
||||
|
||||
#. module: account_edi_ubl_cii
|
||||
#. odoo-python
|
||||
#: code:addons/account_edi_ubl_cii/models/account_edi_common.py:0
|
||||
#, python-format
|
||||
msgid "Down Payments"
|
||||
msgstr ""
|
||||
|
||||
#. module: account_edi_ubl_cii
|
||||
#: model:ir.model,name:account_edi_ubl_cii.model_account_edi_xml_ubl_efff
|
||||
msgid "E-FFF (BE)"
|
||||
msgstr ""
|
||||
|
||||
#. module: account_edi_ubl_cii
|
||||
#: model:ir.model,name:account_edi_ubl_cii.model_account_edi_format
|
||||
msgid "EDI format"
|
||||
msgstr ""
|
||||
|
||||
#. module: account_edi_ubl_cii
|
||||
#: model_terms:ir.ui.view,arch_db:account_edi_ubl_cii.account_invoice_pdfa_3_facturx_metadata
|
||||
msgid "EN 16931"
|
||||
msgstr ""
|
||||
|
||||
#. module: account_edi_ubl_cii
|
||||
#. odoo-python
|
||||
#: code:addons/account_edi_ubl_cii/models/account_edi_xml_ubl_bis3.py:0
|
||||
#, python-format
|
||||
msgid "Each invoice line shall have one and only one tax."
|
||||
msgstr ""
|
||||
|
||||
#. module: account_edi_ubl_cii
|
||||
#. odoo-python
|
||||
#: code:addons/account_edi_ubl_cii/models/account_edi_xml_ubl_bis3.py:0
|
||||
#, python-format
|
||||
msgid "Each invoice line should have a product or a label."
|
||||
msgstr ""
|
||||
|
||||
#. module: account_edi_ubl_cii
|
||||
#. odoo-python
|
||||
#: code:addons/account_edi_ubl_cii/models/account_edi_common.py:0
|
||||
#, python-format
|
||||
msgid "Each invoice line should have at least one tax."
|
||||
msgstr ""
|
||||
|
||||
#. module: account_edi_ubl_cii
|
||||
#: model:ir.model,name:account_edi_ubl_cii.model_mail_template
|
||||
msgid "Email Templates"
|
||||
msgstr ""
|
||||
|
||||
#. module: account_edi_ubl_cii
|
||||
#. odoo-python
|
||||
#: code:addons/account_edi_ubl_cii/models/account_edi_format.py:0
|
||||
#, python-format
|
||||
msgid ""
|
||||
"Errors occured while creating the EDI document (format: %s). The receiver "
|
||||
"might refuse it."
|
||||
msgstr ""
|
||||
|
||||
#. module: account_edi_ubl_cii
|
||||
#. odoo-python
|
||||
#: code:addons/account_edi_ubl_cii/models/account_edi_common.py:0
|
||||
#, python-format
|
||||
msgid "Export outside the EU"
|
||||
msgstr ""
|
||||
|
||||
#. module: account_edi_ubl_cii
|
||||
#: model:ir.model,name:account_edi_ubl_cii.model_account_edi_xml_cii
|
||||
msgid "Factur-x/XRechnung CII 2.2.0"
|
||||
msgstr ""
|
||||
|
||||
#. module: account_edi_ubl_cii
|
||||
#. odoo-python
|
||||
#: code:addons/account_edi_ubl_cii/models/account_edi_xml_ubl_bis3.py:0
|
||||
#: code:addons/account_edi_ubl_cii/models/account_edi_xml_ubl_bis3.py:0
|
||||
#, python-format
|
||||
msgid ""
|
||||
"For intracommunity supply, the actual delivery date or the invoicing period "
|
||||
"should be included."
|
||||
msgstr ""
|
||||
|
||||
#. module: account_edi_ubl_cii
|
||||
#. odoo-python
|
||||
#: code:addons/account_edi_ubl_cii/models/account_edi_xml_ubl_bis3.py:0
|
||||
#, python-format
|
||||
msgid "For intracommunity supply, the delivery address should be included."
|
||||
msgstr ""
|
||||
|
||||
#. module: account_edi_ubl_cii
|
||||
#. odoo-python
|
||||
#: code:addons/account_edi_ubl_cii/models/account_edi_common.py:0
|
||||
#, python-format
|
||||
msgid "Intra-Community supply"
|
||||
msgstr ""
|
||||
|
||||
#. module: account_edi_ubl_cii
|
||||
#: model_terms:ir.ui.view,arch_db:account_edi_ubl_cii.account_invoice_pdfa_3_facturx_metadata
|
||||
msgid "Invoice generated by Odoo"
|
||||
msgstr ""
|
||||
|
||||
#. module: account_edi_ubl_cii
|
||||
#. odoo-python
|
||||
#: code:addons/account_edi_ubl_cii/models/account_edi_xml_ubl_bis3.py:0
|
||||
#: code:addons/account_edi_ubl_cii/models/account_edi_xml_ubl_bis3.py:0
|
||||
#, python-format
|
||||
msgid "No Electronic Address Scheme (EAS) could be found for %s."
|
||||
msgstr ""
|
||||
|
||||
#. module: account_edi_ubl_cii
|
||||
#. odoo-python
|
||||
#: code:addons/account_edi_ubl_cii/models/account_edi_common.py:0
|
||||
#, python-format
|
||||
msgid ""
|
||||
"No gross price, net price nor line subtotal amount found for line in xml"
|
||||
msgstr ""
|
||||
|
||||
#. module: account_edi_ubl_cii
|
||||
#: model_terms:ir.ui.view,arch_db:account_edi_ubl_cii.account_invoice_pdfa_3_facturx_metadata
|
||||
msgid "Odoo"
|
||||
msgstr ""
|
||||
|
||||
#. module: account_edi_ubl_cii
|
||||
#: model:ir.model,name:account_edi_ubl_cii.model_ir_actions_report
|
||||
msgid "Report Action"
|
||||
msgstr ""
|
||||
|
||||
#. module: account_edi_ubl_cii
|
||||
#: model:ir.model,name:account_edi_ubl_cii.model_account_edi_xml_ubl_sg
|
||||
msgid "SG BIS Billing 3.0"
|
||||
msgstr ""
|
||||
|
||||
#. module: account_edi_ubl_cii
|
||||
#: model:ir.model,name:account_edi_ubl_cii.model_account_edi_xml_ubl_nl
|
||||
msgid "SI-UBL 2.0 (NLCIUS)"
|
||||
msgstr ""
|
||||
|
||||
#. module: account_edi_ubl_cii
|
||||
#. odoo-python
|
||||
#: code:addons/account_edi_ubl_cii/models/account_edi_common.py:0
|
||||
#, python-format
|
||||
msgid "Tax '%s' is invalid: %s"
|
||||
msgstr ""
|
||||
|
||||
#. module: account_edi_ubl_cii
|
||||
#. odoo-python
|
||||
#: code:addons/account_edi_ubl_cii/models/account_edi_xml_ubl_bis3.py:0
|
||||
#, python-format
|
||||
msgid ""
|
||||
"The VAT number of the supplier does not seem to be valid. It should be of "
|
||||
"the form: NO179728982MVA."
|
||||
msgstr ""
|
||||
|
||||
#. module: account_edi_ubl_cii
|
||||
#. odoo-python
|
||||
#: code:addons/account_edi_ubl_cii/models/account_edi_xml_ubl_bis3.py:0
|
||||
#, python-format
|
||||
msgid "The VAT of the %s should be prefixed with its country code."
|
||||
msgstr ""
|
||||
|
||||
#. module: account_edi_ubl_cii
|
||||
#. odoo-python
|
||||
#: code:addons/account_edi_ubl_cii/models/account_edi_xml_ubl_bis3.py:0
|
||||
#, python-format
|
||||
msgid "The country is required for the %s."
|
||||
msgstr ""
|
||||
|
||||
#. module: account_edi_ubl_cii
|
||||
#. odoo-python
|
||||
#: code:addons/account_edi_ubl_cii/models/account_edi_xml_cii_facturx.py:0
|
||||
#: code:addons/account_edi_ubl_cii/models/account_edi_xml_ubl_20.py:0
|
||||
#, python-format
|
||||
msgid "The currency '%s' is not active."
|
||||
msgstr ""
|
||||
|
||||
#. module: account_edi_ubl_cii
|
||||
#. odoo-python
|
||||
#: code:addons/account_edi_ubl_cii/models/account_edi_xml_ubl_bis3.py:0
|
||||
#, python-format
|
||||
msgid "The customer %s must have a Bronnoysund company registry."
|
||||
msgstr ""
|
||||
|
||||
#. module: account_edi_ubl_cii
|
||||
#. odoo-python
|
||||
#: code:addons/account_edi_ubl_cii/models/account_edi_xml_ubl_bis3.py:0
|
||||
#, python-format
|
||||
msgid "The customer %s must have a KVK or OIN number."
|
||||
msgstr ""
|
||||
|
||||
#. module: account_edi_ubl_cii
|
||||
#. odoo-python
|
||||
#: code:addons/account_edi_ubl_cii/models/account_edi_common.py:0
|
||||
#: code:addons/account_edi_ubl_cii/models/account_edi_common.py:0
|
||||
#, python-format
|
||||
msgid "The element %s is required on %s."
|
||||
msgstr ""
|
||||
|
||||
#. module: account_edi_ubl_cii
|
||||
#. odoo-python
|
||||
#: code:addons/account_edi_ubl_cii/models/account_edi_common.py:0
|
||||
#, python-format
|
||||
msgid "The field %s is required on %s."
|
||||
msgstr ""
|
||||
|
||||
#. module: account_edi_ubl_cii
|
||||
#. odoo-python
|
||||
#: code:addons/account_edi_ubl_cii/models/account_edi_xml_cii_facturx.py:0
|
||||
#, python-format
|
||||
msgid ""
|
||||
"The field 'Sanitized Account Number' is required on the Recipient Bank."
|
||||
msgstr ""
|
||||
|
||||
#. module: account_edi_ubl_cii
|
||||
#. odoo-python
|
||||
#: code:addons/account_edi_ubl_cii/models/account_edi_xml_ubl_bis3.py:0
|
||||
#, python-format
|
||||
msgid ""
|
||||
"The invoice contains line(s) with a negative unit price, which is not "
|
||||
"allowed. You might need to set a negative quantity instead."
|
||||
msgstr ""
|
||||
|
||||
#. module: account_edi_ubl_cii
|
||||
#. odoo-python
|
||||
#: code:addons/account_edi_ubl_cii/models/account_edi_xml_cii_facturx.py:0
|
||||
#: code:addons/account_edi_ubl_cii/models/account_edi_xml_ubl_20.py:0
|
||||
#, python-format
|
||||
msgid ""
|
||||
"The invoice has been converted into a credit note and the quantities have "
|
||||
"been reverted."
|
||||
msgstr ""
|
||||
|
||||
#. module: account_edi_ubl_cii
|
||||
#. odoo-python
|
||||
#: code:addons/account_edi_ubl_cii/models/account_edi_format.py:0
|
||||
#, python-format
|
||||
msgid ""
|
||||
"The journal in which to upload should either be a sale or a purchase "
|
||||
"journal."
|
||||
msgstr ""
|
||||
|
||||
#. module: account_edi_ubl_cii
|
||||
#. odoo-python
|
||||
#: code:addons/account_edi_ubl_cii/models/account_edi_xml_ubl_bis3.py:0
|
||||
#, python-format
|
||||
msgid "The supplier %s must have a Bronnoysund company registry."
|
||||
msgstr ""
|
||||
|
||||
#. module: account_edi_ubl_cii
|
||||
#. odoo-python
|
||||
#: code:addons/account_edi_ubl_cii/models/account_edi_xml_ubl_bis3.py:0
|
||||
#, python-format
|
||||
msgid "The supplier %s must have a KVK or OIN number."
|
||||
msgstr ""
|
||||
|
||||
#. module: account_edi_ubl_cii
|
||||
#: model:ir.model,name:account_edi_ubl_cii.model_account_edi_xml_ubl_20
|
||||
msgid "UBL 2.0"
|
||||
msgstr ""
|
||||
|
||||
#. module: account_edi_ubl_cii
|
||||
#: model:ir.model,name:account_edi_ubl_cii.model_account_edi_xml_ubl_21
|
||||
msgid "UBL 2.1"
|
||||
msgstr ""
|
||||
|
||||
#. module: account_edi_ubl_cii
|
||||
#: model:ir.model,name:account_edi_ubl_cii.model_account_edi_xml_ubl_bis3
|
||||
msgid "UBL BIS Billing 3.0.12"
|
||||
msgstr ""
|
||||
|
||||
#. module: account_edi_ubl_cii
|
||||
#. odoo-python
|
||||
#: code:addons/account_edi_ubl_cii/models/account_edi_xml_cii_facturx.py:0
|
||||
#, python-format
|
||||
msgid ""
|
||||
"When the Canary Island General Indirect Tax (IGIC) applies, the tax rate on "
|
||||
"each invoice line should be greater than 0."
|
||||
msgstr ""
|
||||
|
||||
#. module: account_edi_ubl_cii
|
||||
#. odoo-python
|
||||
#: code:addons/account_edi_ubl_cii/models/account_edi_xml_cii_facturx.py:0
|
||||
#, python-format
|
||||
msgid ""
|
||||
"You should include at least one tax per invoice line. [BR-CO-04]-Each "
|
||||
"Invoice line (BG-25) shall be categorized with an Invoiced item VAT category"
|
||||
" code (BT-151)."
|
||||
msgstr ""
|
||||
|
||||
#. module: account_edi_ubl_cii
|
||||
#: model_terms:ir.ui.view,arch_db:account_edi_ubl_cii.account_invoice_pdfa_3_facturx_metadata
|
||||
msgid "factur-x.xml"
|
||||
msgstr ""
|
||||
|
||||
#. module: account_edi_ubl_cii
|
||||
#: model_terms:ir.ui.view,arch_db:account_edi_ubl_cii.account_invoice_line_facturx_export_22
|
||||
msgid "false"
|
||||
msgstr ""
|
||||
|
||||
#. module: account_edi_ubl_cii
|
||||
#: model_terms:ir.ui.view,arch_db:account_edi_ubl_cii.account_invoice_pdfa_3_facturx_metadata
|
||||
msgid "fx"
|
||||
msgstr ""
|
||||
|
||||
#. module: account_edi_ubl_cii
|
||||
#: model_terms:ir.ui.view,arch_db:account_edi_ubl_cii.account_invoice_pdfa_3_facturx_metadata
|
||||
msgid "urn:factur-x:pdfa:CrossIndustryDocument:invoice:1p0#"
|
||||
msgstr ""
|
||||
File diff suppressed because it is too large
Load diff
File diff suppressed because it is too large
Load diff
|
|
@ -1,410 +0,0 @@
|
|||
# Translation of Odoo Server.
|
||||
# This file contains the translation of the following modules:
|
||||
# * account_edi_ubl_cii
|
||||
#
|
||||
msgid ""
|
||||
msgstr ""
|
||||
"Project-Id-Version: Odoo Server 16.0\n"
|
||||
"Report-Msgid-Bugs-To: \n"
|
||||
"POT-Creation-Date: 2025-02-10 08:26+0000\n"
|
||||
"PO-Revision-Date: 2022-09-22 05:44+0000\n"
|
||||
"Language-Team: Belarusian (https://app.transifex.com/odoo/teams/41243/be/)\n"
|
||||
"MIME-Version: 1.0\n"
|
||||
"Content-Type: text/plain; charset=UTF-8\n"
|
||||
"Content-Transfer-Encoding: \n"
|
||||
"Language: be\n"
|
||||
"Plural-Forms: nplurals=4; plural=(n%10==1 && n%100!=11 ? 0 : n%10>=2 && n%10<=4 && (n%100<12 || n%100>14) ? 1 : n%10==0 || (n%10>=5 && n%10<=9) || (n%100>=11 && n%100<=14)? 2 : 3);\n"
|
||||
|
||||
#. module: account_edi_ubl_cii
|
||||
#: model_terms:ir.ui.view,arch_db:account_edi_ubl_cii.account_invoice_pdfa_3_facturx_metadata
|
||||
msgid "1.0"
|
||||
msgstr ""
|
||||
|
||||
#. module: account_edi_ubl_cii
|
||||
#: model_terms:ir.ui.view,arch_db:account_edi_ubl_cii.account_invoice_facturx_export_22
|
||||
msgid "42"
|
||||
msgstr ""
|
||||
|
||||
#. module: account_edi_ubl_cii
|
||||
#. odoo-python
|
||||
#: code:addons/account_edi_ubl_cii/models/account_edi_common.py:0
|
||||
#, python-format
|
||||
msgid "<strong>Format used to import the invoice: %s</strong>"
|
||||
msgstr ""
|
||||
|
||||
#. module: account_edi_ubl_cii
|
||||
#. odoo-python
|
||||
#: code:addons/account_edi_ubl_cii/models/account_edi_common.py:0
|
||||
#, python-format
|
||||
msgid ""
|
||||
"<strong>Format used to import the invoice: %s</strong> <p><li> %s </li></p>"
|
||||
msgstr ""
|
||||
|
||||
#. module: account_edi_ubl_cii
|
||||
#. odoo-python
|
||||
#: code:addons/account_edi_ubl_cii/models/account_edi_common.py:0
|
||||
#, python-format
|
||||
msgid "A payment of %s was detected."
|
||||
msgstr ""
|
||||
|
||||
#. module: account_edi_ubl_cii
|
||||
#: model:ir.model,name:account_edi_ubl_cii.model_account_edi_xml_ubl_a_nz
|
||||
msgid "A-NZ BIS Billing 3.0"
|
||||
msgstr ""
|
||||
|
||||
#. module: account_edi_ubl_cii
|
||||
#. odoo-python
|
||||
#: code:addons/account_edi_ubl_cii/models/account_edi_common.py:0
|
||||
#: code:addons/account_edi_ubl_cii/models/account_edi_common.py:0
|
||||
#, python-format
|
||||
msgid "Articles 226 items 11 to 15 Directive 2006/112/EN"
|
||||
msgstr ""
|
||||
|
||||
#. module: account_edi_ubl_cii
|
||||
#. odoo-python
|
||||
#: code:addons/account_edi_ubl_cii/models/account_edi_common.py:0
|
||||
#, python-format
|
||||
msgid "At least one of the following fields %s is required on %s."
|
||||
msgstr ""
|
||||
|
||||
#. module: account_edi_ubl_cii
|
||||
#: model:ir.model,name:account_edi_ubl_cii.model_account_edi_xml_ubl_de
|
||||
msgid "BIS3 DE (XRechnung)"
|
||||
msgstr ""
|
||||
|
||||
#. module: account_edi_ubl_cii
|
||||
#: model:ir.model,name:account_edi_ubl_cii.model_account_edi_common
|
||||
msgid ""
|
||||
"Common functions for EDI documents: generate the data, the constraints, etc"
|
||||
msgstr ""
|
||||
|
||||
#. module: account_edi_ubl_cii
|
||||
#. odoo-python
|
||||
#: code:addons/account_edi_ubl_cii/models/account_edi_xml_ubl_20.py:0
|
||||
#: code:addons/account_edi_ubl_cii/models/account_edi_xml_ubl_20.py:0
|
||||
#, python-format
|
||||
msgid "Conditional cash/payment discount"
|
||||
msgstr ""
|
||||
|
||||
#. module: account_edi_ubl_cii
|
||||
#. odoo-python
|
||||
#: code:addons/account_edi_ubl_cii/models/account_edi_xml_cii_facturx.py:0
|
||||
#: code:addons/account_edi_ubl_cii/models/account_edi_xml_ubl_20.py:0
|
||||
#, python-format
|
||||
msgid ""
|
||||
"Could not retrieve currency: %s. Did you enable the multicurrency option and"
|
||||
" activate the currency ?"
|
||||
msgstr ""
|
||||
|
||||
#. module: account_edi_ubl_cii
|
||||
#. odoo-python
|
||||
#: code:addons/account_edi_ubl_cii/models/account_edi_common.py:0
|
||||
#: code:addons/account_edi_ubl_cii/models/account_edi_common.py:0
|
||||
#, python-format
|
||||
msgid "Could not retrieve the tax: %s %% for line '%s'."
|
||||
msgstr ""
|
||||
|
||||
#. module: account_edi_ubl_cii
|
||||
#. odoo-python
|
||||
#: code:addons/account_edi_ubl_cii/models/account_edi_common.py:0
|
||||
#, python-format
|
||||
msgid "Could not retrieve the unit of measure for line with label '%s'."
|
||||
msgstr ""
|
||||
|
||||
#. module: account_edi_ubl_cii
|
||||
#. odoo-python
|
||||
#: code:addons/account_edi_ubl_cii/models/account_edi_common.py:0
|
||||
#, python-format
|
||||
msgid "Down Payment"
|
||||
msgstr ""
|
||||
|
||||
#. module: account_edi_ubl_cii
|
||||
#. odoo-python
|
||||
#: code:addons/account_edi_ubl_cii/models/account_edi_common.py:0
|
||||
#, python-format
|
||||
msgid "Down Payments"
|
||||
msgstr ""
|
||||
|
||||
#. module: account_edi_ubl_cii
|
||||
#: model:ir.model,name:account_edi_ubl_cii.model_account_edi_xml_ubl_efff
|
||||
msgid "E-FFF (BE)"
|
||||
msgstr ""
|
||||
|
||||
#. module: account_edi_ubl_cii
|
||||
#: model:ir.model,name:account_edi_ubl_cii.model_account_edi_format
|
||||
msgid "EDI format"
|
||||
msgstr ""
|
||||
|
||||
#. module: account_edi_ubl_cii
|
||||
#: model_terms:ir.ui.view,arch_db:account_edi_ubl_cii.account_invoice_pdfa_3_facturx_metadata
|
||||
msgid "EN 16931"
|
||||
msgstr ""
|
||||
|
||||
#. module: account_edi_ubl_cii
|
||||
#. odoo-python
|
||||
#: code:addons/account_edi_ubl_cii/models/account_edi_xml_ubl_bis3.py:0
|
||||
#, python-format
|
||||
msgid "Each invoice line shall have one and only one tax."
|
||||
msgstr ""
|
||||
|
||||
#. module: account_edi_ubl_cii
|
||||
#. odoo-python
|
||||
#: code:addons/account_edi_ubl_cii/models/account_edi_xml_ubl_bis3.py:0
|
||||
#, python-format
|
||||
msgid "Each invoice line should have a product or a label."
|
||||
msgstr ""
|
||||
|
||||
#. module: account_edi_ubl_cii
|
||||
#. odoo-python
|
||||
#: code:addons/account_edi_ubl_cii/models/account_edi_common.py:0
|
||||
#, python-format
|
||||
msgid "Each invoice line should have at least one tax."
|
||||
msgstr ""
|
||||
|
||||
#. module: account_edi_ubl_cii
|
||||
#: model:ir.model,name:account_edi_ubl_cii.model_mail_template
|
||||
msgid "Email Templates"
|
||||
msgstr ""
|
||||
|
||||
#. module: account_edi_ubl_cii
|
||||
#. odoo-python
|
||||
#: code:addons/account_edi_ubl_cii/models/account_edi_format.py:0
|
||||
#, python-format
|
||||
msgid ""
|
||||
"Errors occured while creating the EDI document (format: %s). The receiver "
|
||||
"might refuse it."
|
||||
msgstr ""
|
||||
|
||||
#. module: account_edi_ubl_cii
|
||||
#. odoo-python
|
||||
#: code:addons/account_edi_ubl_cii/models/account_edi_common.py:0
|
||||
#, python-format
|
||||
msgid "Export outside the EU"
|
||||
msgstr ""
|
||||
|
||||
#. module: account_edi_ubl_cii
|
||||
#: model:ir.model,name:account_edi_ubl_cii.model_account_edi_xml_cii
|
||||
msgid "Factur-x/XRechnung CII 2.2.0"
|
||||
msgstr ""
|
||||
|
||||
#. module: account_edi_ubl_cii
|
||||
#. odoo-python
|
||||
#: code:addons/account_edi_ubl_cii/models/account_edi_xml_ubl_bis3.py:0
|
||||
#: code:addons/account_edi_ubl_cii/models/account_edi_xml_ubl_bis3.py:0
|
||||
#, python-format
|
||||
msgid ""
|
||||
"For intracommunity supply, the actual delivery date or the invoicing period "
|
||||
"should be included."
|
||||
msgstr ""
|
||||
|
||||
#. module: account_edi_ubl_cii
|
||||
#. odoo-python
|
||||
#: code:addons/account_edi_ubl_cii/models/account_edi_xml_ubl_bis3.py:0
|
||||
#, python-format
|
||||
msgid "For intracommunity supply, the delivery address should be included."
|
||||
msgstr ""
|
||||
|
||||
#. module: account_edi_ubl_cii
|
||||
#. odoo-python
|
||||
#: code:addons/account_edi_ubl_cii/models/account_edi_common.py:0
|
||||
#, python-format
|
||||
msgid "Intra-Community supply"
|
||||
msgstr ""
|
||||
|
||||
#. module: account_edi_ubl_cii
|
||||
#: model_terms:ir.ui.view,arch_db:account_edi_ubl_cii.account_invoice_pdfa_3_facturx_metadata
|
||||
msgid "Invoice generated by Odoo"
|
||||
msgstr ""
|
||||
|
||||
#. module: account_edi_ubl_cii
|
||||
#. odoo-python
|
||||
#: code:addons/account_edi_ubl_cii/models/account_edi_xml_ubl_bis3.py:0
|
||||
#: code:addons/account_edi_ubl_cii/models/account_edi_xml_ubl_bis3.py:0
|
||||
#, python-format
|
||||
msgid "No Electronic Address Scheme (EAS) could be found for %s."
|
||||
msgstr ""
|
||||
|
||||
#. module: account_edi_ubl_cii
|
||||
#. odoo-python
|
||||
#: code:addons/account_edi_ubl_cii/models/account_edi_common.py:0
|
||||
#, python-format
|
||||
msgid ""
|
||||
"No gross price, net price nor line subtotal amount found for line in xml"
|
||||
msgstr ""
|
||||
|
||||
#. module: account_edi_ubl_cii
|
||||
#: model_terms:ir.ui.view,arch_db:account_edi_ubl_cii.account_invoice_pdfa_3_facturx_metadata
|
||||
msgid "Odoo"
|
||||
msgstr ""
|
||||
|
||||
#. module: account_edi_ubl_cii
|
||||
#: model:ir.model,name:account_edi_ubl_cii.model_ir_actions_report
|
||||
msgid "Report Action"
|
||||
msgstr ""
|
||||
|
||||
#. module: account_edi_ubl_cii
|
||||
#: model:ir.model,name:account_edi_ubl_cii.model_account_edi_xml_ubl_sg
|
||||
msgid "SG BIS Billing 3.0"
|
||||
msgstr ""
|
||||
|
||||
#. module: account_edi_ubl_cii
|
||||
#: model:ir.model,name:account_edi_ubl_cii.model_account_edi_xml_ubl_nl
|
||||
msgid "SI-UBL 2.0 (NLCIUS)"
|
||||
msgstr ""
|
||||
|
||||
#. module: account_edi_ubl_cii
|
||||
#. odoo-python
|
||||
#: code:addons/account_edi_ubl_cii/models/account_edi_common.py:0
|
||||
#, python-format
|
||||
msgid "Tax '%s' is invalid: %s"
|
||||
msgstr ""
|
||||
|
||||
#. module: account_edi_ubl_cii
|
||||
#. odoo-python
|
||||
#: code:addons/account_edi_ubl_cii/models/account_edi_xml_ubl_bis3.py:0
|
||||
#, python-format
|
||||
msgid ""
|
||||
"The VAT number of the supplier does not seem to be valid. It should be of "
|
||||
"the form: NO179728982MVA."
|
||||
msgstr ""
|
||||
|
||||
#. module: account_edi_ubl_cii
|
||||
#. odoo-python
|
||||
#: code:addons/account_edi_ubl_cii/models/account_edi_xml_ubl_bis3.py:0
|
||||
#, python-format
|
||||
msgid "The VAT of the %s should be prefixed with its country code."
|
||||
msgstr ""
|
||||
|
||||
#. module: account_edi_ubl_cii
|
||||
#. odoo-python
|
||||
#: code:addons/account_edi_ubl_cii/models/account_edi_xml_ubl_bis3.py:0
|
||||
#, python-format
|
||||
msgid "The country is required for the %s."
|
||||
msgstr ""
|
||||
|
||||
#. module: account_edi_ubl_cii
|
||||
#. odoo-python
|
||||
#: code:addons/account_edi_ubl_cii/models/account_edi_xml_cii_facturx.py:0
|
||||
#: code:addons/account_edi_ubl_cii/models/account_edi_xml_ubl_20.py:0
|
||||
#, python-format
|
||||
msgid "The currency '%s' is not active."
|
||||
msgstr ""
|
||||
|
||||
#. module: account_edi_ubl_cii
|
||||
#. odoo-python
|
||||
#: code:addons/account_edi_ubl_cii/models/account_edi_xml_ubl_bis3.py:0
|
||||
#, python-format
|
||||
msgid "The customer %s must have a Bronnoysund company registry."
|
||||
msgstr ""
|
||||
|
||||
#. module: account_edi_ubl_cii
|
||||
#. odoo-python
|
||||
#: code:addons/account_edi_ubl_cii/models/account_edi_xml_ubl_bis3.py:0
|
||||
#, python-format
|
||||
msgid "The customer %s must have a KVK or OIN number."
|
||||
msgstr ""
|
||||
|
||||
#. module: account_edi_ubl_cii
|
||||
#. odoo-python
|
||||
#: code:addons/account_edi_ubl_cii/models/account_edi_common.py:0
|
||||
#: code:addons/account_edi_ubl_cii/models/account_edi_common.py:0
|
||||
#, python-format
|
||||
msgid "The element %s is required on %s."
|
||||
msgstr ""
|
||||
|
||||
#. module: account_edi_ubl_cii
|
||||
#. odoo-python
|
||||
#: code:addons/account_edi_ubl_cii/models/account_edi_common.py:0
|
||||
#, python-format
|
||||
msgid "The field %s is required on %s."
|
||||
msgstr ""
|
||||
|
||||
#. module: account_edi_ubl_cii
|
||||
#. odoo-python
|
||||
#: code:addons/account_edi_ubl_cii/models/account_edi_xml_cii_facturx.py:0
|
||||
#, python-format
|
||||
msgid ""
|
||||
"The field 'Sanitized Account Number' is required on the Recipient Bank."
|
||||
msgstr ""
|
||||
|
||||
#. module: account_edi_ubl_cii
|
||||
#. odoo-python
|
||||
#: code:addons/account_edi_ubl_cii/models/account_edi_xml_cii_facturx.py:0
|
||||
#: code:addons/account_edi_ubl_cii/models/account_edi_xml_ubl_20.py:0
|
||||
#, python-format
|
||||
msgid ""
|
||||
"The invoice has been converted into a credit note and the quantities have "
|
||||
"been reverted."
|
||||
msgstr ""
|
||||
|
||||
#. module: account_edi_ubl_cii
|
||||
#. odoo-python
|
||||
#: code:addons/account_edi_ubl_cii/models/account_edi_format.py:0
|
||||
#, python-format
|
||||
msgid ""
|
||||
"The journal in which to upload should either be a sale or a purchase "
|
||||
"journal."
|
||||
msgstr ""
|
||||
|
||||
#. module: account_edi_ubl_cii
|
||||
#. odoo-python
|
||||
#: code:addons/account_edi_ubl_cii/models/account_edi_xml_ubl_bis3.py:0
|
||||
#, python-format
|
||||
msgid "The supplier %s must have a Bronnoysund company registry."
|
||||
msgstr ""
|
||||
|
||||
#. module: account_edi_ubl_cii
|
||||
#. odoo-python
|
||||
#: code:addons/account_edi_ubl_cii/models/account_edi_xml_ubl_bis3.py:0
|
||||
#, python-format
|
||||
msgid "The supplier %s must have a KVK or OIN number."
|
||||
msgstr ""
|
||||
|
||||
#. module: account_edi_ubl_cii
|
||||
#: model:ir.model,name:account_edi_ubl_cii.model_account_edi_xml_ubl_20
|
||||
msgid "UBL 2.0"
|
||||
msgstr ""
|
||||
|
||||
#. module: account_edi_ubl_cii
|
||||
#: model:ir.model,name:account_edi_ubl_cii.model_account_edi_xml_ubl_21
|
||||
msgid "UBL 2.1"
|
||||
msgstr ""
|
||||
|
||||
#. module: account_edi_ubl_cii
|
||||
#: model:ir.model,name:account_edi_ubl_cii.model_account_edi_xml_ubl_bis3
|
||||
msgid "UBL BIS Billing 3.0.12"
|
||||
msgstr ""
|
||||
|
||||
#. module: account_edi_ubl_cii
|
||||
#. odoo-python
|
||||
#: code:addons/account_edi_ubl_cii/models/account_edi_xml_cii_facturx.py:0
|
||||
#, python-format
|
||||
msgid ""
|
||||
"When the Canary Island General Indirect Tax (IGIC) applies, the tax rate on "
|
||||
"each invoice line should be greater than 0."
|
||||
msgstr ""
|
||||
|
||||
#. module: account_edi_ubl_cii
|
||||
#. odoo-python
|
||||
#: code:addons/account_edi_ubl_cii/models/account_edi_xml_cii_facturx.py:0
|
||||
#, python-format
|
||||
msgid ""
|
||||
"You should include at least one tax per invoice line. [BR-CO-04]-Each "
|
||||
"Invoice line (BG-25) shall be categorized with an Invoiced item VAT category"
|
||||
" code (BT-151)."
|
||||
msgstr ""
|
||||
|
||||
#. module: account_edi_ubl_cii
|
||||
#: model_terms:ir.ui.view,arch_db:account_edi_ubl_cii.account_invoice_pdfa_3_facturx_metadata
|
||||
msgid "factur-x.xml"
|
||||
msgstr ""
|
||||
|
||||
#. module: account_edi_ubl_cii
|
||||
#: model_terms:ir.ui.view,arch_db:account_edi_ubl_cii.account_invoice_pdfa_3_facturx_metadata
|
||||
msgid "fx"
|
||||
msgstr ""
|
||||
|
||||
#. module: account_edi_ubl_cii
|
||||
#: model_terms:ir.ui.view,arch_db:account_edi_ubl_cii.account_invoice_pdfa_3_facturx_metadata
|
||||
msgid "urn:factur-x:pdfa:CrossIndustryDocument:invoice:1p0#"
|
||||
msgstr ""
|
||||
File diff suppressed because it is too large
Load diff
File diff suppressed because it is too large
Load diff
File diff suppressed because it is too large
Load diff
File diff suppressed because it is too large
Load diff
File diff suppressed because it is too large
Load diff
File diff suppressed because it is too large
Load diff
File diff suppressed because it is too large
Load diff
File diff suppressed because it is too large
Load diff
File diff suppressed because it is too large
Load diff
|
|
@ -1,450 +0,0 @@
|
|||
# Translation of Odoo Server.
|
||||
# This file contains the translation of the following modules:
|
||||
# * account_edi_ubl_cii
|
||||
#
|
||||
# Translators:
|
||||
# Braulio D. López Vázquez <bdl@odoo.com>, 2022
|
||||
# Martin Trigaux, 2022
|
||||
# Patricia Gutiérrez Capetillo <pagc@odoo.com>, 2022
|
||||
# Alfonso González, 2023
|
||||
# Iran Villalobos López, 2023
|
||||
# Fernanda Alvarez, 2024
|
||||
#
|
||||
msgid ""
|
||||
msgstr ""
|
||||
"Project-Id-Version: Odoo Server 16.0\n"
|
||||
"Report-Msgid-Bugs-To: \n"
|
||||
"POT-Creation-Date: 2025-02-10 08:26+0000\n"
|
||||
"PO-Revision-Date: 2022-09-22 05:44+0000\n"
|
||||
"Last-Translator: Fernanda Alvarez, 2024\n"
|
||||
"Language-Team: Spanish (Mexico) (https://app.transifex.com/odoo/teams/41243/es_MX/)\n"
|
||||
"MIME-Version: 1.0\n"
|
||||
"Content-Type: text/plain; charset=UTF-8\n"
|
||||
"Content-Transfer-Encoding: \n"
|
||||
"Language: es_MX\n"
|
||||
"Plural-Forms: nplurals=3; plural=n == 1 ? 0 : n != 0 && n % 1000000 == 0 ? 1 : 2;\n"
|
||||
|
||||
#. module: account_edi_ubl_cii
|
||||
#: model_terms:ir.ui.view,arch_db:account_edi_ubl_cii.account_invoice_pdfa_3_facturx_metadata
|
||||
msgid "1.0"
|
||||
msgstr "1.0"
|
||||
|
||||
#. module: account_edi_ubl_cii
|
||||
#: model_terms:ir.ui.view,arch_db:account_edi_ubl_cii.account_invoice_facturx_export_22
|
||||
msgid "42"
|
||||
msgstr "42"
|
||||
|
||||
#. module: account_edi_ubl_cii
|
||||
#. odoo-python
|
||||
#: code:addons/account_edi_ubl_cii/models/account_edi_common.py:0
|
||||
#, python-format
|
||||
msgid "<strong>Format used to import the invoice: %s</strong>"
|
||||
msgstr "<strong>Formato usado para importar la factura: %s</strong>"
|
||||
|
||||
#. module: account_edi_ubl_cii
|
||||
#. odoo-python
|
||||
#: code:addons/account_edi_ubl_cii/models/account_edi_common.py:0
|
||||
#, python-format
|
||||
msgid ""
|
||||
"<strong>Format used to import the invoice: %s</strong> <p><li> %s </li></p>"
|
||||
msgstr ""
|
||||
"<strong>Formato usado para importar la factura: %s</strong> <p><li> %s "
|
||||
"</li></p>"
|
||||
|
||||
#. module: account_edi_ubl_cii
|
||||
#. odoo-python
|
||||
#: code:addons/account_edi_ubl_cii/models/account_edi_common.py:0
|
||||
#, python-format
|
||||
msgid "A payment of %s was detected."
|
||||
msgstr "Se detectó un pago de %s."
|
||||
|
||||
#. module: account_edi_ubl_cii
|
||||
#: model:ir.model,name:account_edi_ubl_cii.model_account_edi_xml_ubl_a_nz
|
||||
msgid "A-NZ BIS Billing 3.0"
|
||||
msgstr "Facturación A-NZ BIS 3.0"
|
||||
|
||||
#. module: account_edi_ubl_cii
|
||||
#. odoo-python
|
||||
#: code:addons/account_edi_ubl_cii/models/account_edi_common.py:0
|
||||
#: code:addons/account_edi_ubl_cii/models/account_edi_common.py:0
|
||||
#, python-format
|
||||
msgid "Articles 226 items 11 to 15 Directive 2006/112/EN"
|
||||
msgstr "Artículos 226 Apuntes 11 a 15 Directiva 2006/112/EN"
|
||||
|
||||
#. module: account_edi_ubl_cii
|
||||
#. odoo-python
|
||||
#: code:addons/account_edi_ubl_cii/models/account_edi_common.py:0
|
||||
#, python-format
|
||||
msgid "At least one of the following fields %s is required on %s."
|
||||
msgstr "Al menos uno de los siguientes campos %s se necesita en %s."
|
||||
|
||||
#. module: account_edi_ubl_cii
|
||||
#: model:ir.model,name:account_edi_ubl_cii.model_account_edi_xml_ubl_de
|
||||
msgid "BIS3 DE (XRechnung)"
|
||||
msgstr "BIS3 DE (XRechnung)"
|
||||
|
||||
#. module: account_edi_ubl_cii
|
||||
#: model:ir.model,name:account_edi_ubl_cii.model_account_edi_common
|
||||
msgid ""
|
||||
"Common functions for EDI documents: generate the data, the constraints, etc"
|
||||
msgstr ""
|
||||
"Funciones comunes para documentos EDI: generar datos, limitaciones, etc."
|
||||
|
||||
#. module: account_edi_ubl_cii
|
||||
#. odoo-python
|
||||
#: code:addons/account_edi_ubl_cii/models/account_edi_xml_ubl_20.py:0
|
||||
#: code:addons/account_edi_ubl_cii/models/account_edi_xml_ubl_20.py:0
|
||||
#, python-format
|
||||
msgid "Conditional cash/payment discount"
|
||||
msgstr "Descuento condicional por efectivo/pago"
|
||||
|
||||
#. module: account_edi_ubl_cii
|
||||
#. odoo-python
|
||||
#: code:addons/account_edi_ubl_cii/models/account_edi_xml_cii_facturx.py:0
|
||||
#: code:addons/account_edi_ubl_cii/models/account_edi_xml_ubl_20.py:0
|
||||
#, python-format
|
||||
msgid ""
|
||||
"Could not retrieve currency: %s. Did you enable the multicurrency option and"
|
||||
" activate the currency ?"
|
||||
msgstr ""
|
||||
"No se pudo recuperar la divisa: %s. ¿Activó la opción multimoneda y activó "
|
||||
"la divisa?"
|
||||
|
||||
#. module: account_edi_ubl_cii
|
||||
#. odoo-python
|
||||
#: code:addons/account_edi_ubl_cii/models/account_edi_common.py:0
|
||||
#: code:addons/account_edi_ubl_cii/models/account_edi_common.py:0
|
||||
#, python-format
|
||||
msgid "Could not retrieve the tax: %s %% for line '%s'."
|
||||
msgstr "No se pudo recuperar el impuesto: %s %% para línea '%s'."
|
||||
|
||||
#. module: account_edi_ubl_cii
|
||||
#. odoo-python
|
||||
#: code:addons/account_edi_ubl_cii/models/account_edi_common.py:0
|
||||
#, python-format
|
||||
msgid "Could not retrieve the unit of measure for line with label '%s'."
|
||||
msgstr ""
|
||||
"No se pudo recuperar la unidad de medida para la línea con la etiqueta "
|
||||
"\"%s\"."
|
||||
|
||||
#. module: account_edi_ubl_cii
|
||||
#. odoo-python
|
||||
#: code:addons/account_edi_ubl_cii/models/account_edi_common.py:0
|
||||
#, python-format
|
||||
msgid "Down Payment"
|
||||
msgstr "Anticipo"
|
||||
|
||||
#. module: account_edi_ubl_cii
|
||||
#. odoo-python
|
||||
#: code:addons/account_edi_ubl_cii/models/account_edi_common.py:0
|
||||
#, python-format
|
||||
msgid "Down Payments"
|
||||
msgstr "Anticipos"
|
||||
|
||||
#. module: account_edi_ubl_cii
|
||||
#: model:ir.model,name:account_edi_ubl_cii.model_account_edi_xml_ubl_efff
|
||||
msgid "E-FFF (BE)"
|
||||
msgstr "E-FFF (BE)"
|
||||
|
||||
#. module: account_edi_ubl_cii
|
||||
#: model:ir.model,name:account_edi_ubl_cii.model_account_edi_format
|
||||
msgid "EDI format"
|
||||
msgstr "Formato EDI"
|
||||
|
||||
#. module: account_edi_ubl_cii
|
||||
#: model_terms:ir.ui.view,arch_db:account_edi_ubl_cii.account_invoice_pdfa_3_facturx_metadata
|
||||
msgid "EN 16931"
|
||||
msgstr "EN 16931"
|
||||
|
||||
#. module: account_edi_ubl_cii
|
||||
#. odoo-python
|
||||
#: code:addons/account_edi_ubl_cii/models/account_edi_xml_ubl_bis3.py:0
|
||||
#, python-format
|
||||
msgid "Each invoice line shall have one and only one tax."
|
||||
msgstr "Cada línea de factura debe tener un, y solo un, impuesto."
|
||||
|
||||
#. module: account_edi_ubl_cii
|
||||
#. odoo-python
|
||||
#: code:addons/account_edi_ubl_cii/models/account_edi_xml_ubl_bis3.py:0
|
||||
#, python-format
|
||||
msgid "Each invoice line should have a product or a label."
|
||||
msgstr "Cada línea de factura debe tener al menos un producto o una etiqueta."
|
||||
|
||||
#. module: account_edi_ubl_cii
|
||||
#. odoo-python
|
||||
#: code:addons/account_edi_ubl_cii/models/account_edi_common.py:0
|
||||
#, python-format
|
||||
msgid "Each invoice line should have at least one tax."
|
||||
msgstr "Cada línea de factura debe tener al menos un impuesto."
|
||||
|
||||
#. module: account_edi_ubl_cii
|
||||
#: model:ir.model,name:account_edi_ubl_cii.model_mail_template
|
||||
msgid "Email Templates"
|
||||
msgstr "Plantillas de correo electrónico"
|
||||
|
||||
#. module: account_edi_ubl_cii
|
||||
#. odoo-python
|
||||
#: code:addons/account_edi_ubl_cii/models/account_edi_format.py:0
|
||||
#, python-format
|
||||
msgid ""
|
||||
"Errors occured while creating the EDI document (format: %s). The receiver "
|
||||
"might refuse it."
|
||||
msgstr ""
|
||||
"Ocurrieron errores al crear el documento EDI (formato: %s). Es posible que "
|
||||
"el receptor lo rechace."
|
||||
|
||||
#. module: account_edi_ubl_cii
|
||||
#. odoo-python
|
||||
#: code:addons/account_edi_ubl_cii/models/account_edi_common.py:0
|
||||
#, python-format
|
||||
msgid "Export outside the EU"
|
||||
msgstr "Exportar fuera de la UE"
|
||||
|
||||
#. module: account_edi_ubl_cii
|
||||
#: model:ir.model,name:account_edi_ubl_cii.model_account_edi_xml_cii
|
||||
msgid "Factur-x/XRechnung CII 2.2.0"
|
||||
msgstr "Factur-x/XRechnung CII 2.2.0"
|
||||
|
||||
#. module: account_edi_ubl_cii
|
||||
#. odoo-python
|
||||
#: code:addons/account_edi_ubl_cii/models/account_edi_xml_ubl_bis3.py:0
|
||||
#: code:addons/account_edi_ubl_cii/models/account_edi_xml_ubl_bis3.py:0
|
||||
#, python-format
|
||||
msgid ""
|
||||
"For intracommunity supply, the actual delivery date or the invoicing period "
|
||||
"should be included."
|
||||
msgstr ""
|
||||
"Para un suministro intracomunitario, debe incluir la fecha actual de la "
|
||||
"entrega o el periodo de la factura."
|
||||
|
||||
#. module: account_edi_ubl_cii
|
||||
#. odoo-python
|
||||
#: code:addons/account_edi_ubl_cii/models/account_edi_xml_ubl_bis3.py:0
|
||||
#, python-format
|
||||
msgid "For intracommunity supply, the delivery address should be included."
|
||||
msgstr ""
|
||||
"Para un suministro intracomunitario, debe incluir la dirección de entrega."
|
||||
|
||||
#. module: account_edi_ubl_cii
|
||||
#. odoo-python
|
||||
#: code:addons/account_edi_ubl_cii/models/account_edi_common.py:0
|
||||
#, python-format
|
||||
msgid "Intra-Community supply"
|
||||
msgstr "Suministro intracomunitario"
|
||||
|
||||
#. module: account_edi_ubl_cii
|
||||
#: model_terms:ir.ui.view,arch_db:account_edi_ubl_cii.account_invoice_pdfa_3_facturx_metadata
|
||||
msgid "Invoice generated by Odoo"
|
||||
msgstr "Factura generada por Odoo"
|
||||
|
||||
#. module: account_edi_ubl_cii
|
||||
#. odoo-python
|
||||
#: code:addons/account_edi_ubl_cii/models/account_edi_xml_ubl_bis3.py:0
|
||||
#: code:addons/account_edi_ubl_cii/models/account_edi_xml_ubl_bis3.py:0
|
||||
#, python-format
|
||||
msgid "No Electronic Address Scheme (EAS) could be found for %s."
|
||||
msgstr ""
|
||||
"No se encontró esquema de dirección electrónica (EAS, por sus siglas en "
|
||||
"inglés) para %s."
|
||||
|
||||
#. module: account_edi_ubl_cii
|
||||
#. odoo-python
|
||||
#: code:addons/account_edi_ubl_cii/models/account_edi_common.py:0
|
||||
#, python-format
|
||||
msgid ""
|
||||
"No gross price, net price nor line subtotal amount found for line in xml"
|
||||
msgstr ""
|
||||
"No se encontró el precio bruto o neto ni el importe subtotal de línea para "
|
||||
"la línea en XML"
|
||||
|
||||
#. module: account_edi_ubl_cii
|
||||
#: model_terms:ir.ui.view,arch_db:account_edi_ubl_cii.account_invoice_pdfa_3_facturx_metadata
|
||||
msgid "Odoo"
|
||||
msgstr "Odoo"
|
||||
|
||||
#. module: account_edi_ubl_cii
|
||||
#: model:ir.model,name:account_edi_ubl_cii.model_ir_actions_report
|
||||
msgid "Report Action"
|
||||
msgstr "Acción de reporte"
|
||||
|
||||
#. module: account_edi_ubl_cii
|
||||
#: model:ir.model,name:account_edi_ubl_cii.model_account_edi_xml_ubl_sg
|
||||
msgid "SG BIS Billing 3.0"
|
||||
msgstr "Facturación SG BIS 3.0"
|
||||
|
||||
#. module: account_edi_ubl_cii
|
||||
#: model:ir.model,name:account_edi_ubl_cii.model_account_edi_xml_ubl_nl
|
||||
msgid "SI-UBL 2.0 (NLCIUS)"
|
||||
msgstr "SI-UBL 2.0 (NLCIUS)"
|
||||
|
||||
#. module: account_edi_ubl_cii
|
||||
#. odoo-python
|
||||
#: code:addons/account_edi_ubl_cii/models/account_edi_common.py:0
|
||||
#, python-format
|
||||
msgid "Tax '%s' is invalid: %s"
|
||||
msgstr "El impuesto \"%s\" no es válido: %s"
|
||||
|
||||
#. module: account_edi_ubl_cii
|
||||
#. odoo-python
|
||||
#: code:addons/account_edi_ubl_cii/models/account_edi_xml_ubl_bis3.py:0
|
||||
#, python-format
|
||||
msgid ""
|
||||
"The VAT number of the supplier does not seem to be valid. It should be of "
|
||||
"the form: NO179728982MVA."
|
||||
msgstr ""
|
||||
"Parece que el NIF del proveedor no es válido, debería tener el formato: "
|
||||
"NO179728982MVA."
|
||||
|
||||
#. module: account_edi_ubl_cii
|
||||
#. odoo-python
|
||||
#: code:addons/account_edi_ubl_cii/models/account_edi_xml_ubl_bis3.py:0
|
||||
#, python-format
|
||||
msgid "The VAT of the %s should be prefixed with its country code."
|
||||
msgstr ""
|
||||
"El número de identificación fiscal de %s debería tener el código de su país "
|
||||
"como prefijo."
|
||||
|
||||
#. module: account_edi_ubl_cii
|
||||
#. odoo-python
|
||||
#: code:addons/account_edi_ubl_cii/models/account_edi_xml_ubl_bis3.py:0
|
||||
#, python-format
|
||||
msgid "The country is required for the %s."
|
||||
msgstr "El país es necesario para %s."
|
||||
|
||||
#. module: account_edi_ubl_cii
|
||||
#. odoo-python
|
||||
#: code:addons/account_edi_ubl_cii/models/account_edi_xml_cii_facturx.py:0
|
||||
#: code:addons/account_edi_ubl_cii/models/account_edi_xml_ubl_20.py:0
|
||||
#, python-format
|
||||
msgid "The currency '%s' is not active."
|
||||
msgstr "La divisa '%s' no está activa"
|
||||
|
||||
#. module: account_edi_ubl_cii
|
||||
#. odoo-python
|
||||
#: code:addons/account_edi_ubl_cii/models/account_edi_xml_ubl_bis3.py:0
|
||||
#, python-format
|
||||
msgid "The customer %s must have a Bronnoysund company registry."
|
||||
msgstr "El cliente %s debe tener un registro mercantil en Brønnøysund."
|
||||
|
||||
#. module: account_edi_ubl_cii
|
||||
#. odoo-python
|
||||
#: code:addons/account_edi_ubl_cii/models/account_edi_xml_ubl_bis3.py:0
|
||||
#, python-format
|
||||
msgid "The customer %s must have a KVK or OIN number."
|
||||
msgstr "El cliente %s debe tener un KVK o número OIN."
|
||||
|
||||
#. module: account_edi_ubl_cii
|
||||
#. odoo-python
|
||||
#: code:addons/account_edi_ubl_cii/models/account_edi_common.py:0
|
||||
#: code:addons/account_edi_ubl_cii/models/account_edi_common.py:0
|
||||
#, python-format
|
||||
msgid "The element %s is required on %s."
|
||||
msgstr "El elemento %s es necesario en %s"
|
||||
|
||||
#. module: account_edi_ubl_cii
|
||||
#. odoo-python
|
||||
#: code:addons/account_edi_ubl_cii/models/account_edi_common.py:0
|
||||
#, python-format
|
||||
msgid "The field %s is required on %s."
|
||||
msgstr "El campo %s es necesario en %s"
|
||||
|
||||
#. module: account_edi_ubl_cii
|
||||
#. odoo-python
|
||||
#: code:addons/account_edi_ubl_cii/models/account_edi_xml_cii_facturx.py:0
|
||||
#, python-format
|
||||
msgid ""
|
||||
"The field 'Sanitized Account Number' is required on the Recipient Bank."
|
||||
msgstr ""
|
||||
"El campo 'Número de cuenta depurado' es necesario en el banco del "
|
||||
"destinatario."
|
||||
|
||||
#. module: account_edi_ubl_cii
|
||||
#. odoo-python
|
||||
#: code:addons/account_edi_ubl_cii/models/account_edi_xml_cii_facturx.py:0
|
||||
#: code:addons/account_edi_ubl_cii/models/account_edi_xml_ubl_20.py:0
|
||||
#, python-format
|
||||
msgid ""
|
||||
"The invoice has been converted into a credit note and the quantities have "
|
||||
"been reverted."
|
||||
msgstr ""
|
||||
"La factura se convirtió en una nota de crédito y las cantidades se "
|
||||
"revirtieron."
|
||||
|
||||
#. module: account_edi_ubl_cii
|
||||
#. odoo-python
|
||||
#: code:addons/account_edi_ubl_cii/models/account_edi_format.py:0
|
||||
#, python-format
|
||||
msgid ""
|
||||
"The journal in which to upload should either be a sale or a purchase "
|
||||
"journal."
|
||||
msgstr ""
|
||||
"El diario en el que se va a cargar debe ser un diario de ventas o de "
|
||||
"compras."
|
||||
|
||||
#. module: account_edi_ubl_cii
|
||||
#. odoo-python
|
||||
#: code:addons/account_edi_ubl_cii/models/account_edi_xml_ubl_bis3.py:0
|
||||
#, python-format
|
||||
msgid "The supplier %s must have a Bronnoysund company registry."
|
||||
msgstr "El proveedor %s debe tener un registro en la empresa Bronnoysund."
|
||||
|
||||
#. module: account_edi_ubl_cii
|
||||
#. odoo-python
|
||||
#: code:addons/account_edi_ubl_cii/models/account_edi_xml_ubl_bis3.py:0
|
||||
#, python-format
|
||||
msgid "The supplier %s must have a KVK or OIN number."
|
||||
msgstr "El proveedor %s debe tener un número KVK y OIN."
|
||||
|
||||
#. module: account_edi_ubl_cii
|
||||
#: model:ir.model,name:account_edi_ubl_cii.model_account_edi_xml_ubl_20
|
||||
msgid "UBL 2.0"
|
||||
msgstr "UBL 2.0"
|
||||
|
||||
#. module: account_edi_ubl_cii
|
||||
#: model:ir.model,name:account_edi_ubl_cii.model_account_edi_xml_ubl_21
|
||||
msgid "UBL 2.1"
|
||||
msgstr "UBL 2.1"
|
||||
|
||||
#. module: account_edi_ubl_cii
|
||||
#: model:ir.model,name:account_edi_ubl_cii.model_account_edi_xml_ubl_bis3
|
||||
msgid "UBL BIS Billing 3.0.12"
|
||||
msgstr "Facturación UBL BIS 3.0.12"
|
||||
|
||||
#. module: account_edi_ubl_cii
|
||||
#. odoo-python
|
||||
#: code:addons/account_edi_ubl_cii/models/account_edi_xml_cii_facturx.py:0
|
||||
#, python-format
|
||||
msgid ""
|
||||
"When the Canary Island General Indirect Tax (IGIC) applies, the tax rate on "
|
||||
"each invoice line should be greater than 0."
|
||||
msgstr ""
|
||||
"Cuando el Impuesto General Indirecto Canario (IGIC) aplica, la tasa "
|
||||
"tributaria en cada línea de factura debe ser mayor a 0."
|
||||
|
||||
#. module: account_edi_ubl_cii
|
||||
#. odoo-python
|
||||
#: code:addons/account_edi_ubl_cii/models/account_edi_xml_cii_facturx.py:0
|
||||
#, python-format
|
||||
msgid ""
|
||||
"You should include at least one tax per invoice line. [BR-CO-04]-Each "
|
||||
"Invoice line (BG-25) shall be categorized with an Invoiced item VAT category"
|
||||
" code (BT-151)."
|
||||
msgstr ""
|
||||
"Debe incluir al menos un impuesto por cada línea en la factura. [BR-CO-04]. "
|
||||
"Deberá categorizar cada línea de la factura (BG-25) por código de categoría "
|
||||
"de IVA del artículo facturado (BT-151)."
|
||||
|
||||
#. module: account_edi_ubl_cii
|
||||
#: model_terms:ir.ui.view,arch_db:account_edi_ubl_cii.account_invoice_pdfa_3_facturx_metadata
|
||||
msgid "factur-x.xml"
|
||||
msgstr "factur-x.xml"
|
||||
|
||||
#. module: account_edi_ubl_cii
|
||||
#: model_terms:ir.ui.view,arch_db:account_edi_ubl_cii.account_invoice_pdfa_3_facturx_metadata
|
||||
msgid "fx"
|
||||
msgstr "fx"
|
||||
|
||||
#. module: account_edi_ubl_cii
|
||||
#: model_terms:ir.ui.view,arch_db:account_edi_ubl_cii.account_invoice_pdfa_3_facturx_metadata
|
||||
msgid "urn:factur-x:pdfa:CrossIndustryDocument:invoice:1p0#"
|
||||
msgstr "urn:factur-x:pdfa:CrossIndustryDocument:invoice:1p0#"
|
||||
File diff suppressed because it is too large
Load diff
File diff suppressed because it is too large
Load diff
File diff suppressed because it is too large
Load diff
File diff suppressed because it is too large
Load diff
|
|
@ -6,7 +6,7 @@ msgid ""
|
|||
msgstr ""
|
||||
"Project-Id-Version: Odoo Server 15.0+e\n"
|
||||
"Report-Msgid-Bugs-To: \n"
|
||||
"POT-Creation-Date: 2022-06-15 09:16+0000\n"
|
||||
"POT-Creation-Date: 2023-05-16 13:48+0000\n"
|
||||
"PO-Revision-Date: 2022-06-15 09:16+0000\n"
|
||||
"Last-Translator: \n"
|
||||
"Language-Team: \n"
|
||||
|
|
@ -16,6 +16,192 @@ msgstr ""
|
|||
"Content-Transfer-Encoding: \n"
|
||||
"Plural-Forms: \n"
|
||||
|
||||
#. module: account_edi_ubl_cii
|
||||
#. odoo-python
|
||||
#: code:addons/account_edi_ubl_cii/models/account_edi_xml_ubl_bis3.py:0
|
||||
msgid "%s should have a KVK or OIN number: the Peppol e-address (EAS) should be '0106' or '0190'."
|
||||
msgstr ""
|
||||
|
||||
#. module: account_edi_ubl_cii
|
||||
#: model:ir.model.fields.selection,name:account_edi_ubl_cii.selection__res_partner__peppol_eas__0002
|
||||
msgid "0002 - System Information et Repertoire des Entreprise et des Etablissements: SIRENE"
|
||||
msgstr ""
|
||||
|
||||
#. module: account_edi_ubl_cii
|
||||
#: model:ir.model.fields.selection,name:account_edi_ubl_cii.selection__res_partner__peppol_eas__0007
|
||||
msgid "0007 - Organisationsnummer (Swedish legal entities)"
|
||||
msgstr ""
|
||||
|
||||
#. module: account_edi_ubl_cii
|
||||
#: model:ir.model.fields.selection,name:account_edi_ubl_cii.selection__res_partner__peppol_eas__0009
|
||||
msgid "0009 - SIRET-CODE"
|
||||
msgstr ""
|
||||
|
||||
#. module: account_edi_ubl_cii
|
||||
#: model:ir.model.fields.selection,name:account_edi_ubl_cii.selection__res_partner__peppol_eas__0037
|
||||
msgid "0037 - LY-tunnus"
|
||||
msgstr ""
|
||||
|
||||
#. module: account_edi_ubl_cii
|
||||
#: model:ir.model.fields.selection,name:account_edi_ubl_cii.selection__res_partner__peppol_eas__0060
|
||||
msgid "0060 - Data Universal Numbering System (D-U-N-S Number)"
|
||||
msgstr ""
|
||||
|
||||
#. module: account_edi_ubl_cii
|
||||
#: model:ir.model.fields.selection,name:account_edi_ubl_cii.selection__res_partner__peppol_eas__0088
|
||||
msgid "0088 - EAN Location Code"
|
||||
msgstr ""
|
||||
|
||||
#. module: account_edi_ubl_cii
|
||||
#: model:ir.model.fields.selection,name:account_edi_ubl_cii.selection__res_partner__peppol_eas__0096
|
||||
msgid "0096 - DANISH CHAMBER OF COMMERCE Scheme (EDIRA compliant)"
|
||||
msgstr ""
|
||||
|
||||
#. module: account_edi_ubl_cii
|
||||
#: model:ir.model.fields.selection,name:account_edi_ubl_cii.selection__res_partner__peppol_eas__0097
|
||||
msgid "0097 - FTI - Ediforum Italia, (EDIRA compliant)"
|
||||
msgstr ""
|
||||
|
||||
#. module: account_edi_ubl_cii
|
||||
#: model:ir.model.fields.selection,name:account_edi_ubl_cii.selection__res_partner__peppol_eas__0106
|
||||
msgid "0106 - Association of Chambers of Commerce and Industry in the Netherlands, (EDIRA compliant)"
|
||||
msgstr ""
|
||||
|
||||
#. module: account_edi_ubl_cii
|
||||
#: model:ir.model.fields.selection,name:account_edi_ubl_cii.selection__res_partner__peppol_eas__0130
|
||||
msgid "0130 - Directorates of the European Commission"
|
||||
msgstr ""
|
||||
|
||||
#. module: account_edi_ubl_cii
|
||||
#: model:ir.model.fields.selection,name:account_edi_ubl_cii.selection__res_partner__peppol_eas__0135
|
||||
msgid "0135 - SIA Object Identifiers"
|
||||
msgstr ""
|
||||
|
||||
#. module: account_edi_ubl_cii
|
||||
#: model:ir.model.fields.selection,name:account_edi_ubl_cii.selection__res_partner__peppol_eas__0142
|
||||
msgid "0142 - SECETI Object Identifiers"
|
||||
msgstr ""
|
||||
|
||||
#. module: account_edi_ubl_cii
|
||||
#: model:ir.model.fields.selection,name:account_edi_ubl_cii.selection__res_partner__peppol_eas__0151
|
||||
msgid "0151 - Australian Business Number (ABN) Scheme"
|
||||
msgstr ""
|
||||
|
||||
#. module: account_edi_ubl_cii
|
||||
#: model:ir.model.fields.selection,name:account_edi_ubl_cii.selection__res_partner__peppol_eas__0183
|
||||
msgid "0183 - Swiss Unique Business Identification Number (UIDB)"
|
||||
msgstr ""
|
||||
|
||||
#. module: account_edi_ubl_cii
|
||||
#: model:ir.model.fields.selection,name:account_edi_ubl_cii.selection__res_partner__peppol_eas__0184
|
||||
msgid "0184 - DIGSTORG"
|
||||
msgstr ""
|
||||
|
||||
#. module: account_edi_ubl_cii
|
||||
#: model:ir.model.fields.selection,name:account_edi_ubl_cii.selection__res_partner__peppol_eas__0188
|
||||
msgid "0188 - Corporate Number of The Social Security and Tax Number System"
|
||||
msgstr ""
|
||||
|
||||
#. module: account_edi_ubl_cii
|
||||
#: model:ir.model.fields.selection,name:account_edi_ubl_cii.selection__res_partner__peppol_eas__0190
|
||||
msgid "0190 - Dutch Originator's Identification Number"
|
||||
msgstr ""
|
||||
|
||||
#. module: account_edi_ubl_cii
|
||||
#: model:ir.model.fields.selection,name:account_edi_ubl_cii.selection__res_partner__peppol_eas__0191
|
||||
msgid "0191 - Centre of Registers and Information Systems of the Ministry of Justice"
|
||||
msgstr ""
|
||||
|
||||
#. module: account_edi_ubl_cii
|
||||
#: model:ir.model.fields.selection,name:account_edi_ubl_cii.selection__res_partner__peppol_eas__0192
|
||||
msgid "0192 - Enhetsregisteret ved Bronnoysundregisterne"
|
||||
msgstr ""
|
||||
|
||||
#. module: account_edi_ubl_cii
|
||||
#: model:ir.model.fields.selection,name:account_edi_ubl_cii.selection__res_partner__peppol_eas__0193
|
||||
msgid "0193 - UBL.BE party identifier"
|
||||
msgstr ""
|
||||
|
||||
#. module: account_edi_ubl_cii
|
||||
#: model:ir.model.fields.selection,name:account_edi_ubl_cii.selection__res_partner__peppol_eas__0195
|
||||
msgid "0195 - Singapore UEN identifier"
|
||||
msgstr ""
|
||||
|
||||
#. module: account_edi_ubl_cii
|
||||
#: model:ir.model.fields.selection,name:account_edi_ubl_cii.selection__res_partner__peppol_eas__0196
|
||||
msgid "0196 - Kennitala - Iceland legal id for individuals and legal entities"
|
||||
msgstr ""
|
||||
|
||||
#. module: account_edi_ubl_cii
|
||||
#: model:ir.model.fields.selection,name:account_edi_ubl_cii.selection__res_partner__peppol_eas__0198
|
||||
msgid "0198 - ERSTORG"
|
||||
msgstr ""
|
||||
|
||||
#. module: account_edi_ubl_cii
|
||||
#: model:ir.model.fields.selection,name:account_edi_ubl_cii.selection__res_partner__peppol_eas__0199
|
||||
msgid "0199 - Legal Entity Identifier (LEI)"
|
||||
msgstr ""
|
||||
|
||||
#. module: account_edi_ubl_cii
|
||||
#: model:ir.model.fields.selection,name:account_edi_ubl_cii.selection__res_partner__peppol_eas__0200
|
||||
msgid "0200 - Legal entity code (Lithuania)"
|
||||
msgstr ""
|
||||
|
||||
#. module: account_edi_ubl_cii
|
||||
#: model:ir.model.fields.selection,name:account_edi_ubl_cii.selection__res_partner__peppol_eas__0201
|
||||
msgid "0201 - Codice Univoco Unità Organizzativa iPA"
|
||||
msgstr ""
|
||||
|
||||
#. module: account_edi_ubl_cii
|
||||
#: model:ir.model.fields.selection,name:account_edi_ubl_cii.selection__res_partner__peppol_eas__0202
|
||||
msgid "0202 - Indirizzo di Posta Elettronica Certificata"
|
||||
msgstr ""
|
||||
|
||||
#. module: account_edi_ubl_cii
|
||||
#: model:ir.model.fields.selection,name:account_edi_ubl_cii.selection__res_partner__peppol_eas__0204
|
||||
msgid "0204 - Leitweg-ID"
|
||||
msgstr ""
|
||||
|
||||
#. module: account_edi_ubl_cii
|
||||
#: model:ir.model.fields.selection,name:account_edi_ubl_cii.selection__res_partner__peppol_eas__0208
|
||||
msgid "0208 - Numero d'entreprise / ondernemingsnummer / Unternehmensnummer"
|
||||
msgstr ""
|
||||
|
||||
#. module: account_edi_ubl_cii
|
||||
#: model:ir.model.fields.selection,name:account_edi_ubl_cii.selection__res_partner__peppol_eas__0209
|
||||
msgid "0209 - GS1 identification keys"
|
||||
msgstr ""
|
||||
|
||||
#. module: account_edi_ubl_cii
|
||||
#: model:ir.model.fields.selection,name:account_edi_ubl_cii.selection__res_partner__peppol_eas__0210
|
||||
msgid "0210 - CODICE FISCALE"
|
||||
msgstr ""
|
||||
|
||||
#. module: account_edi_ubl_cii
|
||||
#: model:ir.model.fields.selection,name:account_edi_ubl_cii.selection__res_partner__peppol_eas__0211
|
||||
msgid "0211 - PARTITA IVA"
|
||||
msgstr ""
|
||||
|
||||
#. module: account_edi_ubl_cii
|
||||
#: model:ir.model.fields.selection,name:account_edi_ubl_cii.selection__res_partner__peppol_eas__0212
|
||||
msgid "0212 - Finnish Organization Identifier"
|
||||
msgstr ""
|
||||
|
||||
#. module: account_edi_ubl_cii
|
||||
#: model:ir.model.fields.selection,name:account_edi_ubl_cii.selection__res_partner__peppol_eas__0213
|
||||
msgid "0213 - Finnish Organization Value Add Tax Identifier"
|
||||
msgstr ""
|
||||
|
||||
#. module: account_edi_ubl_cii
|
||||
#: model:ir.model.fields.selection,name:account_edi_ubl_cii.selection__res_partner__peppol_eas__0215
|
||||
msgid "0215 - Net service ID"
|
||||
msgstr ""
|
||||
|
||||
#. module: account_edi_ubl_cii
|
||||
#: model:ir.model.fields.selection,name:account_edi_ubl_cii.selection__res_partner__peppol_eas__0216
|
||||
msgid "0216 - OVTcode"
|
||||
msgstr ""
|
||||
|
||||
#. module: account_edi_ubl_cii
|
||||
#: model_terms:ir.ui.view,arch_db:account_edi_ubl_cii.account_invoice_pdfa_3_facturx_metadata
|
||||
msgid "1.0"
|
||||
|
|
@ -27,103 +213,331 @@ msgid "42"
|
|||
msgstr ""
|
||||
|
||||
#. module: account_edi_ubl_cii
|
||||
#: model_terms:ir.ui.view,arch_db:account_edi_ubl_cii.account_invoice_line_facturx_export_22
|
||||
msgid "95"
|
||||
#: model:ir.model.fields.selection,name:account_edi_ubl_cii.selection__res_partner__peppol_eas__9901
|
||||
msgid "9901 - Danish Ministry of the Interior and Health"
|
||||
msgstr ""
|
||||
|
||||
#. module: account_edi_ubl_cii
|
||||
#: code:addons/account_edi_ubl_cii/models/account_edi_common.py:0
|
||||
#, python-format
|
||||
msgid "<strong>Format used to import the invoice: %s</strong>"
|
||||
#: model:ir.model.fields.selection,name:account_edi_ubl_cii.selection__res_partner__peppol_eas__9910
|
||||
msgid "9910 - Hungary VAT number"
|
||||
msgstr ""
|
||||
|
||||
#. module: account_edi_ubl_cii
|
||||
#: code:addons/account_edi_ubl_cii/models/account_edi_common.py:0
|
||||
#, python-format
|
||||
msgid ""
|
||||
"<strong>Format used to import the invoice: %s</strong> <p><li> %s </li></p>"
|
||||
#: model:ir.model.fields.selection,name:account_edi_ubl_cii.selection__res_partner__peppol_eas__9913
|
||||
msgid "9913 - Business Registers Network"
|
||||
msgstr ""
|
||||
|
||||
#. module: account_edi_ubl_cii
|
||||
#: model:ir.model.fields.selection,name:account_edi_ubl_cii.selection__res_partner__peppol_eas__9914
|
||||
msgid "9914 - Österreichische Umsatzsteuer-Identifikationsnummer"
|
||||
msgstr ""
|
||||
|
||||
#. module: account_edi_ubl_cii
|
||||
#: model:ir.model.fields.selection,name:account_edi_ubl_cii.selection__res_partner__peppol_eas__9915
|
||||
msgid "9915 - Österreichisches Verwaltungs bzw. Organisationskennzeichen"
|
||||
msgstr ""
|
||||
|
||||
#. module: account_edi_ubl_cii
|
||||
#: model:ir.model.fields.selection,name:account_edi_ubl_cii.selection__res_partner__peppol_eas__9918
|
||||
msgid "9918 - SOCIETY FOR WORLDWIDE INTERBANK FINANCIAL, TELECOMMUNICATION S.W.I.F.T"
|
||||
msgstr ""
|
||||
|
||||
#. module: account_edi_ubl_cii
|
||||
#: model:ir.model.fields.selection,name:account_edi_ubl_cii.selection__res_partner__peppol_eas__9919
|
||||
msgid "9919 - Kennziffer des Unternehmensregisters"
|
||||
msgstr ""
|
||||
|
||||
#. module: account_edi_ubl_cii
|
||||
#: model:ir.model.fields.selection,name:account_edi_ubl_cii.selection__res_partner__peppol_eas__9920
|
||||
msgid "9920 - Agencia Española de Administración Tributaria"
|
||||
msgstr ""
|
||||
|
||||
#. module: account_edi_ubl_cii
|
||||
#: model:ir.model.fields.selection,name:account_edi_ubl_cii.selection__res_partner__peppol_eas__9922
|
||||
msgid "9922 - Andorra VAT number"
|
||||
msgstr ""
|
||||
|
||||
#. module: account_edi_ubl_cii
|
||||
#: model:ir.model.fields.selection,name:account_edi_ubl_cii.selection__res_partner__peppol_eas__9923
|
||||
msgid "9923 - Albania VAT number"
|
||||
msgstr ""
|
||||
|
||||
#. module: account_edi_ubl_cii
|
||||
#: model:ir.model.fields.selection,name:account_edi_ubl_cii.selection__res_partner__peppol_eas__9924
|
||||
msgid "9924 - Bosnia and Herzegovina VAT number"
|
||||
msgstr ""
|
||||
|
||||
#. module: account_edi_ubl_cii
|
||||
#: model:ir.model.fields.selection,name:account_edi_ubl_cii.selection__res_partner__peppol_eas__9925
|
||||
msgid "9925 - Belgium VAT number"
|
||||
msgstr ""
|
||||
|
||||
#. module: account_edi_ubl_cii
|
||||
#: model:ir.model.fields.selection,name:account_edi_ubl_cii.selection__res_partner__peppol_eas__9926
|
||||
msgid "9926 - Bulgaria VAT number"
|
||||
msgstr ""
|
||||
|
||||
#. module: account_edi_ubl_cii
|
||||
#: model:ir.model.fields.selection,name:account_edi_ubl_cii.selection__res_partner__peppol_eas__9927
|
||||
msgid "9927 - Switzerland VAT number"
|
||||
msgstr ""
|
||||
|
||||
#. module: account_edi_ubl_cii
|
||||
#: model:ir.model.fields.selection,name:account_edi_ubl_cii.selection__res_partner__peppol_eas__9928
|
||||
msgid "9928 - Cyprus VAT number"
|
||||
msgstr ""
|
||||
|
||||
#. module: account_edi_ubl_cii
|
||||
#: model:ir.model.fields.selection,name:account_edi_ubl_cii.selection__res_partner__peppol_eas__9929
|
||||
msgid "9929 - Czech Republic VAT number"
|
||||
msgstr ""
|
||||
|
||||
#. module: account_edi_ubl_cii
|
||||
#: model:ir.model.fields.selection,name:account_edi_ubl_cii.selection__res_partner__peppol_eas__9930
|
||||
msgid "9930 - Germany VAT number"
|
||||
msgstr ""
|
||||
|
||||
#. module: account_edi_ubl_cii
|
||||
#: model:ir.model.fields.selection,name:account_edi_ubl_cii.selection__res_partner__peppol_eas__9931
|
||||
msgid "9931 - Estonia VAT number"
|
||||
msgstr ""
|
||||
|
||||
#. module: account_edi_ubl_cii
|
||||
#: model:ir.model.fields.selection,name:account_edi_ubl_cii.selection__res_partner__peppol_eas__9932
|
||||
msgid "9932 - United Kingdom VAT number"
|
||||
msgstr ""
|
||||
|
||||
#. module: account_edi_ubl_cii
|
||||
#: model:ir.model.fields.selection,name:account_edi_ubl_cii.selection__res_partner__peppol_eas__9933
|
||||
msgid "9933 - Greece VAT number"
|
||||
msgstr ""
|
||||
|
||||
#. module: account_edi_ubl_cii
|
||||
#: model:ir.model.fields.selection,name:account_edi_ubl_cii.selection__res_partner__peppol_eas__9934
|
||||
msgid "9934 - Croatia VAT number"
|
||||
msgstr ""
|
||||
|
||||
#. module: account_edi_ubl_cii
|
||||
#: model:ir.model.fields.selection,name:account_edi_ubl_cii.selection__res_partner__peppol_eas__9935
|
||||
msgid "9935 - Ireland VAT number"
|
||||
msgstr ""
|
||||
|
||||
#. module: account_edi_ubl_cii
|
||||
#: model:ir.model.fields.selection,name:account_edi_ubl_cii.selection__res_partner__peppol_eas__9936
|
||||
msgid "9936 - Liechtenstein VAT number"
|
||||
msgstr ""
|
||||
|
||||
#. module: account_edi_ubl_cii
|
||||
#: model:ir.model.fields.selection,name:account_edi_ubl_cii.selection__res_partner__peppol_eas__9937
|
||||
msgid "9937 - Lithuania VAT number"
|
||||
msgstr ""
|
||||
|
||||
#. module: account_edi_ubl_cii
|
||||
#: model:ir.model.fields.selection,name:account_edi_ubl_cii.selection__res_partner__peppol_eas__9938
|
||||
msgid "9938 - Luxemburg VAT number"
|
||||
msgstr ""
|
||||
|
||||
#. module: account_edi_ubl_cii
|
||||
#: model:ir.model.fields.selection,name:account_edi_ubl_cii.selection__res_partner__peppol_eas__9939
|
||||
msgid "9939 - Latvia VAT number"
|
||||
msgstr ""
|
||||
|
||||
#. module: account_edi_ubl_cii
|
||||
#: model:ir.model.fields.selection,name:account_edi_ubl_cii.selection__res_partner__peppol_eas__9940
|
||||
msgid "9940 - Monaco VAT number"
|
||||
msgstr ""
|
||||
|
||||
#. module: account_edi_ubl_cii
|
||||
#: model:ir.model.fields.selection,name:account_edi_ubl_cii.selection__res_partner__peppol_eas__9941
|
||||
msgid "9941 - Montenegro VAT number"
|
||||
msgstr ""
|
||||
|
||||
#. module: account_edi_ubl_cii
|
||||
#: model:ir.model.fields.selection,name:account_edi_ubl_cii.selection__res_partner__peppol_eas__9942
|
||||
msgid "9942 - Macedonia, the former Yugoslav Republic of VAT number"
|
||||
msgstr ""
|
||||
|
||||
#. module: account_edi_ubl_cii
|
||||
#: model:ir.model.fields.selection,name:account_edi_ubl_cii.selection__res_partner__peppol_eas__9943
|
||||
msgid "9943 - Malta VAT number"
|
||||
msgstr ""
|
||||
|
||||
#. module: account_edi_ubl_cii
|
||||
#: model:ir.model.fields.selection,name:account_edi_ubl_cii.selection__res_partner__peppol_eas__9944
|
||||
msgid "9944 - Netherlands VAT number"
|
||||
msgstr ""
|
||||
|
||||
#. module: account_edi_ubl_cii
|
||||
#: model:ir.model.fields.selection,name:account_edi_ubl_cii.selection__res_partner__peppol_eas__9945
|
||||
msgid "9945 - Poland VAT number"
|
||||
msgstr ""
|
||||
|
||||
#. module: account_edi_ubl_cii
|
||||
#: model:ir.model.fields.selection,name:account_edi_ubl_cii.selection__res_partner__peppol_eas__9946
|
||||
msgid "9946 - Portugal VAT number"
|
||||
msgstr ""
|
||||
|
||||
#. module: account_edi_ubl_cii
|
||||
#: model:ir.model.fields.selection,name:account_edi_ubl_cii.selection__res_partner__peppol_eas__9947
|
||||
msgid "9947 - Romania VAT number"
|
||||
msgstr ""
|
||||
|
||||
#. module: account_edi_ubl_cii
|
||||
#: model:ir.model.fields.selection,name:account_edi_ubl_cii.selection__res_partner__peppol_eas__9948
|
||||
msgid "9948 - Serbia VAT number"
|
||||
msgstr ""
|
||||
|
||||
#. module: account_edi_ubl_cii
|
||||
#: model:ir.model.fields.selection,name:account_edi_ubl_cii.selection__res_partner__peppol_eas__9949
|
||||
msgid "9949 - Slovenia VAT number"
|
||||
msgstr ""
|
||||
|
||||
#. module: account_edi_ubl_cii
|
||||
#: model:ir.model.fields.selection,name:account_edi_ubl_cii.selection__res_partner__peppol_eas__9950
|
||||
msgid "9950 - Slovakia VAT number"
|
||||
msgstr ""
|
||||
|
||||
#. module: account_edi_ubl_cii
|
||||
#: model:ir.model.fields.selection,name:account_edi_ubl_cii.selection__res_partner__peppol_eas__9951
|
||||
msgid "9951 - San Marino VAT number"
|
||||
msgstr ""
|
||||
|
||||
#. module: account_edi_ubl_cii
|
||||
#: model:ir.model.fields.selection,name:account_edi_ubl_cii.selection__res_partner__peppol_eas__9952
|
||||
msgid "9952 - Türkiye VAT number"
|
||||
msgstr ""
|
||||
|
||||
#. module: account_edi_ubl_cii
|
||||
#: model:ir.model.fields.selection,name:account_edi_ubl_cii.selection__res_partner__peppol_eas__9953
|
||||
msgid "9953 - Holy See (Vatican City State) VAT number"
|
||||
msgstr ""
|
||||
|
||||
#. module: account_edi_ubl_cii
|
||||
#: model:ir.model.fields.selection,name:account_edi_ubl_cii.selection__res_partner__peppol_eas__9955
|
||||
msgid "9955 - Swedish VAT number"
|
||||
msgstr ""
|
||||
|
||||
#. module: account_edi_ubl_cii
|
||||
#: model:ir.model.fields.selection,name:account_edi_ubl_cii.selection__res_partner__peppol_eas__9957
|
||||
msgid "9957 - French VAT number"
|
||||
msgstr ""
|
||||
|
||||
#. module: account_edi_ubl_cii
|
||||
#: model:ir.model.fields.selection,name:account_edi_ubl_cii.selection__res_partner__peppol_eas__9959
|
||||
msgid "9959 - Employer Identification Number (EIN, USA)"
|
||||
msgstr ""
|
||||
|
||||
#. module: account_edi_ubl_cii
|
||||
#: model_terms:ir.ui.view,arch_db:account_edi_ubl_cii.res_config_settings_view_form
|
||||
msgid "<span class=\"fa fa-lg fa-building-o\" title=\"Values set here are company-specific.\"/>"
|
||||
msgstr ""
|
||||
|
||||
#. module: account_edi_ubl_cii
|
||||
#. odoo-python
|
||||
#: code:addons/account_edi_ubl_cii/models/account_edi_common.py:0
|
||||
msgid "A payment of %s was detected."
|
||||
msgstr ""
|
||||
|
||||
#. module: account_edi_ubl_cii
|
||||
#: model:ir.model,name:account_edi_ubl_cii.model_account_edi_xml_ubl_a_nz
|
||||
msgid "A-NZ BIS Billing 3.0"
|
||||
msgstr ""
|
||||
|
||||
#. module: account_edi_ubl_cii
|
||||
#: model:ir.model,name:account_edi_ubl_cii.model_account_move_send
|
||||
msgid "Account Move Send"
|
||||
msgstr ""
|
||||
|
||||
#. module: account_edi_ubl_cii
|
||||
#. odoo-python
|
||||
#: code:addons/account_edi_ubl_cii/models/account_edi_common.py:0
|
||||
#, python-format
|
||||
msgid "Articles 226 items 11 to 15 Directive 2006/112/EN"
|
||||
msgstr ""
|
||||
|
||||
#. module: account_edi_ubl_cii
|
||||
#. odoo-python
|
||||
#: code:addons/account_edi_ubl_cii/models/account_edi_common.py:0
|
||||
#, python-format
|
||||
msgid "At least one of the following fields %s is required on %s."
|
||||
msgstr ""
|
||||
|
||||
#. module: account_edi_ubl_cii
|
||||
#: model:ir.model.fields,field_description:account_edi_ubl_cii.field_account_bank_statement_line__ubl_cii_xml_id
|
||||
#: model:ir.model.fields,field_description:account_edi_ubl_cii.field_account_move__ubl_cii_xml_id
|
||||
#: model:ir.model.fields,field_description:account_edi_ubl_cii.field_account_payment__ubl_cii_xml_id
|
||||
msgid "Attachment"
|
||||
msgstr ""
|
||||
|
||||
#. module: account_edi_ubl_cii
|
||||
#: model:ir.model,name:account_edi_ubl_cii.model_account_edi_xml_ubl_de
|
||||
msgid "BIS3 DE (XRechnung)"
|
||||
msgstr ""
|
||||
|
||||
#. module: account_edi_ubl_cii
|
||||
#: model:ir.model.fields,field_description:account_edi_ubl_cii.field_account_move_send__checkbox_ubl_cii_label
|
||||
msgid "Checkbox Ubl Cii Label"
|
||||
msgstr ""
|
||||
|
||||
#. module: account_edi_ubl_cii
|
||||
#: model:ir.model.fields,field_description:account_edi_ubl_cii.field_account_move_send__checkbox_ubl_cii_xml
|
||||
msgid "Checkbox Ubl Cii Xml"
|
||||
msgstr ""
|
||||
|
||||
#. module: account_edi_ubl_cii
|
||||
#: model:ir.model.fields,help:account_edi_ubl_cii.field_res_partner__peppol_eas
|
||||
#: model:ir.model.fields,help:account_edi_ubl_cii.field_res_users__peppol_eas
|
||||
msgid ""
|
||||
"Code used to identify the Endpoint for Peppol BIS Billing 3.0 and its derivatives.\n"
|
||||
" List available at https://docs.peppol.eu/poacc/billing/3.0/codelist/eas/"
|
||||
msgstr ""
|
||||
|
||||
#. module: account_edi_ubl_cii
|
||||
#: model:ir.model,name:account_edi_ubl_cii.model_account_edi_common
|
||||
msgid ""
|
||||
"Common functions for EDI documents: generate the data, the constraints, etc"
|
||||
msgid "Common functions for EDI documents: generate the data, the constraints, etc"
|
||||
msgstr ""
|
||||
|
||||
#. module: account_edi_ubl_cii
|
||||
#: model_terms:ir.ui.view,arch_db:account_edi_ubl_cii.account_invoice_pdfa_3_facturx_metadata
|
||||
msgid "ConformanceLevel"
|
||||
#: model:ir.model,name:account_edi_ubl_cii.model_res_company
|
||||
msgid "Companies"
|
||||
msgstr ""
|
||||
|
||||
#. module: account_edi_ubl_cii
|
||||
#: model:ir.model,name:account_edi_ubl_cii.model_res_config_settings
|
||||
msgid "Config Settings"
|
||||
msgstr ""
|
||||
|
||||
#. module: account_edi_ubl_cii
|
||||
#: model:ir.model,name:account_edi_ubl_cii.model_res_partner
|
||||
msgid "Contact"
|
||||
msgstr ""
|
||||
|
||||
#. module: account_edi_ubl_cii
|
||||
#. odoo-python
|
||||
#: code:addons/account_edi_ubl_cii/models/account_edi_xml_cii_facturx.py:0
|
||||
#: code:addons/account_edi_ubl_cii/models/account_edi_xml_ubl_20.py:0
|
||||
#, python-format
|
||||
msgid ""
|
||||
"Could not retrieve currency: %s. Did you enable the multicurrency option and"
|
||||
" activate the currency ?"
|
||||
msgid "Could not retrieve currency: %s. Did you enable the multicurrency option and activate the currency?"
|
||||
msgstr ""
|
||||
|
||||
#. module: account_edi_ubl_cii
|
||||
#. odoo-python
|
||||
#: code:addons/account_edi_ubl_cii/models/account_edi_common.py:0
|
||||
#: code:addons/account_edi_ubl_cii/models/account_edi_xml_cii_facturx.py:0
|
||||
#: code:addons/account_edi_ubl_cii/models/account_edi_xml_ubl_20.py:0
|
||||
#, python-format
|
||||
msgid "Could not retrieve the tax: %s %% for line '%s'."
|
||||
msgstr ""
|
||||
|
||||
#. module: account_edi_ubl_cii
|
||||
#: code:addons/account_edi_ubl_cii/models/account_edi_xml_cii_facturx.py:0
|
||||
#: code:addons/account_edi_ubl_cii/models/account_edi_xml_ubl_20.py:0
|
||||
#, python-format
|
||||
msgid ""
|
||||
"Could not retrieve the unit of measure for line with label '%s'. Did you "
|
||||
"install the inventory app and enabled the 'Units of Measure' option ?"
|
||||
msgstr ""
|
||||
|
||||
#. module: account_edi_ubl_cii
|
||||
#: code:addons/account_edi_ubl_cii/models/account_edi_xml_cii_facturx.py:0
|
||||
#: code:addons/account_edi_ubl_cii/models/account_edi_xml_ubl_20.py:0
|
||||
#, python-format
|
||||
msgid "Could not retrieve the vendor."
|
||||
msgstr ""
|
||||
|
||||
#. module: account_edi_ubl_cii
|
||||
#: model_terms:ir.ui.view,arch_db:account_edi_ubl_cii.account_invoice_pdfa_3_facturx_metadata
|
||||
msgid "DocumentFileName"
|
||||
msgstr ""
|
||||
|
||||
#. module: account_edi_ubl_cii
|
||||
#: model_terms:ir.ui.view,arch_db:account_edi_ubl_cii.account_invoice_pdfa_3_facturx_metadata
|
||||
msgid "DocumentType"
|
||||
msgstr ""
|
||||
|
||||
#. module: account_edi_ubl_cii
|
||||
#. odoo-python
|
||||
#: code:addons/account_edi_ubl_cii/models/account_edi_common.py:0
|
||||
msgid "Could not retrieve the unit of measure for line with label '%s'."
|
||||
msgstr ""
|
||||
|
||||
#. module: account_edi_ubl_cii
|
||||
#. odoo-python
|
||||
#: code:addons/account_edi_ubl_cii/models/account_edi_common.py:0
|
||||
#, python-format
|
||||
msgid "Down Payment"
|
||||
msgstr ""
|
||||
|
||||
#. module: account_edi_ubl_cii
|
||||
#. odoo-python
|
||||
#: code:addons/account_edi_ubl_cii/models/account_edi_common.py:0
|
||||
#, python-format
|
||||
msgid "Down Payments"
|
||||
msgstr ""
|
||||
|
||||
|
|
@ -132,45 +546,48 @@ msgstr ""
|
|||
msgid "E-FFF (BE)"
|
||||
msgstr ""
|
||||
|
||||
#. module: account_edi_ubl_cii
|
||||
#: model:ir.model,name:account_edi_ubl_cii.model_account_edi_format
|
||||
msgid "EDI format"
|
||||
msgstr ""
|
||||
|
||||
#. module: account_edi_ubl_cii
|
||||
#: model_terms:ir.ui.view,arch_db:account_edi_ubl_cii.account_invoice_pdfa_3_facturx_metadata
|
||||
msgid "EN 16931"
|
||||
msgstr ""
|
||||
|
||||
#. module: account_edi_ubl_cii
|
||||
#. odoo-python
|
||||
#: code:addons/account_edi_ubl_cii/models/account_edi_xml_ubl_bis3.py:0
|
||||
#, python-format
|
||||
msgid "Each invoice line shall have one and only one tax."
|
||||
msgstr ""
|
||||
|
||||
#. module: account_edi_ubl_cii
|
||||
#. odoo-python
|
||||
#: code:addons/account_edi_ubl_cii/models/account_edi_common.py:0
|
||||
#, python-format
|
||||
msgid "Each invoice line should have at least one tax."
|
||||
msgstr ""
|
||||
|
||||
#. module: account_edi_ubl_cii
|
||||
#: code:addons/account_edi_ubl_cii/models/account_edi_format.py:0
|
||||
#, python-format
|
||||
msgid ""
|
||||
"Errors occured while creating the EDI document (format: %s). The receiver "
|
||||
"might refuse it."
|
||||
#: model_terms:ir.ui.view,arch_db:account_edi_ubl_cii.view_partner_property_form
|
||||
msgid "Electronic Invoicing"
|
||||
msgstr ""
|
||||
|
||||
#. module: account_edi_ubl_cii
|
||||
#: model:ir.model.fields,field_description:account_edi_ubl_cii.field_account_move_send__enable_ubl_cii_xml
|
||||
msgid "Enable Ubl Cii Xml"
|
||||
msgstr ""
|
||||
|
||||
#. module: account_edi_ubl_cii
|
||||
#. odoo-python
|
||||
#: code:addons/account_edi_ubl_cii/models/account_move_send.py:0
|
||||
msgid "Errors occured while creating the EDI document (format: %s):"
|
||||
msgstr ""
|
||||
|
||||
#. module: account_edi_ubl_cii
|
||||
#. odoo-python
|
||||
#: code:addons/account_edi_ubl_cii/models/account_edi_common.py:0
|
||||
#, python-format
|
||||
msgid "Export outside the EU"
|
||||
msgstr ""
|
||||
|
||||
#. module: account_edi_ubl_cii
|
||||
#: model_terms:ir.ui.view,arch_db:account_edi_ubl_cii.account_invoice_pdfa_3_facturx_metadata
|
||||
msgid "Factur-X PDFA Extension Schema"
|
||||
#: model:ir.model.fields.selection,name:account_edi_ubl_cii.selection__res_partner__ubl_cii_format__facturx
|
||||
msgid "Factur-X (CII)"
|
||||
msgstr ""
|
||||
|
||||
#. module: account_edi_ubl_cii
|
||||
|
|
@ -179,27 +596,37 @@ msgid "Factur-x/XRechnung CII 2.2.0"
|
|||
msgstr ""
|
||||
|
||||
#. module: account_edi_ubl_cii
|
||||
#. odoo-python
|
||||
#: code:addons/account_edi_ubl_cii/models/account_edi_xml_ubl_bis3.py:0
|
||||
#, python-format
|
||||
msgid ""
|
||||
"For intracommunity supply, the actual delivery date or the invoicing period "
|
||||
"should be included."
|
||||
msgid "For intracommunity supply, the actual delivery date or the invoicing period should be included."
|
||||
msgstr ""
|
||||
|
||||
#. module: account_edi_ubl_cii
|
||||
#. odoo-python
|
||||
#: code:addons/account_edi_ubl_cii/models/account_edi_xml_ubl_bis3.py:0
|
||||
#, python-format
|
||||
msgid "For intracommunity supply, the delivery address should be included."
|
||||
msgstr ""
|
||||
|
||||
#. module: account_edi_ubl_cii
|
||||
#: model_terms:ir.ui.view,arch_db:account_edi_ubl_cii.account_invoice_pdfa_3_facturx_metadata
|
||||
msgid "INVOICE"
|
||||
#: model:ir.model.fields,field_description:account_edi_ubl_cii.field_res_partner__ubl_cii_format
|
||||
#: model:ir.model.fields,field_description:account_edi_ubl_cii.field_res_users__ubl_cii_format
|
||||
msgid "Format"
|
||||
msgstr ""
|
||||
|
||||
#. module: account_edi_ubl_cii
|
||||
#. odoo-python
|
||||
#: code:addons/account_edi_ubl_cii/models/account_edi_common.py:0
|
||||
msgid "Format used to import the invoice: %s"
|
||||
msgstr ""
|
||||
|
||||
#. module: account_edi_ubl_cii
|
||||
#: model:ir.model.fields,field_description:account_edi_ubl_cii.field_res_company__invoice_is_ubl_cii
|
||||
msgid "Generate Peppol format by default"
|
||||
msgstr ""
|
||||
|
||||
#. module: account_edi_ubl_cii
|
||||
#. odoo-python
|
||||
#: code:addons/account_edi_ubl_cii/models/account_edi_common.py:0
|
||||
#, python-format
|
||||
msgid "Intra-Community supply"
|
||||
msgstr ""
|
||||
|
||||
|
|
@ -209,14 +636,18 @@ msgid "Invoice generated by Odoo"
|
|||
msgstr ""
|
||||
|
||||
#. module: account_edi_ubl_cii
|
||||
#: code:addons/account_edi_ubl_cii/models/account_edi_xml_ubl_bis3.py:0
|
||||
#, python-format
|
||||
msgid "No Electronic Address Scheme (EAS) could be found for %s."
|
||||
#: model:ir.model,name:account_edi_ubl_cii.model_account_move
|
||||
msgid "Journal Entry"
|
||||
msgstr ""
|
||||
|
||||
#. module: account_edi_ubl_cii
|
||||
#: model:ir.model.fields.selection,name:account_edi_ubl_cii.selection__res_partner__ubl_cii_format__nlcius
|
||||
msgid "NLCIUS"
|
||||
msgstr ""
|
||||
|
||||
#. module: account_edi_ubl_cii
|
||||
#. odoo-python
|
||||
#: code:addons/account_edi_ubl_cii/models/account_edi_common.py:0
|
||||
#, python-format
|
||||
msgid "No gross price nor net price found for line in xml"
|
||||
msgstr ""
|
||||
|
||||
|
|
@ -226,32 +657,64 @@ msgid "Odoo"
|
|||
msgstr ""
|
||||
|
||||
#. module: account_edi_ubl_cii
|
||||
#. odoo-python
|
||||
#: code:addons/account_edi_ubl_cii/models/account_edi_common.py:0
|
||||
#, python-format
|
||||
msgid "Output VAT, reduced rate, low"
|
||||
msgstr ""
|
||||
|
||||
#. module: account_edi_ubl_cii
|
||||
#. odoo-python
|
||||
#: code:addons/account_edi_ubl_cii/models/account_edi_common.py:0
|
||||
#, python-format
|
||||
msgid "Output VAT, reduced rate, middle"
|
||||
msgstr ""
|
||||
|
||||
#. module: account_edi_ubl_cii
|
||||
#. odoo-python
|
||||
#: code:addons/account_edi_ubl_cii/models/account_edi_common.py:0
|
||||
#, python-format
|
||||
msgid "Output VAT, reduced rate, raw fish"
|
||||
msgstr ""
|
||||
|
||||
#. module: account_edi_ubl_cii
|
||||
#. odoo-python
|
||||
#: code:addons/account_edi_ubl_cii/models/account_edi_common.py:0
|
||||
#, python-format
|
||||
msgid "Output VAT, regular rate"
|
||||
msgstr ""
|
||||
|
||||
#. module: account_edi_ubl_cii
|
||||
#: model:ir.model,name:account_edi_ubl_cii.model_ir_actions_report
|
||||
msgid "Report Action"
|
||||
#: model:ir.model.fields.selection,name:account_edi_ubl_cii.selection__res_partner__ubl_cii_format__ubl_bis3
|
||||
msgid "Peppol BIS Billing 3.0"
|
||||
msgstr ""
|
||||
|
||||
#. module: account_edi_ubl_cii
|
||||
#: model:ir.model.fields.selection,name:account_edi_ubl_cii.selection__res_partner__ubl_cii_format__ubl_a_nz
|
||||
msgid "Peppol BIS Billing 3.0 A-NZ"
|
||||
msgstr ""
|
||||
|
||||
#. module: account_edi_ubl_cii
|
||||
#: model:ir.model.fields.selection,name:account_edi_ubl_cii.selection__res_partner__ubl_cii_format__ubl_sg
|
||||
msgid "Peppol BIS Billing 3.0 SG"
|
||||
msgstr ""
|
||||
|
||||
#. module: account_edi_ubl_cii
|
||||
#: model:ir.model.fields,field_description:account_edi_ubl_cii.field_res_partner__peppol_endpoint
|
||||
#: model:ir.model.fields,field_description:account_edi_ubl_cii.field_res_users__peppol_endpoint
|
||||
msgid "Peppol Endpoint"
|
||||
msgstr ""
|
||||
|
||||
#. module: account_edi_ubl_cii
|
||||
#: model:ir.model.fields,field_description:account_edi_ubl_cii.field_res_partner__peppol_eas
|
||||
#: model:ir.model.fields,field_description:account_edi_ubl_cii.field_res_users__peppol_eas
|
||||
msgid "Peppol e-address (EAS)"
|
||||
msgstr ""
|
||||
|
||||
#. module: account_edi_ubl_cii
|
||||
#: model:ir.model.fields,field_description:account_edi_ubl_cii.field_res_config_settings__invoice_is_ubl_cii
|
||||
msgid "Peppol format"
|
||||
msgstr ""
|
||||
|
||||
#. module: account_edi_ubl_cii
|
||||
#: model:ir.model,name:account_edi_ubl_cii.model_account_edi_xml_ubl_sg
|
||||
msgid "SG BIS Billing 3.0"
|
||||
msgstr ""
|
||||
|
||||
#. module: account_edi_ubl_cii
|
||||
|
|
@ -260,83 +723,55 @@ msgid "SI-UBL 2.0 (NLCIUS)"
|
|||
msgstr ""
|
||||
|
||||
#. module: account_edi_ubl_cii
|
||||
#: model_terms:ir.ui.view,arch_db:account_edi_ubl_cii.account_invoice_pdfa_3_facturx_metadata
|
||||
msgid "Text"
|
||||
#. odoo-python
|
||||
#: code:addons/account_edi_ubl_cii/models/account_edi_common.py:0
|
||||
msgid "Tax '%s' is invalid: %s"
|
||||
msgstr ""
|
||||
|
||||
#. module: account_edi_ubl_cii
|
||||
#. odoo-python
|
||||
#: code:addons/account_edi_ubl_cii/models/account_edi_xml_ubl_bis3.py:0
|
||||
#, python-format
|
||||
msgid ""
|
||||
"The VAT number of the supplier does not seem to be valid. It should be of "
|
||||
"the form: NO179728982MVA."
|
||||
msgstr ""
|
||||
|
||||
#. module: account_edi_ubl_cii
|
||||
#: model_terms:ir.ui.view,arch_db:account_edi_ubl_cii.account_invoice_pdfa_3_facturx_metadata
|
||||
msgid "The actual version of the Factur-X XML schema"
|
||||
msgstr ""
|
||||
|
||||
#. module: account_edi_ubl_cii
|
||||
#: model_terms:ir.ui.view,arch_db:account_edi_ubl_cii.account_invoice_pdfa_3_facturx_metadata
|
||||
msgid "The conformance level of the embedded Factur-X data"
|
||||
msgid "The VAT number of the supplier does not seem to be valid. It should be of the form: NO179728982MVA."
|
||||
msgstr ""
|
||||
|
||||
#. module: account_edi_ubl_cii
|
||||
#. odoo-python
|
||||
#: code:addons/account_edi_ubl_cii/models/account_edi_xml_cii_facturx.py:0
|
||||
#: code:addons/account_edi_ubl_cii/models/account_edi_xml_ubl_20.py:0
|
||||
#, python-format
|
||||
msgid "The currency '%s' is not active."
|
||||
msgstr ""
|
||||
|
||||
#. module: account_edi_ubl_cii
|
||||
#: code:addons/account_edi_ubl_cii/models/account_edi_xml_ubl_bis3.py:0
|
||||
#, python-format
|
||||
msgid "The customer %s must have a KVK or OIN number."
|
||||
msgstr ""
|
||||
|
||||
#. module: account_edi_ubl_cii
|
||||
#. odoo-python
|
||||
#: code:addons/account_edi_ubl_cii/models/account_edi_common.py:0
|
||||
#, python-format
|
||||
msgid "The element %s is required on %s."
|
||||
msgstr ""
|
||||
|
||||
#. module: account_edi_ubl_cii
|
||||
#. odoo-python
|
||||
#: code:addons/account_edi_ubl_cii/models/account_edi_common.py:0
|
||||
#, python-format
|
||||
msgid "The field %s is required on %s."
|
||||
msgstr ""
|
||||
|
||||
#. module: account_edi_ubl_cii
|
||||
#. odoo-python
|
||||
#: code:addons/account_edi_ubl_cii/models/account_edi_xml_cii_facturx.py:0
|
||||
#, python-format
|
||||
msgid ""
|
||||
"The field 'Sanitized Account Number' is required on the Recipient Bank."
|
||||
msgid "The field 'Sanitized Account Number' is required on the Recipient Bank."
|
||||
msgstr ""
|
||||
|
||||
#. module: account_edi_ubl_cii
|
||||
#. odoo-python
|
||||
#: code:addons/account_edi_ubl_cii/models/account_edi_xml_cii_facturx.py:0
|
||||
#: code:addons/account_edi_ubl_cii/models/account_edi_xml_ubl_20.py:0
|
||||
#, python-format
|
||||
msgid ""
|
||||
"The invoice has been converted into a credit note and the quantities have "
|
||||
"been reverted."
|
||||
msgstr ""
|
||||
"La facture a été convertie en note de crédit et les quantités ont été "
|
||||
"inversées."
|
||||
msgid "The invoice has been converted into a credit note and the quantities have been reverted."
|
||||
msgstr "La facture a été convertie en note de crédit et les quantités ont été inversées."
|
||||
|
||||
#. module: account_edi_ubl_cii
|
||||
#. odoo-python
|
||||
#: code:addons/account_edi_ubl_cii/models/account_edi_xml_ubl_bis3.py:0
|
||||
#, python-format
|
||||
msgid "The supplier %s must have a Bronnoysund company registry."
|
||||
msgstr ""
|
||||
|
||||
#. module: account_edi_ubl_cii
|
||||
#: code:addons/account_edi_ubl_cii/models/account_edi_xml_ubl_bis3.py:0
|
||||
#, python-format
|
||||
msgid "The supplier %s must have a KVK or OIN number."
|
||||
msgstr ""
|
||||
|
||||
#. module: account_edi_ubl_cii
|
||||
#: model:ir.model,name:account_edi_ubl_cii.model_account_edi_xml_ubl_20
|
||||
msgid "UBL 2.0"
|
||||
|
|
@ -353,37 +788,33 @@ msgid "UBL BIS Billing 3.0.12"
|
|||
msgstr ""
|
||||
|
||||
#. module: account_edi_ubl_cii
|
||||
#: model_terms:ir.ui.view,arch_db:account_edi_ubl_cii.account_invoice_facturx_export_22
|
||||
#: model_terms:ir.ui.view,arch_db:account_edi_ubl_cii.account_invoice_line_facturx_export_22
|
||||
#: model_terms:ir.ui.view,arch_db:account_edi_ubl_cii.ubl_20_TaxCategoryType
|
||||
msgid "VAT"
|
||||
#: model:ir.model.fields,field_description:account_edi_ubl_cii.field_account_bank_statement_line__ubl_cii_xml_file
|
||||
#: model:ir.model.fields,field_description:account_edi_ubl_cii.field_account_move__ubl_cii_xml_file
|
||||
#: model:ir.model.fields,field_description:account_edi_ubl_cii.field_account_payment__ubl_cii_xml_file
|
||||
msgid "UBL/CII File"
|
||||
msgstr ""
|
||||
|
||||
#. module: account_edi_ubl_cii
|
||||
#: model_terms:ir.ui.view,arch_db:account_edi_ubl_cii.account_invoice_pdfa_3_facturx_metadata
|
||||
msgid "Version"
|
||||
#: model:ir.model.fields,help:account_edi_ubl_cii.field_res_partner__peppol_endpoint
|
||||
#: model:ir.model.fields,help:account_edi_ubl_cii.field_res_users__peppol_endpoint
|
||||
msgid "Unique identifier used by the Peppol BIS Billing 3.0 and its derivatives, also known as 'Endpoint ID'."
|
||||
msgstr ""
|
||||
|
||||
#. module: account_edi_ubl_cii
|
||||
#. odoo-python
|
||||
#: code:addons/account_edi_ubl_cii/models/account_edi_xml_cii_facturx.py:0
|
||||
#, python-format
|
||||
msgid ""
|
||||
"When the Canary Island General Indirect Tax (IGIC) applies, the tax rate on "
|
||||
"each invoice line should be greater than 0."
|
||||
msgid "When the Canary Island General Indirect Tax (IGIC) applies, the tax rate on each invoice line should be greater than 0."
|
||||
msgstr ""
|
||||
|
||||
#. module: account_edi_ubl_cii
|
||||
#: model:ir.model.fields.selection,name:account_edi_ubl_cii.selection__res_partner__ubl_cii_format__xrechnung
|
||||
msgid "XRechnung CIUS"
|
||||
msgstr ""
|
||||
|
||||
#. module: account_edi_ubl_cii
|
||||
#. odoo-python
|
||||
#: code:addons/account_edi_ubl_cii/models/account_edi_xml_cii_facturx.py:0
|
||||
#, python-format
|
||||
msgid ""
|
||||
"You should include at least one tax per invoice line. [BR-CO-04]-Each "
|
||||
"Invoice line (BG-25) shall be categorized with an Invoiced item VAT category"
|
||||
" code (BT-151)."
|
||||
msgstr ""
|
||||
|
||||
#. module: account_edi_ubl_cii
|
||||
#: model_terms:ir.ui.view,arch_db:account_edi_ubl_cii.account_invoice_pdfa_3_facturx_metadata
|
||||
msgid "external"
|
||||
msgid "You should include at least one tax per invoice line. [BR-CO-04]-Each Invoice line (BG-25) shall be categorized with an Invoiced item VAT category code (BT-151)."
|
||||
msgstr ""
|
||||
|
||||
#. module: account_edi_ubl_cii
|
||||
|
|
@ -401,11 +832,6 @@ msgstr ""
|
|||
msgid "fx"
|
||||
msgstr ""
|
||||
|
||||
#. module: account_edi_ubl_cii
|
||||
#: model_terms:ir.ui.view,arch_db:account_edi_ubl_cii.account_invoice_pdfa_3_facturx_metadata
|
||||
msgid "name of the embedded XML invoice file"
|
||||
msgstr ""
|
||||
|
||||
#. module: account_edi_ubl_cii
|
||||
#: model_terms:ir.ui.view,arch_db:account_edi_ubl_cii.account_invoice_pdfa_3_facturx_metadata
|
||||
msgid "urn:factur-x:pdfa:CrossIndustryDocument:invoice:1p0#"
|
||||
|
|
|
|||
|
|
@ -1,414 +0,0 @@
|
|||
# Translation of Odoo Server.
|
||||
# This file contains the translation of the following modules:
|
||||
# * account_edi_ubl_cii
|
||||
#
|
||||
# Translators:
|
||||
# Qaidjohar Barbhaya, 2023
|
||||
#
|
||||
msgid ""
|
||||
msgstr ""
|
||||
"Project-Id-Version: Odoo Server 16.0\n"
|
||||
"Report-Msgid-Bugs-To: \n"
|
||||
"POT-Creation-Date: 2025-02-10 08:26+0000\n"
|
||||
"PO-Revision-Date: 2022-09-22 05:44+0000\n"
|
||||
"Last-Translator: Qaidjohar Barbhaya, 2023\n"
|
||||
"Language-Team: Gujarati (https://app.transifex.com/odoo/teams/41243/gu/)\n"
|
||||
"MIME-Version: 1.0\n"
|
||||
"Content-Type: text/plain; charset=UTF-8\n"
|
||||
"Content-Transfer-Encoding: \n"
|
||||
"Language: gu\n"
|
||||
"Plural-Forms: nplurals=2; plural=(n != 1);\n"
|
||||
|
||||
#. module: account_edi_ubl_cii
|
||||
#: model_terms:ir.ui.view,arch_db:account_edi_ubl_cii.account_invoice_pdfa_3_facturx_metadata
|
||||
msgid "1.0"
|
||||
msgstr ""
|
||||
|
||||
#. module: account_edi_ubl_cii
|
||||
#: model_terms:ir.ui.view,arch_db:account_edi_ubl_cii.account_invoice_facturx_export_22
|
||||
msgid "42"
|
||||
msgstr ""
|
||||
|
||||
#. module: account_edi_ubl_cii
|
||||
#. odoo-python
|
||||
#: code:addons/account_edi_ubl_cii/models/account_edi_common.py:0
|
||||
#, python-format
|
||||
msgid "<strong>Format used to import the invoice: %s</strong>"
|
||||
msgstr ""
|
||||
|
||||
#. module: account_edi_ubl_cii
|
||||
#. odoo-python
|
||||
#: code:addons/account_edi_ubl_cii/models/account_edi_common.py:0
|
||||
#, python-format
|
||||
msgid ""
|
||||
"<strong>Format used to import the invoice: %s</strong> <p><li> %s </li></p>"
|
||||
msgstr ""
|
||||
|
||||
#. module: account_edi_ubl_cii
|
||||
#. odoo-python
|
||||
#: code:addons/account_edi_ubl_cii/models/account_edi_common.py:0
|
||||
#, python-format
|
||||
msgid "A payment of %s was detected."
|
||||
msgstr ""
|
||||
|
||||
#. module: account_edi_ubl_cii
|
||||
#: model:ir.model,name:account_edi_ubl_cii.model_account_edi_xml_ubl_a_nz
|
||||
msgid "A-NZ BIS Billing 3.0"
|
||||
msgstr ""
|
||||
|
||||
#. module: account_edi_ubl_cii
|
||||
#. odoo-python
|
||||
#: code:addons/account_edi_ubl_cii/models/account_edi_common.py:0
|
||||
#: code:addons/account_edi_ubl_cii/models/account_edi_common.py:0
|
||||
#, python-format
|
||||
msgid "Articles 226 items 11 to 15 Directive 2006/112/EN"
|
||||
msgstr ""
|
||||
|
||||
#. module: account_edi_ubl_cii
|
||||
#. odoo-python
|
||||
#: code:addons/account_edi_ubl_cii/models/account_edi_common.py:0
|
||||
#, python-format
|
||||
msgid "At least one of the following fields %s is required on %s."
|
||||
msgstr ""
|
||||
|
||||
#. module: account_edi_ubl_cii
|
||||
#: model:ir.model,name:account_edi_ubl_cii.model_account_edi_xml_ubl_de
|
||||
msgid "BIS3 DE (XRechnung)"
|
||||
msgstr ""
|
||||
|
||||
#. module: account_edi_ubl_cii
|
||||
#: model:ir.model,name:account_edi_ubl_cii.model_account_edi_common
|
||||
msgid ""
|
||||
"Common functions for EDI documents: generate the data, the constraints, etc"
|
||||
msgstr ""
|
||||
|
||||
#. module: account_edi_ubl_cii
|
||||
#. odoo-python
|
||||
#: code:addons/account_edi_ubl_cii/models/account_edi_xml_ubl_20.py:0
|
||||
#: code:addons/account_edi_ubl_cii/models/account_edi_xml_ubl_20.py:0
|
||||
#, python-format
|
||||
msgid "Conditional cash/payment discount"
|
||||
msgstr ""
|
||||
|
||||
#. module: account_edi_ubl_cii
|
||||
#. odoo-python
|
||||
#: code:addons/account_edi_ubl_cii/models/account_edi_xml_cii_facturx.py:0
|
||||
#: code:addons/account_edi_ubl_cii/models/account_edi_xml_ubl_20.py:0
|
||||
#, python-format
|
||||
msgid ""
|
||||
"Could not retrieve currency: %s. Did you enable the multicurrency option and"
|
||||
" activate the currency ?"
|
||||
msgstr ""
|
||||
|
||||
#. module: account_edi_ubl_cii
|
||||
#. odoo-python
|
||||
#: code:addons/account_edi_ubl_cii/models/account_edi_common.py:0
|
||||
#: code:addons/account_edi_ubl_cii/models/account_edi_common.py:0
|
||||
#, python-format
|
||||
msgid "Could not retrieve the tax: %s %% for line '%s'."
|
||||
msgstr ""
|
||||
|
||||
#. module: account_edi_ubl_cii
|
||||
#. odoo-python
|
||||
#: code:addons/account_edi_ubl_cii/models/account_edi_common.py:0
|
||||
#, python-format
|
||||
msgid "Could not retrieve the unit of measure for line with label '%s'."
|
||||
msgstr ""
|
||||
|
||||
#. module: account_edi_ubl_cii
|
||||
#. odoo-python
|
||||
#: code:addons/account_edi_ubl_cii/models/account_edi_common.py:0
|
||||
#, python-format
|
||||
msgid "Down Payment"
|
||||
msgstr ""
|
||||
|
||||
#. module: account_edi_ubl_cii
|
||||
#. odoo-python
|
||||
#: code:addons/account_edi_ubl_cii/models/account_edi_common.py:0
|
||||
#, python-format
|
||||
msgid "Down Payments"
|
||||
msgstr ""
|
||||
|
||||
#. module: account_edi_ubl_cii
|
||||
#: model:ir.model,name:account_edi_ubl_cii.model_account_edi_xml_ubl_efff
|
||||
msgid "E-FFF (BE)"
|
||||
msgstr ""
|
||||
|
||||
#. module: account_edi_ubl_cii
|
||||
#: model:ir.model,name:account_edi_ubl_cii.model_account_edi_format
|
||||
msgid "EDI format"
|
||||
msgstr ""
|
||||
|
||||
#. module: account_edi_ubl_cii
|
||||
#: model_terms:ir.ui.view,arch_db:account_edi_ubl_cii.account_invoice_pdfa_3_facturx_metadata
|
||||
msgid "EN 16931"
|
||||
msgstr ""
|
||||
|
||||
#. module: account_edi_ubl_cii
|
||||
#. odoo-python
|
||||
#: code:addons/account_edi_ubl_cii/models/account_edi_xml_ubl_bis3.py:0
|
||||
#, python-format
|
||||
msgid "Each invoice line shall have one and only one tax."
|
||||
msgstr ""
|
||||
|
||||
#. module: account_edi_ubl_cii
|
||||
#. odoo-python
|
||||
#: code:addons/account_edi_ubl_cii/models/account_edi_xml_ubl_bis3.py:0
|
||||
#, python-format
|
||||
msgid "Each invoice line should have a product or a label."
|
||||
msgstr ""
|
||||
|
||||
#. module: account_edi_ubl_cii
|
||||
#. odoo-python
|
||||
#: code:addons/account_edi_ubl_cii/models/account_edi_common.py:0
|
||||
#, python-format
|
||||
msgid "Each invoice line should have at least one tax."
|
||||
msgstr ""
|
||||
|
||||
#. module: account_edi_ubl_cii
|
||||
#: model:ir.model,name:account_edi_ubl_cii.model_mail_template
|
||||
msgid "Email Templates"
|
||||
msgstr ""
|
||||
|
||||
#. module: account_edi_ubl_cii
|
||||
#. odoo-python
|
||||
#: code:addons/account_edi_ubl_cii/models/account_edi_format.py:0
|
||||
#, python-format
|
||||
msgid ""
|
||||
"Errors occured while creating the EDI document (format: %s). The receiver "
|
||||
"might refuse it."
|
||||
msgstr ""
|
||||
|
||||
#. module: account_edi_ubl_cii
|
||||
#. odoo-python
|
||||
#: code:addons/account_edi_ubl_cii/models/account_edi_common.py:0
|
||||
#, python-format
|
||||
msgid "Export outside the EU"
|
||||
msgstr ""
|
||||
|
||||
#. module: account_edi_ubl_cii
|
||||
#: model:ir.model,name:account_edi_ubl_cii.model_account_edi_xml_cii
|
||||
msgid "Factur-x/XRechnung CII 2.2.0"
|
||||
msgstr ""
|
||||
|
||||
#. module: account_edi_ubl_cii
|
||||
#. odoo-python
|
||||
#: code:addons/account_edi_ubl_cii/models/account_edi_xml_ubl_bis3.py:0
|
||||
#: code:addons/account_edi_ubl_cii/models/account_edi_xml_ubl_bis3.py:0
|
||||
#, python-format
|
||||
msgid ""
|
||||
"For intracommunity supply, the actual delivery date or the invoicing period "
|
||||
"should be included."
|
||||
msgstr ""
|
||||
|
||||
#. module: account_edi_ubl_cii
|
||||
#. odoo-python
|
||||
#: code:addons/account_edi_ubl_cii/models/account_edi_xml_ubl_bis3.py:0
|
||||
#, python-format
|
||||
msgid "For intracommunity supply, the delivery address should be included."
|
||||
msgstr ""
|
||||
|
||||
#. module: account_edi_ubl_cii
|
||||
#. odoo-python
|
||||
#: code:addons/account_edi_ubl_cii/models/account_edi_common.py:0
|
||||
#, python-format
|
||||
msgid "Intra-Community supply"
|
||||
msgstr ""
|
||||
|
||||
#. module: account_edi_ubl_cii
|
||||
#: model_terms:ir.ui.view,arch_db:account_edi_ubl_cii.account_invoice_pdfa_3_facturx_metadata
|
||||
msgid "Invoice generated by Odoo"
|
||||
msgstr ""
|
||||
|
||||
#. module: account_edi_ubl_cii
|
||||
#. odoo-python
|
||||
#: code:addons/account_edi_ubl_cii/models/account_edi_xml_ubl_bis3.py:0
|
||||
#: code:addons/account_edi_ubl_cii/models/account_edi_xml_ubl_bis3.py:0
|
||||
#, python-format
|
||||
msgid "No Electronic Address Scheme (EAS) could be found for %s."
|
||||
msgstr ""
|
||||
|
||||
#. module: account_edi_ubl_cii
|
||||
#. odoo-python
|
||||
#: code:addons/account_edi_ubl_cii/models/account_edi_common.py:0
|
||||
#, python-format
|
||||
msgid ""
|
||||
"No gross price, net price nor line subtotal amount found for line in xml"
|
||||
msgstr ""
|
||||
|
||||
#. module: account_edi_ubl_cii
|
||||
#: model_terms:ir.ui.view,arch_db:account_edi_ubl_cii.account_invoice_pdfa_3_facturx_metadata
|
||||
msgid "Odoo"
|
||||
msgstr "Odoo"
|
||||
|
||||
#. module: account_edi_ubl_cii
|
||||
#: model:ir.model,name:account_edi_ubl_cii.model_ir_actions_report
|
||||
msgid "Report Action"
|
||||
msgstr "Report Action"
|
||||
|
||||
#. module: account_edi_ubl_cii
|
||||
#: model:ir.model,name:account_edi_ubl_cii.model_account_edi_xml_ubl_sg
|
||||
msgid "SG BIS Billing 3.0"
|
||||
msgstr ""
|
||||
|
||||
#. module: account_edi_ubl_cii
|
||||
#: model:ir.model,name:account_edi_ubl_cii.model_account_edi_xml_ubl_nl
|
||||
msgid "SI-UBL 2.0 (NLCIUS)"
|
||||
msgstr ""
|
||||
|
||||
#. module: account_edi_ubl_cii
|
||||
#. odoo-python
|
||||
#: code:addons/account_edi_ubl_cii/models/account_edi_common.py:0
|
||||
#, python-format
|
||||
msgid "Tax '%s' is invalid: %s"
|
||||
msgstr ""
|
||||
|
||||
#. module: account_edi_ubl_cii
|
||||
#. odoo-python
|
||||
#: code:addons/account_edi_ubl_cii/models/account_edi_xml_ubl_bis3.py:0
|
||||
#, python-format
|
||||
msgid ""
|
||||
"The VAT number of the supplier does not seem to be valid. It should be of "
|
||||
"the form: NO179728982MVA."
|
||||
msgstr ""
|
||||
|
||||
#. module: account_edi_ubl_cii
|
||||
#. odoo-python
|
||||
#: code:addons/account_edi_ubl_cii/models/account_edi_xml_ubl_bis3.py:0
|
||||
#, python-format
|
||||
msgid "The VAT of the %s should be prefixed with its country code."
|
||||
msgstr ""
|
||||
|
||||
#. module: account_edi_ubl_cii
|
||||
#. odoo-python
|
||||
#: code:addons/account_edi_ubl_cii/models/account_edi_xml_ubl_bis3.py:0
|
||||
#, python-format
|
||||
msgid "The country is required for the %s."
|
||||
msgstr ""
|
||||
|
||||
#. module: account_edi_ubl_cii
|
||||
#. odoo-python
|
||||
#: code:addons/account_edi_ubl_cii/models/account_edi_xml_cii_facturx.py:0
|
||||
#: code:addons/account_edi_ubl_cii/models/account_edi_xml_ubl_20.py:0
|
||||
#, python-format
|
||||
msgid "The currency '%s' is not active."
|
||||
msgstr ""
|
||||
|
||||
#. module: account_edi_ubl_cii
|
||||
#. odoo-python
|
||||
#: code:addons/account_edi_ubl_cii/models/account_edi_xml_ubl_bis3.py:0
|
||||
#, python-format
|
||||
msgid "The customer %s must have a Bronnoysund company registry."
|
||||
msgstr ""
|
||||
|
||||
#. module: account_edi_ubl_cii
|
||||
#. odoo-python
|
||||
#: code:addons/account_edi_ubl_cii/models/account_edi_xml_ubl_bis3.py:0
|
||||
#, python-format
|
||||
msgid "The customer %s must have a KVK or OIN number."
|
||||
msgstr ""
|
||||
|
||||
#. module: account_edi_ubl_cii
|
||||
#. odoo-python
|
||||
#: code:addons/account_edi_ubl_cii/models/account_edi_common.py:0
|
||||
#: code:addons/account_edi_ubl_cii/models/account_edi_common.py:0
|
||||
#, python-format
|
||||
msgid "The element %s is required on %s."
|
||||
msgstr ""
|
||||
|
||||
#. module: account_edi_ubl_cii
|
||||
#. odoo-python
|
||||
#: code:addons/account_edi_ubl_cii/models/account_edi_common.py:0
|
||||
#, python-format
|
||||
msgid "The field %s is required on %s."
|
||||
msgstr ""
|
||||
|
||||
#. module: account_edi_ubl_cii
|
||||
#. odoo-python
|
||||
#: code:addons/account_edi_ubl_cii/models/account_edi_xml_cii_facturx.py:0
|
||||
#, python-format
|
||||
msgid ""
|
||||
"The field 'Sanitized Account Number' is required on the Recipient Bank."
|
||||
msgstr ""
|
||||
|
||||
#. module: account_edi_ubl_cii
|
||||
#. odoo-python
|
||||
#: code:addons/account_edi_ubl_cii/models/account_edi_xml_cii_facturx.py:0
|
||||
#: code:addons/account_edi_ubl_cii/models/account_edi_xml_ubl_20.py:0
|
||||
#, python-format
|
||||
msgid ""
|
||||
"The invoice has been converted into a credit note and the quantities have "
|
||||
"been reverted."
|
||||
msgstr ""
|
||||
|
||||
#. module: account_edi_ubl_cii
|
||||
#. odoo-python
|
||||
#: code:addons/account_edi_ubl_cii/models/account_edi_format.py:0
|
||||
#, python-format
|
||||
msgid ""
|
||||
"The journal in which to upload should either be a sale or a purchase "
|
||||
"journal."
|
||||
msgstr ""
|
||||
|
||||
#. module: account_edi_ubl_cii
|
||||
#. odoo-python
|
||||
#: code:addons/account_edi_ubl_cii/models/account_edi_xml_ubl_bis3.py:0
|
||||
#, python-format
|
||||
msgid "The supplier %s must have a Bronnoysund company registry."
|
||||
msgstr ""
|
||||
|
||||
#. module: account_edi_ubl_cii
|
||||
#. odoo-python
|
||||
#: code:addons/account_edi_ubl_cii/models/account_edi_xml_ubl_bis3.py:0
|
||||
#, python-format
|
||||
msgid "The supplier %s must have a KVK or OIN number."
|
||||
msgstr ""
|
||||
|
||||
#. module: account_edi_ubl_cii
|
||||
#: model:ir.model,name:account_edi_ubl_cii.model_account_edi_xml_ubl_20
|
||||
msgid "UBL 2.0"
|
||||
msgstr ""
|
||||
|
||||
#. module: account_edi_ubl_cii
|
||||
#: model:ir.model,name:account_edi_ubl_cii.model_account_edi_xml_ubl_21
|
||||
msgid "UBL 2.1"
|
||||
msgstr ""
|
||||
|
||||
#. module: account_edi_ubl_cii
|
||||
#: model:ir.model,name:account_edi_ubl_cii.model_account_edi_xml_ubl_bis3
|
||||
msgid "UBL BIS Billing 3.0.12"
|
||||
msgstr ""
|
||||
|
||||
#. module: account_edi_ubl_cii
|
||||
#. odoo-python
|
||||
#: code:addons/account_edi_ubl_cii/models/account_edi_xml_cii_facturx.py:0
|
||||
#, python-format
|
||||
msgid ""
|
||||
"When the Canary Island General Indirect Tax (IGIC) applies, the tax rate on "
|
||||
"each invoice line should be greater than 0."
|
||||
msgstr ""
|
||||
|
||||
#. module: account_edi_ubl_cii
|
||||
#. odoo-python
|
||||
#: code:addons/account_edi_ubl_cii/models/account_edi_xml_cii_facturx.py:0
|
||||
#, python-format
|
||||
msgid ""
|
||||
"You should include at least one tax per invoice line. [BR-CO-04]-Each "
|
||||
"Invoice line (BG-25) shall be categorized with an Invoiced item VAT category"
|
||||
" code (BT-151)."
|
||||
msgstr ""
|
||||
|
||||
#. module: account_edi_ubl_cii
|
||||
#: model_terms:ir.ui.view,arch_db:account_edi_ubl_cii.account_invoice_pdfa_3_facturx_metadata
|
||||
msgid "factur-x.xml"
|
||||
msgstr ""
|
||||
|
||||
#. module: account_edi_ubl_cii
|
||||
#: model_terms:ir.ui.view,arch_db:account_edi_ubl_cii.account_invoice_pdfa_3_facturx_metadata
|
||||
msgid "fx"
|
||||
msgstr ""
|
||||
|
||||
#. module: account_edi_ubl_cii
|
||||
#: model_terms:ir.ui.view,arch_db:account_edi_ubl_cii.account_invoice_pdfa_3_facturx_metadata
|
||||
msgid "urn:factur-x:pdfa:CrossIndustryDocument:invoice:1p0#"
|
||||
msgstr ""
|
||||
File diff suppressed because it is too large
Load diff
File diff suppressed because it is too large
Load diff
File diff suppressed because it is too large
Load diff
File diff suppressed because it is too large
Load diff
|
|
@ -1,424 +0,0 @@
|
|||
# Translation of Odoo Server.
|
||||
# This file contains the translation of the following modules:
|
||||
# * account_edi_ubl_cii
|
||||
#
|
||||
msgid ""
|
||||
msgstr ""
|
||||
"Project-Id-Version: Odoo Server 16.0\n"
|
||||
"Report-Msgid-Bugs-To: \n"
|
||||
"POT-Creation-Date: 2024-02-06 13:31+0000\n"
|
||||
"PO-Revision-Date: 2022-09-22 05:44+0000\n"
|
||||
"Language-Team: Armenian (https://app.transifex.com/odoo/teams/41243/hy/)\n"
|
||||
"MIME-Version: 1.0\n"
|
||||
"Content-Type: text/plain; charset=UTF-8\n"
|
||||
"Content-Transfer-Encoding: \n"
|
||||
"Language: hy\n"
|
||||
"Plural-Forms: nplurals=2; plural=(n != 1);\n"
|
||||
|
||||
#. module: account_edi_ubl_cii
|
||||
#: model_terms:ir.ui.view,arch_db:account_edi_ubl_cii.account_invoice_pdfa_3_facturx_metadata
|
||||
msgid "1.0"
|
||||
msgstr ""
|
||||
|
||||
#. module: account_edi_ubl_cii
|
||||
#: model_terms:ir.ui.view,arch_db:account_edi_ubl_cii.account_invoice_facturx_export_22
|
||||
msgid "42"
|
||||
msgstr ""
|
||||
|
||||
#. module: account_edi_ubl_cii
|
||||
#. odoo-python
|
||||
#: code:addons/account_edi_ubl_cii/models/account_edi_common.py:0
|
||||
#, python-format
|
||||
msgid "<strong>Format used to import the invoice: %s</strong>"
|
||||
msgstr ""
|
||||
|
||||
#. module: account_edi_ubl_cii
|
||||
#. odoo-python
|
||||
#: code:addons/account_edi_ubl_cii/models/account_edi_common.py:0
|
||||
#, python-format
|
||||
msgid ""
|
||||
"<strong>Format used to import the invoice: %s</strong> <p><li> %s </li></p>"
|
||||
msgstr ""
|
||||
|
||||
#. module: account_edi_ubl_cii
|
||||
#. odoo-python
|
||||
#: code:addons/account_edi_ubl_cii/models/account_edi_common.py:0
|
||||
#, python-format
|
||||
msgid "A payment of %s was detected."
|
||||
msgstr ""
|
||||
|
||||
#. module: account_edi_ubl_cii
|
||||
#: model:ir.model,name:account_edi_ubl_cii.model_account_edi_xml_ubl_a_nz
|
||||
msgid "A-NZ BIS Billing 3.0"
|
||||
msgstr ""
|
||||
|
||||
#. module: account_edi_ubl_cii
|
||||
#. odoo-python
|
||||
#: code:addons/account_edi_ubl_cii/models/account_edi_common.py:0
|
||||
#: code:addons/account_edi_ubl_cii/models/account_edi_common.py:0
|
||||
#, python-format
|
||||
msgid "Articles 226 items 11 to 15 Directive 2006/112/EN"
|
||||
msgstr ""
|
||||
|
||||
#. module: account_edi_ubl_cii
|
||||
#. odoo-python
|
||||
#: code:addons/account_edi_ubl_cii/models/account_edi_common.py:0
|
||||
#, python-format
|
||||
msgid "At least one of the following fields %s is required on %s."
|
||||
msgstr ""
|
||||
|
||||
#. module: account_edi_ubl_cii
|
||||
#: model:ir.model,name:account_edi_ubl_cii.model_account_edi_xml_ubl_de
|
||||
msgid "BIS3 DE (XRechnung)"
|
||||
msgstr ""
|
||||
|
||||
#. module: account_edi_ubl_cii
|
||||
#: model:ir.model,name:account_edi_ubl_cii.model_account_edi_common
|
||||
msgid ""
|
||||
"Common functions for EDI documents: generate the data, the constraints, etc"
|
||||
msgstr ""
|
||||
|
||||
#. module: account_edi_ubl_cii
|
||||
#. odoo-python
|
||||
#: code:addons/account_edi_ubl_cii/models/account_edi_xml_ubl_20.py:0
|
||||
#: code:addons/account_edi_ubl_cii/models/account_edi_xml_ubl_20.py:0
|
||||
#, python-format
|
||||
msgid "Conditional cash/payment discount"
|
||||
msgstr ""
|
||||
|
||||
#. module: account_edi_ubl_cii
|
||||
#. odoo-python
|
||||
#: code:addons/account_edi_ubl_cii/models/account_edi_xml_cii_facturx.py:0
|
||||
#: code:addons/account_edi_ubl_cii/models/account_edi_xml_ubl_20.py:0
|
||||
#, python-format
|
||||
msgid ""
|
||||
"Could not retrieve currency: %s. Did you enable the multicurrency option and"
|
||||
" activate the currency ?"
|
||||
msgstr ""
|
||||
|
||||
#. module: account_edi_ubl_cii
|
||||
#. odoo-python
|
||||
#: code:addons/account_edi_ubl_cii/models/account_edi_common.py:0
|
||||
#: code:addons/account_edi_ubl_cii/models/account_edi_common.py:0
|
||||
#, python-format
|
||||
msgid "Could not retrieve the tax: %s %% for line '%s'."
|
||||
msgstr ""
|
||||
|
||||
#. module: account_edi_ubl_cii
|
||||
#. odoo-python
|
||||
#: code:addons/account_edi_ubl_cii/models/account_edi_common.py:0
|
||||
#, python-format
|
||||
msgid "Could not retrieve the unit of measure for line with label '%s'."
|
||||
msgstr ""
|
||||
|
||||
#. module: account_edi_ubl_cii
|
||||
#. odoo-python
|
||||
#: code:addons/account_edi_ubl_cii/models/account_edi_common.py:0
|
||||
#, python-format
|
||||
msgid "Down Payment"
|
||||
msgstr ""
|
||||
|
||||
#. module: account_edi_ubl_cii
|
||||
#. odoo-python
|
||||
#: code:addons/account_edi_ubl_cii/models/account_edi_common.py:0
|
||||
#, python-format
|
||||
msgid "Down Payments"
|
||||
msgstr ""
|
||||
|
||||
#. module: account_edi_ubl_cii
|
||||
#: model:ir.model,name:account_edi_ubl_cii.model_account_edi_xml_ubl_efff
|
||||
msgid "E-FFF (BE)"
|
||||
msgstr ""
|
||||
|
||||
#. module: account_edi_ubl_cii
|
||||
#: model:ir.model,name:account_edi_ubl_cii.model_account_edi_format
|
||||
msgid "EDI format"
|
||||
msgstr ""
|
||||
|
||||
#. module: account_edi_ubl_cii
|
||||
#: model_terms:ir.ui.view,arch_db:account_edi_ubl_cii.account_invoice_pdfa_3_facturx_metadata
|
||||
msgid "EN 16931"
|
||||
msgstr ""
|
||||
|
||||
#. module: account_edi_ubl_cii
|
||||
#. odoo-python
|
||||
#: code:addons/account_edi_ubl_cii/models/account_edi_xml_ubl_bis3.py:0
|
||||
#, python-format
|
||||
msgid "Each invoice line shall have one and only one tax."
|
||||
msgstr ""
|
||||
|
||||
#. module: account_edi_ubl_cii
|
||||
#. odoo-python
|
||||
#: code:addons/account_edi_ubl_cii/models/account_edi_xml_ubl_bis3.py:0
|
||||
#, python-format
|
||||
msgid "Each invoice line should have a product or a label."
|
||||
msgstr ""
|
||||
|
||||
#. module: account_edi_ubl_cii
|
||||
#. odoo-python
|
||||
#: code:addons/account_edi_ubl_cii/models/account_edi_common.py:0
|
||||
#, python-format
|
||||
msgid "Each invoice line should have at least one tax."
|
||||
msgstr ""
|
||||
|
||||
#. module: account_edi_ubl_cii
|
||||
#: model:ir.model,name:account_edi_ubl_cii.model_mail_template
|
||||
msgid "Email Templates"
|
||||
msgstr ""
|
||||
|
||||
#. module: account_edi_ubl_cii
|
||||
#. odoo-python
|
||||
#: code:addons/account_edi_ubl_cii/models/account_edi_format.py:0
|
||||
#, python-format
|
||||
msgid ""
|
||||
"Errors occured while creating the EDI document (format: %s). The receiver "
|
||||
"might refuse it."
|
||||
msgstr ""
|
||||
|
||||
#. module: account_edi_ubl_cii
|
||||
#. odoo-python
|
||||
#: code:addons/account_edi_ubl_cii/models/account_edi_common.py:0
|
||||
#, python-format
|
||||
msgid "Export outside the EU"
|
||||
msgstr ""
|
||||
|
||||
#. module: account_edi_ubl_cii
|
||||
#: model:ir.model,name:account_edi_ubl_cii.model_account_edi_xml_cii
|
||||
msgid "Factur-x/XRechnung CII 2.2.0"
|
||||
msgstr ""
|
||||
|
||||
#. module: account_edi_ubl_cii
|
||||
#. odoo-python
|
||||
#: code:addons/account_edi_ubl_cii/models/account_edi_xml_ubl_bis3.py:0
|
||||
#: code:addons/account_edi_ubl_cii/models/account_edi_xml_ubl_bis3.py:0
|
||||
#, python-format
|
||||
msgid ""
|
||||
"For intracommunity supply, the actual delivery date or the invoicing period "
|
||||
"should be included."
|
||||
msgstr ""
|
||||
|
||||
#. module: account_edi_ubl_cii
|
||||
#. odoo-python
|
||||
#: code:addons/account_edi_ubl_cii/models/account_edi_xml_ubl_bis3.py:0
|
||||
#, python-format
|
||||
msgid "For intracommunity supply, the delivery address should be included."
|
||||
msgstr ""
|
||||
|
||||
#. module: account_edi_ubl_cii
|
||||
#. odoo-python
|
||||
#: code:addons/account_edi_ubl_cii/models/account_edi_common.py:0
|
||||
#, python-format
|
||||
msgid "Intra-Community supply"
|
||||
msgstr ""
|
||||
|
||||
#. module: account_edi_ubl_cii
|
||||
#: model_terms:ir.ui.view,arch_db:account_edi_ubl_cii.account_invoice_pdfa_3_facturx_metadata
|
||||
msgid "Invoice generated by Odoo"
|
||||
msgstr ""
|
||||
|
||||
#. module: account_edi_ubl_cii
|
||||
#. odoo-python
|
||||
#: code:addons/account_edi_ubl_cii/models/account_edi_xml_ubl_bis3.py:0
|
||||
#: code:addons/account_edi_ubl_cii/models/account_edi_xml_ubl_bis3.py:0
|
||||
#, python-format
|
||||
msgid "No Electronic Address Scheme (EAS) could be found for %s."
|
||||
msgstr ""
|
||||
|
||||
#. module: account_edi_ubl_cii
|
||||
#. odoo-python
|
||||
#: code:addons/account_edi_ubl_cii/models/account_edi_common.py:0
|
||||
#, python-format
|
||||
msgid ""
|
||||
"No gross price, net price nor line subtotal amount found for line in xml"
|
||||
msgstr ""
|
||||
|
||||
#. module: account_edi_ubl_cii
|
||||
#: model_terms:ir.ui.view,arch_db:account_edi_ubl_cii.account_invoice_pdfa_3_facturx_metadata
|
||||
msgid "Odoo"
|
||||
msgstr ""
|
||||
|
||||
#. module: account_edi_ubl_cii
|
||||
#: model:ir.model,name:account_edi_ubl_cii.model_ir_actions_report
|
||||
msgid "Report Action"
|
||||
msgstr ""
|
||||
|
||||
#. module: account_edi_ubl_cii
|
||||
#: model:ir.model,name:account_edi_ubl_cii.model_account_edi_xml_ubl_sg
|
||||
msgid "SG BIS Billing 3.0"
|
||||
msgstr ""
|
||||
|
||||
#. module: account_edi_ubl_cii
|
||||
#: model:ir.model,name:account_edi_ubl_cii.model_account_edi_xml_ubl_nl
|
||||
msgid "SI-UBL 2.0 (NLCIUS)"
|
||||
msgstr ""
|
||||
|
||||
#. module: account_edi_ubl_cii
|
||||
#. odoo-python
|
||||
#: code:addons/account_edi_ubl_cii/models/account_edi_common.py:0
|
||||
#, python-format
|
||||
msgid "Tax '%s' is invalid: %s"
|
||||
msgstr ""
|
||||
|
||||
#. module: account_edi_ubl_cii
|
||||
#. odoo-python
|
||||
#: code:addons/account_edi_ubl_cii/models/account_edi_xml_ubl_bis3.py:0
|
||||
#, python-format
|
||||
msgid ""
|
||||
"The VAT number of the supplier does not seem to be valid. It should be of "
|
||||
"the form: NO179728982MVA."
|
||||
msgstr ""
|
||||
|
||||
#. module: account_edi_ubl_cii
|
||||
#. odoo-python
|
||||
#: code:addons/account_edi_ubl_cii/models/account_edi_xml_ubl_bis3.py:0
|
||||
#, python-format
|
||||
msgid "The VAT of the %s should be prefixed with its country code."
|
||||
msgstr ""
|
||||
|
||||
#. module: account_edi_ubl_cii
|
||||
#. odoo-python
|
||||
#: code:addons/account_edi_ubl_cii/models/account_edi_xml_ubl_bis3.py:0
|
||||
#, python-format
|
||||
msgid "The country is required for the %s."
|
||||
msgstr ""
|
||||
|
||||
#. module: account_edi_ubl_cii
|
||||
#. odoo-python
|
||||
#: code:addons/account_edi_ubl_cii/models/account_edi_xml_cii_facturx.py:0
|
||||
#: code:addons/account_edi_ubl_cii/models/account_edi_xml_ubl_20.py:0
|
||||
#, python-format
|
||||
msgid "The currency '%s' is not active."
|
||||
msgstr ""
|
||||
|
||||
#. module: account_edi_ubl_cii
|
||||
#. odoo-python
|
||||
#: code:addons/account_edi_ubl_cii/models/account_edi_xml_ubl_bis3.py:0
|
||||
#, python-format
|
||||
msgid "The customer %s must have a Bronnoysund company registry."
|
||||
msgstr ""
|
||||
|
||||
#. module: account_edi_ubl_cii
|
||||
#. odoo-python
|
||||
#: code:addons/account_edi_ubl_cii/models/account_edi_xml_ubl_bis3.py:0
|
||||
#, python-format
|
||||
msgid "The customer %s must have a KVK or OIN number."
|
||||
msgstr ""
|
||||
|
||||
#. module: account_edi_ubl_cii
|
||||
#. odoo-python
|
||||
#: code:addons/account_edi_ubl_cii/models/account_edi_common.py:0
|
||||
#: code:addons/account_edi_ubl_cii/models/account_edi_common.py:0
|
||||
#, python-format
|
||||
msgid "The element %s is required on %s."
|
||||
msgstr ""
|
||||
|
||||
#. module: account_edi_ubl_cii
|
||||
#. odoo-python
|
||||
#: code:addons/account_edi_ubl_cii/models/account_edi_common.py:0
|
||||
#, python-format
|
||||
msgid "The field %s is required on %s."
|
||||
msgstr ""
|
||||
|
||||
#. module: account_edi_ubl_cii
|
||||
#. odoo-python
|
||||
#: code:addons/account_edi_ubl_cii/models/account_edi_xml_cii_facturx.py:0
|
||||
#, python-format
|
||||
msgid ""
|
||||
"The field 'Sanitized Account Number' is required on the Recipient Bank."
|
||||
msgstr ""
|
||||
|
||||
#. module: account_edi_ubl_cii
|
||||
#. odoo-python
|
||||
#: code:addons/account_edi_ubl_cii/models/account_edi_xml_ubl_bis3.py:0
|
||||
#, python-format
|
||||
msgid ""
|
||||
"The invoice contains line(s) with a negative unit price, which is not "
|
||||
"allowed. You might need to set a negative quantity instead."
|
||||
msgstr ""
|
||||
|
||||
#. module: account_edi_ubl_cii
|
||||
#. odoo-python
|
||||
#: code:addons/account_edi_ubl_cii/models/account_edi_xml_cii_facturx.py:0
|
||||
#: code:addons/account_edi_ubl_cii/models/account_edi_xml_ubl_20.py:0
|
||||
#, python-format
|
||||
msgid ""
|
||||
"The invoice has been converted into a credit note and the quantities have "
|
||||
"been reverted."
|
||||
msgstr ""
|
||||
|
||||
#. module: account_edi_ubl_cii
|
||||
#. odoo-python
|
||||
#: code:addons/account_edi_ubl_cii/models/account_edi_format.py:0
|
||||
#, python-format
|
||||
msgid ""
|
||||
"The journal in which to upload should either be a sale or a purchase "
|
||||
"journal."
|
||||
msgstr ""
|
||||
|
||||
#. module: account_edi_ubl_cii
|
||||
#. odoo-python
|
||||
#: code:addons/account_edi_ubl_cii/models/account_edi_xml_ubl_bis3.py:0
|
||||
#, python-format
|
||||
msgid "The supplier %s must have a Bronnoysund company registry."
|
||||
msgstr ""
|
||||
|
||||
#. module: account_edi_ubl_cii
|
||||
#. odoo-python
|
||||
#: code:addons/account_edi_ubl_cii/models/account_edi_xml_ubl_bis3.py:0
|
||||
#, python-format
|
||||
msgid "The supplier %s must have a KVK or OIN number."
|
||||
msgstr ""
|
||||
|
||||
#. module: account_edi_ubl_cii
|
||||
#: model:ir.model,name:account_edi_ubl_cii.model_account_edi_xml_ubl_20
|
||||
msgid "UBL 2.0"
|
||||
msgstr ""
|
||||
|
||||
#. module: account_edi_ubl_cii
|
||||
#: model:ir.model,name:account_edi_ubl_cii.model_account_edi_xml_ubl_21
|
||||
msgid "UBL 2.1"
|
||||
msgstr ""
|
||||
|
||||
#. module: account_edi_ubl_cii
|
||||
#: model:ir.model,name:account_edi_ubl_cii.model_account_edi_xml_ubl_bis3
|
||||
msgid "UBL BIS Billing 3.0.12"
|
||||
msgstr ""
|
||||
|
||||
#. module: account_edi_ubl_cii
|
||||
#. odoo-python
|
||||
#: code:addons/account_edi_ubl_cii/models/account_edi_xml_cii_facturx.py:0
|
||||
#, python-format
|
||||
msgid ""
|
||||
"When the Canary Island General Indirect Tax (IGIC) applies, the tax rate on "
|
||||
"each invoice line should be greater than 0."
|
||||
msgstr ""
|
||||
|
||||
#. module: account_edi_ubl_cii
|
||||
#. odoo-python
|
||||
#: code:addons/account_edi_ubl_cii/models/account_edi_xml_cii_facturx.py:0
|
||||
#, python-format
|
||||
msgid ""
|
||||
"You should include at least one tax per invoice line. [BR-CO-04]-Each "
|
||||
"Invoice line (BG-25) shall be categorized with an Invoiced item VAT category"
|
||||
" code (BT-151)."
|
||||
msgstr ""
|
||||
|
||||
#. module: account_edi_ubl_cii
|
||||
#: model_terms:ir.ui.view,arch_db:account_edi_ubl_cii.account_invoice_pdfa_3_facturx_metadata
|
||||
msgid "factur-x.xml"
|
||||
msgstr ""
|
||||
|
||||
#. module: account_edi_ubl_cii
|
||||
#: model_terms:ir.ui.view,arch_db:account_edi_ubl_cii.account_invoice_line_facturx_export_22
|
||||
msgid "false"
|
||||
msgstr ""
|
||||
|
||||
#. module: account_edi_ubl_cii
|
||||
#: model_terms:ir.ui.view,arch_db:account_edi_ubl_cii.account_invoice_pdfa_3_facturx_metadata
|
||||
msgid "fx"
|
||||
msgstr ""
|
||||
|
||||
#. module: account_edi_ubl_cii
|
||||
#: model_terms:ir.ui.view,arch_db:account_edi_ubl_cii.account_invoice_pdfa_3_facturx_metadata
|
||||
msgid "urn:factur-x:pdfa:CrossIndustryDocument:invoice:1p0#"
|
||||
msgstr ""
|
||||
File diff suppressed because it is too large
Load diff
|
|
@ -1,426 +0,0 @@
|
|||
# Translation of Odoo Server.
|
||||
# This file contains the translation of the following modules:
|
||||
# * account_edi_ubl_cii
|
||||
#
|
||||
# Translators:
|
||||
# Kristófer Arnþórsson, 2024
|
||||
#
|
||||
msgid ""
|
||||
msgstr ""
|
||||
"Project-Id-Version: Odoo Server 16.0\n"
|
||||
"Report-Msgid-Bugs-To: \n"
|
||||
"POT-Creation-Date: 2025-02-10 08:26+0000\n"
|
||||
"PO-Revision-Date: 2022-09-22 05:44+0000\n"
|
||||
"Last-Translator: Kristófer Arnþórsson, 2024\n"
|
||||
"Language-Team: Icelandic (https://app.transifex.com/odoo/teams/41243/is/)\n"
|
||||
"MIME-Version: 1.0\n"
|
||||
"Content-Type: text/plain; charset=UTF-8\n"
|
||||
"Content-Transfer-Encoding: \n"
|
||||
"Language: is\n"
|
||||
"Plural-Forms: nplurals=2; plural=(n % 10 != 1 || n % 100 == 11);\n"
|
||||
|
||||
#. module: account_edi_ubl_cii
|
||||
#: model_terms:ir.ui.view,arch_db:account_edi_ubl_cii.account_invoice_pdfa_3_facturx_metadata
|
||||
msgid "1.0"
|
||||
msgstr "1.0"
|
||||
|
||||
#. module: account_edi_ubl_cii
|
||||
#: model_terms:ir.ui.view,arch_db:account_edi_ubl_cii.account_invoice_facturx_export_22
|
||||
msgid "42"
|
||||
msgstr "42"
|
||||
|
||||
#. module: account_edi_ubl_cii
|
||||
#. odoo-python
|
||||
#: code:addons/account_edi_ubl_cii/models/account_edi_common.py:0
|
||||
#, python-format
|
||||
msgid "<strong>Format used to import the invoice: %s</strong>"
|
||||
msgstr ""
|
||||
|
||||
#. module: account_edi_ubl_cii
|
||||
#. odoo-python
|
||||
#: code:addons/account_edi_ubl_cii/models/account_edi_common.py:0
|
||||
#, python-format
|
||||
msgid ""
|
||||
"<strong>Format used to import the invoice: %s</strong> <p><li> %s </li></p>"
|
||||
msgstr ""
|
||||
|
||||
#. module: account_edi_ubl_cii
|
||||
#. odoo-python
|
||||
#: code:addons/account_edi_ubl_cii/models/account_edi_common.py:0
|
||||
#, python-format
|
||||
msgid "A payment of %s was detected."
|
||||
msgstr "Greiðsla upp á %s fannst."
|
||||
|
||||
#. module: account_edi_ubl_cii
|
||||
#: model:ir.model,name:account_edi_ubl_cii.model_account_edi_xml_ubl_a_nz
|
||||
msgid "A-NZ BIS Billing 3.0"
|
||||
msgstr "A-NZ BIS Billing 3.0"
|
||||
|
||||
#. module: account_edi_ubl_cii
|
||||
#. odoo-python
|
||||
#: code:addons/account_edi_ubl_cii/models/account_edi_common.py:0
|
||||
#: code:addons/account_edi_ubl_cii/models/account_edi_common.py:0
|
||||
#, python-format
|
||||
msgid "Articles 226 items 11 to 15 Directive 2006/112/EN"
|
||||
msgstr "226. gr. 11. til 15. liður tilskipunar 2006/112/EN"
|
||||
|
||||
#. module: account_edi_ubl_cii
|
||||
#. odoo-python
|
||||
#: code:addons/account_edi_ubl_cii/models/account_edi_common.py:0
|
||||
#, python-format
|
||||
msgid "At least one of the following fields %s is required on %s."
|
||||
msgstr "Að minnsta kosti einn af eftirfarandi reitum %s er áskilinn á %s."
|
||||
|
||||
#. module: account_edi_ubl_cii
|
||||
#: model:ir.model,name:account_edi_ubl_cii.model_account_edi_xml_ubl_de
|
||||
msgid "BIS3 DE (XRechnung)"
|
||||
msgstr "BIS3 DE (XRechnung)"
|
||||
|
||||
#. module: account_edi_ubl_cii
|
||||
#: model:ir.model,name:account_edi_ubl_cii.model_account_edi_common
|
||||
msgid ""
|
||||
"Common functions for EDI documents: generate the data, the constraints, etc"
|
||||
msgstr ""
|
||||
"Algengar aðgerðir fyrir EDI skjöl: búa til gögnin, takmarkanirnar osfrv"
|
||||
|
||||
#. module: account_edi_ubl_cii
|
||||
#. odoo-python
|
||||
#: code:addons/account_edi_ubl_cii/models/account_edi_xml_ubl_20.py:0
|
||||
#: code:addons/account_edi_ubl_cii/models/account_edi_xml_ubl_20.py:0
|
||||
#, python-format
|
||||
msgid "Conditional cash/payment discount"
|
||||
msgstr "Skilyrður staðgreiðslu-/greiðsluafsláttur"
|
||||
|
||||
#. module: account_edi_ubl_cii
|
||||
#. odoo-python
|
||||
#: code:addons/account_edi_ubl_cii/models/account_edi_xml_cii_facturx.py:0
|
||||
#: code:addons/account_edi_ubl_cii/models/account_edi_xml_ubl_20.py:0
|
||||
#, python-format
|
||||
msgid ""
|
||||
"Could not retrieve currency: %s. Did you enable the multicurrency option and"
|
||||
" activate the currency ?"
|
||||
msgstr ""
|
||||
|
||||
#. module: account_edi_ubl_cii
|
||||
#. odoo-python
|
||||
#: code:addons/account_edi_ubl_cii/models/account_edi_common.py:0
|
||||
#: code:addons/account_edi_ubl_cii/models/account_edi_common.py:0
|
||||
#, python-format
|
||||
msgid "Could not retrieve the tax: %s %% for line '%s'."
|
||||
msgstr "Gat ekki sótt skattinn: %s %% fyrir línu '%s'."
|
||||
|
||||
#. module: account_edi_ubl_cii
|
||||
#. odoo-python
|
||||
#: code:addons/account_edi_ubl_cii/models/account_edi_common.py:0
|
||||
#, python-format
|
||||
msgid "Could not retrieve the unit of measure for line with label '%s'."
|
||||
msgstr "Gat ekki sótt mælieiningu fyrir línu með merkimiðanum '%s'."
|
||||
|
||||
#. module: account_edi_ubl_cii
|
||||
#. odoo-python
|
||||
#: code:addons/account_edi_ubl_cii/models/account_edi_common.py:0
|
||||
#, python-format
|
||||
msgid "Down Payment"
|
||||
msgstr ""
|
||||
|
||||
#. module: account_edi_ubl_cii
|
||||
#. odoo-python
|
||||
#: code:addons/account_edi_ubl_cii/models/account_edi_common.py:0
|
||||
#, python-format
|
||||
msgid "Down Payments"
|
||||
msgstr ""
|
||||
|
||||
#. module: account_edi_ubl_cii
|
||||
#: model:ir.model,name:account_edi_ubl_cii.model_account_edi_xml_ubl_efff
|
||||
msgid "E-FFF (BE)"
|
||||
msgstr "E-FFF (BE)"
|
||||
|
||||
#. module: account_edi_ubl_cii
|
||||
#: model:ir.model,name:account_edi_ubl_cii.model_account_edi_format
|
||||
msgid "EDI format"
|
||||
msgstr "EDI snið"
|
||||
|
||||
#. module: account_edi_ubl_cii
|
||||
#: model_terms:ir.ui.view,arch_db:account_edi_ubl_cii.account_invoice_pdfa_3_facturx_metadata
|
||||
msgid "EN 16931"
|
||||
msgstr "EN 16931"
|
||||
|
||||
#. module: account_edi_ubl_cii
|
||||
#. odoo-python
|
||||
#: code:addons/account_edi_ubl_cii/models/account_edi_xml_ubl_bis3.py:0
|
||||
#, python-format
|
||||
msgid "Each invoice line shall have one and only one tax."
|
||||
msgstr "Hver reikningslína skal hafa einn og einn skatt."
|
||||
|
||||
#. module: account_edi_ubl_cii
|
||||
#. odoo-python
|
||||
#: code:addons/account_edi_ubl_cii/models/account_edi_xml_ubl_bis3.py:0
|
||||
#, python-format
|
||||
msgid "Each invoice line should have a product or a label."
|
||||
msgstr "Hver reikningslína ætti að hafa vöru eða merkimiða."
|
||||
|
||||
#. module: account_edi_ubl_cii
|
||||
#. odoo-python
|
||||
#: code:addons/account_edi_ubl_cii/models/account_edi_common.py:0
|
||||
#, python-format
|
||||
msgid "Each invoice line should have at least one tax."
|
||||
msgstr "Hver reikningslína ætti að hafa að minnsta kosti einn skatt."
|
||||
|
||||
#. module: account_edi_ubl_cii
|
||||
#: model:ir.model,name:account_edi_ubl_cii.model_mail_template
|
||||
msgid "Email Templates"
|
||||
msgstr ""
|
||||
|
||||
#. module: account_edi_ubl_cii
|
||||
#. odoo-python
|
||||
#: code:addons/account_edi_ubl_cii/models/account_edi_format.py:0
|
||||
#, python-format
|
||||
msgid ""
|
||||
"Errors occured while creating the EDI document (format: %s). The receiver "
|
||||
"might refuse it."
|
||||
msgstr ""
|
||||
|
||||
#. module: account_edi_ubl_cii
|
||||
#. odoo-python
|
||||
#: code:addons/account_edi_ubl_cii/models/account_edi_common.py:0
|
||||
#, python-format
|
||||
msgid "Export outside the EU"
|
||||
msgstr "Útflutningur utan EU"
|
||||
|
||||
#. module: account_edi_ubl_cii
|
||||
#: model:ir.model,name:account_edi_ubl_cii.model_account_edi_xml_cii
|
||||
msgid "Factur-x/XRechnung CII 2.2.0"
|
||||
msgstr "Factur-x/XRechnung CII 2.2.0"
|
||||
|
||||
#. module: account_edi_ubl_cii
|
||||
#. odoo-python
|
||||
#: code:addons/account_edi_ubl_cii/models/account_edi_xml_ubl_bis3.py:0
|
||||
#: code:addons/account_edi_ubl_cii/models/account_edi_xml_ubl_bis3.py:0
|
||||
#, python-format
|
||||
msgid ""
|
||||
"For intracommunity supply, the actual delivery date or the invoicing period "
|
||||
"should be included."
|
||||
msgstr ""
|
||||
"Fyrir afhendingu innan samfélags ætti raunverulegur afhendingardagur eða "
|
||||
"reikningstímabilið að vera með."
|
||||
|
||||
#. module: account_edi_ubl_cii
|
||||
#. odoo-python
|
||||
#: code:addons/account_edi_ubl_cii/models/account_edi_xml_ubl_bis3.py:0
|
||||
#, python-format
|
||||
msgid "For intracommunity supply, the delivery address should be included."
|
||||
msgstr ""
|
||||
"Fyrir afhendingu innan samfélags ætti afhendingarheimilið að vera með."
|
||||
|
||||
#. module: account_edi_ubl_cii
|
||||
#. odoo-python
|
||||
#: code:addons/account_edi_ubl_cii/models/account_edi_common.py:0
|
||||
#, python-format
|
||||
msgid "Intra-Community supply"
|
||||
msgstr "Framboð innan samfélags"
|
||||
|
||||
#. module: account_edi_ubl_cii
|
||||
#: model_terms:ir.ui.view,arch_db:account_edi_ubl_cii.account_invoice_pdfa_3_facturx_metadata
|
||||
msgid "Invoice generated by Odoo"
|
||||
msgstr "Reikningur búinn til af Odoo"
|
||||
|
||||
#. module: account_edi_ubl_cii
|
||||
#. odoo-python
|
||||
#: code:addons/account_edi_ubl_cii/models/account_edi_xml_ubl_bis3.py:0
|
||||
#: code:addons/account_edi_ubl_cii/models/account_edi_xml_ubl_bis3.py:0
|
||||
#, python-format
|
||||
msgid "No Electronic Address Scheme (EAS) could be found for %s."
|
||||
msgstr ""
|
||||
|
||||
#. module: account_edi_ubl_cii
|
||||
#. odoo-python
|
||||
#: code:addons/account_edi_ubl_cii/models/account_edi_common.py:0
|
||||
#, python-format
|
||||
msgid ""
|
||||
"No gross price, net price nor line subtotal amount found for line in xml"
|
||||
msgstr ""
|
||||
"Ekkert brúttóverð, nettóverð né heildarupphæð línu fannst fyrir línu í xml"
|
||||
|
||||
#. module: account_edi_ubl_cii
|
||||
#: model_terms:ir.ui.view,arch_db:account_edi_ubl_cii.account_invoice_pdfa_3_facturx_metadata
|
||||
msgid "Odoo"
|
||||
msgstr "Odoo"
|
||||
|
||||
#. module: account_edi_ubl_cii
|
||||
#: model:ir.model,name:account_edi_ubl_cii.model_ir_actions_report
|
||||
msgid "Report Action"
|
||||
msgstr "Tilkynna aðgerð"
|
||||
|
||||
#. module: account_edi_ubl_cii
|
||||
#: model:ir.model,name:account_edi_ubl_cii.model_account_edi_xml_ubl_sg
|
||||
msgid "SG BIS Billing 3.0"
|
||||
msgstr "SG BIS Billing 3.0"
|
||||
|
||||
#. module: account_edi_ubl_cii
|
||||
#: model:ir.model,name:account_edi_ubl_cii.model_account_edi_xml_ubl_nl
|
||||
msgid "SI-UBL 2.0 (NLCIUS)"
|
||||
msgstr "SI-UBL 2.0 (NLCIUS)"
|
||||
|
||||
#. module: account_edi_ubl_cii
|
||||
#. odoo-python
|
||||
#: code:addons/account_edi_ubl_cii/models/account_edi_common.py:0
|
||||
#, python-format
|
||||
msgid "Tax '%s' is invalid: %s"
|
||||
msgstr "Skattur '%s' er ógildur: %s"
|
||||
|
||||
#. module: account_edi_ubl_cii
|
||||
#. odoo-python
|
||||
#: code:addons/account_edi_ubl_cii/models/account_edi_xml_ubl_bis3.py:0
|
||||
#, python-format
|
||||
msgid ""
|
||||
"The VAT number of the supplier does not seem to be valid. It should be of "
|
||||
"the form: NO179728982MVA."
|
||||
msgstr ""
|
||||
"Virðisaukaskattsnúmer birgis virðist ekki vera gilt. Það ætti að vera á "
|
||||
"formi: NO179728982MVA."
|
||||
|
||||
#. module: account_edi_ubl_cii
|
||||
#. odoo-python
|
||||
#: code:addons/account_edi_ubl_cii/models/account_edi_xml_ubl_bis3.py:0
|
||||
#, python-format
|
||||
msgid "The VAT of the %s should be prefixed with its country code."
|
||||
msgstr "VSK á %s ætti að vera með landskóða þess."
|
||||
|
||||
#. module: account_edi_ubl_cii
|
||||
#. odoo-python
|
||||
#: code:addons/account_edi_ubl_cii/models/account_edi_xml_ubl_bis3.py:0
|
||||
#, python-format
|
||||
msgid "The country is required for the %s."
|
||||
msgstr ""
|
||||
|
||||
#. module: account_edi_ubl_cii
|
||||
#. odoo-python
|
||||
#: code:addons/account_edi_ubl_cii/models/account_edi_xml_cii_facturx.py:0
|
||||
#: code:addons/account_edi_ubl_cii/models/account_edi_xml_ubl_20.py:0
|
||||
#, python-format
|
||||
msgid "The currency '%s' is not active."
|
||||
msgstr "Gjaldmiðillinn '%s' er ekki virkur."
|
||||
|
||||
#. module: account_edi_ubl_cii
|
||||
#. odoo-python
|
||||
#: code:addons/account_edi_ubl_cii/models/account_edi_xml_ubl_bis3.py:0
|
||||
#, python-format
|
||||
msgid "The customer %s must have a Bronnoysund company registry."
|
||||
msgstr ""
|
||||
|
||||
#. module: account_edi_ubl_cii
|
||||
#. odoo-python
|
||||
#: code:addons/account_edi_ubl_cii/models/account_edi_xml_ubl_bis3.py:0
|
||||
#, python-format
|
||||
msgid "The customer %s must have a KVK or OIN number."
|
||||
msgstr ""
|
||||
|
||||
#. module: account_edi_ubl_cii
|
||||
#. odoo-python
|
||||
#: code:addons/account_edi_ubl_cii/models/account_edi_common.py:0
|
||||
#: code:addons/account_edi_ubl_cii/models/account_edi_common.py:0
|
||||
#, python-format
|
||||
msgid "The element %s is required on %s."
|
||||
msgstr "Einingin %s er nauðsynleg á %s."
|
||||
|
||||
#. module: account_edi_ubl_cii
|
||||
#. odoo-python
|
||||
#: code:addons/account_edi_ubl_cii/models/account_edi_common.py:0
|
||||
#, python-format
|
||||
msgid "The field %s is required on %s."
|
||||
msgstr "Reiturinn %s er nauðsynlegur á %s."
|
||||
|
||||
#. module: account_edi_ubl_cii
|
||||
#. odoo-python
|
||||
#: code:addons/account_edi_ubl_cii/models/account_edi_xml_cii_facturx.py:0
|
||||
#, python-format
|
||||
msgid ""
|
||||
"The field 'Sanitized Account Number' is required on the Recipient Bank."
|
||||
msgstr "Reiturinn 'Hreinsað reikningsnúmer' er áskilinn á viðtakandabankanum."
|
||||
|
||||
#. module: account_edi_ubl_cii
|
||||
#. odoo-python
|
||||
#: code:addons/account_edi_ubl_cii/models/account_edi_xml_cii_facturx.py:0
|
||||
#: code:addons/account_edi_ubl_cii/models/account_edi_xml_ubl_20.py:0
|
||||
#, python-format
|
||||
msgid ""
|
||||
"The invoice has been converted into a credit note and the quantities have "
|
||||
"been reverted."
|
||||
msgstr "Reikningnum hefur verið breytt í kreditnótu og magnið afturkallað."
|
||||
|
||||
#. module: account_edi_ubl_cii
|
||||
#. odoo-python
|
||||
#: code:addons/account_edi_ubl_cii/models/account_edi_format.py:0
|
||||
#, python-format
|
||||
msgid ""
|
||||
"The journal in which to upload should either be a sale or a purchase "
|
||||
"journal."
|
||||
msgstr ""
|
||||
|
||||
#. module: account_edi_ubl_cii
|
||||
#. odoo-python
|
||||
#: code:addons/account_edi_ubl_cii/models/account_edi_xml_ubl_bis3.py:0
|
||||
#, python-format
|
||||
msgid "The supplier %s must have a Bronnoysund company registry."
|
||||
msgstr "Birgir %s verður að hafa Bronnoysund fyrirtækjaskrá."
|
||||
|
||||
#. module: account_edi_ubl_cii
|
||||
#. odoo-python
|
||||
#: code:addons/account_edi_ubl_cii/models/account_edi_xml_ubl_bis3.py:0
|
||||
#, python-format
|
||||
msgid "The supplier %s must have a KVK or OIN number."
|
||||
msgstr ""
|
||||
|
||||
#. module: account_edi_ubl_cii
|
||||
#: model:ir.model,name:account_edi_ubl_cii.model_account_edi_xml_ubl_20
|
||||
msgid "UBL 2.0"
|
||||
msgstr "UBL 2.0"
|
||||
|
||||
#. module: account_edi_ubl_cii
|
||||
#: model:ir.model,name:account_edi_ubl_cii.model_account_edi_xml_ubl_21
|
||||
msgid "UBL 2.1"
|
||||
msgstr "UBL 2.1"
|
||||
|
||||
#. module: account_edi_ubl_cii
|
||||
#: model:ir.model,name:account_edi_ubl_cii.model_account_edi_xml_ubl_bis3
|
||||
msgid "UBL BIS Billing 3.0.12"
|
||||
msgstr "UBL BIS innheimta 3.0.12"
|
||||
|
||||
#. module: account_edi_ubl_cii
|
||||
#. odoo-python
|
||||
#: code:addons/account_edi_ubl_cii/models/account_edi_xml_cii_facturx.py:0
|
||||
#, python-format
|
||||
msgid ""
|
||||
"When the Canary Island General Indirect Tax (IGIC) applies, the tax rate on "
|
||||
"each invoice line should be greater than 0."
|
||||
msgstr ""
|
||||
"Þegar almennur óbeinn skattur á Kanaríeyjum (IGIC) á við ætti "
|
||||
"skatthlutfallið á hverri reikningslínu að vera hærra en 0."
|
||||
|
||||
#. module: account_edi_ubl_cii
|
||||
#. odoo-python
|
||||
#: code:addons/account_edi_ubl_cii/models/account_edi_xml_cii_facturx.py:0
|
||||
#, python-format
|
||||
msgid ""
|
||||
"You should include at least one tax per invoice line. [BR-CO-04]-Each "
|
||||
"Invoice line (BG-25) shall be categorized with an Invoiced item VAT category"
|
||||
" code (BT-151)."
|
||||
msgstr ""
|
||||
"Þú ættir að velja að minnsta kosti einn skatt á hverja reikningslínu. [BR-"
|
||||
"CO-04]-Hver reikningslína (BG-25) skal flokkuð með VSK flokkanúmeri "
|
||||
"reikningsfærðra hluta (BT-151)."
|
||||
|
||||
#. module: account_edi_ubl_cii
|
||||
#: model_terms:ir.ui.view,arch_db:account_edi_ubl_cii.account_invoice_pdfa_3_facturx_metadata
|
||||
msgid "factur-x.xml"
|
||||
msgstr "factur-x.xml"
|
||||
|
||||
#. module: account_edi_ubl_cii
|
||||
#: model_terms:ir.ui.view,arch_db:account_edi_ubl_cii.account_invoice_pdfa_3_facturx_metadata
|
||||
msgid "fx"
|
||||
msgstr "fx"
|
||||
|
||||
#. module: account_edi_ubl_cii
|
||||
#: model_terms:ir.ui.view,arch_db:account_edi_ubl_cii.account_invoice_pdfa_3_facturx_metadata
|
||||
msgid "urn:factur-x:pdfa:CrossIndustryDocument:invoice:1p0#"
|
||||
msgstr "urn:factur-x:pdfa:CrossIndustryDocument:invoice:1p0#"
|
||||
File diff suppressed because it is too large
Load diff
File diff suppressed because it is too large
Load diff
File diff suppressed because it is too large
Load diff
|
|
@ -1,414 +0,0 @@
|
|||
# Translation of Odoo Server.
|
||||
# This file contains the translation of the following modules:
|
||||
# * account_edi_ubl_cii
|
||||
#
|
||||
# Translators:
|
||||
# Lux Sok <sok.lux@gmail.com>, 2023
|
||||
#
|
||||
msgid ""
|
||||
msgstr ""
|
||||
"Project-Id-Version: Odoo Server 16.0\n"
|
||||
"Report-Msgid-Bugs-To: \n"
|
||||
"POT-Creation-Date: 2025-02-10 08:26+0000\n"
|
||||
"PO-Revision-Date: 2022-09-22 05:44+0000\n"
|
||||
"Last-Translator: Lux Sok <sok.lux@gmail.com>, 2023\n"
|
||||
"Language-Team: Khmer (https://app.transifex.com/odoo/teams/41243/km/)\n"
|
||||
"MIME-Version: 1.0\n"
|
||||
"Content-Type: text/plain; charset=UTF-8\n"
|
||||
"Content-Transfer-Encoding: \n"
|
||||
"Language: km\n"
|
||||
"Plural-Forms: nplurals=1; plural=0;\n"
|
||||
|
||||
#. module: account_edi_ubl_cii
|
||||
#: model_terms:ir.ui.view,arch_db:account_edi_ubl_cii.account_invoice_pdfa_3_facturx_metadata
|
||||
msgid "1.0"
|
||||
msgstr ""
|
||||
|
||||
#. module: account_edi_ubl_cii
|
||||
#: model_terms:ir.ui.view,arch_db:account_edi_ubl_cii.account_invoice_facturx_export_22
|
||||
msgid "42"
|
||||
msgstr ""
|
||||
|
||||
#. module: account_edi_ubl_cii
|
||||
#. odoo-python
|
||||
#: code:addons/account_edi_ubl_cii/models/account_edi_common.py:0
|
||||
#, python-format
|
||||
msgid "<strong>Format used to import the invoice: %s</strong>"
|
||||
msgstr ""
|
||||
|
||||
#. module: account_edi_ubl_cii
|
||||
#. odoo-python
|
||||
#: code:addons/account_edi_ubl_cii/models/account_edi_common.py:0
|
||||
#, python-format
|
||||
msgid ""
|
||||
"<strong>Format used to import the invoice: %s</strong> <p><li> %s </li></p>"
|
||||
msgstr ""
|
||||
|
||||
#. module: account_edi_ubl_cii
|
||||
#. odoo-python
|
||||
#: code:addons/account_edi_ubl_cii/models/account_edi_common.py:0
|
||||
#, python-format
|
||||
msgid "A payment of %s was detected."
|
||||
msgstr ""
|
||||
|
||||
#. module: account_edi_ubl_cii
|
||||
#: model:ir.model,name:account_edi_ubl_cii.model_account_edi_xml_ubl_a_nz
|
||||
msgid "A-NZ BIS Billing 3.0"
|
||||
msgstr ""
|
||||
|
||||
#. module: account_edi_ubl_cii
|
||||
#. odoo-python
|
||||
#: code:addons/account_edi_ubl_cii/models/account_edi_common.py:0
|
||||
#: code:addons/account_edi_ubl_cii/models/account_edi_common.py:0
|
||||
#, python-format
|
||||
msgid "Articles 226 items 11 to 15 Directive 2006/112/EN"
|
||||
msgstr ""
|
||||
|
||||
#. module: account_edi_ubl_cii
|
||||
#. odoo-python
|
||||
#: code:addons/account_edi_ubl_cii/models/account_edi_common.py:0
|
||||
#, python-format
|
||||
msgid "At least one of the following fields %s is required on %s."
|
||||
msgstr ""
|
||||
|
||||
#. module: account_edi_ubl_cii
|
||||
#: model:ir.model,name:account_edi_ubl_cii.model_account_edi_xml_ubl_de
|
||||
msgid "BIS3 DE (XRechnung)"
|
||||
msgstr ""
|
||||
|
||||
#. module: account_edi_ubl_cii
|
||||
#: model:ir.model,name:account_edi_ubl_cii.model_account_edi_common
|
||||
msgid ""
|
||||
"Common functions for EDI documents: generate the data, the constraints, etc"
|
||||
msgstr ""
|
||||
|
||||
#. module: account_edi_ubl_cii
|
||||
#. odoo-python
|
||||
#: code:addons/account_edi_ubl_cii/models/account_edi_xml_ubl_20.py:0
|
||||
#: code:addons/account_edi_ubl_cii/models/account_edi_xml_ubl_20.py:0
|
||||
#, python-format
|
||||
msgid "Conditional cash/payment discount"
|
||||
msgstr ""
|
||||
|
||||
#. module: account_edi_ubl_cii
|
||||
#. odoo-python
|
||||
#: code:addons/account_edi_ubl_cii/models/account_edi_xml_cii_facturx.py:0
|
||||
#: code:addons/account_edi_ubl_cii/models/account_edi_xml_ubl_20.py:0
|
||||
#, python-format
|
||||
msgid ""
|
||||
"Could not retrieve currency: %s. Did you enable the multicurrency option and"
|
||||
" activate the currency ?"
|
||||
msgstr ""
|
||||
|
||||
#. module: account_edi_ubl_cii
|
||||
#. odoo-python
|
||||
#: code:addons/account_edi_ubl_cii/models/account_edi_common.py:0
|
||||
#: code:addons/account_edi_ubl_cii/models/account_edi_common.py:0
|
||||
#, python-format
|
||||
msgid "Could not retrieve the tax: %s %% for line '%s'."
|
||||
msgstr ""
|
||||
|
||||
#. module: account_edi_ubl_cii
|
||||
#. odoo-python
|
||||
#: code:addons/account_edi_ubl_cii/models/account_edi_common.py:0
|
||||
#, python-format
|
||||
msgid "Could not retrieve the unit of measure for line with label '%s'."
|
||||
msgstr ""
|
||||
|
||||
#. module: account_edi_ubl_cii
|
||||
#. odoo-python
|
||||
#: code:addons/account_edi_ubl_cii/models/account_edi_common.py:0
|
||||
#, python-format
|
||||
msgid "Down Payment"
|
||||
msgstr "លុយកក់"
|
||||
|
||||
#. module: account_edi_ubl_cii
|
||||
#. odoo-python
|
||||
#: code:addons/account_edi_ubl_cii/models/account_edi_common.py:0
|
||||
#, python-format
|
||||
msgid "Down Payments"
|
||||
msgstr ""
|
||||
|
||||
#. module: account_edi_ubl_cii
|
||||
#: model:ir.model,name:account_edi_ubl_cii.model_account_edi_xml_ubl_efff
|
||||
msgid "E-FFF (BE)"
|
||||
msgstr ""
|
||||
|
||||
#. module: account_edi_ubl_cii
|
||||
#: model:ir.model,name:account_edi_ubl_cii.model_account_edi_format
|
||||
msgid "EDI format"
|
||||
msgstr ""
|
||||
|
||||
#. module: account_edi_ubl_cii
|
||||
#: model_terms:ir.ui.view,arch_db:account_edi_ubl_cii.account_invoice_pdfa_3_facturx_metadata
|
||||
msgid "EN 16931"
|
||||
msgstr ""
|
||||
|
||||
#. module: account_edi_ubl_cii
|
||||
#. odoo-python
|
||||
#: code:addons/account_edi_ubl_cii/models/account_edi_xml_ubl_bis3.py:0
|
||||
#, python-format
|
||||
msgid "Each invoice line shall have one and only one tax."
|
||||
msgstr ""
|
||||
|
||||
#. module: account_edi_ubl_cii
|
||||
#. odoo-python
|
||||
#: code:addons/account_edi_ubl_cii/models/account_edi_xml_ubl_bis3.py:0
|
||||
#, python-format
|
||||
msgid "Each invoice line should have a product or a label."
|
||||
msgstr ""
|
||||
|
||||
#. module: account_edi_ubl_cii
|
||||
#. odoo-python
|
||||
#: code:addons/account_edi_ubl_cii/models/account_edi_common.py:0
|
||||
#, python-format
|
||||
msgid "Each invoice line should have at least one tax."
|
||||
msgstr ""
|
||||
|
||||
#. module: account_edi_ubl_cii
|
||||
#: model:ir.model,name:account_edi_ubl_cii.model_mail_template
|
||||
msgid "Email Templates"
|
||||
msgstr "គំរូសារអេឡិចត្រូនិច"
|
||||
|
||||
#. module: account_edi_ubl_cii
|
||||
#. odoo-python
|
||||
#: code:addons/account_edi_ubl_cii/models/account_edi_format.py:0
|
||||
#, python-format
|
||||
msgid ""
|
||||
"Errors occured while creating the EDI document (format: %s). The receiver "
|
||||
"might refuse it."
|
||||
msgstr ""
|
||||
|
||||
#. module: account_edi_ubl_cii
|
||||
#. odoo-python
|
||||
#: code:addons/account_edi_ubl_cii/models/account_edi_common.py:0
|
||||
#, python-format
|
||||
msgid "Export outside the EU"
|
||||
msgstr ""
|
||||
|
||||
#. module: account_edi_ubl_cii
|
||||
#: model:ir.model,name:account_edi_ubl_cii.model_account_edi_xml_cii
|
||||
msgid "Factur-x/XRechnung CII 2.2.0"
|
||||
msgstr ""
|
||||
|
||||
#. module: account_edi_ubl_cii
|
||||
#. odoo-python
|
||||
#: code:addons/account_edi_ubl_cii/models/account_edi_xml_ubl_bis3.py:0
|
||||
#: code:addons/account_edi_ubl_cii/models/account_edi_xml_ubl_bis3.py:0
|
||||
#, python-format
|
||||
msgid ""
|
||||
"For intracommunity supply, the actual delivery date or the invoicing period "
|
||||
"should be included."
|
||||
msgstr ""
|
||||
|
||||
#. module: account_edi_ubl_cii
|
||||
#. odoo-python
|
||||
#: code:addons/account_edi_ubl_cii/models/account_edi_xml_ubl_bis3.py:0
|
||||
#, python-format
|
||||
msgid "For intracommunity supply, the delivery address should be included."
|
||||
msgstr ""
|
||||
|
||||
#. module: account_edi_ubl_cii
|
||||
#. odoo-python
|
||||
#: code:addons/account_edi_ubl_cii/models/account_edi_common.py:0
|
||||
#, python-format
|
||||
msgid "Intra-Community supply"
|
||||
msgstr ""
|
||||
|
||||
#. module: account_edi_ubl_cii
|
||||
#: model_terms:ir.ui.view,arch_db:account_edi_ubl_cii.account_invoice_pdfa_3_facturx_metadata
|
||||
msgid "Invoice generated by Odoo"
|
||||
msgstr ""
|
||||
|
||||
#. module: account_edi_ubl_cii
|
||||
#. odoo-python
|
||||
#: code:addons/account_edi_ubl_cii/models/account_edi_xml_ubl_bis3.py:0
|
||||
#: code:addons/account_edi_ubl_cii/models/account_edi_xml_ubl_bis3.py:0
|
||||
#, python-format
|
||||
msgid "No Electronic Address Scheme (EAS) could be found for %s."
|
||||
msgstr ""
|
||||
|
||||
#. module: account_edi_ubl_cii
|
||||
#. odoo-python
|
||||
#: code:addons/account_edi_ubl_cii/models/account_edi_common.py:0
|
||||
#, python-format
|
||||
msgid ""
|
||||
"No gross price, net price nor line subtotal amount found for line in xml"
|
||||
msgstr ""
|
||||
|
||||
#. module: account_edi_ubl_cii
|
||||
#: model_terms:ir.ui.view,arch_db:account_edi_ubl_cii.account_invoice_pdfa_3_facturx_metadata
|
||||
msgid "Odoo"
|
||||
msgstr "Odoo"
|
||||
|
||||
#. module: account_edi_ubl_cii
|
||||
#: model:ir.model,name:account_edi_ubl_cii.model_ir_actions_report
|
||||
msgid "Report Action"
|
||||
msgstr "ឯកសារសកម្មភាព"
|
||||
|
||||
#. module: account_edi_ubl_cii
|
||||
#: model:ir.model,name:account_edi_ubl_cii.model_account_edi_xml_ubl_sg
|
||||
msgid "SG BIS Billing 3.0"
|
||||
msgstr ""
|
||||
|
||||
#. module: account_edi_ubl_cii
|
||||
#: model:ir.model,name:account_edi_ubl_cii.model_account_edi_xml_ubl_nl
|
||||
msgid "SI-UBL 2.0 (NLCIUS)"
|
||||
msgstr ""
|
||||
|
||||
#. module: account_edi_ubl_cii
|
||||
#. odoo-python
|
||||
#: code:addons/account_edi_ubl_cii/models/account_edi_common.py:0
|
||||
#, python-format
|
||||
msgid "Tax '%s' is invalid: %s"
|
||||
msgstr ""
|
||||
|
||||
#. module: account_edi_ubl_cii
|
||||
#. odoo-python
|
||||
#: code:addons/account_edi_ubl_cii/models/account_edi_xml_ubl_bis3.py:0
|
||||
#, python-format
|
||||
msgid ""
|
||||
"The VAT number of the supplier does not seem to be valid. It should be of "
|
||||
"the form: NO179728982MVA."
|
||||
msgstr ""
|
||||
|
||||
#. module: account_edi_ubl_cii
|
||||
#. odoo-python
|
||||
#: code:addons/account_edi_ubl_cii/models/account_edi_xml_ubl_bis3.py:0
|
||||
#, python-format
|
||||
msgid "The VAT of the %s should be prefixed with its country code."
|
||||
msgstr ""
|
||||
|
||||
#. module: account_edi_ubl_cii
|
||||
#. odoo-python
|
||||
#: code:addons/account_edi_ubl_cii/models/account_edi_xml_ubl_bis3.py:0
|
||||
#, python-format
|
||||
msgid "The country is required for the %s."
|
||||
msgstr ""
|
||||
|
||||
#. module: account_edi_ubl_cii
|
||||
#. odoo-python
|
||||
#: code:addons/account_edi_ubl_cii/models/account_edi_xml_cii_facturx.py:0
|
||||
#: code:addons/account_edi_ubl_cii/models/account_edi_xml_ubl_20.py:0
|
||||
#, python-format
|
||||
msgid "The currency '%s' is not active."
|
||||
msgstr ""
|
||||
|
||||
#. module: account_edi_ubl_cii
|
||||
#. odoo-python
|
||||
#: code:addons/account_edi_ubl_cii/models/account_edi_xml_ubl_bis3.py:0
|
||||
#, python-format
|
||||
msgid "The customer %s must have a Bronnoysund company registry."
|
||||
msgstr ""
|
||||
|
||||
#. module: account_edi_ubl_cii
|
||||
#. odoo-python
|
||||
#: code:addons/account_edi_ubl_cii/models/account_edi_xml_ubl_bis3.py:0
|
||||
#, python-format
|
||||
msgid "The customer %s must have a KVK or OIN number."
|
||||
msgstr ""
|
||||
|
||||
#. module: account_edi_ubl_cii
|
||||
#. odoo-python
|
||||
#: code:addons/account_edi_ubl_cii/models/account_edi_common.py:0
|
||||
#: code:addons/account_edi_ubl_cii/models/account_edi_common.py:0
|
||||
#, python-format
|
||||
msgid "The element %s is required on %s."
|
||||
msgstr ""
|
||||
|
||||
#. module: account_edi_ubl_cii
|
||||
#. odoo-python
|
||||
#: code:addons/account_edi_ubl_cii/models/account_edi_common.py:0
|
||||
#, python-format
|
||||
msgid "The field %s is required on %s."
|
||||
msgstr ""
|
||||
|
||||
#. module: account_edi_ubl_cii
|
||||
#. odoo-python
|
||||
#: code:addons/account_edi_ubl_cii/models/account_edi_xml_cii_facturx.py:0
|
||||
#, python-format
|
||||
msgid ""
|
||||
"The field 'Sanitized Account Number' is required on the Recipient Bank."
|
||||
msgstr ""
|
||||
|
||||
#. module: account_edi_ubl_cii
|
||||
#. odoo-python
|
||||
#: code:addons/account_edi_ubl_cii/models/account_edi_xml_cii_facturx.py:0
|
||||
#: code:addons/account_edi_ubl_cii/models/account_edi_xml_ubl_20.py:0
|
||||
#, python-format
|
||||
msgid ""
|
||||
"The invoice has been converted into a credit note and the quantities have "
|
||||
"been reverted."
|
||||
msgstr ""
|
||||
|
||||
#. module: account_edi_ubl_cii
|
||||
#. odoo-python
|
||||
#: code:addons/account_edi_ubl_cii/models/account_edi_format.py:0
|
||||
#, python-format
|
||||
msgid ""
|
||||
"The journal in which to upload should either be a sale or a purchase "
|
||||
"journal."
|
||||
msgstr ""
|
||||
|
||||
#. module: account_edi_ubl_cii
|
||||
#. odoo-python
|
||||
#: code:addons/account_edi_ubl_cii/models/account_edi_xml_ubl_bis3.py:0
|
||||
#, python-format
|
||||
msgid "The supplier %s must have a Bronnoysund company registry."
|
||||
msgstr ""
|
||||
|
||||
#. module: account_edi_ubl_cii
|
||||
#. odoo-python
|
||||
#: code:addons/account_edi_ubl_cii/models/account_edi_xml_ubl_bis3.py:0
|
||||
#, python-format
|
||||
msgid "The supplier %s must have a KVK or OIN number."
|
||||
msgstr ""
|
||||
|
||||
#. module: account_edi_ubl_cii
|
||||
#: model:ir.model,name:account_edi_ubl_cii.model_account_edi_xml_ubl_20
|
||||
msgid "UBL 2.0"
|
||||
msgstr ""
|
||||
|
||||
#. module: account_edi_ubl_cii
|
||||
#: model:ir.model,name:account_edi_ubl_cii.model_account_edi_xml_ubl_21
|
||||
msgid "UBL 2.1"
|
||||
msgstr ""
|
||||
|
||||
#. module: account_edi_ubl_cii
|
||||
#: model:ir.model,name:account_edi_ubl_cii.model_account_edi_xml_ubl_bis3
|
||||
msgid "UBL BIS Billing 3.0.12"
|
||||
msgstr ""
|
||||
|
||||
#. module: account_edi_ubl_cii
|
||||
#. odoo-python
|
||||
#: code:addons/account_edi_ubl_cii/models/account_edi_xml_cii_facturx.py:0
|
||||
#, python-format
|
||||
msgid ""
|
||||
"When the Canary Island General Indirect Tax (IGIC) applies, the tax rate on "
|
||||
"each invoice line should be greater than 0."
|
||||
msgstr ""
|
||||
|
||||
#. module: account_edi_ubl_cii
|
||||
#. odoo-python
|
||||
#: code:addons/account_edi_ubl_cii/models/account_edi_xml_cii_facturx.py:0
|
||||
#, python-format
|
||||
msgid ""
|
||||
"You should include at least one tax per invoice line. [BR-CO-04]-Each "
|
||||
"Invoice line (BG-25) shall be categorized with an Invoiced item VAT category"
|
||||
" code (BT-151)."
|
||||
msgstr ""
|
||||
|
||||
#. module: account_edi_ubl_cii
|
||||
#: model_terms:ir.ui.view,arch_db:account_edi_ubl_cii.account_invoice_pdfa_3_facturx_metadata
|
||||
msgid "factur-x.xml"
|
||||
msgstr ""
|
||||
|
||||
#. module: account_edi_ubl_cii
|
||||
#: model_terms:ir.ui.view,arch_db:account_edi_ubl_cii.account_invoice_pdfa_3_facturx_metadata
|
||||
msgid "fx"
|
||||
msgstr ""
|
||||
|
||||
#. module: account_edi_ubl_cii
|
||||
#: model_terms:ir.ui.view,arch_db:account_edi_ubl_cii.account_invoice_pdfa_3_facturx_metadata
|
||||
msgid "urn:factur-x:pdfa:CrossIndustryDocument:invoice:1p0#"
|
||||
msgstr ""
|
||||
File diff suppressed because it is too large
Load diff
File diff suppressed because it is too large
Load diff
|
|
@ -1,414 +0,0 @@
|
|||
# Translation of Odoo Server.
|
||||
# This file contains the translation of the following modules:
|
||||
# * account_edi_ubl_cii
|
||||
#
|
||||
# Translators:
|
||||
# sackda chanthasombath, 2023
|
||||
#
|
||||
msgid ""
|
||||
msgstr ""
|
||||
"Project-Id-Version: Odoo Server 16.0\n"
|
||||
"Report-Msgid-Bugs-To: \n"
|
||||
"POT-Creation-Date: 2025-02-10 08:26+0000\n"
|
||||
"PO-Revision-Date: 2022-09-22 05:44+0000\n"
|
||||
"Last-Translator: sackda chanthasombath, 2023\n"
|
||||
"Language-Team: Lao (https://app.transifex.com/odoo/teams/41243/lo/)\n"
|
||||
"MIME-Version: 1.0\n"
|
||||
"Content-Type: text/plain; charset=UTF-8\n"
|
||||
"Content-Transfer-Encoding: \n"
|
||||
"Language: lo\n"
|
||||
"Plural-Forms: nplurals=1; plural=0;\n"
|
||||
|
||||
#. module: account_edi_ubl_cii
|
||||
#: model_terms:ir.ui.view,arch_db:account_edi_ubl_cii.account_invoice_pdfa_3_facturx_metadata
|
||||
msgid "1.0"
|
||||
msgstr ""
|
||||
|
||||
#. module: account_edi_ubl_cii
|
||||
#: model_terms:ir.ui.view,arch_db:account_edi_ubl_cii.account_invoice_facturx_export_22
|
||||
msgid "42"
|
||||
msgstr ""
|
||||
|
||||
#. module: account_edi_ubl_cii
|
||||
#. odoo-python
|
||||
#: code:addons/account_edi_ubl_cii/models/account_edi_common.py:0
|
||||
#, python-format
|
||||
msgid "<strong>Format used to import the invoice: %s</strong>"
|
||||
msgstr ""
|
||||
|
||||
#. module: account_edi_ubl_cii
|
||||
#. odoo-python
|
||||
#: code:addons/account_edi_ubl_cii/models/account_edi_common.py:0
|
||||
#, python-format
|
||||
msgid ""
|
||||
"<strong>Format used to import the invoice: %s</strong> <p><li> %s </li></p>"
|
||||
msgstr ""
|
||||
|
||||
#. module: account_edi_ubl_cii
|
||||
#. odoo-python
|
||||
#: code:addons/account_edi_ubl_cii/models/account_edi_common.py:0
|
||||
#, python-format
|
||||
msgid "A payment of %s was detected."
|
||||
msgstr ""
|
||||
|
||||
#. module: account_edi_ubl_cii
|
||||
#: model:ir.model,name:account_edi_ubl_cii.model_account_edi_xml_ubl_a_nz
|
||||
msgid "A-NZ BIS Billing 3.0"
|
||||
msgstr ""
|
||||
|
||||
#. module: account_edi_ubl_cii
|
||||
#. odoo-python
|
||||
#: code:addons/account_edi_ubl_cii/models/account_edi_common.py:0
|
||||
#: code:addons/account_edi_ubl_cii/models/account_edi_common.py:0
|
||||
#, python-format
|
||||
msgid "Articles 226 items 11 to 15 Directive 2006/112/EN"
|
||||
msgstr ""
|
||||
|
||||
#. module: account_edi_ubl_cii
|
||||
#. odoo-python
|
||||
#: code:addons/account_edi_ubl_cii/models/account_edi_common.py:0
|
||||
#, python-format
|
||||
msgid "At least one of the following fields %s is required on %s."
|
||||
msgstr ""
|
||||
|
||||
#. module: account_edi_ubl_cii
|
||||
#: model:ir.model,name:account_edi_ubl_cii.model_account_edi_xml_ubl_de
|
||||
msgid "BIS3 DE (XRechnung)"
|
||||
msgstr ""
|
||||
|
||||
#. module: account_edi_ubl_cii
|
||||
#: model:ir.model,name:account_edi_ubl_cii.model_account_edi_common
|
||||
msgid ""
|
||||
"Common functions for EDI documents: generate the data, the constraints, etc"
|
||||
msgstr ""
|
||||
|
||||
#. module: account_edi_ubl_cii
|
||||
#. odoo-python
|
||||
#: code:addons/account_edi_ubl_cii/models/account_edi_xml_ubl_20.py:0
|
||||
#: code:addons/account_edi_ubl_cii/models/account_edi_xml_ubl_20.py:0
|
||||
#, python-format
|
||||
msgid "Conditional cash/payment discount"
|
||||
msgstr ""
|
||||
|
||||
#. module: account_edi_ubl_cii
|
||||
#. odoo-python
|
||||
#: code:addons/account_edi_ubl_cii/models/account_edi_xml_cii_facturx.py:0
|
||||
#: code:addons/account_edi_ubl_cii/models/account_edi_xml_ubl_20.py:0
|
||||
#, python-format
|
||||
msgid ""
|
||||
"Could not retrieve currency: %s. Did you enable the multicurrency option and"
|
||||
" activate the currency ?"
|
||||
msgstr ""
|
||||
|
||||
#. module: account_edi_ubl_cii
|
||||
#. odoo-python
|
||||
#: code:addons/account_edi_ubl_cii/models/account_edi_common.py:0
|
||||
#: code:addons/account_edi_ubl_cii/models/account_edi_common.py:0
|
||||
#, python-format
|
||||
msgid "Could not retrieve the tax: %s %% for line '%s'."
|
||||
msgstr ""
|
||||
|
||||
#. module: account_edi_ubl_cii
|
||||
#. odoo-python
|
||||
#: code:addons/account_edi_ubl_cii/models/account_edi_common.py:0
|
||||
#, python-format
|
||||
msgid "Could not retrieve the unit of measure for line with label '%s'."
|
||||
msgstr ""
|
||||
|
||||
#. module: account_edi_ubl_cii
|
||||
#. odoo-python
|
||||
#: code:addons/account_edi_ubl_cii/models/account_edi_common.py:0
|
||||
#, python-format
|
||||
msgid "Down Payment"
|
||||
msgstr ""
|
||||
|
||||
#. module: account_edi_ubl_cii
|
||||
#. odoo-python
|
||||
#: code:addons/account_edi_ubl_cii/models/account_edi_common.py:0
|
||||
#, python-format
|
||||
msgid "Down Payments"
|
||||
msgstr ""
|
||||
|
||||
#. module: account_edi_ubl_cii
|
||||
#: model:ir.model,name:account_edi_ubl_cii.model_account_edi_xml_ubl_efff
|
||||
msgid "E-FFF (BE)"
|
||||
msgstr ""
|
||||
|
||||
#. module: account_edi_ubl_cii
|
||||
#: model:ir.model,name:account_edi_ubl_cii.model_account_edi_format
|
||||
msgid "EDI format"
|
||||
msgstr "ຮູບແບບ ອີດີໄອ"
|
||||
|
||||
#. module: account_edi_ubl_cii
|
||||
#: model_terms:ir.ui.view,arch_db:account_edi_ubl_cii.account_invoice_pdfa_3_facturx_metadata
|
||||
msgid "EN 16931"
|
||||
msgstr "ອີເອັນ 16931"
|
||||
|
||||
#. module: account_edi_ubl_cii
|
||||
#. odoo-python
|
||||
#: code:addons/account_edi_ubl_cii/models/account_edi_xml_ubl_bis3.py:0
|
||||
#, python-format
|
||||
msgid "Each invoice line shall have one and only one tax."
|
||||
msgstr ""
|
||||
|
||||
#. module: account_edi_ubl_cii
|
||||
#. odoo-python
|
||||
#: code:addons/account_edi_ubl_cii/models/account_edi_xml_ubl_bis3.py:0
|
||||
#, python-format
|
||||
msgid "Each invoice line should have a product or a label."
|
||||
msgstr ""
|
||||
|
||||
#. module: account_edi_ubl_cii
|
||||
#. odoo-python
|
||||
#: code:addons/account_edi_ubl_cii/models/account_edi_common.py:0
|
||||
#, python-format
|
||||
msgid "Each invoice line should have at least one tax."
|
||||
msgstr ""
|
||||
|
||||
#. module: account_edi_ubl_cii
|
||||
#: model:ir.model,name:account_edi_ubl_cii.model_mail_template
|
||||
msgid "Email Templates"
|
||||
msgstr ""
|
||||
|
||||
#. module: account_edi_ubl_cii
|
||||
#. odoo-python
|
||||
#: code:addons/account_edi_ubl_cii/models/account_edi_format.py:0
|
||||
#, python-format
|
||||
msgid ""
|
||||
"Errors occured while creating the EDI document (format: %s). The receiver "
|
||||
"might refuse it."
|
||||
msgstr ""
|
||||
|
||||
#. module: account_edi_ubl_cii
|
||||
#. odoo-python
|
||||
#: code:addons/account_edi_ubl_cii/models/account_edi_common.py:0
|
||||
#, python-format
|
||||
msgid "Export outside the EU"
|
||||
msgstr ""
|
||||
|
||||
#. module: account_edi_ubl_cii
|
||||
#: model:ir.model,name:account_edi_ubl_cii.model_account_edi_xml_cii
|
||||
msgid "Factur-x/XRechnung CII 2.2.0"
|
||||
msgstr ""
|
||||
|
||||
#. module: account_edi_ubl_cii
|
||||
#. odoo-python
|
||||
#: code:addons/account_edi_ubl_cii/models/account_edi_xml_ubl_bis3.py:0
|
||||
#: code:addons/account_edi_ubl_cii/models/account_edi_xml_ubl_bis3.py:0
|
||||
#, python-format
|
||||
msgid ""
|
||||
"For intracommunity supply, the actual delivery date or the invoicing period "
|
||||
"should be included."
|
||||
msgstr ""
|
||||
|
||||
#. module: account_edi_ubl_cii
|
||||
#. odoo-python
|
||||
#: code:addons/account_edi_ubl_cii/models/account_edi_xml_ubl_bis3.py:0
|
||||
#, python-format
|
||||
msgid "For intracommunity supply, the delivery address should be included."
|
||||
msgstr ""
|
||||
|
||||
#. module: account_edi_ubl_cii
|
||||
#. odoo-python
|
||||
#: code:addons/account_edi_ubl_cii/models/account_edi_common.py:0
|
||||
#, python-format
|
||||
msgid "Intra-Community supply"
|
||||
msgstr ""
|
||||
|
||||
#. module: account_edi_ubl_cii
|
||||
#: model_terms:ir.ui.view,arch_db:account_edi_ubl_cii.account_invoice_pdfa_3_facturx_metadata
|
||||
msgid "Invoice generated by Odoo"
|
||||
msgstr ""
|
||||
|
||||
#. module: account_edi_ubl_cii
|
||||
#. odoo-python
|
||||
#: code:addons/account_edi_ubl_cii/models/account_edi_xml_ubl_bis3.py:0
|
||||
#: code:addons/account_edi_ubl_cii/models/account_edi_xml_ubl_bis3.py:0
|
||||
#, python-format
|
||||
msgid "No Electronic Address Scheme (EAS) could be found for %s."
|
||||
msgstr ""
|
||||
|
||||
#. module: account_edi_ubl_cii
|
||||
#. odoo-python
|
||||
#: code:addons/account_edi_ubl_cii/models/account_edi_common.py:0
|
||||
#, python-format
|
||||
msgid ""
|
||||
"No gross price, net price nor line subtotal amount found for line in xml"
|
||||
msgstr ""
|
||||
|
||||
#. module: account_edi_ubl_cii
|
||||
#: model_terms:ir.ui.view,arch_db:account_edi_ubl_cii.account_invoice_pdfa_3_facturx_metadata
|
||||
msgid "Odoo"
|
||||
msgstr ""
|
||||
|
||||
#. module: account_edi_ubl_cii
|
||||
#: model:ir.model,name:account_edi_ubl_cii.model_ir_actions_report
|
||||
msgid "Report Action"
|
||||
msgstr ""
|
||||
|
||||
#. module: account_edi_ubl_cii
|
||||
#: model:ir.model,name:account_edi_ubl_cii.model_account_edi_xml_ubl_sg
|
||||
msgid "SG BIS Billing 3.0"
|
||||
msgstr ""
|
||||
|
||||
#. module: account_edi_ubl_cii
|
||||
#: model:ir.model,name:account_edi_ubl_cii.model_account_edi_xml_ubl_nl
|
||||
msgid "SI-UBL 2.0 (NLCIUS)"
|
||||
msgstr ""
|
||||
|
||||
#. module: account_edi_ubl_cii
|
||||
#. odoo-python
|
||||
#: code:addons/account_edi_ubl_cii/models/account_edi_common.py:0
|
||||
#, python-format
|
||||
msgid "Tax '%s' is invalid: %s"
|
||||
msgstr ""
|
||||
|
||||
#. module: account_edi_ubl_cii
|
||||
#. odoo-python
|
||||
#: code:addons/account_edi_ubl_cii/models/account_edi_xml_ubl_bis3.py:0
|
||||
#, python-format
|
||||
msgid ""
|
||||
"The VAT number of the supplier does not seem to be valid. It should be of "
|
||||
"the form: NO179728982MVA."
|
||||
msgstr ""
|
||||
|
||||
#. module: account_edi_ubl_cii
|
||||
#. odoo-python
|
||||
#: code:addons/account_edi_ubl_cii/models/account_edi_xml_ubl_bis3.py:0
|
||||
#, python-format
|
||||
msgid "The VAT of the %s should be prefixed with its country code."
|
||||
msgstr ""
|
||||
|
||||
#. module: account_edi_ubl_cii
|
||||
#. odoo-python
|
||||
#: code:addons/account_edi_ubl_cii/models/account_edi_xml_ubl_bis3.py:0
|
||||
#, python-format
|
||||
msgid "The country is required for the %s."
|
||||
msgstr ""
|
||||
|
||||
#. module: account_edi_ubl_cii
|
||||
#. odoo-python
|
||||
#: code:addons/account_edi_ubl_cii/models/account_edi_xml_cii_facturx.py:0
|
||||
#: code:addons/account_edi_ubl_cii/models/account_edi_xml_ubl_20.py:0
|
||||
#, python-format
|
||||
msgid "The currency '%s' is not active."
|
||||
msgstr ""
|
||||
|
||||
#. module: account_edi_ubl_cii
|
||||
#. odoo-python
|
||||
#: code:addons/account_edi_ubl_cii/models/account_edi_xml_ubl_bis3.py:0
|
||||
#, python-format
|
||||
msgid "The customer %s must have a Bronnoysund company registry."
|
||||
msgstr ""
|
||||
|
||||
#. module: account_edi_ubl_cii
|
||||
#. odoo-python
|
||||
#: code:addons/account_edi_ubl_cii/models/account_edi_xml_ubl_bis3.py:0
|
||||
#, python-format
|
||||
msgid "The customer %s must have a KVK or OIN number."
|
||||
msgstr ""
|
||||
|
||||
#. module: account_edi_ubl_cii
|
||||
#. odoo-python
|
||||
#: code:addons/account_edi_ubl_cii/models/account_edi_common.py:0
|
||||
#: code:addons/account_edi_ubl_cii/models/account_edi_common.py:0
|
||||
#, python-format
|
||||
msgid "The element %s is required on %s."
|
||||
msgstr ""
|
||||
|
||||
#. module: account_edi_ubl_cii
|
||||
#. odoo-python
|
||||
#: code:addons/account_edi_ubl_cii/models/account_edi_common.py:0
|
||||
#, python-format
|
||||
msgid "The field %s is required on %s."
|
||||
msgstr ""
|
||||
|
||||
#. module: account_edi_ubl_cii
|
||||
#. odoo-python
|
||||
#: code:addons/account_edi_ubl_cii/models/account_edi_xml_cii_facturx.py:0
|
||||
#, python-format
|
||||
msgid ""
|
||||
"The field 'Sanitized Account Number' is required on the Recipient Bank."
|
||||
msgstr ""
|
||||
|
||||
#. module: account_edi_ubl_cii
|
||||
#. odoo-python
|
||||
#: code:addons/account_edi_ubl_cii/models/account_edi_xml_cii_facturx.py:0
|
||||
#: code:addons/account_edi_ubl_cii/models/account_edi_xml_ubl_20.py:0
|
||||
#, python-format
|
||||
msgid ""
|
||||
"The invoice has been converted into a credit note and the quantities have "
|
||||
"been reverted."
|
||||
msgstr ""
|
||||
|
||||
#. module: account_edi_ubl_cii
|
||||
#. odoo-python
|
||||
#: code:addons/account_edi_ubl_cii/models/account_edi_format.py:0
|
||||
#, python-format
|
||||
msgid ""
|
||||
"The journal in which to upload should either be a sale or a purchase "
|
||||
"journal."
|
||||
msgstr ""
|
||||
|
||||
#. module: account_edi_ubl_cii
|
||||
#. odoo-python
|
||||
#: code:addons/account_edi_ubl_cii/models/account_edi_xml_ubl_bis3.py:0
|
||||
#, python-format
|
||||
msgid "The supplier %s must have a Bronnoysund company registry."
|
||||
msgstr ""
|
||||
|
||||
#. module: account_edi_ubl_cii
|
||||
#. odoo-python
|
||||
#: code:addons/account_edi_ubl_cii/models/account_edi_xml_ubl_bis3.py:0
|
||||
#, python-format
|
||||
msgid "The supplier %s must have a KVK or OIN number."
|
||||
msgstr ""
|
||||
|
||||
#. module: account_edi_ubl_cii
|
||||
#: model:ir.model,name:account_edi_ubl_cii.model_account_edi_xml_ubl_20
|
||||
msgid "UBL 2.0"
|
||||
msgstr ""
|
||||
|
||||
#. module: account_edi_ubl_cii
|
||||
#: model:ir.model,name:account_edi_ubl_cii.model_account_edi_xml_ubl_21
|
||||
msgid "UBL 2.1"
|
||||
msgstr ""
|
||||
|
||||
#. module: account_edi_ubl_cii
|
||||
#: model:ir.model,name:account_edi_ubl_cii.model_account_edi_xml_ubl_bis3
|
||||
msgid "UBL BIS Billing 3.0.12"
|
||||
msgstr ""
|
||||
|
||||
#. module: account_edi_ubl_cii
|
||||
#. odoo-python
|
||||
#: code:addons/account_edi_ubl_cii/models/account_edi_xml_cii_facturx.py:0
|
||||
#, python-format
|
||||
msgid ""
|
||||
"When the Canary Island General Indirect Tax (IGIC) applies, the tax rate on "
|
||||
"each invoice line should be greater than 0."
|
||||
msgstr ""
|
||||
|
||||
#. module: account_edi_ubl_cii
|
||||
#. odoo-python
|
||||
#: code:addons/account_edi_ubl_cii/models/account_edi_xml_cii_facturx.py:0
|
||||
#, python-format
|
||||
msgid ""
|
||||
"You should include at least one tax per invoice line. [BR-CO-04]-Each "
|
||||
"Invoice line (BG-25) shall be categorized with an Invoiced item VAT category"
|
||||
" code (BT-151)."
|
||||
msgstr ""
|
||||
|
||||
#. module: account_edi_ubl_cii
|
||||
#: model_terms:ir.ui.view,arch_db:account_edi_ubl_cii.account_invoice_pdfa_3_facturx_metadata
|
||||
msgid "factur-x.xml"
|
||||
msgstr ""
|
||||
|
||||
#. module: account_edi_ubl_cii
|
||||
#: model_terms:ir.ui.view,arch_db:account_edi_ubl_cii.account_invoice_pdfa_3_facturx_metadata
|
||||
msgid "fx"
|
||||
msgstr ""
|
||||
|
||||
#. module: account_edi_ubl_cii
|
||||
#: model_terms:ir.ui.view,arch_db:account_edi_ubl_cii.account_invoice_pdfa_3_facturx_metadata
|
||||
msgid "urn:factur-x:pdfa:CrossIndustryDocument:invoice:1p0#"
|
||||
msgstr ""
|
||||
File diff suppressed because it is too large
Load diff
File diff suppressed because it is too large
Load diff
|
|
@ -1,414 +0,0 @@
|
|||
# Translation of Odoo Server.
|
||||
# This file contains the translation of the following modules:
|
||||
# * account_edi_ubl_cii
|
||||
#
|
||||
# Translators:
|
||||
# Niyas Raphy, 2023
|
||||
#
|
||||
msgid ""
|
||||
msgstr ""
|
||||
"Project-Id-Version: Odoo Server 16.0\n"
|
||||
"Report-Msgid-Bugs-To: \n"
|
||||
"POT-Creation-Date: 2025-02-10 08:26+0000\n"
|
||||
"PO-Revision-Date: 2022-09-22 05:44+0000\n"
|
||||
"Last-Translator: Niyas Raphy, 2023\n"
|
||||
"Language-Team: Malayalam (https://app.transifex.com/odoo/teams/41243/ml/)\n"
|
||||
"MIME-Version: 1.0\n"
|
||||
"Content-Type: text/plain; charset=UTF-8\n"
|
||||
"Content-Transfer-Encoding: \n"
|
||||
"Language: ml\n"
|
||||
"Plural-Forms: nplurals=2; plural=(n != 1);\n"
|
||||
|
||||
#. module: account_edi_ubl_cii
|
||||
#: model_terms:ir.ui.view,arch_db:account_edi_ubl_cii.account_invoice_pdfa_3_facturx_metadata
|
||||
msgid "1.0"
|
||||
msgstr ""
|
||||
|
||||
#. module: account_edi_ubl_cii
|
||||
#: model_terms:ir.ui.view,arch_db:account_edi_ubl_cii.account_invoice_facturx_export_22
|
||||
msgid "42"
|
||||
msgstr ""
|
||||
|
||||
#. module: account_edi_ubl_cii
|
||||
#. odoo-python
|
||||
#: code:addons/account_edi_ubl_cii/models/account_edi_common.py:0
|
||||
#, python-format
|
||||
msgid "<strong>Format used to import the invoice: %s</strong>"
|
||||
msgstr ""
|
||||
|
||||
#. module: account_edi_ubl_cii
|
||||
#. odoo-python
|
||||
#: code:addons/account_edi_ubl_cii/models/account_edi_common.py:0
|
||||
#, python-format
|
||||
msgid ""
|
||||
"<strong>Format used to import the invoice: %s</strong> <p><li> %s </li></p>"
|
||||
msgstr ""
|
||||
|
||||
#. module: account_edi_ubl_cii
|
||||
#. odoo-python
|
||||
#: code:addons/account_edi_ubl_cii/models/account_edi_common.py:0
|
||||
#, python-format
|
||||
msgid "A payment of %s was detected."
|
||||
msgstr ""
|
||||
|
||||
#. module: account_edi_ubl_cii
|
||||
#: model:ir.model,name:account_edi_ubl_cii.model_account_edi_xml_ubl_a_nz
|
||||
msgid "A-NZ BIS Billing 3.0"
|
||||
msgstr ""
|
||||
|
||||
#. module: account_edi_ubl_cii
|
||||
#. odoo-python
|
||||
#: code:addons/account_edi_ubl_cii/models/account_edi_common.py:0
|
||||
#: code:addons/account_edi_ubl_cii/models/account_edi_common.py:0
|
||||
#, python-format
|
||||
msgid "Articles 226 items 11 to 15 Directive 2006/112/EN"
|
||||
msgstr ""
|
||||
|
||||
#. module: account_edi_ubl_cii
|
||||
#. odoo-python
|
||||
#: code:addons/account_edi_ubl_cii/models/account_edi_common.py:0
|
||||
#, python-format
|
||||
msgid "At least one of the following fields %s is required on %s."
|
||||
msgstr ""
|
||||
|
||||
#. module: account_edi_ubl_cii
|
||||
#: model:ir.model,name:account_edi_ubl_cii.model_account_edi_xml_ubl_de
|
||||
msgid "BIS3 DE (XRechnung)"
|
||||
msgstr ""
|
||||
|
||||
#. module: account_edi_ubl_cii
|
||||
#: model:ir.model,name:account_edi_ubl_cii.model_account_edi_common
|
||||
msgid ""
|
||||
"Common functions for EDI documents: generate the data, the constraints, etc"
|
||||
msgstr ""
|
||||
|
||||
#. module: account_edi_ubl_cii
|
||||
#. odoo-python
|
||||
#: code:addons/account_edi_ubl_cii/models/account_edi_xml_ubl_20.py:0
|
||||
#: code:addons/account_edi_ubl_cii/models/account_edi_xml_ubl_20.py:0
|
||||
#, python-format
|
||||
msgid "Conditional cash/payment discount"
|
||||
msgstr ""
|
||||
|
||||
#. module: account_edi_ubl_cii
|
||||
#. odoo-python
|
||||
#: code:addons/account_edi_ubl_cii/models/account_edi_xml_cii_facturx.py:0
|
||||
#: code:addons/account_edi_ubl_cii/models/account_edi_xml_ubl_20.py:0
|
||||
#, python-format
|
||||
msgid ""
|
||||
"Could not retrieve currency: %s. Did you enable the multicurrency option and"
|
||||
" activate the currency ?"
|
||||
msgstr ""
|
||||
|
||||
#. module: account_edi_ubl_cii
|
||||
#. odoo-python
|
||||
#: code:addons/account_edi_ubl_cii/models/account_edi_common.py:0
|
||||
#: code:addons/account_edi_ubl_cii/models/account_edi_common.py:0
|
||||
#, python-format
|
||||
msgid "Could not retrieve the tax: %s %% for line '%s'."
|
||||
msgstr ""
|
||||
|
||||
#. module: account_edi_ubl_cii
|
||||
#. odoo-python
|
||||
#: code:addons/account_edi_ubl_cii/models/account_edi_common.py:0
|
||||
#, python-format
|
||||
msgid "Could not retrieve the unit of measure for line with label '%s'."
|
||||
msgstr ""
|
||||
|
||||
#. module: account_edi_ubl_cii
|
||||
#. odoo-python
|
||||
#: code:addons/account_edi_ubl_cii/models/account_edi_common.py:0
|
||||
#, python-format
|
||||
msgid "Down Payment"
|
||||
msgstr "ഡൌൺ പേയ്മെന്റ് "
|
||||
|
||||
#. module: account_edi_ubl_cii
|
||||
#. odoo-python
|
||||
#: code:addons/account_edi_ubl_cii/models/account_edi_common.py:0
|
||||
#, python-format
|
||||
msgid "Down Payments"
|
||||
msgstr "ഡൌൺ പേയ്മെന്റ് "
|
||||
|
||||
#. module: account_edi_ubl_cii
|
||||
#: model:ir.model,name:account_edi_ubl_cii.model_account_edi_xml_ubl_efff
|
||||
msgid "E-FFF (BE)"
|
||||
msgstr ""
|
||||
|
||||
#. module: account_edi_ubl_cii
|
||||
#: model:ir.model,name:account_edi_ubl_cii.model_account_edi_format
|
||||
msgid "EDI format"
|
||||
msgstr ""
|
||||
|
||||
#. module: account_edi_ubl_cii
|
||||
#: model_terms:ir.ui.view,arch_db:account_edi_ubl_cii.account_invoice_pdfa_3_facturx_metadata
|
||||
msgid "EN 16931"
|
||||
msgstr ""
|
||||
|
||||
#. module: account_edi_ubl_cii
|
||||
#. odoo-python
|
||||
#: code:addons/account_edi_ubl_cii/models/account_edi_xml_ubl_bis3.py:0
|
||||
#, python-format
|
||||
msgid "Each invoice line shall have one and only one tax."
|
||||
msgstr ""
|
||||
|
||||
#. module: account_edi_ubl_cii
|
||||
#. odoo-python
|
||||
#: code:addons/account_edi_ubl_cii/models/account_edi_xml_ubl_bis3.py:0
|
||||
#, python-format
|
||||
msgid "Each invoice line should have a product or a label."
|
||||
msgstr ""
|
||||
|
||||
#. module: account_edi_ubl_cii
|
||||
#. odoo-python
|
||||
#: code:addons/account_edi_ubl_cii/models/account_edi_common.py:0
|
||||
#, python-format
|
||||
msgid "Each invoice line should have at least one tax."
|
||||
msgstr ""
|
||||
|
||||
#. module: account_edi_ubl_cii
|
||||
#: model:ir.model,name:account_edi_ubl_cii.model_mail_template
|
||||
msgid "Email Templates"
|
||||
msgstr "ഇമെയിൽ ടെംപ്ലേറ്റുകൾ"
|
||||
|
||||
#. module: account_edi_ubl_cii
|
||||
#. odoo-python
|
||||
#: code:addons/account_edi_ubl_cii/models/account_edi_format.py:0
|
||||
#, python-format
|
||||
msgid ""
|
||||
"Errors occured while creating the EDI document (format: %s). The receiver "
|
||||
"might refuse it."
|
||||
msgstr ""
|
||||
|
||||
#. module: account_edi_ubl_cii
|
||||
#. odoo-python
|
||||
#: code:addons/account_edi_ubl_cii/models/account_edi_common.py:0
|
||||
#, python-format
|
||||
msgid "Export outside the EU"
|
||||
msgstr ""
|
||||
|
||||
#. module: account_edi_ubl_cii
|
||||
#: model:ir.model,name:account_edi_ubl_cii.model_account_edi_xml_cii
|
||||
msgid "Factur-x/XRechnung CII 2.2.0"
|
||||
msgstr ""
|
||||
|
||||
#. module: account_edi_ubl_cii
|
||||
#. odoo-python
|
||||
#: code:addons/account_edi_ubl_cii/models/account_edi_xml_ubl_bis3.py:0
|
||||
#: code:addons/account_edi_ubl_cii/models/account_edi_xml_ubl_bis3.py:0
|
||||
#, python-format
|
||||
msgid ""
|
||||
"For intracommunity supply, the actual delivery date or the invoicing period "
|
||||
"should be included."
|
||||
msgstr ""
|
||||
|
||||
#. module: account_edi_ubl_cii
|
||||
#. odoo-python
|
||||
#: code:addons/account_edi_ubl_cii/models/account_edi_xml_ubl_bis3.py:0
|
||||
#, python-format
|
||||
msgid "For intracommunity supply, the delivery address should be included."
|
||||
msgstr ""
|
||||
|
||||
#. module: account_edi_ubl_cii
|
||||
#. odoo-python
|
||||
#: code:addons/account_edi_ubl_cii/models/account_edi_common.py:0
|
||||
#, python-format
|
||||
msgid "Intra-Community supply"
|
||||
msgstr ""
|
||||
|
||||
#. module: account_edi_ubl_cii
|
||||
#: model_terms:ir.ui.view,arch_db:account_edi_ubl_cii.account_invoice_pdfa_3_facturx_metadata
|
||||
msgid "Invoice generated by Odoo"
|
||||
msgstr ""
|
||||
|
||||
#. module: account_edi_ubl_cii
|
||||
#. odoo-python
|
||||
#: code:addons/account_edi_ubl_cii/models/account_edi_xml_ubl_bis3.py:0
|
||||
#: code:addons/account_edi_ubl_cii/models/account_edi_xml_ubl_bis3.py:0
|
||||
#, python-format
|
||||
msgid "No Electronic Address Scheme (EAS) could be found for %s."
|
||||
msgstr ""
|
||||
|
||||
#. module: account_edi_ubl_cii
|
||||
#. odoo-python
|
||||
#: code:addons/account_edi_ubl_cii/models/account_edi_common.py:0
|
||||
#, python-format
|
||||
msgid ""
|
||||
"No gross price, net price nor line subtotal amount found for line in xml"
|
||||
msgstr ""
|
||||
|
||||
#. module: account_edi_ubl_cii
|
||||
#: model_terms:ir.ui.view,arch_db:account_edi_ubl_cii.account_invoice_pdfa_3_facturx_metadata
|
||||
msgid "Odoo"
|
||||
msgstr "ഒഡൂ"
|
||||
|
||||
#. module: account_edi_ubl_cii
|
||||
#: model:ir.model,name:account_edi_ubl_cii.model_ir_actions_report
|
||||
msgid "Report Action"
|
||||
msgstr ""
|
||||
|
||||
#. module: account_edi_ubl_cii
|
||||
#: model:ir.model,name:account_edi_ubl_cii.model_account_edi_xml_ubl_sg
|
||||
msgid "SG BIS Billing 3.0"
|
||||
msgstr ""
|
||||
|
||||
#. module: account_edi_ubl_cii
|
||||
#: model:ir.model,name:account_edi_ubl_cii.model_account_edi_xml_ubl_nl
|
||||
msgid "SI-UBL 2.0 (NLCIUS)"
|
||||
msgstr ""
|
||||
|
||||
#. module: account_edi_ubl_cii
|
||||
#. odoo-python
|
||||
#: code:addons/account_edi_ubl_cii/models/account_edi_common.py:0
|
||||
#, python-format
|
||||
msgid "Tax '%s' is invalid: %s"
|
||||
msgstr ""
|
||||
|
||||
#. module: account_edi_ubl_cii
|
||||
#. odoo-python
|
||||
#: code:addons/account_edi_ubl_cii/models/account_edi_xml_ubl_bis3.py:0
|
||||
#, python-format
|
||||
msgid ""
|
||||
"The VAT number of the supplier does not seem to be valid. It should be of "
|
||||
"the form: NO179728982MVA."
|
||||
msgstr ""
|
||||
|
||||
#. module: account_edi_ubl_cii
|
||||
#. odoo-python
|
||||
#: code:addons/account_edi_ubl_cii/models/account_edi_xml_ubl_bis3.py:0
|
||||
#, python-format
|
||||
msgid "The VAT of the %s should be prefixed with its country code."
|
||||
msgstr ""
|
||||
|
||||
#. module: account_edi_ubl_cii
|
||||
#. odoo-python
|
||||
#: code:addons/account_edi_ubl_cii/models/account_edi_xml_ubl_bis3.py:0
|
||||
#, python-format
|
||||
msgid "The country is required for the %s."
|
||||
msgstr ""
|
||||
|
||||
#. module: account_edi_ubl_cii
|
||||
#. odoo-python
|
||||
#: code:addons/account_edi_ubl_cii/models/account_edi_xml_cii_facturx.py:0
|
||||
#: code:addons/account_edi_ubl_cii/models/account_edi_xml_ubl_20.py:0
|
||||
#, python-format
|
||||
msgid "The currency '%s' is not active."
|
||||
msgstr ""
|
||||
|
||||
#. module: account_edi_ubl_cii
|
||||
#. odoo-python
|
||||
#: code:addons/account_edi_ubl_cii/models/account_edi_xml_ubl_bis3.py:0
|
||||
#, python-format
|
||||
msgid "The customer %s must have a Bronnoysund company registry."
|
||||
msgstr ""
|
||||
|
||||
#. module: account_edi_ubl_cii
|
||||
#. odoo-python
|
||||
#: code:addons/account_edi_ubl_cii/models/account_edi_xml_ubl_bis3.py:0
|
||||
#, python-format
|
||||
msgid "The customer %s must have a KVK or OIN number."
|
||||
msgstr ""
|
||||
|
||||
#. module: account_edi_ubl_cii
|
||||
#. odoo-python
|
||||
#: code:addons/account_edi_ubl_cii/models/account_edi_common.py:0
|
||||
#: code:addons/account_edi_ubl_cii/models/account_edi_common.py:0
|
||||
#, python-format
|
||||
msgid "The element %s is required on %s."
|
||||
msgstr ""
|
||||
|
||||
#. module: account_edi_ubl_cii
|
||||
#. odoo-python
|
||||
#: code:addons/account_edi_ubl_cii/models/account_edi_common.py:0
|
||||
#, python-format
|
||||
msgid "The field %s is required on %s."
|
||||
msgstr ""
|
||||
|
||||
#. module: account_edi_ubl_cii
|
||||
#. odoo-python
|
||||
#: code:addons/account_edi_ubl_cii/models/account_edi_xml_cii_facturx.py:0
|
||||
#, python-format
|
||||
msgid ""
|
||||
"The field 'Sanitized Account Number' is required on the Recipient Bank."
|
||||
msgstr ""
|
||||
|
||||
#. module: account_edi_ubl_cii
|
||||
#. odoo-python
|
||||
#: code:addons/account_edi_ubl_cii/models/account_edi_xml_cii_facturx.py:0
|
||||
#: code:addons/account_edi_ubl_cii/models/account_edi_xml_ubl_20.py:0
|
||||
#, python-format
|
||||
msgid ""
|
||||
"The invoice has been converted into a credit note and the quantities have "
|
||||
"been reverted."
|
||||
msgstr ""
|
||||
|
||||
#. module: account_edi_ubl_cii
|
||||
#. odoo-python
|
||||
#: code:addons/account_edi_ubl_cii/models/account_edi_format.py:0
|
||||
#, python-format
|
||||
msgid ""
|
||||
"The journal in which to upload should either be a sale or a purchase "
|
||||
"journal."
|
||||
msgstr ""
|
||||
|
||||
#. module: account_edi_ubl_cii
|
||||
#. odoo-python
|
||||
#: code:addons/account_edi_ubl_cii/models/account_edi_xml_ubl_bis3.py:0
|
||||
#, python-format
|
||||
msgid "The supplier %s must have a Bronnoysund company registry."
|
||||
msgstr ""
|
||||
|
||||
#. module: account_edi_ubl_cii
|
||||
#. odoo-python
|
||||
#: code:addons/account_edi_ubl_cii/models/account_edi_xml_ubl_bis3.py:0
|
||||
#, python-format
|
||||
msgid "The supplier %s must have a KVK or OIN number."
|
||||
msgstr ""
|
||||
|
||||
#. module: account_edi_ubl_cii
|
||||
#: model:ir.model,name:account_edi_ubl_cii.model_account_edi_xml_ubl_20
|
||||
msgid "UBL 2.0"
|
||||
msgstr ""
|
||||
|
||||
#. module: account_edi_ubl_cii
|
||||
#: model:ir.model,name:account_edi_ubl_cii.model_account_edi_xml_ubl_21
|
||||
msgid "UBL 2.1"
|
||||
msgstr ""
|
||||
|
||||
#. module: account_edi_ubl_cii
|
||||
#: model:ir.model,name:account_edi_ubl_cii.model_account_edi_xml_ubl_bis3
|
||||
msgid "UBL BIS Billing 3.0.12"
|
||||
msgstr ""
|
||||
|
||||
#. module: account_edi_ubl_cii
|
||||
#. odoo-python
|
||||
#: code:addons/account_edi_ubl_cii/models/account_edi_xml_cii_facturx.py:0
|
||||
#, python-format
|
||||
msgid ""
|
||||
"When the Canary Island General Indirect Tax (IGIC) applies, the tax rate on "
|
||||
"each invoice line should be greater than 0."
|
||||
msgstr ""
|
||||
|
||||
#. module: account_edi_ubl_cii
|
||||
#. odoo-python
|
||||
#: code:addons/account_edi_ubl_cii/models/account_edi_xml_cii_facturx.py:0
|
||||
#, python-format
|
||||
msgid ""
|
||||
"You should include at least one tax per invoice line. [BR-CO-04]-Each "
|
||||
"Invoice line (BG-25) shall be categorized with an Invoiced item VAT category"
|
||||
" code (BT-151)."
|
||||
msgstr ""
|
||||
|
||||
#. module: account_edi_ubl_cii
|
||||
#: model_terms:ir.ui.view,arch_db:account_edi_ubl_cii.account_invoice_pdfa_3_facturx_metadata
|
||||
msgid "factur-x.xml"
|
||||
msgstr ""
|
||||
|
||||
#. module: account_edi_ubl_cii
|
||||
#: model_terms:ir.ui.view,arch_db:account_edi_ubl_cii.account_invoice_pdfa_3_facturx_metadata
|
||||
msgid "fx"
|
||||
msgstr ""
|
||||
|
||||
#. module: account_edi_ubl_cii
|
||||
#: model_terms:ir.ui.view,arch_db:account_edi_ubl_cii.account_invoice_pdfa_3_facturx_metadata
|
||||
msgid "urn:factur-x:pdfa:CrossIndustryDocument:invoice:1p0#"
|
||||
msgstr ""
|
||||
File diff suppressed because it is too large
Load diff
|
|
@ -1,416 +0,0 @@
|
|||
# Translation of Odoo Server.
|
||||
# This file contains the translation of the following modules:
|
||||
# * account_edi_ubl_cii
|
||||
#
|
||||
# Translators:
|
||||
# Mehjabin Farsana, 2022
|
||||
# Imran Pathan, 2024
|
||||
#
|
||||
msgid ""
|
||||
msgstr ""
|
||||
"Project-Id-Version: Odoo Server 16.0\n"
|
||||
"Report-Msgid-Bugs-To: \n"
|
||||
"POT-Creation-Date: 2025-02-10 08:26+0000\n"
|
||||
"PO-Revision-Date: 2022-09-22 05:44+0000\n"
|
||||
"Last-Translator: Imran Pathan, 2024\n"
|
||||
"Language-Team: Malay (https://app.transifex.com/odoo/teams/41243/ms/)\n"
|
||||
"MIME-Version: 1.0\n"
|
||||
"Content-Type: text/plain; charset=UTF-8\n"
|
||||
"Content-Transfer-Encoding: \n"
|
||||
"Language: ms\n"
|
||||
"Plural-Forms: nplurals=1; plural=0;\n"
|
||||
|
||||
#. module: account_edi_ubl_cii
|
||||
#: model_terms:ir.ui.view,arch_db:account_edi_ubl_cii.account_invoice_pdfa_3_facturx_metadata
|
||||
msgid "1.0"
|
||||
msgstr ""
|
||||
|
||||
#. module: account_edi_ubl_cii
|
||||
#: model_terms:ir.ui.view,arch_db:account_edi_ubl_cii.account_invoice_facturx_export_22
|
||||
msgid "42"
|
||||
msgstr ""
|
||||
|
||||
#. module: account_edi_ubl_cii
|
||||
#. odoo-python
|
||||
#: code:addons/account_edi_ubl_cii/models/account_edi_common.py:0
|
||||
#, python-format
|
||||
msgid "<strong>Format used to import the invoice: %s</strong>"
|
||||
msgstr ""
|
||||
|
||||
#. module: account_edi_ubl_cii
|
||||
#. odoo-python
|
||||
#: code:addons/account_edi_ubl_cii/models/account_edi_common.py:0
|
||||
#, python-format
|
||||
msgid ""
|
||||
"<strong>Format used to import the invoice: %s</strong> <p><li> %s </li></p>"
|
||||
msgstr ""
|
||||
|
||||
#. module: account_edi_ubl_cii
|
||||
#. odoo-python
|
||||
#: code:addons/account_edi_ubl_cii/models/account_edi_common.py:0
|
||||
#, python-format
|
||||
msgid "A payment of %s was detected."
|
||||
msgstr ""
|
||||
|
||||
#. module: account_edi_ubl_cii
|
||||
#: model:ir.model,name:account_edi_ubl_cii.model_account_edi_xml_ubl_a_nz
|
||||
msgid "A-NZ BIS Billing 3.0"
|
||||
msgstr ""
|
||||
|
||||
#. module: account_edi_ubl_cii
|
||||
#. odoo-python
|
||||
#: code:addons/account_edi_ubl_cii/models/account_edi_common.py:0
|
||||
#: code:addons/account_edi_ubl_cii/models/account_edi_common.py:0
|
||||
#, python-format
|
||||
msgid "Articles 226 items 11 to 15 Directive 2006/112/EN"
|
||||
msgstr ""
|
||||
|
||||
#. module: account_edi_ubl_cii
|
||||
#. odoo-python
|
||||
#: code:addons/account_edi_ubl_cii/models/account_edi_common.py:0
|
||||
#, python-format
|
||||
msgid "At least one of the following fields %s is required on %s."
|
||||
msgstr ""
|
||||
|
||||
#. module: account_edi_ubl_cii
|
||||
#: model:ir.model,name:account_edi_ubl_cii.model_account_edi_xml_ubl_de
|
||||
msgid "BIS3 DE (XRechnung)"
|
||||
msgstr ""
|
||||
|
||||
#. module: account_edi_ubl_cii
|
||||
#: model:ir.model,name:account_edi_ubl_cii.model_account_edi_common
|
||||
msgid ""
|
||||
"Common functions for EDI documents: generate the data, the constraints, etc"
|
||||
msgstr ""
|
||||
|
||||
#. module: account_edi_ubl_cii
|
||||
#. odoo-python
|
||||
#: code:addons/account_edi_ubl_cii/models/account_edi_xml_ubl_20.py:0
|
||||
#: code:addons/account_edi_ubl_cii/models/account_edi_xml_ubl_20.py:0
|
||||
#, python-format
|
||||
msgid "Conditional cash/payment discount"
|
||||
msgstr ""
|
||||
|
||||
#. module: account_edi_ubl_cii
|
||||
#. odoo-python
|
||||
#: code:addons/account_edi_ubl_cii/models/account_edi_xml_cii_facturx.py:0
|
||||
#: code:addons/account_edi_ubl_cii/models/account_edi_xml_ubl_20.py:0
|
||||
#, python-format
|
||||
msgid ""
|
||||
"Could not retrieve currency: %s. Did you enable the multicurrency option and"
|
||||
" activate the currency ?"
|
||||
msgstr ""
|
||||
|
||||
#. module: account_edi_ubl_cii
|
||||
#. odoo-python
|
||||
#: code:addons/account_edi_ubl_cii/models/account_edi_common.py:0
|
||||
#: code:addons/account_edi_ubl_cii/models/account_edi_common.py:0
|
||||
#, python-format
|
||||
msgid "Could not retrieve the tax: %s %% for line '%s'."
|
||||
msgstr ""
|
||||
|
||||
#. module: account_edi_ubl_cii
|
||||
#. odoo-python
|
||||
#: code:addons/account_edi_ubl_cii/models/account_edi_common.py:0
|
||||
#, python-format
|
||||
msgid "Could not retrieve the unit of measure for line with label '%s'."
|
||||
msgstr ""
|
||||
|
||||
#. module: account_edi_ubl_cii
|
||||
#. odoo-python
|
||||
#: code:addons/account_edi_ubl_cii/models/account_edi_common.py:0
|
||||
#, python-format
|
||||
msgid "Down Payment"
|
||||
msgstr ""
|
||||
|
||||
#. module: account_edi_ubl_cii
|
||||
#. odoo-python
|
||||
#: code:addons/account_edi_ubl_cii/models/account_edi_common.py:0
|
||||
#, python-format
|
||||
msgid "Down Payments"
|
||||
msgstr ""
|
||||
|
||||
#. module: account_edi_ubl_cii
|
||||
#: model:ir.model,name:account_edi_ubl_cii.model_account_edi_xml_ubl_efff
|
||||
msgid "E-FFF (BE)"
|
||||
msgstr ""
|
||||
|
||||
#. module: account_edi_ubl_cii
|
||||
#: model:ir.model,name:account_edi_ubl_cii.model_account_edi_format
|
||||
msgid "EDI format"
|
||||
msgstr ""
|
||||
|
||||
#. module: account_edi_ubl_cii
|
||||
#: model_terms:ir.ui.view,arch_db:account_edi_ubl_cii.account_invoice_pdfa_3_facturx_metadata
|
||||
msgid "EN 16931"
|
||||
msgstr ""
|
||||
|
||||
#. module: account_edi_ubl_cii
|
||||
#. odoo-python
|
||||
#: code:addons/account_edi_ubl_cii/models/account_edi_xml_ubl_bis3.py:0
|
||||
#, python-format
|
||||
msgid "Each invoice line shall have one and only one tax."
|
||||
msgstr ""
|
||||
|
||||
#. module: account_edi_ubl_cii
|
||||
#. odoo-python
|
||||
#: code:addons/account_edi_ubl_cii/models/account_edi_xml_ubl_bis3.py:0
|
||||
#, python-format
|
||||
msgid "Each invoice line should have a product or a label."
|
||||
msgstr ""
|
||||
|
||||
#. module: account_edi_ubl_cii
|
||||
#. odoo-python
|
||||
#: code:addons/account_edi_ubl_cii/models/account_edi_common.py:0
|
||||
#, python-format
|
||||
msgid "Each invoice line should have at least one tax."
|
||||
msgstr ""
|
||||
|
||||
#. module: account_edi_ubl_cii
|
||||
#: model:ir.model,name:account_edi_ubl_cii.model_mail_template
|
||||
msgid "Email Templates"
|
||||
msgstr ""
|
||||
|
||||
#. module: account_edi_ubl_cii
|
||||
#. odoo-python
|
||||
#: code:addons/account_edi_ubl_cii/models/account_edi_format.py:0
|
||||
#, python-format
|
||||
msgid ""
|
||||
"Errors occured while creating the EDI document (format: %s). The receiver "
|
||||
"might refuse it."
|
||||
msgstr ""
|
||||
|
||||
#. module: account_edi_ubl_cii
|
||||
#. odoo-python
|
||||
#: code:addons/account_edi_ubl_cii/models/account_edi_common.py:0
|
||||
#, python-format
|
||||
msgid "Export outside the EU"
|
||||
msgstr ""
|
||||
|
||||
#. module: account_edi_ubl_cii
|
||||
#: model:ir.model,name:account_edi_ubl_cii.model_account_edi_xml_cii
|
||||
msgid "Factur-x/XRechnung CII 2.2.0"
|
||||
msgstr ""
|
||||
|
||||
#. module: account_edi_ubl_cii
|
||||
#. odoo-python
|
||||
#: code:addons/account_edi_ubl_cii/models/account_edi_xml_ubl_bis3.py:0
|
||||
#: code:addons/account_edi_ubl_cii/models/account_edi_xml_ubl_bis3.py:0
|
||||
#, python-format
|
||||
msgid ""
|
||||
"For intracommunity supply, the actual delivery date or the invoicing period "
|
||||
"should be included."
|
||||
msgstr ""
|
||||
|
||||
#. module: account_edi_ubl_cii
|
||||
#. odoo-python
|
||||
#: code:addons/account_edi_ubl_cii/models/account_edi_xml_ubl_bis3.py:0
|
||||
#, python-format
|
||||
msgid "For intracommunity supply, the delivery address should be included."
|
||||
msgstr ""
|
||||
|
||||
#. module: account_edi_ubl_cii
|
||||
#. odoo-python
|
||||
#: code:addons/account_edi_ubl_cii/models/account_edi_common.py:0
|
||||
#, python-format
|
||||
msgid "Intra-Community supply"
|
||||
msgstr ""
|
||||
|
||||
#. module: account_edi_ubl_cii
|
||||
#: model_terms:ir.ui.view,arch_db:account_edi_ubl_cii.account_invoice_pdfa_3_facturx_metadata
|
||||
msgid "Invoice generated by Odoo"
|
||||
msgstr ""
|
||||
|
||||
#. module: account_edi_ubl_cii
|
||||
#. odoo-python
|
||||
#: code:addons/account_edi_ubl_cii/models/account_edi_xml_ubl_bis3.py:0
|
||||
#: code:addons/account_edi_ubl_cii/models/account_edi_xml_ubl_bis3.py:0
|
||||
#, python-format
|
||||
msgid "No Electronic Address Scheme (EAS) could be found for %s."
|
||||
msgstr ""
|
||||
|
||||
#. module: account_edi_ubl_cii
|
||||
#. odoo-python
|
||||
#: code:addons/account_edi_ubl_cii/models/account_edi_common.py:0
|
||||
#, python-format
|
||||
msgid ""
|
||||
"No gross price, net price nor line subtotal amount found for line in xml"
|
||||
msgstr ""
|
||||
|
||||
#. module: account_edi_ubl_cii
|
||||
#: model_terms:ir.ui.view,arch_db:account_edi_ubl_cii.account_invoice_pdfa_3_facturx_metadata
|
||||
msgid "Odoo"
|
||||
msgstr "Odoo"
|
||||
|
||||
#. module: account_edi_ubl_cii
|
||||
#: model:ir.model,name:account_edi_ubl_cii.model_ir_actions_report
|
||||
msgid "Report Action"
|
||||
msgstr "Report Action"
|
||||
|
||||
#. module: account_edi_ubl_cii
|
||||
#: model:ir.model,name:account_edi_ubl_cii.model_account_edi_xml_ubl_sg
|
||||
msgid "SG BIS Billing 3.0"
|
||||
msgstr ""
|
||||
|
||||
#. module: account_edi_ubl_cii
|
||||
#: model:ir.model,name:account_edi_ubl_cii.model_account_edi_xml_ubl_nl
|
||||
msgid "SI-UBL 2.0 (NLCIUS)"
|
||||
msgstr ""
|
||||
|
||||
#. module: account_edi_ubl_cii
|
||||
#. odoo-python
|
||||
#: code:addons/account_edi_ubl_cii/models/account_edi_common.py:0
|
||||
#, python-format
|
||||
msgid "Tax '%s' is invalid: %s"
|
||||
msgstr ""
|
||||
|
||||
#. module: account_edi_ubl_cii
|
||||
#. odoo-python
|
||||
#: code:addons/account_edi_ubl_cii/models/account_edi_xml_ubl_bis3.py:0
|
||||
#, python-format
|
||||
msgid ""
|
||||
"The VAT number of the supplier does not seem to be valid. It should be of "
|
||||
"the form: NO179728982MVA."
|
||||
msgstr ""
|
||||
|
||||
#. module: account_edi_ubl_cii
|
||||
#. odoo-python
|
||||
#: code:addons/account_edi_ubl_cii/models/account_edi_xml_ubl_bis3.py:0
|
||||
#, python-format
|
||||
msgid "The VAT of the %s should be prefixed with its country code."
|
||||
msgstr ""
|
||||
|
||||
#. module: account_edi_ubl_cii
|
||||
#. odoo-python
|
||||
#: code:addons/account_edi_ubl_cii/models/account_edi_xml_ubl_bis3.py:0
|
||||
#, python-format
|
||||
msgid "The country is required for the %s."
|
||||
msgstr ""
|
||||
|
||||
#. module: account_edi_ubl_cii
|
||||
#. odoo-python
|
||||
#: code:addons/account_edi_ubl_cii/models/account_edi_xml_cii_facturx.py:0
|
||||
#: code:addons/account_edi_ubl_cii/models/account_edi_xml_ubl_20.py:0
|
||||
#, python-format
|
||||
msgid "The currency '%s' is not active."
|
||||
msgstr ""
|
||||
|
||||
#. module: account_edi_ubl_cii
|
||||
#. odoo-python
|
||||
#: code:addons/account_edi_ubl_cii/models/account_edi_xml_ubl_bis3.py:0
|
||||
#, python-format
|
||||
msgid "The customer %s must have a Bronnoysund company registry."
|
||||
msgstr ""
|
||||
|
||||
#. module: account_edi_ubl_cii
|
||||
#. odoo-python
|
||||
#: code:addons/account_edi_ubl_cii/models/account_edi_xml_ubl_bis3.py:0
|
||||
#, python-format
|
||||
msgid "The customer %s must have a KVK or OIN number."
|
||||
msgstr ""
|
||||
|
||||
#. module: account_edi_ubl_cii
|
||||
#. odoo-python
|
||||
#: code:addons/account_edi_ubl_cii/models/account_edi_common.py:0
|
||||
#: code:addons/account_edi_ubl_cii/models/account_edi_common.py:0
|
||||
#, python-format
|
||||
msgid "The element %s is required on %s."
|
||||
msgstr ""
|
||||
|
||||
#. module: account_edi_ubl_cii
|
||||
#. odoo-python
|
||||
#: code:addons/account_edi_ubl_cii/models/account_edi_common.py:0
|
||||
#, python-format
|
||||
msgid "The field %s is required on %s."
|
||||
msgstr ""
|
||||
|
||||
#. module: account_edi_ubl_cii
|
||||
#. odoo-python
|
||||
#: code:addons/account_edi_ubl_cii/models/account_edi_xml_cii_facturx.py:0
|
||||
#, python-format
|
||||
msgid ""
|
||||
"The field 'Sanitized Account Number' is required on the Recipient Bank."
|
||||
msgstr ""
|
||||
|
||||
#. module: account_edi_ubl_cii
|
||||
#. odoo-python
|
||||
#: code:addons/account_edi_ubl_cii/models/account_edi_xml_cii_facturx.py:0
|
||||
#: code:addons/account_edi_ubl_cii/models/account_edi_xml_ubl_20.py:0
|
||||
#, python-format
|
||||
msgid ""
|
||||
"The invoice has been converted into a credit note and the quantities have "
|
||||
"been reverted."
|
||||
msgstr ""
|
||||
"Invois telah ditukar menjadi nota kredit dan kuantiti telah dikembalikan."
|
||||
|
||||
#. module: account_edi_ubl_cii
|
||||
#. odoo-python
|
||||
#: code:addons/account_edi_ubl_cii/models/account_edi_format.py:0
|
||||
#, python-format
|
||||
msgid ""
|
||||
"The journal in which to upload should either be a sale or a purchase "
|
||||
"journal."
|
||||
msgstr ""
|
||||
|
||||
#. module: account_edi_ubl_cii
|
||||
#. odoo-python
|
||||
#: code:addons/account_edi_ubl_cii/models/account_edi_xml_ubl_bis3.py:0
|
||||
#, python-format
|
||||
msgid "The supplier %s must have a Bronnoysund company registry."
|
||||
msgstr ""
|
||||
|
||||
#. module: account_edi_ubl_cii
|
||||
#. odoo-python
|
||||
#: code:addons/account_edi_ubl_cii/models/account_edi_xml_ubl_bis3.py:0
|
||||
#, python-format
|
||||
msgid "The supplier %s must have a KVK or OIN number."
|
||||
msgstr ""
|
||||
|
||||
#. module: account_edi_ubl_cii
|
||||
#: model:ir.model,name:account_edi_ubl_cii.model_account_edi_xml_ubl_20
|
||||
msgid "UBL 2.0"
|
||||
msgstr ""
|
||||
|
||||
#. module: account_edi_ubl_cii
|
||||
#: model:ir.model,name:account_edi_ubl_cii.model_account_edi_xml_ubl_21
|
||||
msgid "UBL 2.1"
|
||||
msgstr ""
|
||||
|
||||
#. module: account_edi_ubl_cii
|
||||
#: model:ir.model,name:account_edi_ubl_cii.model_account_edi_xml_ubl_bis3
|
||||
msgid "UBL BIS Billing 3.0.12"
|
||||
msgstr ""
|
||||
|
||||
#. module: account_edi_ubl_cii
|
||||
#. odoo-python
|
||||
#: code:addons/account_edi_ubl_cii/models/account_edi_xml_cii_facturx.py:0
|
||||
#, python-format
|
||||
msgid ""
|
||||
"When the Canary Island General Indirect Tax (IGIC) applies, the tax rate on "
|
||||
"each invoice line should be greater than 0."
|
||||
msgstr ""
|
||||
|
||||
#. module: account_edi_ubl_cii
|
||||
#. odoo-python
|
||||
#: code:addons/account_edi_ubl_cii/models/account_edi_xml_cii_facturx.py:0
|
||||
#, python-format
|
||||
msgid ""
|
||||
"You should include at least one tax per invoice line. [BR-CO-04]-Each "
|
||||
"Invoice line (BG-25) shall be categorized with an Invoiced item VAT category"
|
||||
" code (BT-151)."
|
||||
msgstr ""
|
||||
|
||||
#. module: account_edi_ubl_cii
|
||||
#: model_terms:ir.ui.view,arch_db:account_edi_ubl_cii.account_invoice_pdfa_3_facturx_metadata
|
||||
msgid "factur-x.xml"
|
||||
msgstr ""
|
||||
|
||||
#. module: account_edi_ubl_cii
|
||||
#: model_terms:ir.ui.view,arch_db:account_edi_ubl_cii.account_invoice_pdfa_3_facturx_metadata
|
||||
msgid "fx"
|
||||
msgstr ""
|
||||
|
||||
#. module: account_edi_ubl_cii
|
||||
#: model_terms:ir.ui.view,arch_db:account_edi_ubl_cii.account_invoice_pdfa_3_facturx_metadata
|
||||
msgid "urn:factur-x:pdfa:CrossIndustryDocument:invoice:1p0#"
|
||||
msgstr ""
|
||||
File diff suppressed because it is too large
Load diff
File diff suppressed because it is too large
Load diff
File diff suppressed because it is too large
Load diff
|
|
@ -1,410 +0,0 @@
|
|||
# Translation of Odoo Server.
|
||||
# This file contains the translation of the following modules:
|
||||
# * account_edi_ubl_cii
|
||||
#
|
||||
msgid ""
|
||||
msgstr ""
|
||||
"Project-Id-Version: Odoo Server 16.0\n"
|
||||
"Report-Msgid-Bugs-To: \n"
|
||||
"POT-Creation-Date: 2025-02-10 08:26+0000\n"
|
||||
"PO-Revision-Date: 2022-09-22 05:44+0000\n"
|
||||
"Language-Team: Norwegian (https://app.transifex.com/odoo/teams/41243/no/)\n"
|
||||
"MIME-Version: 1.0\n"
|
||||
"Content-Type: text/plain; charset=UTF-8\n"
|
||||
"Content-Transfer-Encoding: \n"
|
||||
"Language: no\n"
|
||||
"Plural-Forms: nplurals=2; plural=(n != 1);\n"
|
||||
|
||||
#. module: account_edi_ubl_cii
|
||||
#: model_terms:ir.ui.view,arch_db:account_edi_ubl_cii.account_invoice_pdfa_3_facturx_metadata
|
||||
msgid "1.0"
|
||||
msgstr ""
|
||||
|
||||
#. module: account_edi_ubl_cii
|
||||
#: model_terms:ir.ui.view,arch_db:account_edi_ubl_cii.account_invoice_facturx_export_22
|
||||
msgid "42"
|
||||
msgstr ""
|
||||
|
||||
#. module: account_edi_ubl_cii
|
||||
#. odoo-python
|
||||
#: code:addons/account_edi_ubl_cii/models/account_edi_common.py:0
|
||||
#, python-format
|
||||
msgid "<strong>Format used to import the invoice: %s</strong>"
|
||||
msgstr ""
|
||||
|
||||
#. module: account_edi_ubl_cii
|
||||
#. odoo-python
|
||||
#: code:addons/account_edi_ubl_cii/models/account_edi_common.py:0
|
||||
#, python-format
|
||||
msgid ""
|
||||
"<strong>Format used to import the invoice: %s</strong> <p><li> %s </li></p>"
|
||||
msgstr ""
|
||||
|
||||
#. module: account_edi_ubl_cii
|
||||
#. odoo-python
|
||||
#: code:addons/account_edi_ubl_cii/models/account_edi_common.py:0
|
||||
#, python-format
|
||||
msgid "A payment of %s was detected."
|
||||
msgstr ""
|
||||
|
||||
#. module: account_edi_ubl_cii
|
||||
#: model:ir.model,name:account_edi_ubl_cii.model_account_edi_xml_ubl_a_nz
|
||||
msgid "A-NZ BIS Billing 3.0"
|
||||
msgstr ""
|
||||
|
||||
#. module: account_edi_ubl_cii
|
||||
#. odoo-python
|
||||
#: code:addons/account_edi_ubl_cii/models/account_edi_common.py:0
|
||||
#: code:addons/account_edi_ubl_cii/models/account_edi_common.py:0
|
||||
#, python-format
|
||||
msgid "Articles 226 items 11 to 15 Directive 2006/112/EN"
|
||||
msgstr ""
|
||||
|
||||
#. module: account_edi_ubl_cii
|
||||
#. odoo-python
|
||||
#: code:addons/account_edi_ubl_cii/models/account_edi_common.py:0
|
||||
#, python-format
|
||||
msgid "At least one of the following fields %s is required on %s."
|
||||
msgstr ""
|
||||
|
||||
#. module: account_edi_ubl_cii
|
||||
#: model:ir.model,name:account_edi_ubl_cii.model_account_edi_xml_ubl_de
|
||||
msgid "BIS3 DE (XRechnung)"
|
||||
msgstr ""
|
||||
|
||||
#. module: account_edi_ubl_cii
|
||||
#: model:ir.model,name:account_edi_ubl_cii.model_account_edi_common
|
||||
msgid ""
|
||||
"Common functions for EDI documents: generate the data, the constraints, etc"
|
||||
msgstr ""
|
||||
|
||||
#. module: account_edi_ubl_cii
|
||||
#. odoo-python
|
||||
#: code:addons/account_edi_ubl_cii/models/account_edi_xml_ubl_20.py:0
|
||||
#: code:addons/account_edi_ubl_cii/models/account_edi_xml_ubl_20.py:0
|
||||
#, python-format
|
||||
msgid "Conditional cash/payment discount"
|
||||
msgstr ""
|
||||
|
||||
#. module: account_edi_ubl_cii
|
||||
#. odoo-python
|
||||
#: code:addons/account_edi_ubl_cii/models/account_edi_xml_cii_facturx.py:0
|
||||
#: code:addons/account_edi_ubl_cii/models/account_edi_xml_ubl_20.py:0
|
||||
#, python-format
|
||||
msgid ""
|
||||
"Could not retrieve currency: %s. Did you enable the multicurrency option and"
|
||||
" activate the currency ?"
|
||||
msgstr ""
|
||||
|
||||
#. module: account_edi_ubl_cii
|
||||
#. odoo-python
|
||||
#: code:addons/account_edi_ubl_cii/models/account_edi_common.py:0
|
||||
#: code:addons/account_edi_ubl_cii/models/account_edi_common.py:0
|
||||
#, python-format
|
||||
msgid "Could not retrieve the tax: %s %% for line '%s'."
|
||||
msgstr ""
|
||||
|
||||
#. module: account_edi_ubl_cii
|
||||
#. odoo-python
|
||||
#: code:addons/account_edi_ubl_cii/models/account_edi_common.py:0
|
||||
#, python-format
|
||||
msgid "Could not retrieve the unit of measure for line with label '%s'."
|
||||
msgstr ""
|
||||
|
||||
#. module: account_edi_ubl_cii
|
||||
#. odoo-python
|
||||
#: code:addons/account_edi_ubl_cii/models/account_edi_common.py:0
|
||||
#, python-format
|
||||
msgid "Down Payment"
|
||||
msgstr ""
|
||||
|
||||
#. module: account_edi_ubl_cii
|
||||
#. odoo-python
|
||||
#: code:addons/account_edi_ubl_cii/models/account_edi_common.py:0
|
||||
#, python-format
|
||||
msgid "Down Payments"
|
||||
msgstr ""
|
||||
|
||||
#. module: account_edi_ubl_cii
|
||||
#: model:ir.model,name:account_edi_ubl_cii.model_account_edi_xml_ubl_efff
|
||||
msgid "E-FFF (BE)"
|
||||
msgstr ""
|
||||
|
||||
#. module: account_edi_ubl_cii
|
||||
#: model:ir.model,name:account_edi_ubl_cii.model_account_edi_format
|
||||
msgid "EDI format"
|
||||
msgstr ""
|
||||
|
||||
#. module: account_edi_ubl_cii
|
||||
#: model_terms:ir.ui.view,arch_db:account_edi_ubl_cii.account_invoice_pdfa_3_facturx_metadata
|
||||
msgid "EN 16931"
|
||||
msgstr ""
|
||||
|
||||
#. module: account_edi_ubl_cii
|
||||
#. odoo-python
|
||||
#: code:addons/account_edi_ubl_cii/models/account_edi_xml_ubl_bis3.py:0
|
||||
#, python-format
|
||||
msgid "Each invoice line shall have one and only one tax."
|
||||
msgstr ""
|
||||
|
||||
#. module: account_edi_ubl_cii
|
||||
#. odoo-python
|
||||
#: code:addons/account_edi_ubl_cii/models/account_edi_xml_ubl_bis3.py:0
|
||||
#, python-format
|
||||
msgid "Each invoice line should have a product or a label."
|
||||
msgstr ""
|
||||
|
||||
#. module: account_edi_ubl_cii
|
||||
#. odoo-python
|
||||
#: code:addons/account_edi_ubl_cii/models/account_edi_common.py:0
|
||||
#, python-format
|
||||
msgid "Each invoice line should have at least one tax."
|
||||
msgstr ""
|
||||
|
||||
#. module: account_edi_ubl_cii
|
||||
#: model:ir.model,name:account_edi_ubl_cii.model_mail_template
|
||||
msgid "Email Templates"
|
||||
msgstr ""
|
||||
|
||||
#. module: account_edi_ubl_cii
|
||||
#. odoo-python
|
||||
#: code:addons/account_edi_ubl_cii/models/account_edi_format.py:0
|
||||
#, python-format
|
||||
msgid ""
|
||||
"Errors occured while creating the EDI document (format: %s). The receiver "
|
||||
"might refuse it."
|
||||
msgstr ""
|
||||
|
||||
#. module: account_edi_ubl_cii
|
||||
#. odoo-python
|
||||
#: code:addons/account_edi_ubl_cii/models/account_edi_common.py:0
|
||||
#, python-format
|
||||
msgid "Export outside the EU"
|
||||
msgstr ""
|
||||
|
||||
#. module: account_edi_ubl_cii
|
||||
#: model:ir.model,name:account_edi_ubl_cii.model_account_edi_xml_cii
|
||||
msgid "Factur-x/XRechnung CII 2.2.0"
|
||||
msgstr ""
|
||||
|
||||
#. module: account_edi_ubl_cii
|
||||
#. odoo-python
|
||||
#: code:addons/account_edi_ubl_cii/models/account_edi_xml_ubl_bis3.py:0
|
||||
#: code:addons/account_edi_ubl_cii/models/account_edi_xml_ubl_bis3.py:0
|
||||
#, python-format
|
||||
msgid ""
|
||||
"For intracommunity supply, the actual delivery date or the invoicing period "
|
||||
"should be included."
|
||||
msgstr ""
|
||||
|
||||
#. module: account_edi_ubl_cii
|
||||
#. odoo-python
|
||||
#: code:addons/account_edi_ubl_cii/models/account_edi_xml_ubl_bis3.py:0
|
||||
#, python-format
|
||||
msgid "For intracommunity supply, the delivery address should be included."
|
||||
msgstr ""
|
||||
|
||||
#. module: account_edi_ubl_cii
|
||||
#. odoo-python
|
||||
#: code:addons/account_edi_ubl_cii/models/account_edi_common.py:0
|
||||
#, python-format
|
||||
msgid "Intra-Community supply"
|
||||
msgstr ""
|
||||
|
||||
#. module: account_edi_ubl_cii
|
||||
#: model_terms:ir.ui.view,arch_db:account_edi_ubl_cii.account_invoice_pdfa_3_facturx_metadata
|
||||
msgid "Invoice generated by Odoo"
|
||||
msgstr ""
|
||||
|
||||
#. module: account_edi_ubl_cii
|
||||
#. odoo-python
|
||||
#: code:addons/account_edi_ubl_cii/models/account_edi_xml_ubl_bis3.py:0
|
||||
#: code:addons/account_edi_ubl_cii/models/account_edi_xml_ubl_bis3.py:0
|
||||
#, python-format
|
||||
msgid "No Electronic Address Scheme (EAS) could be found for %s."
|
||||
msgstr ""
|
||||
|
||||
#. module: account_edi_ubl_cii
|
||||
#. odoo-python
|
||||
#: code:addons/account_edi_ubl_cii/models/account_edi_common.py:0
|
||||
#, python-format
|
||||
msgid ""
|
||||
"No gross price, net price nor line subtotal amount found for line in xml"
|
||||
msgstr ""
|
||||
|
||||
#. module: account_edi_ubl_cii
|
||||
#: model_terms:ir.ui.view,arch_db:account_edi_ubl_cii.account_invoice_pdfa_3_facturx_metadata
|
||||
msgid "Odoo"
|
||||
msgstr ""
|
||||
|
||||
#. module: account_edi_ubl_cii
|
||||
#: model:ir.model,name:account_edi_ubl_cii.model_ir_actions_report
|
||||
msgid "Report Action"
|
||||
msgstr ""
|
||||
|
||||
#. module: account_edi_ubl_cii
|
||||
#: model:ir.model,name:account_edi_ubl_cii.model_account_edi_xml_ubl_sg
|
||||
msgid "SG BIS Billing 3.0"
|
||||
msgstr ""
|
||||
|
||||
#. module: account_edi_ubl_cii
|
||||
#: model:ir.model,name:account_edi_ubl_cii.model_account_edi_xml_ubl_nl
|
||||
msgid "SI-UBL 2.0 (NLCIUS)"
|
||||
msgstr ""
|
||||
|
||||
#. module: account_edi_ubl_cii
|
||||
#. odoo-python
|
||||
#: code:addons/account_edi_ubl_cii/models/account_edi_common.py:0
|
||||
#, python-format
|
||||
msgid "Tax '%s' is invalid: %s"
|
||||
msgstr ""
|
||||
|
||||
#. module: account_edi_ubl_cii
|
||||
#. odoo-python
|
||||
#: code:addons/account_edi_ubl_cii/models/account_edi_xml_ubl_bis3.py:0
|
||||
#, python-format
|
||||
msgid ""
|
||||
"The VAT number of the supplier does not seem to be valid. It should be of "
|
||||
"the form: NO179728982MVA."
|
||||
msgstr ""
|
||||
|
||||
#. module: account_edi_ubl_cii
|
||||
#. odoo-python
|
||||
#: code:addons/account_edi_ubl_cii/models/account_edi_xml_ubl_bis3.py:0
|
||||
#, python-format
|
||||
msgid "The VAT of the %s should be prefixed with its country code."
|
||||
msgstr ""
|
||||
|
||||
#. module: account_edi_ubl_cii
|
||||
#. odoo-python
|
||||
#: code:addons/account_edi_ubl_cii/models/account_edi_xml_ubl_bis3.py:0
|
||||
#, python-format
|
||||
msgid "The country is required for the %s."
|
||||
msgstr ""
|
||||
|
||||
#. module: account_edi_ubl_cii
|
||||
#. odoo-python
|
||||
#: code:addons/account_edi_ubl_cii/models/account_edi_xml_cii_facturx.py:0
|
||||
#: code:addons/account_edi_ubl_cii/models/account_edi_xml_ubl_20.py:0
|
||||
#, python-format
|
||||
msgid "The currency '%s' is not active."
|
||||
msgstr ""
|
||||
|
||||
#. module: account_edi_ubl_cii
|
||||
#. odoo-python
|
||||
#: code:addons/account_edi_ubl_cii/models/account_edi_xml_ubl_bis3.py:0
|
||||
#, python-format
|
||||
msgid "The customer %s must have a Bronnoysund company registry."
|
||||
msgstr ""
|
||||
|
||||
#. module: account_edi_ubl_cii
|
||||
#. odoo-python
|
||||
#: code:addons/account_edi_ubl_cii/models/account_edi_xml_ubl_bis3.py:0
|
||||
#, python-format
|
||||
msgid "The customer %s must have a KVK or OIN number."
|
||||
msgstr ""
|
||||
|
||||
#. module: account_edi_ubl_cii
|
||||
#. odoo-python
|
||||
#: code:addons/account_edi_ubl_cii/models/account_edi_common.py:0
|
||||
#: code:addons/account_edi_ubl_cii/models/account_edi_common.py:0
|
||||
#, python-format
|
||||
msgid "The element %s is required on %s."
|
||||
msgstr ""
|
||||
|
||||
#. module: account_edi_ubl_cii
|
||||
#. odoo-python
|
||||
#: code:addons/account_edi_ubl_cii/models/account_edi_common.py:0
|
||||
#, python-format
|
||||
msgid "The field %s is required on %s."
|
||||
msgstr ""
|
||||
|
||||
#. module: account_edi_ubl_cii
|
||||
#. odoo-python
|
||||
#: code:addons/account_edi_ubl_cii/models/account_edi_xml_cii_facturx.py:0
|
||||
#, python-format
|
||||
msgid ""
|
||||
"The field 'Sanitized Account Number' is required on the Recipient Bank."
|
||||
msgstr ""
|
||||
|
||||
#. module: account_edi_ubl_cii
|
||||
#. odoo-python
|
||||
#: code:addons/account_edi_ubl_cii/models/account_edi_xml_cii_facturx.py:0
|
||||
#: code:addons/account_edi_ubl_cii/models/account_edi_xml_ubl_20.py:0
|
||||
#, python-format
|
||||
msgid ""
|
||||
"The invoice has been converted into a credit note and the quantities have "
|
||||
"been reverted."
|
||||
msgstr ""
|
||||
|
||||
#. module: account_edi_ubl_cii
|
||||
#. odoo-python
|
||||
#: code:addons/account_edi_ubl_cii/models/account_edi_format.py:0
|
||||
#, python-format
|
||||
msgid ""
|
||||
"The journal in which to upload should either be a sale or a purchase "
|
||||
"journal."
|
||||
msgstr ""
|
||||
|
||||
#. module: account_edi_ubl_cii
|
||||
#. odoo-python
|
||||
#: code:addons/account_edi_ubl_cii/models/account_edi_xml_ubl_bis3.py:0
|
||||
#, python-format
|
||||
msgid "The supplier %s must have a Bronnoysund company registry."
|
||||
msgstr ""
|
||||
|
||||
#. module: account_edi_ubl_cii
|
||||
#. odoo-python
|
||||
#: code:addons/account_edi_ubl_cii/models/account_edi_xml_ubl_bis3.py:0
|
||||
#, python-format
|
||||
msgid "The supplier %s must have a KVK or OIN number."
|
||||
msgstr ""
|
||||
|
||||
#. module: account_edi_ubl_cii
|
||||
#: model:ir.model,name:account_edi_ubl_cii.model_account_edi_xml_ubl_20
|
||||
msgid "UBL 2.0"
|
||||
msgstr ""
|
||||
|
||||
#. module: account_edi_ubl_cii
|
||||
#: model:ir.model,name:account_edi_ubl_cii.model_account_edi_xml_ubl_21
|
||||
msgid "UBL 2.1"
|
||||
msgstr ""
|
||||
|
||||
#. module: account_edi_ubl_cii
|
||||
#: model:ir.model,name:account_edi_ubl_cii.model_account_edi_xml_ubl_bis3
|
||||
msgid "UBL BIS Billing 3.0.12"
|
||||
msgstr ""
|
||||
|
||||
#. module: account_edi_ubl_cii
|
||||
#. odoo-python
|
||||
#: code:addons/account_edi_ubl_cii/models/account_edi_xml_cii_facturx.py:0
|
||||
#, python-format
|
||||
msgid ""
|
||||
"When the Canary Island General Indirect Tax (IGIC) applies, the tax rate on "
|
||||
"each invoice line should be greater than 0."
|
||||
msgstr ""
|
||||
|
||||
#. module: account_edi_ubl_cii
|
||||
#. odoo-python
|
||||
#: code:addons/account_edi_ubl_cii/models/account_edi_xml_cii_facturx.py:0
|
||||
#, python-format
|
||||
msgid ""
|
||||
"You should include at least one tax per invoice line. [BR-CO-04]-Each "
|
||||
"Invoice line (BG-25) shall be categorized with an Invoiced item VAT category"
|
||||
" code (BT-151)."
|
||||
msgstr ""
|
||||
|
||||
#. module: account_edi_ubl_cii
|
||||
#: model_terms:ir.ui.view,arch_db:account_edi_ubl_cii.account_invoice_pdfa_3_facturx_metadata
|
||||
msgid "factur-x.xml"
|
||||
msgstr ""
|
||||
|
||||
#. module: account_edi_ubl_cii
|
||||
#: model_terms:ir.ui.view,arch_db:account_edi_ubl_cii.account_invoice_pdfa_3_facturx_metadata
|
||||
msgid "fx"
|
||||
msgstr ""
|
||||
|
||||
#. module: account_edi_ubl_cii
|
||||
#: model_terms:ir.ui.view,arch_db:account_edi_ubl_cii.account_invoice_pdfa_3_facturx_metadata
|
||||
msgid "urn:factur-x:pdfa:CrossIndustryDocument:invoice:1p0#"
|
||||
msgstr ""
|
||||
File diff suppressed because it is too large
Load diff
File diff suppressed because it is too large
Load diff
File diff suppressed because it is too large
Load diff
File diff suppressed because it is too large
Load diff
File diff suppressed because it is too large
Load diff
File diff suppressed because it is too large
Load diff
File diff suppressed because it is too large
Load diff
File diff suppressed because it is too large
Load diff
|
|
@ -1,432 +0,0 @@
|
|||
# Translation of Odoo Server.
|
||||
# This file contains the translation of the following modules:
|
||||
# * account_edi_ubl_cii
|
||||
#
|
||||
# Translators:
|
||||
# Martin Trigaux, 2022
|
||||
# Dragan Vukosavljevic <dragan.vukosavljevic@gmail.com>, 2022
|
||||
# Milan Bojovic <mbojovic@outlook.com>, 2023
|
||||
# コフスタジオ, 2024
|
||||
# Geoinfo d.o.o. <geoinfobih@gmail.com>, 2024
|
||||
#
|
||||
msgid ""
|
||||
msgstr ""
|
||||
"Project-Id-Version: Odoo Server 16.0\n"
|
||||
"Report-Msgid-Bugs-To: \n"
|
||||
"POT-Creation-Date: 2025-02-10 08:26+0000\n"
|
||||
"PO-Revision-Date: 2022-09-22 05:44+0000\n"
|
||||
"Last-Translator: Geoinfo d.o.o. <geoinfobih@gmail.com>, 2024\n"
|
||||
"Language-Team: Serbian (https://app.transifex.com/odoo/teams/41243/sr/)\n"
|
||||
"MIME-Version: 1.0\n"
|
||||
"Content-Type: text/plain; charset=UTF-8\n"
|
||||
"Content-Transfer-Encoding: \n"
|
||||
"Language: sr\n"
|
||||
"Plural-Forms: nplurals=3; plural=(n%10==1 && n%100!=11 ? 0 : n%10>=2 && n%10<=4 && (n%100<10 || n%100>=20) ? 1 : 2);\n"
|
||||
|
||||
#. module: account_edi_ubl_cii
|
||||
#: model_terms:ir.ui.view,arch_db:account_edi_ubl_cii.account_invoice_pdfa_3_facturx_metadata
|
||||
msgid "1.0"
|
||||
msgstr "1.0"
|
||||
|
||||
#. module: account_edi_ubl_cii
|
||||
#: model_terms:ir.ui.view,arch_db:account_edi_ubl_cii.account_invoice_facturx_export_22
|
||||
msgid "42"
|
||||
msgstr "42"
|
||||
|
||||
#. module: account_edi_ubl_cii
|
||||
#. odoo-python
|
||||
#: code:addons/account_edi_ubl_cii/models/account_edi_common.py:0
|
||||
#, python-format
|
||||
msgid "<strong>Format used to import the invoice: %s</strong>"
|
||||
msgstr ""
|
||||
|
||||
#. module: account_edi_ubl_cii
|
||||
#. odoo-python
|
||||
#: code:addons/account_edi_ubl_cii/models/account_edi_common.py:0
|
||||
#, python-format
|
||||
msgid ""
|
||||
"<strong>Format used to import the invoice: %s</strong> <p><li> %s </li></p>"
|
||||
msgstr ""
|
||||
|
||||
#. module: account_edi_ubl_cii
|
||||
#. odoo-python
|
||||
#: code:addons/account_edi_ubl_cii/models/account_edi_common.py:0
|
||||
#, python-format
|
||||
msgid "A payment of %s was detected."
|
||||
msgstr "A payment of %s was detected."
|
||||
|
||||
#. module: account_edi_ubl_cii
|
||||
#: model:ir.model,name:account_edi_ubl_cii.model_account_edi_xml_ubl_a_nz
|
||||
msgid "A-NZ BIS Billing 3.0"
|
||||
msgstr "A-NZ BIS Billing 3.0"
|
||||
|
||||
#. module: account_edi_ubl_cii
|
||||
#. odoo-python
|
||||
#: code:addons/account_edi_ubl_cii/models/account_edi_common.py:0
|
||||
#: code:addons/account_edi_ubl_cii/models/account_edi_common.py:0
|
||||
#, python-format
|
||||
msgid "Articles 226 items 11 to 15 Directive 2006/112/EN"
|
||||
msgstr "Articles 226 items 11 to 15 Directive 2006/112/EN"
|
||||
|
||||
#. module: account_edi_ubl_cii
|
||||
#. odoo-python
|
||||
#: code:addons/account_edi_ubl_cii/models/account_edi_common.py:0
|
||||
#, python-format
|
||||
msgid "At least one of the following fields %s is required on %s."
|
||||
msgstr "At least one of the following fields %s is required on %s."
|
||||
|
||||
#. module: account_edi_ubl_cii
|
||||
#: model:ir.model,name:account_edi_ubl_cii.model_account_edi_xml_ubl_de
|
||||
msgid "BIS3 DE (XRechnung)"
|
||||
msgstr "BIS3 DE (XRechnung)"
|
||||
|
||||
#. module: account_edi_ubl_cii
|
||||
#: model:ir.model,name:account_edi_ubl_cii.model_account_edi_common
|
||||
msgid ""
|
||||
"Common functions for EDI documents: generate the data, the constraints, etc"
|
||||
msgstr ""
|
||||
"Common functions for EDI documents: generate the data, the constraints, etc"
|
||||
|
||||
#. module: account_edi_ubl_cii
|
||||
#. odoo-python
|
||||
#: code:addons/account_edi_ubl_cii/models/account_edi_xml_ubl_20.py:0
|
||||
#: code:addons/account_edi_ubl_cii/models/account_edi_xml_ubl_20.py:0
|
||||
#, python-format
|
||||
msgid "Conditional cash/payment discount"
|
||||
msgstr "Conditional cash/payment discount"
|
||||
|
||||
#. module: account_edi_ubl_cii
|
||||
#. odoo-python
|
||||
#: code:addons/account_edi_ubl_cii/models/account_edi_xml_cii_facturx.py:0
|
||||
#: code:addons/account_edi_ubl_cii/models/account_edi_xml_ubl_20.py:0
|
||||
#, python-format
|
||||
msgid ""
|
||||
"Could not retrieve currency: %s. Did you enable the multicurrency option and"
|
||||
" activate the currency ?"
|
||||
msgstr ""
|
||||
|
||||
#. module: account_edi_ubl_cii
|
||||
#. odoo-python
|
||||
#: code:addons/account_edi_ubl_cii/models/account_edi_common.py:0
|
||||
#: code:addons/account_edi_ubl_cii/models/account_edi_common.py:0
|
||||
#, python-format
|
||||
msgid "Could not retrieve the tax: %s %% for line '%s'."
|
||||
msgstr "Could not retrieve the tax: %s %% for line '%s'."
|
||||
|
||||
#. module: account_edi_ubl_cii
|
||||
#. odoo-python
|
||||
#: code:addons/account_edi_ubl_cii/models/account_edi_common.py:0
|
||||
#, python-format
|
||||
msgid "Could not retrieve the unit of measure for line with label '%s'."
|
||||
msgstr "Could not retrieve the unit of measure for line with label '%s'."
|
||||
|
||||
#. module: account_edi_ubl_cii
|
||||
#. odoo-python
|
||||
#: code:addons/account_edi_ubl_cii/models/account_edi_common.py:0
|
||||
#, python-format
|
||||
msgid "Down Payment"
|
||||
msgstr "Down Payment"
|
||||
|
||||
#. module: account_edi_ubl_cii
|
||||
#. odoo-python
|
||||
#: code:addons/account_edi_ubl_cii/models/account_edi_common.py:0
|
||||
#, python-format
|
||||
msgid "Down Payments"
|
||||
msgstr "Avansa"
|
||||
|
||||
#. module: account_edi_ubl_cii
|
||||
#: model:ir.model,name:account_edi_ubl_cii.model_account_edi_xml_ubl_efff
|
||||
msgid "E-FFF (BE)"
|
||||
msgstr "E-FFF (BE)"
|
||||
|
||||
#. module: account_edi_ubl_cii
|
||||
#: model:ir.model,name:account_edi_ubl_cii.model_account_edi_format
|
||||
msgid "EDI format"
|
||||
msgstr "EDI format"
|
||||
|
||||
#. module: account_edi_ubl_cii
|
||||
#: model_terms:ir.ui.view,arch_db:account_edi_ubl_cii.account_invoice_pdfa_3_facturx_metadata
|
||||
msgid "EN 16931"
|
||||
msgstr "EN 16931"
|
||||
|
||||
#. module: account_edi_ubl_cii
|
||||
#. odoo-python
|
||||
#: code:addons/account_edi_ubl_cii/models/account_edi_xml_ubl_bis3.py:0
|
||||
#, python-format
|
||||
msgid "Each invoice line shall have one and only one tax."
|
||||
msgstr "Each invoice line shall have one and only one tax."
|
||||
|
||||
#. module: account_edi_ubl_cii
|
||||
#. odoo-python
|
||||
#: code:addons/account_edi_ubl_cii/models/account_edi_xml_ubl_bis3.py:0
|
||||
#, python-format
|
||||
msgid "Each invoice line should have a product or a label."
|
||||
msgstr "Each invoice line should have a product or a label."
|
||||
|
||||
#. module: account_edi_ubl_cii
|
||||
#. odoo-python
|
||||
#: code:addons/account_edi_ubl_cii/models/account_edi_common.py:0
|
||||
#, python-format
|
||||
msgid "Each invoice line should have at least one tax."
|
||||
msgstr "Each invoice line should have at least one tax."
|
||||
|
||||
#. module: account_edi_ubl_cii
|
||||
#: model:ir.model,name:account_edi_ubl_cii.model_mail_template
|
||||
msgid "Email Templates"
|
||||
msgstr "Sabloni Poruka"
|
||||
|
||||
#. module: account_edi_ubl_cii
|
||||
#. odoo-python
|
||||
#: code:addons/account_edi_ubl_cii/models/account_edi_format.py:0
|
||||
#, python-format
|
||||
msgid ""
|
||||
"Errors occured while creating the EDI document (format: %s). The receiver "
|
||||
"might refuse it."
|
||||
msgstr ""
|
||||
|
||||
#. module: account_edi_ubl_cii
|
||||
#. odoo-python
|
||||
#: code:addons/account_edi_ubl_cii/models/account_edi_common.py:0
|
||||
#, python-format
|
||||
msgid "Export outside the EU"
|
||||
msgstr "Export outside the EU"
|
||||
|
||||
#. module: account_edi_ubl_cii
|
||||
#: model:ir.model,name:account_edi_ubl_cii.model_account_edi_xml_cii
|
||||
msgid "Factur-x/XRechnung CII 2.2.0"
|
||||
msgstr "Factur-x/XRechnung CII 2.2.0"
|
||||
|
||||
#. module: account_edi_ubl_cii
|
||||
#. odoo-python
|
||||
#: code:addons/account_edi_ubl_cii/models/account_edi_xml_ubl_bis3.py:0
|
||||
#: code:addons/account_edi_ubl_cii/models/account_edi_xml_ubl_bis3.py:0
|
||||
#, python-format
|
||||
msgid ""
|
||||
"For intracommunity supply, the actual delivery date or the invoicing period "
|
||||
"should be included."
|
||||
msgstr ""
|
||||
"For intracommunity supply, the actual delivery date or the invoicing period "
|
||||
"should be included."
|
||||
|
||||
#. module: account_edi_ubl_cii
|
||||
#. odoo-python
|
||||
#: code:addons/account_edi_ubl_cii/models/account_edi_xml_ubl_bis3.py:0
|
||||
#, python-format
|
||||
msgid "For intracommunity supply, the delivery address should be included."
|
||||
msgstr "For intracommunity supply, the delivery address should be included."
|
||||
|
||||
#. module: account_edi_ubl_cii
|
||||
#. odoo-python
|
||||
#: code:addons/account_edi_ubl_cii/models/account_edi_common.py:0
|
||||
#, python-format
|
||||
msgid "Intra-Community supply"
|
||||
msgstr "Intra-Community supply"
|
||||
|
||||
#. module: account_edi_ubl_cii
|
||||
#: model_terms:ir.ui.view,arch_db:account_edi_ubl_cii.account_invoice_pdfa_3_facturx_metadata
|
||||
msgid "Invoice generated by Odoo"
|
||||
msgstr "Invoice generated by Odoo"
|
||||
|
||||
#. module: account_edi_ubl_cii
|
||||
#. odoo-python
|
||||
#: code:addons/account_edi_ubl_cii/models/account_edi_xml_ubl_bis3.py:0
|
||||
#: code:addons/account_edi_ubl_cii/models/account_edi_xml_ubl_bis3.py:0
|
||||
#, python-format
|
||||
msgid "No Electronic Address Scheme (EAS) could be found for %s."
|
||||
msgstr ""
|
||||
|
||||
#. module: account_edi_ubl_cii
|
||||
#. odoo-python
|
||||
#: code:addons/account_edi_ubl_cii/models/account_edi_common.py:0
|
||||
#, python-format
|
||||
msgid ""
|
||||
"No gross price, net price nor line subtotal amount found for line in xml"
|
||||
msgstr ""
|
||||
"No gross price, net price nor line subtotal amount found for line in xml"
|
||||
|
||||
#. module: account_edi_ubl_cii
|
||||
#: model_terms:ir.ui.view,arch_db:account_edi_ubl_cii.account_invoice_pdfa_3_facturx_metadata
|
||||
msgid "Odoo"
|
||||
msgstr "Odoo"
|
||||
|
||||
#. module: account_edi_ubl_cii
|
||||
#: model:ir.model,name:account_edi_ubl_cii.model_ir_actions_report
|
||||
msgid "Report Action"
|
||||
msgstr "Izveštaj o akciji"
|
||||
|
||||
#. module: account_edi_ubl_cii
|
||||
#: model:ir.model,name:account_edi_ubl_cii.model_account_edi_xml_ubl_sg
|
||||
msgid "SG BIS Billing 3.0"
|
||||
msgstr "SG BIS Billing 3.0"
|
||||
|
||||
#. module: account_edi_ubl_cii
|
||||
#: model:ir.model,name:account_edi_ubl_cii.model_account_edi_xml_ubl_nl
|
||||
msgid "SI-UBL 2.0 (NLCIUS)"
|
||||
msgstr "SI-UBL 2.0 (NLCIUS)"
|
||||
|
||||
#. module: account_edi_ubl_cii
|
||||
#. odoo-python
|
||||
#: code:addons/account_edi_ubl_cii/models/account_edi_common.py:0
|
||||
#, python-format
|
||||
msgid "Tax '%s' is invalid: %s"
|
||||
msgstr "Tax '%s' is invalid: %s"
|
||||
|
||||
#. module: account_edi_ubl_cii
|
||||
#. odoo-python
|
||||
#: code:addons/account_edi_ubl_cii/models/account_edi_xml_ubl_bis3.py:0
|
||||
#, python-format
|
||||
msgid ""
|
||||
"The VAT number of the supplier does not seem to be valid. It should be of "
|
||||
"the form: NO179728982MVA."
|
||||
msgstr ""
|
||||
"The VAT number of the supplier does not seem to be valid. It should be of "
|
||||
"the form: NO179728982MVA."
|
||||
|
||||
#. module: account_edi_ubl_cii
|
||||
#. odoo-python
|
||||
#: code:addons/account_edi_ubl_cii/models/account_edi_xml_ubl_bis3.py:0
|
||||
#, python-format
|
||||
msgid "The VAT of the %s should be prefixed with its country code."
|
||||
msgstr "PDV za %s treba da ima prefiks svoje zemlje."
|
||||
|
||||
#. module: account_edi_ubl_cii
|
||||
#. odoo-python
|
||||
#: code:addons/account_edi_ubl_cii/models/account_edi_xml_ubl_bis3.py:0
|
||||
#, python-format
|
||||
msgid "The country is required for the %s."
|
||||
msgstr "Država je obavezna za %s."
|
||||
|
||||
#. module: account_edi_ubl_cii
|
||||
#. odoo-python
|
||||
#: code:addons/account_edi_ubl_cii/models/account_edi_xml_cii_facturx.py:0
|
||||
#: code:addons/account_edi_ubl_cii/models/account_edi_xml_ubl_20.py:0
|
||||
#, python-format
|
||||
msgid "The currency '%s' is not active."
|
||||
msgstr "The currency '%s' is not active."
|
||||
|
||||
#. module: account_edi_ubl_cii
|
||||
#. odoo-python
|
||||
#: code:addons/account_edi_ubl_cii/models/account_edi_xml_ubl_bis3.py:0
|
||||
#, python-format
|
||||
msgid "The customer %s must have a Bronnoysund company registry."
|
||||
msgstr ""
|
||||
|
||||
#. module: account_edi_ubl_cii
|
||||
#. odoo-python
|
||||
#: code:addons/account_edi_ubl_cii/models/account_edi_xml_ubl_bis3.py:0
|
||||
#, python-format
|
||||
msgid "The customer %s must have a KVK or OIN number."
|
||||
msgstr ""
|
||||
|
||||
#. module: account_edi_ubl_cii
|
||||
#. odoo-python
|
||||
#: code:addons/account_edi_ubl_cii/models/account_edi_common.py:0
|
||||
#: code:addons/account_edi_ubl_cii/models/account_edi_common.py:0
|
||||
#, python-format
|
||||
msgid "The element %s is required on %s."
|
||||
msgstr "The element %s is required on %s."
|
||||
|
||||
#. module: account_edi_ubl_cii
|
||||
#. odoo-python
|
||||
#: code:addons/account_edi_ubl_cii/models/account_edi_common.py:0
|
||||
#, python-format
|
||||
msgid "The field %s is required on %s."
|
||||
msgstr "The field %s is required on %s."
|
||||
|
||||
#. module: account_edi_ubl_cii
|
||||
#. odoo-python
|
||||
#: code:addons/account_edi_ubl_cii/models/account_edi_xml_cii_facturx.py:0
|
||||
#, python-format
|
||||
msgid ""
|
||||
"The field 'Sanitized Account Number' is required on the Recipient Bank."
|
||||
msgstr ""
|
||||
"The field 'Sanitized Account Number' is required on the Recipient Bank."
|
||||
|
||||
#. module: account_edi_ubl_cii
|
||||
#. odoo-python
|
||||
#: code:addons/account_edi_ubl_cii/models/account_edi_xml_cii_facturx.py:0
|
||||
#: code:addons/account_edi_ubl_cii/models/account_edi_xml_ubl_20.py:0
|
||||
#, python-format
|
||||
msgid ""
|
||||
"The invoice has been converted into a credit note and the quantities have "
|
||||
"been reverted."
|
||||
msgstr ""
|
||||
"The invoice has been converted into a credit note and the quantities have "
|
||||
"been reverted."
|
||||
|
||||
#. module: account_edi_ubl_cii
|
||||
#. odoo-python
|
||||
#: code:addons/account_edi_ubl_cii/models/account_edi_format.py:0
|
||||
#, python-format
|
||||
msgid ""
|
||||
"The journal in which to upload should either be a sale or a purchase "
|
||||
"journal."
|
||||
msgstr ""
|
||||
|
||||
#. module: account_edi_ubl_cii
|
||||
#. odoo-python
|
||||
#: code:addons/account_edi_ubl_cii/models/account_edi_xml_ubl_bis3.py:0
|
||||
#, python-format
|
||||
msgid "The supplier %s must have a Bronnoysund company registry."
|
||||
msgstr "The supplier %s must have a Bronnoysund company registry."
|
||||
|
||||
#. module: account_edi_ubl_cii
|
||||
#. odoo-python
|
||||
#: code:addons/account_edi_ubl_cii/models/account_edi_xml_ubl_bis3.py:0
|
||||
#, python-format
|
||||
msgid "The supplier %s must have a KVK or OIN number."
|
||||
msgstr ""
|
||||
|
||||
#. module: account_edi_ubl_cii
|
||||
#: model:ir.model,name:account_edi_ubl_cii.model_account_edi_xml_ubl_20
|
||||
msgid "UBL 2.0"
|
||||
msgstr "UBL 2.0"
|
||||
|
||||
#. module: account_edi_ubl_cii
|
||||
#: model:ir.model,name:account_edi_ubl_cii.model_account_edi_xml_ubl_21
|
||||
msgid "UBL 2.1"
|
||||
msgstr "UBL 2.1"
|
||||
|
||||
#. module: account_edi_ubl_cii
|
||||
#: model:ir.model,name:account_edi_ubl_cii.model_account_edi_xml_ubl_bis3
|
||||
msgid "UBL BIS Billing 3.0.12"
|
||||
msgstr "UBL BIS Billing 3.0.12"
|
||||
|
||||
#. module: account_edi_ubl_cii
|
||||
#. odoo-python
|
||||
#: code:addons/account_edi_ubl_cii/models/account_edi_xml_cii_facturx.py:0
|
||||
#, python-format
|
||||
msgid ""
|
||||
"When the Canary Island General Indirect Tax (IGIC) applies, the tax rate on "
|
||||
"each invoice line should be greater than 0."
|
||||
msgstr ""
|
||||
"When the Canary Island General Indirect Tax (IGIC) applies, the tax rate on "
|
||||
"each invoice line should be greater than 0."
|
||||
|
||||
#. module: account_edi_ubl_cii
|
||||
#. odoo-python
|
||||
#: code:addons/account_edi_ubl_cii/models/account_edi_xml_cii_facturx.py:0
|
||||
#, python-format
|
||||
msgid ""
|
||||
"You should include at least one tax per invoice line. [BR-CO-04]-Each "
|
||||
"Invoice line (BG-25) shall be categorized with an Invoiced item VAT category"
|
||||
" code (BT-151)."
|
||||
msgstr ""
|
||||
"You should include at least one tax per invoice line. [BR-CO-04]-Each "
|
||||
"Invoice line (BG-25) shall be categorized with an Invoiced item VAT category"
|
||||
" code (BT-151)."
|
||||
|
||||
#. module: account_edi_ubl_cii
|
||||
#: model_terms:ir.ui.view,arch_db:account_edi_ubl_cii.account_invoice_pdfa_3_facturx_metadata
|
||||
msgid "factur-x.xml"
|
||||
msgstr "factur-x.xml"
|
||||
|
||||
#. module: account_edi_ubl_cii
|
||||
#: model_terms:ir.ui.view,arch_db:account_edi_ubl_cii.account_invoice_pdfa_3_facturx_metadata
|
||||
msgid "fx"
|
||||
msgstr "fx"
|
||||
|
||||
#. module: account_edi_ubl_cii
|
||||
#: model_terms:ir.ui.view,arch_db:account_edi_ubl_cii.account_invoice_pdfa_3_facturx_metadata
|
||||
msgid "urn:factur-x:pdfa:CrossIndustryDocument:invoice:1p0#"
|
||||
msgstr "urn:factur-x:pdfa:CrossIndustryDocument:invoice:1p0#"
|
||||
File diff suppressed because it is too large
Load diff
File diff suppressed because it is too large
Load diff
|
|
@ -1,424 +0,0 @@
|
|||
# Translation of Odoo Server.
|
||||
# This file contains the translation of the following modules:
|
||||
# * account_edi_ubl_cii
|
||||
#
|
||||
msgid ""
|
||||
msgstr ""
|
||||
"Project-Id-Version: Odoo Server 16.0\n"
|
||||
"Report-Msgid-Bugs-To: \n"
|
||||
"POT-Creation-Date: 2024-02-06 13:31+0000\n"
|
||||
"PO-Revision-Date: 2022-09-22 05:44+0000\n"
|
||||
"Language-Team: Swahili (https://app.transifex.com/odoo/teams/41243/sw/)\n"
|
||||
"MIME-Version: 1.0\n"
|
||||
"Content-Type: text/plain; charset=UTF-8\n"
|
||||
"Content-Transfer-Encoding: \n"
|
||||
"Language: sw\n"
|
||||
"Plural-Forms: nplurals=2; plural=(n != 1);\n"
|
||||
|
||||
#. module: account_edi_ubl_cii
|
||||
#: model_terms:ir.ui.view,arch_db:account_edi_ubl_cii.account_invoice_pdfa_3_facturx_metadata
|
||||
msgid "1.0"
|
||||
msgstr ""
|
||||
|
||||
#. module: account_edi_ubl_cii
|
||||
#: model_terms:ir.ui.view,arch_db:account_edi_ubl_cii.account_invoice_facturx_export_22
|
||||
msgid "42"
|
||||
msgstr ""
|
||||
|
||||
#. module: account_edi_ubl_cii
|
||||
#. odoo-python
|
||||
#: code:addons/account_edi_ubl_cii/models/account_edi_common.py:0
|
||||
#, python-format
|
||||
msgid "<strong>Format used to import the invoice: %s</strong>"
|
||||
msgstr ""
|
||||
|
||||
#. module: account_edi_ubl_cii
|
||||
#. odoo-python
|
||||
#: code:addons/account_edi_ubl_cii/models/account_edi_common.py:0
|
||||
#, python-format
|
||||
msgid ""
|
||||
"<strong>Format used to import the invoice: %s</strong> <p><li> %s </li></p>"
|
||||
msgstr ""
|
||||
|
||||
#. module: account_edi_ubl_cii
|
||||
#. odoo-python
|
||||
#: code:addons/account_edi_ubl_cii/models/account_edi_common.py:0
|
||||
#, python-format
|
||||
msgid "A payment of %s was detected."
|
||||
msgstr ""
|
||||
|
||||
#. module: account_edi_ubl_cii
|
||||
#: model:ir.model,name:account_edi_ubl_cii.model_account_edi_xml_ubl_a_nz
|
||||
msgid "A-NZ BIS Billing 3.0"
|
||||
msgstr ""
|
||||
|
||||
#. module: account_edi_ubl_cii
|
||||
#. odoo-python
|
||||
#: code:addons/account_edi_ubl_cii/models/account_edi_common.py:0
|
||||
#: code:addons/account_edi_ubl_cii/models/account_edi_common.py:0
|
||||
#, python-format
|
||||
msgid "Articles 226 items 11 to 15 Directive 2006/112/EN"
|
||||
msgstr ""
|
||||
|
||||
#. module: account_edi_ubl_cii
|
||||
#. odoo-python
|
||||
#: code:addons/account_edi_ubl_cii/models/account_edi_common.py:0
|
||||
#, python-format
|
||||
msgid "At least one of the following fields %s is required on %s."
|
||||
msgstr ""
|
||||
|
||||
#. module: account_edi_ubl_cii
|
||||
#: model:ir.model,name:account_edi_ubl_cii.model_account_edi_xml_ubl_de
|
||||
msgid "BIS3 DE (XRechnung)"
|
||||
msgstr ""
|
||||
|
||||
#. module: account_edi_ubl_cii
|
||||
#: model:ir.model,name:account_edi_ubl_cii.model_account_edi_common
|
||||
msgid ""
|
||||
"Common functions for EDI documents: generate the data, the constraints, etc"
|
||||
msgstr ""
|
||||
|
||||
#. module: account_edi_ubl_cii
|
||||
#. odoo-python
|
||||
#: code:addons/account_edi_ubl_cii/models/account_edi_xml_ubl_20.py:0
|
||||
#: code:addons/account_edi_ubl_cii/models/account_edi_xml_ubl_20.py:0
|
||||
#, python-format
|
||||
msgid "Conditional cash/payment discount"
|
||||
msgstr ""
|
||||
|
||||
#. module: account_edi_ubl_cii
|
||||
#. odoo-python
|
||||
#: code:addons/account_edi_ubl_cii/models/account_edi_xml_cii_facturx.py:0
|
||||
#: code:addons/account_edi_ubl_cii/models/account_edi_xml_ubl_20.py:0
|
||||
#, python-format
|
||||
msgid ""
|
||||
"Could not retrieve currency: %s. Did you enable the multicurrency option and"
|
||||
" activate the currency ?"
|
||||
msgstr ""
|
||||
|
||||
#. module: account_edi_ubl_cii
|
||||
#. odoo-python
|
||||
#: code:addons/account_edi_ubl_cii/models/account_edi_common.py:0
|
||||
#: code:addons/account_edi_ubl_cii/models/account_edi_common.py:0
|
||||
#, python-format
|
||||
msgid "Could not retrieve the tax: %s %% for line '%s'."
|
||||
msgstr ""
|
||||
|
||||
#. module: account_edi_ubl_cii
|
||||
#. odoo-python
|
||||
#: code:addons/account_edi_ubl_cii/models/account_edi_common.py:0
|
||||
#, python-format
|
||||
msgid "Could not retrieve the unit of measure for line with label '%s'."
|
||||
msgstr ""
|
||||
|
||||
#. module: account_edi_ubl_cii
|
||||
#. odoo-python
|
||||
#: code:addons/account_edi_ubl_cii/models/account_edi_common.py:0
|
||||
#, python-format
|
||||
msgid "Down Payment"
|
||||
msgstr ""
|
||||
|
||||
#. module: account_edi_ubl_cii
|
||||
#. odoo-python
|
||||
#: code:addons/account_edi_ubl_cii/models/account_edi_common.py:0
|
||||
#, python-format
|
||||
msgid "Down Payments"
|
||||
msgstr ""
|
||||
|
||||
#. module: account_edi_ubl_cii
|
||||
#: model:ir.model,name:account_edi_ubl_cii.model_account_edi_xml_ubl_efff
|
||||
msgid "E-FFF (BE)"
|
||||
msgstr ""
|
||||
|
||||
#. module: account_edi_ubl_cii
|
||||
#: model:ir.model,name:account_edi_ubl_cii.model_account_edi_format
|
||||
msgid "EDI format"
|
||||
msgstr ""
|
||||
|
||||
#. module: account_edi_ubl_cii
|
||||
#: model_terms:ir.ui.view,arch_db:account_edi_ubl_cii.account_invoice_pdfa_3_facturx_metadata
|
||||
msgid "EN 16931"
|
||||
msgstr ""
|
||||
|
||||
#. module: account_edi_ubl_cii
|
||||
#. odoo-python
|
||||
#: code:addons/account_edi_ubl_cii/models/account_edi_xml_ubl_bis3.py:0
|
||||
#, python-format
|
||||
msgid "Each invoice line shall have one and only one tax."
|
||||
msgstr ""
|
||||
|
||||
#. module: account_edi_ubl_cii
|
||||
#. odoo-python
|
||||
#: code:addons/account_edi_ubl_cii/models/account_edi_xml_ubl_bis3.py:0
|
||||
#, python-format
|
||||
msgid "Each invoice line should have a product or a label."
|
||||
msgstr ""
|
||||
|
||||
#. module: account_edi_ubl_cii
|
||||
#. odoo-python
|
||||
#: code:addons/account_edi_ubl_cii/models/account_edi_common.py:0
|
||||
#, python-format
|
||||
msgid "Each invoice line should have at least one tax."
|
||||
msgstr ""
|
||||
|
||||
#. module: account_edi_ubl_cii
|
||||
#: model:ir.model,name:account_edi_ubl_cii.model_mail_template
|
||||
msgid "Email Templates"
|
||||
msgstr ""
|
||||
|
||||
#. module: account_edi_ubl_cii
|
||||
#. odoo-python
|
||||
#: code:addons/account_edi_ubl_cii/models/account_edi_format.py:0
|
||||
#, python-format
|
||||
msgid ""
|
||||
"Errors occured while creating the EDI document (format: %s). The receiver "
|
||||
"might refuse it."
|
||||
msgstr ""
|
||||
|
||||
#. module: account_edi_ubl_cii
|
||||
#. odoo-python
|
||||
#: code:addons/account_edi_ubl_cii/models/account_edi_common.py:0
|
||||
#, python-format
|
||||
msgid "Export outside the EU"
|
||||
msgstr ""
|
||||
|
||||
#. module: account_edi_ubl_cii
|
||||
#: model:ir.model,name:account_edi_ubl_cii.model_account_edi_xml_cii
|
||||
msgid "Factur-x/XRechnung CII 2.2.0"
|
||||
msgstr ""
|
||||
|
||||
#. module: account_edi_ubl_cii
|
||||
#. odoo-python
|
||||
#: code:addons/account_edi_ubl_cii/models/account_edi_xml_ubl_bis3.py:0
|
||||
#: code:addons/account_edi_ubl_cii/models/account_edi_xml_ubl_bis3.py:0
|
||||
#, python-format
|
||||
msgid ""
|
||||
"For intracommunity supply, the actual delivery date or the invoicing period "
|
||||
"should be included."
|
||||
msgstr ""
|
||||
|
||||
#. module: account_edi_ubl_cii
|
||||
#. odoo-python
|
||||
#: code:addons/account_edi_ubl_cii/models/account_edi_xml_ubl_bis3.py:0
|
||||
#, python-format
|
||||
msgid "For intracommunity supply, the delivery address should be included."
|
||||
msgstr ""
|
||||
|
||||
#. module: account_edi_ubl_cii
|
||||
#. odoo-python
|
||||
#: code:addons/account_edi_ubl_cii/models/account_edi_common.py:0
|
||||
#, python-format
|
||||
msgid "Intra-Community supply"
|
||||
msgstr ""
|
||||
|
||||
#. module: account_edi_ubl_cii
|
||||
#: model_terms:ir.ui.view,arch_db:account_edi_ubl_cii.account_invoice_pdfa_3_facturx_metadata
|
||||
msgid "Invoice generated by Odoo"
|
||||
msgstr ""
|
||||
|
||||
#. module: account_edi_ubl_cii
|
||||
#. odoo-python
|
||||
#: code:addons/account_edi_ubl_cii/models/account_edi_xml_ubl_bis3.py:0
|
||||
#: code:addons/account_edi_ubl_cii/models/account_edi_xml_ubl_bis3.py:0
|
||||
#, python-format
|
||||
msgid "No Electronic Address Scheme (EAS) could be found for %s."
|
||||
msgstr ""
|
||||
|
||||
#. module: account_edi_ubl_cii
|
||||
#. odoo-python
|
||||
#: code:addons/account_edi_ubl_cii/models/account_edi_common.py:0
|
||||
#, python-format
|
||||
msgid ""
|
||||
"No gross price, net price nor line subtotal amount found for line in xml"
|
||||
msgstr ""
|
||||
|
||||
#. module: account_edi_ubl_cii
|
||||
#: model_terms:ir.ui.view,arch_db:account_edi_ubl_cii.account_invoice_pdfa_3_facturx_metadata
|
||||
msgid "Odoo"
|
||||
msgstr ""
|
||||
|
||||
#. module: account_edi_ubl_cii
|
||||
#: model:ir.model,name:account_edi_ubl_cii.model_ir_actions_report
|
||||
msgid "Report Action"
|
||||
msgstr ""
|
||||
|
||||
#. module: account_edi_ubl_cii
|
||||
#: model:ir.model,name:account_edi_ubl_cii.model_account_edi_xml_ubl_sg
|
||||
msgid "SG BIS Billing 3.0"
|
||||
msgstr ""
|
||||
|
||||
#. module: account_edi_ubl_cii
|
||||
#: model:ir.model,name:account_edi_ubl_cii.model_account_edi_xml_ubl_nl
|
||||
msgid "SI-UBL 2.0 (NLCIUS)"
|
||||
msgstr ""
|
||||
|
||||
#. module: account_edi_ubl_cii
|
||||
#. odoo-python
|
||||
#: code:addons/account_edi_ubl_cii/models/account_edi_common.py:0
|
||||
#, python-format
|
||||
msgid "Tax '%s' is invalid: %s"
|
||||
msgstr ""
|
||||
|
||||
#. module: account_edi_ubl_cii
|
||||
#. odoo-python
|
||||
#: code:addons/account_edi_ubl_cii/models/account_edi_xml_ubl_bis3.py:0
|
||||
#, python-format
|
||||
msgid ""
|
||||
"The VAT number of the supplier does not seem to be valid. It should be of "
|
||||
"the form: NO179728982MVA."
|
||||
msgstr ""
|
||||
|
||||
#. module: account_edi_ubl_cii
|
||||
#. odoo-python
|
||||
#: code:addons/account_edi_ubl_cii/models/account_edi_xml_ubl_bis3.py:0
|
||||
#, python-format
|
||||
msgid "The VAT of the %s should be prefixed with its country code."
|
||||
msgstr ""
|
||||
|
||||
#. module: account_edi_ubl_cii
|
||||
#. odoo-python
|
||||
#: code:addons/account_edi_ubl_cii/models/account_edi_xml_ubl_bis3.py:0
|
||||
#, python-format
|
||||
msgid "The country is required for the %s."
|
||||
msgstr ""
|
||||
|
||||
#. module: account_edi_ubl_cii
|
||||
#. odoo-python
|
||||
#: code:addons/account_edi_ubl_cii/models/account_edi_xml_cii_facturx.py:0
|
||||
#: code:addons/account_edi_ubl_cii/models/account_edi_xml_ubl_20.py:0
|
||||
#, python-format
|
||||
msgid "The currency '%s' is not active."
|
||||
msgstr ""
|
||||
|
||||
#. module: account_edi_ubl_cii
|
||||
#. odoo-python
|
||||
#: code:addons/account_edi_ubl_cii/models/account_edi_xml_ubl_bis3.py:0
|
||||
#, python-format
|
||||
msgid "The customer %s must have a Bronnoysund company registry."
|
||||
msgstr ""
|
||||
|
||||
#. module: account_edi_ubl_cii
|
||||
#. odoo-python
|
||||
#: code:addons/account_edi_ubl_cii/models/account_edi_xml_ubl_bis3.py:0
|
||||
#, python-format
|
||||
msgid "The customer %s must have a KVK or OIN number."
|
||||
msgstr ""
|
||||
|
||||
#. module: account_edi_ubl_cii
|
||||
#. odoo-python
|
||||
#: code:addons/account_edi_ubl_cii/models/account_edi_common.py:0
|
||||
#: code:addons/account_edi_ubl_cii/models/account_edi_common.py:0
|
||||
#, python-format
|
||||
msgid "The element %s is required on %s."
|
||||
msgstr ""
|
||||
|
||||
#. module: account_edi_ubl_cii
|
||||
#. odoo-python
|
||||
#: code:addons/account_edi_ubl_cii/models/account_edi_common.py:0
|
||||
#, python-format
|
||||
msgid "The field %s is required on %s."
|
||||
msgstr ""
|
||||
|
||||
#. module: account_edi_ubl_cii
|
||||
#. odoo-python
|
||||
#: code:addons/account_edi_ubl_cii/models/account_edi_xml_cii_facturx.py:0
|
||||
#, python-format
|
||||
msgid ""
|
||||
"The field 'Sanitized Account Number' is required on the Recipient Bank."
|
||||
msgstr ""
|
||||
|
||||
#. module: account_edi_ubl_cii
|
||||
#. odoo-python
|
||||
#: code:addons/account_edi_ubl_cii/models/account_edi_xml_ubl_bis3.py:0
|
||||
#, python-format
|
||||
msgid ""
|
||||
"The invoice contains line(s) with a negative unit price, which is not "
|
||||
"allowed. You might need to set a negative quantity instead."
|
||||
msgstr ""
|
||||
|
||||
#. module: account_edi_ubl_cii
|
||||
#. odoo-python
|
||||
#: code:addons/account_edi_ubl_cii/models/account_edi_xml_cii_facturx.py:0
|
||||
#: code:addons/account_edi_ubl_cii/models/account_edi_xml_ubl_20.py:0
|
||||
#, python-format
|
||||
msgid ""
|
||||
"The invoice has been converted into a credit note and the quantities have "
|
||||
"been reverted."
|
||||
msgstr ""
|
||||
|
||||
#. module: account_edi_ubl_cii
|
||||
#. odoo-python
|
||||
#: code:addons/account_edi_ubl_cii/models/account_edi_format.py:0
|
||||
#, python-format
|
||||
msgid ""
|
||||
"The journal in which to upload should either be a sale or a purchase "
|
||||
"journal."
|
||||
msgstr ""
|
||||
|
||||
#. module: account_edi_ubl_cii
|
||||
#. odoo-python
|
||||
#: code:addons/account_edi_ubl_cii/models/account_edi_xml_ubl_bis3.py:0
|
||||
#, python-format
|
||||
msgid "The supplier %s must have a Bronnoysund company registry."
|
||||
msgstr ""
|
||||
|
||||
#. module: account_edi_ubl_cii
|
||||
#. odoo-python
|
||||
#: code:addons/account_edi_ubl_cii/models/account_edi_xml_ubl_bis3.py:0
|
||||
#, python-format
|
||||
msgid "The supplier %s must have a KVK or OIN number."
|
||||
msgstr ""
|
||||
|
||||
#. module: account_edi_ubl_cii
|
||||
#: model:ir.model,name:account_edi_ubl_cii.model_account_edi_xml_ubl_20
|
||||
msgid "UBL 2.0"
|
||||
msgstr ""
|
||||
|
||||
#. module: account_edi_ubl_cii
|
||||
#: model:ir.model,name:account_edi_ubl_cii.model_account_edi_xml_ubl_21
|
||||
msgid "UBL 2.1"
|
||||
msgstr ""
|
||||
|
||||
#. module: account_edi_ubl_cii
|
||||
#: model:ir.model,name:account_edi_ubl_cii.model_account_edi_xml_ubl_bis3
|
||||
msgid "UBL BIS Billing 3.0.12"
|
||||
msgstr ""
|
||||
|
||||
#. module: account_edi_ubl_cii
|
||||
#. odoo-python
|
||||
#: code:addons/account_edi_ubl_cii/models/account_edi_xml_cii_facturx.py:0
|
||||
#, python-format
|
||||
msgid ""
|
||||
"When the Canary Island General Indirect Tax (IGIC) applies, the tax rate on "
|
||||
"each invoice line should be greater than 0."
|
||||
msgstr ""
|
||||
|
||||
#. module: account_edi_ubl_cii
|
||||
#. odoo-python
|
||||
#: code:addons/account_edi_ubl_cii/models/account_edi_xml_cii_facturx.py:0
|
||||
#, python-format
|
||||
msgid ""
|
||||
"You should include at least one tax per invoice line. [BR-CO-04]-Each "
|
||||
"Invoice line (BG-25) shall be categorized with an Invoiced item VAT category"
|
||||
" code (BT-151)."
|
||||
msgstr ""
|
||||
|
||||
#. module: account_edi_ubl_cii
|
||||
#: model_terms:ir.ui.view,arch_db:account_edi_ubl_cii.account_invoice_pdfa_3_facturx_metadata
|
||||
msgid "factur-x.xml"
|
||||
msgstr ""
|
||||
|
||||
#. module: account_edi_ubl_cii
|
||||
#: model_terms:ir.ui.view,arch_db:account_edi_ubl_cii.account_invoice_line_facturx_export_22
|
||||
msgid "false"
|
||||
msgstr ""
|
||||
|
||||
#. module: account_edi_ubl_cii
|
||||
#: model_terms:ir.ui.view,arch_db:account_edi_ubl_cii.account_invoice_pdfa_3_facturx_metadata
|
||||
msgid "fx"
|
||||
msgstr ""
|
||||
|
||||
#. module: account_edi_ubl_cii
|
||||
#: model_terms:ir.ui.view,arch_db:account_edi_ubl_cii.account_invoice_pdfa_3_facturx_metadata
|
||||
msgid "urn:factur-x:pdfa:CrossIndustryDocument:invoice:1p0#"
|
||||
msgstr ""
|
||||
|
|
@ -1,424 +0,0 @@
|
|||
# Translation of Odoo Server.
|
||||
# This file contains the translation of the following modules:
|
||||
# * account_edi_ubl_cii
|
||||
#
|
||||
msgid ""
|
||||
msgstr ""
|
||||
"Project-Id-Version: Odoo Server 16.0\n"
|
||||
"Report-Msgid-Bugs-To: \n"
|
||||
"POT-Creation-Date: 2024-02-06 13:31+0000\n"
|
||||
"PO-Revision-Date: 2022-09-22 05:44+0000\n"
|
||||
"Language-Team: Tamil (https://app.transifex.com/odoo/teams/41243/ta/)\n"
|
||||
"MIME-Version: 1.0\n"
|
||||
"Content-Type: text/plain; charset=UTF-8\n"
|
||||
"Content-Transfer-Encoding: \n"
|
||||
"Language: ta\n"
|
||||
"Plural-Forms: nplurals=2; plural=(n != 1);\n"
|
||||
|
||||
#. module: account_edi_ubl_cii
|
||||
#: model_terms:ir.ui.view,arch_db:account_edi_ubl_cii.account_invoice_pdfa_3_facturx_metadata
|
||||
msgid "1.0"
|
||||
msgstr ""
|
||||
|
||||
#. module: account_edi_ubl_cii
|
||||
#: model_terms:ir.ui.view,arch_db:account_edi_ubl_cii.account_invoice_facturx_export_22
|
||||
msgid "42"
|
||||
msgstr ""
|
||||
|
||||
#. module: account_edi_ubl_cii
|
||||
#. odoo-python
|
||||
#: code:addons/account_edi_ubl_cii/models/account_edi_common.py:0
|
||||
#, python-format
|
||||
msgid "<strong>Format used to import the invoice: %s</strong>"
|
||||
msgstr ""
|
||||
|
||||
#. module: account_edi_ubl_cii
|
||||
#. odoo-python
|
||||
#: code:addons/account_edi_ubl_cii/models/account_edi_common.py:0
|
||||
#, python-format
|
||||
msgid ""
|
||||
"<strong>Format used to import the invoice: %s</strong> <p><li> %s </li></p>"
|
||||
msgstr ""
|
||||
|
||||
#. module: account_edi_ubl_cii
|
||||
#. odoo-python
|
||||
#: code:addons/account_edi_ubl_cii/models/account_edi_common.py:0
|
||||
#, python-format
|
||||
msgid "A payment of %s was detected."
|
||||
msgstr ""
|
||||
|
||||
#. module: account_edi_ubl_cii
|
||||
#: model:ir.model,name:account_edi_ubl_cii.model_account_edi_xml_ubl_a_nz
|
||||
msgid "A-NZ BIS Billing 3.0"
|
||||
msgstr ""
|
||||
|
||||
#. module: account_edi_ubl_cii
|
||||
#. odoo-python
|
||||
#: code:addons/account_edi_ubl_cii/models/account_edi_common.py:0
|
||||
#: code:addons/account_edi_ubl_cii/models/account_edi_common.py:0
|
||||
#, python-format
|
||||
msgid "Articles 226 items 11 to 15 Directive 2006/112/EN"
|
||||
msgstr ""
|
||||
|
||||
#. module: account_edi_ubl_cii
|
||||
#. odoo-python
|
||||
#: code:addons/account_edi_ubl_cii/models/account_edi_common.py:0
|
||||
#, python-format
|
||||
msgid "At least one of the following fields %s is required on %s."
|
||||
msgstr ""
|
||||
|
||||
#. module: account_edi_ubl_cii
|
||||
#: model:ir.model,name:account_edi_ubl_cii.model_account_edi_xml_ubl_de
|
||||
msgid "BIS3 DE (XRechnung)"
|
||||
msgstr ""
|
||||
|
||||
#. module: account_edi_ubl_cii
|
||||
#: model:ir.model,name:account_edi_ubl_cii.model_account_edi_common
|
||||
msgid ""
|
||||
"Common functions for EDI documents: generate the data, the constraints, etc"
|
||||
msgstr ""
|
||||
|
||||
#. module: account_edi_ubl_cii
|
||||
#. odoo-python
|
||||
#: code:addons/account_edi_ubl_cii/models/account_edi_xml_ubl_20.py:0
|
||||
#: code:addons/account_edi_ubl_cii/models/account_edi_xml_ubl_20.py:0
|
||||
#, python-format
|
||||
msgid "Conditional cash/payment discount"
|
||||
msgstr ""
|
||||
|
||||
#. module: account_edi_ubl_cii
|
||||
#. odoo-python
|
||||
#: code:addons/account_edi_ubl_cii/models/account_edi_xml_cii_facturx.py:0
|
||||
#: code:addons/account_edi_ubl_cii/models/account_edi_xml_ubl_20.py:0
|
||||
#, python-format
|
||||
msgid ""
|
||||
"Could not retrieve currency: %s. Did you enable the multicurrency option and"
|
||||
" activate the currency ?"
|
||||
msgstr ""
|
||||
|
||||
#. module: account_edi_ubl_cii
|
||||
#. odoo-python
|
||||
#: code:addons/account_edi_ubl_cii/models/account_edi_common.py:0
|
||||
#: code:addons/account_edi_ubl_cii/models/account_edi_common.py:0
|
||||
#, python-format
|
||||
msgid "Could not retrieve the tax: %s %% for line '%s'."
|
||||
msgstr ""
|
||||
|
||||
#. module: account_edi_ubl_cii
|
||||
#. odoo-python
|
||||
#: code:addons/account_edi_ubl_cii/models/account_edi_common.py:0
|
||||
#, python-format
|
||||
msgid "Could not retrieve the unit of measure for line with label '%s'."
|
||||
msgstr ""
|
||||
|
||||
#. module: account_edi_ubl_cii
|
||||
#. odoo-python
|
||||
#: code:addons/account_edi_ubl_cii/models/account_edi_common.py:0
|
||||
#, python-format
|
||||
msgid "Down Payment"
|
||||
msgstr ""
|
||||
|
||||
#. module: account_edi_ubl_cii
|
||||
#. odoo-python
|
||||
#: code:addons/account_edi_ubl_cii/models/account_edi_common.py:0
|
||||
#, python-format
|
||||
msgid "Down Payments"
|
||||
msgstr ""
|
||||
|
||||
#. module: account_edi_ubl_cii
|
||||
#: model:ir.model,name:account_edi_ubl_cii.model_account_edi_xml_ubl_efff
|
||||
msgid "E-FFF (BE)"
|
||||
msgstr ""
|
||||
|
||||
#. module: account_edi_ubl_cii
|
||||
#: model:ir.model,name:account_edi_ubl_cii.model_account_edi_format
|
||||
msgid "EDI format"
|
||||
msgstr ""
|
||||
|
||||
#. module: account_edi_ubl_cii
|
||||
#: model_terms:ir.ui.view,arch_db:account_edi_ubl_cii.account_invoice_pdfa_3_facturx_metadata
|
||||
msgid "EN 16931"
|
||||
msgstr ""
|
||||
|
||||
#. module: account_edi_ubl_cii
|
||||
#. odoo-python
|
||||
#: code:addons/account_edi_ubl_cii/models/account_edi_xml_ubl_bis3.py:0
|
||||
#, python-format
|
||||
msgid "Each invoice line shall have one and only one tax."
|
||||
msgstr ""
|
||||
|
||||
#. module: account_edi_ubl_cii
|
||||
#. odoo-python
|
||||
#: code:addons/account_edi_ubl_cii/models/account_edi_xml_ubl_bis3.py:0
|
||||
#, python-format
|
||||
msgid "Each invoice line should have a product or a label."
|
||||
msgstr ""
|
||||
|
||||
#. module: account_edi_ubl_cii
|
||||
#. odoo-python
|
||||
#: code:addons/account_edi_ubl_cii/models/account_edi_common.py:0
|
||||
#, python-format
|
||||
msgid "Each invoice line should have at least one tax."
|
||||
msgstr ""
|
||||
|
||||
#. module: account_edi_ubl_cii
|
||||
#: model:ir.model,name:account_edi_ubl_cii.model_mail_template
|
||||
msgid "Email Templates"
|
||||
msgstr ""
|
||||
|
||||
#. module: account_edi_ubl_cii
|
||||
#. odoo-python
|
||||
#: code:addons/account_edi_ubl_cii/models/account_edi_format.py:0
|
||||
#, python-format
|
||||
msgid ""
|
||||
"Errors occured while creating the EDI document (format: %s). The receiver "
|
||||
"might refuse it."
|
||||
msgstr ""
|
||||
|
||||
#. module: account_edi_ubl_cii
|
||||
#. odoo-python
|
||||
#: code:addons/account_edi_ubl_cii/models/account_edi_common.py:0
|
||||
#, python-format
|
||||
msgid "Export outside the EU"
|
||||
msgstr ""
|
||||
|
||||
#. module: account_edi_ubl_cii
|
||||
#: model:ir.model,name:account_edi_ubl_cii.model_account_edi_xml_cii
|
||||
msgid "Factur-x/XRechnung CII 2.2.0"
|
||||
msgstr ""
|
||||
|
||||
#. module: account_edi_ubl_cii
|
||||
#. odoo-python
|
||||
#: code:addons/account_edi_ubl_cii/models/account_edi_xml_ubl_bis3.py:0
|
||||
#: code:addons/account_edi_ubl_cii/models/account_edi_xml_ubl_bis3.py:0
|
||||
#, python-format
|
||||
msgid ""
|
||||
"For intracommunity supply, the actual delivery date or the invoicing period "
|
||||
"should be included."
|
||||
msgstr ""
|
||||
|
||||
#. module: account_edi_ubl_cii
|
||||
#. odoo-python
|
||||
#: code:addons/account_edi_ubl_cii/models/account_edi_xml_ubl_bis3.py:0
|
||||
#, python-format
|
||||
msgid "For intracommunity supply, the delivery address should be included."
|
||||
msgstr ""
|
||||
|
||||
#. module: account_edi_ubl_cii
|
||||
#. odoo-python
|
||||
#: code:addons/account_edi_ubl_cii/models/account_edi_common.py:0
|
||||
#, python-format
|
||||
msgid "Intra-Community supply"
|
||||
msgstr ""
|
||||
|
||||
#. module: account_edi_ubl_cii
|
||||
#: model_terms:ir.ui.view,arch_db:account_edi_ubl_cii.account_invoice_pdfa_3_facturx_metadata
|
||||
msgid "Invoice generated by Odoo"
|
||||
msgstr ""
|
||||
|
||||
#. module: account_edi_ubl_cii
|
||||
#. odoo-python
|
||||
#: code:addons/account_edi_ubl_cii/models/account_edi_xml_ubl_bis3.py:0
|
||||
#: code:addons/account_edi_ubl_cii/models/account_edi_xml_ubl_bis3.py:0
|
||||
#, python-format
|
||||
msgid "No Electronic Address Scheme (EAS) could be found for %s."
|
||||
msgstr ""
|
||||
|
||||
#. module: account_edi_ubl_cii
|
||||
#. odoo-python
|
||||
#: code:addons/account_edi_ubl_cii/models/account_edi_common.py:0
|
||||
#, python-format
|
||||
msgid ""
|
||||
"No gross price, net price nor line subtotal amount found for line in xml"
|
||||
msgstr ""
|
||||
|
||||
#. module: account_edi_ubl_cii
|
||||
#: model_terms:ir.ui.view,arch_db:account_edi_ubl_cii.account_invoice_pdfa_3_facturx_metadata
|
||||
msgid "Odoo"
|
||||
msgstr ""
|
||||
|
||||
#. module: account_edi_ubl_cii
|
||||
#: model:ir.model,name:account_edi_ubl_cii.model_ir_actions_report
|
||||
msgid "Report Action"
|
||||
msgstr ""
|
||||
|
||||
#. module: account_edi_ubl_cii
|
||||
#: model:ir.model,name:account_edi_ubl_cii.model_account_edi_xml_ubl_sg
|
||||
msgid "SG BIS Billing 3.0"
|
||||
msgstr ""
|
||||
|
||||
#. module: account_edi_ubl_cii
|
||||
#: model:ir.model,name:account_edi_ubl_cii.model_account_edi_xml_ubl_nl
|
||||
msgid "SI-UBL 2.0 (NLCIUS)"
|
||||
msgstr ""
|
||||
|
||||
#. module: account_edi_ubl_cii
|
||||
#. odoo-python
|
||||
#: code:addons/account_edi_ubl_cii/models/account_edi_common.py:0
|
||||
#, python-format
|
||||
msgid "Tax '%s' is invalid: %s"
|
||||
msgstr ""
|
||||
|
||||
#. module: account_edi_ubl_cii
|
||||
#. odoo-python
|
||||
#: code:addons/account_edi_ubl_cii/models/account_edi_xml_ubl_bis3.py:0
|
||||
#, python-format
|
||||
msgid ""
|
||||
"The VAT number of the supplier does not seem to be valid. It should be of "
|
||||
"the form: NO179728982MVA."
|
||||
msgstr ""
|
||||
|
||||
#. module: account_edi_ubl_cii
|
||||
#. odoo-python
|
||||
#: code:addons/account_edi_ubl_cii/models/account_edi_xml_ubl_bis3.py:0
|
||||
#, python-format
|
||||
msgid "The VAT of the %s should be prefixed with its country code."
|
||||
msgstr ""
|
||||
|
||||
#. module: account_edi_ubl_cii
|
||||
#. odoo-python
|
||||
#: code:addons/account_edi_ubl_cii/models/account_edi_xml_ubl_bis3.py:0
|
||||
#, python-format
|
||||
msgid "The country is required for the %s."
|
||||
msgstr ""
|
||||
|
||||
#. module: account_edi_ubl_cii
|
||||
#. odoo-python
|
||||
#: code:addons/account_edi_ubl_cii/models/account_edi_xml_cii_facturx.py:0
|
||||
#: code:addons/account_edi_ubl_cii/models/account_edi_xml_ubl_20.py:0
|
||||
#, python-format
|
||||
msgid "The currency '%s' is not active."
|
||||
msgstr ""
|
||||
|
||||
#. module: account_edi_ubl_cii
|
||||
#. odoo-python
|
||||
#: code:addons/account_edi_ubl_cii/models/account_edi_xml_ubl_bis3.py:0
|
||||
#, python-format
|
||||
msgid "The customer %s must have a Bronnoysund company registry."
|
||||
msgstr ""
|
||||
|
||||
#. module: account_edi_ubl_cii
|
||||
#. odoo-python
|
||||
#: code:addons/account_edi_ubl_cii/models/account_edi_xml_ubl_bis3.py:0
|
||||
#, python-format
|
||||
msgid "The customer %s must have a KVK or OIN number."
|
||||
msgstr ""
|
||||
|
||||
#. module: account_edi_ubl_cii
|
||||
#. odoo-python
|
||||
#: code:addons/account_edi_ubl_cii/models/account_edi_common.py:0
|
||||
#: code:addons/account_edi_ubl_cii/models/account_edi_common.py:0
|
||||
#, python-format
|
||||
msgid "The element %s is required on %s."
|
||||
msgstr ""
|
||||
|
||||
#. module: account_edi_ubl_cii
|
||||
#. odoo-python
|
||||
#: code:addons/account_edi_ubl_cii/models/account_edi_common.py:0
|
||||
#, python-format
|
||||
msgid "The field %s is required on %s."
|
||||
msgstr ""
|
||||
|
||||
#. module: account_edi_ubl_cii
|
||||
#. odoo-python
|
||||
#: code:addons/account_edi_ubl_cii/models/account_edi_xml_cii_facturx.py:0
|
||||
#, python-format
|
||||
msgid ""
|
||||
"The field 'Sanitized Account Number' is required on the Recipient Bank."
|
||||
msgstr ""
|
||||
|
||||
#. module: account_edi_ubl_cii
|
||||
#. odoo-python
|
||||
#: code:addons/account_edi_ubl_cii/models/account_edi_xml_ubl_bis3.py:0
|
||||
#, python-format
|
||||
msgid ""
|
||||
"The invoice contains line(s) with a negative unit price, which is not "
|
||||
"allowed. You might need to set a negative quantity instead."
|
||||
msgstr ""
|
||||
|
||||
#. module: account_edi_ubl_cii
|
||||
#. odoo-python
|
||||
#: code:addons/account_edi_ubl_cii/models/account_edi_xml_cii_facturx.py:0
|
||||
#: code:addons/account_edi_ubl_cii/models/account_edi_xml_ubl_20.py:0
|
||||
#, python-format
|
||||
msgid ""
|
||||
"The invoice has been converted into a credit note and the quantities have "
|
||||
"been reverted."
|
||||
msgstr ""
|
||||
|
||||
#. module: account_edi_ubl_cii
|
||||
#. odoo-python
|
||||
#: code:addons/account_edi_ubl_cii/models/account_edi_format.py:0
|
||||
#, python-format
|
||||
msgid ""
|
||||
"The journal in which to upload should either be a sale or a purchase "
|
||||
"journal."
|
||||
msgstr ""
|
||||
|
||||
#. module: account_edi_ubl_cii
|
||||
#. odoo-python
|
||||
#: code:addons/account_edi_ubl_cii/models/account_edi_xml_ubl_bis3.py:0
|
||||
#, python-format
|
||||
msgid "The supplier %s must have a Bronnoysund company registry."
|
||||
msgstr ""
|
||||
|
||||
#. module: account_edi_ubl_cii
|
||||
#. odoo-python
|
||||
#: code:addons/account_edi_ubl_cii/models/account_edi_xml_ubl_bis3.py:0
|
||||
#, python-format
|
||||
msgid "The supplier %s must have a KVK or OIN number."
|
||||
msgstr ""
|
||||
|
||||
#. module: account_edi_ubl_cii
|
||||
#: model:ir.model,name:account_edi_ubl_cii.model_account_edi_xml_ubl_20
|
||||
msgid "UBL 2.0"
|
||||
msgstr ""
|
||||
|
||||
#. module: account_edi_ubl_cii
|
||||
#: model:ir.model,name:account_edi_ubl_cii.model_account_edi_xml_ubl_21
|
||||
msgid "UBL 2.1"
|
||||
msgstr ""
|
||||
|
||||
#. module: account_edi_ubl_cii
|
||||
#: model:ir.model,name:account_edi_ubl_cii.model_account_edi_xml_ubl_bis3
|
||||
msgid "UBL BIS Billing 3.0.12"
|
||||
msgstr ""
|
||||
|
||||
#. module: account_edi_ubl_cii
|
||||
#. odoo-python
|
||||
#: code:addons/account_edi_ubl_cii/models/account_edi_xml_cii_facturx.py:0
|
||||
#, python-format
|
||||
msgid ""
|
||||
"When the Canary Island General Indirect Tax (IGIC) applies, the tax rate on "
|
||||
"each invoice line should be greater than 0."
|
||||
msgstr ""
|
||||
|
||||
#. module: account_edi_ubl_cii
|
||||
#. odoo-python
|
||||
#: code:addons/account_edi_ubl_cii/models/account_edi_xml_cii_facturx.py:0
|
||||
#, python-format
|
||||
msgid ""
|
||||
"You should include at least one tax per invoice line. [BR-CO-04]-Each "
|
||||
"Invoice line (BG-25) shall be categorized with an Invoiced item VAT category"
|
||||
" code (BT-151)."
|
||||
msgstr ""
|
||||
|
||||
#. module: account_edi_ubl_cii
|
||||
#: model_terms:ir.ui.view,arch_db:account_edi_ubl_cii.account_invoice_pdfa_3_facturx_metadata
|
||||
msgid "factur-x.xml"
|
||||
msgstr ""
|
||||
|
||||
#. module: account_edi_ubl_cii
|
||||
#: model_terms:ir.ui.view,arch_db:account_edi_ubl_cii.account_invoice_line_facturx_export_22
|
||||
msgid "false"
|
||||
msgstr ""
|
||||
|
||||
#. module: account_edi_ubl_cii
|
||||
#: model_terms:ir.ui.view,arch_db:account_edi_ubl_cii.account_invoice_pdfa_3_facturx_metadata
|
||||
msgid "fx"
|
||||
msgstr ""
|
||||
|
||||
#. module: account_edi_ubl_cii
|
||||
#: model_terms:ir.ui.view,arch_db:account_edi_ubl_cii.account_invoice_pdfa_3_facturx_metadata
|
||||
msgid "urn:factur-x:pdfa:CrossIndustryDocument:invoice:1p0#"
|
||||
msgstr ""
|
||||
File diff suppressed because it is too large
Load diff
File diff suppressed because it is too large
Load diff
File diff suppressed because it is too large
Load diff
File diff suppressed because it is too large
Load diff
File diff suppressed because it is too large
Load diff
File diff suppressed because it is too large
Load diff
File diff suppressed because it is too large
Load diff
|
|
@ -1,7 +1,5 @@
|
|||
# -*- coding: utf-8 -*-
|
||||
|
||||
from . import account_edi_common
|
||||
from . import account_edi_format
|
||||
from . import account_edi_ubl
|
||||
from . import account_edi_xml_cii_facturx
|
||||
from . import account_edi_xml_ubl_20
|
||||
from . import account_edi_xml_ubl_21
|
||||
|
|
@ -11,5 +9,8 @@ from . import account_edi_xml_ubl_nlcius
|
|||
from . import account_edi_xml_ubl_efff
|
||||
from . import account_edi_xml_ubl_a_nz
|
||||
from . import account_edi_xml_ubl_sg
|
||||
from . import account_move
|
||||
from . import account_move_send
|
||||
from . import account_tax
|
||||
from . import ir_actions_report
|
||||
from . import mail_template
|
||||
from . import res_partner
|
||||
|
|
|
|||
File diff suppressed because it is too large
Load diff
|
|
@ -1,232 +0,0 @@
|
|||
# -*- coding: utf-8 -*-
|
||||
# Part of Odoo. See LICENSE file for full copyright and licensing details.
|
||||
|
||||
from odoo import models, fields, _, SUPERUSER_ID
|
||||
from odoo.addons.account_edi_ubl_cii.models.account_edi_common import COUNTRY_EAS
|
||||
from odoo.exceptions import UserError
|
||||
|
||||
import logging
|
||||
|
||||
_logger = logging.getLogger(__name__)
|
||||
|
||||
FORMAT_CODES = [
|
||||
'facturx_1_0_05',
|
||||
'ubl_bis3',
|
||||
'ubl_de',
|
||||
'nlcius_1',
|
||||
'efff_1',
|
||||
'ubl_2_1',
|
||||
'ubl_a_nz',
|
||||
'ubl_sg',
|
||||
]
|
||||
|
||||
class AccountEdiFormat(models.Model):
|
||||
_inherit = 'account.edi.format'
|
||||
|
||||
####################################################
|
||||
# Helpers
|
||||
####################################################
|
||||
|
||||
def _infer_xml_builder_from_tree(self, tree):
|
||||
self.ensure_one()
|
||||
ubl_version = tree.find('{*}UBLVersionID')
|
||||
customization_id = tree.find('{*}CustomizationID')
|
||||
if tree.tag == '{urn:un:unece:uncefact:data:standard:CrossIndustryInvoice:100}CrossIndustryInvoice':
|
||||
return self.env['account.edi.xml.cii']
|
||||
if ubl_version is not None:
|
||||
if ubl_version.text == '2.0':
|
||||
return self.env['account.edi.xml.ubl_20']
|
||||
if ubl_version.text in ('2.1', '2.2', '2.3'):
|
||||
return self.env['account.edi.xml.ubl_21']
|
||||
if customization_id is not None:
|
||||
if 'xrechnung' in customization_id.text:
|
||||
return self.env['account.edi.xml.ubl_de']
|
||||
if customization_id.text == 'urn:cen.eu:en16931:2017#compliant#urn:fdc:nen.nl:nlcius:v1.0':
|
||||
return self.env['account.edi.xml.ubl_nl']
|
||||
if customization_id.text == 'urn:cen.eu:en16931:2017#conformant#urn:fdc:peppol.eu:2017:poacc:billing:international:aunz:3.0':
|
||||
return self.env['account.edi.xml.ubl_a_nz']
|
||||
if customization_id.text == 'urn:cen.eu:en16931:2017#conformant#urn:fdc:peppol.eu:2017:poacc:billing:international:sg:3.0':
|
||||
return self.env['account.edi.xml.ubl_sg']
|
||||
# Allow to parse any format derived from the european semantic norm EN16931
|
||||
if 'urn:cen.eu:en16931:2017' in customization_id.text:
|
||||
return self.env['account.edi.xml.ubl_bis3']
|
||||
return
|
||||
|
||||
def _get_xml_builder(self, company):
|
||||
# see https://communaute.chorus-pro.gouv.fr/wp-content/uploads/2017/08/20170630_Solution-portail_Dossier_Specifications_Fournisseurs_Chorus_Facture_V.1.pdf
|
||||
# page 45 -> ubl 2.1 for France seems also supported
|
||||
# Only show the Factur-X option for DE and FR companies. When generating the PDF, add a Factur-X xml if there
|
||||
# isn't an existing one. So there's always a Factur-X in the PDF, even without the option.
|
||||
if self.code == 'facturx_1_0_05' and company.country_id.code in ['DE', 'FR']:
|
||||
return self.env['account.edi.xml.cii']
|
||||
# if the company's country is not in the EAS mapping, nothing is generated
|
||||
# 'NO' has to be present in COUNTRY_EAS
|
||||
if self.code == 'ubl_bis3' and company.country_id.code in COUNTRY_EAS:
|
||||
return self.env['account.edi.xml.ubl_bis3']
|
||||
# the EDI option will only appear on the journal of dutch companies
|
||||
if self.code == 'nlcius_1' and company.country_id.code == 'NL':
|
||||
return self.env['account.edi.xml.ubl_nl']
|
||||
# the EDI option will only appear on the journal of german companies
|
||||
if self.code == 'ubl_de' and company.country_id.code == 'DE':
|
||||
return self.env['account.edi.xml.ubl_de']
|
||||
if self.code == 'efff_1' and company.country_id.code == 'BE':
|
||||
return self.env['account.edi.xml.ubl_efff']
|
||||
if self.code == 'ubl_a_nz' and company.country_id.code in ['AU', 'NZ']:
|
||||
return self.env['account.edi.xml.ubl_a_nz']
|
||||
if self.code == 'ubl_sg' and company.country_id.code == 'SG':
|
||||
return self.env['account.edi.xml.ubl_sg']
|
||||
|
||||
def _is_ubl_cii_available(self, company):
|
||||
"""
|
||||
Returns a boolean indicating whether it is possible to generate an xml file using one of the formats from this
|
||||
module or not
|
||||
"""
|
||||
return self._get_xml_builder(company) is not None
|
||||
|
||||
####################################################
|
||||
# Export: Account.edi.format override
|
||||
####################################################
|
||||
|
||||
def _is_compatible_with_journal(self, journal):
|
||||
# EXTENDS account_edi
|
||||
# the formats appear on the journal only if they are compatible (e.g. NLCIUS only appear for dutch companies)
|
||||
self.ensure_one()
|
||||
if self.code not in FORMAT_CODES:
|
||||
return super()._is_compatible_with_journal(journal)
|
||||
return self._is_ubl_cii_available(journal.company_id) and journal.type == 'sale'
|
||||
|
||||
def _is_enabled_by_default_on_journal(self, journal):
|
||||
# EXTENDS account_edi
|
||||
self.ensure_one()
|
||||
if self.code not in FORMAT_CODES:
|
||||
return super()._is_enabled_by_default_on_journal(journal)
|
||||
return False
|
||||
|
||||
def _ubl_cii_post_invoice(self, invoice):
|
||||
# EXTENDS account_edi
|
||||
self.ensure_one()
|
||||
|
||||
builder = self._get_xml_builder(invoice.company_id)
|
||||
# For now, the errors are not displayed anywhere, don't want to annoy the user
|
||||
xml_content, errors = builder._export_invoice(invoice)
|
||||
|
||||
# DEBUG: send directly to the test platform (the one used by ecosio)
|
||||
#response = self.env['account.edi.common']._check_xml_ecosio(invoice, xml_content, builder._export_invoice_ecosio_schematrons())
|
||||
|
||||
attachment_create_vals = {
|
||||
'name': builder._export_invoice_filename(invoice),
|
||||
'raw': xml_content,
|
||||
'mimetype': 'application/xml',
|
||||
}
|
||||
# we don't want the Factur-X and E-FFF xml to appear in the attachment of the invoice when confirming it
|
||||
# E-FFF will appear after the pdf is generated, Factur-X will never appear (it's contained in the PDF)
|
||||
if self.code not in ['facturx_1_0_05', 'efff_1']:
|
||||
attachment_create_vals.update({'res_id': invoice.id, 'res_model': 'account.move'})
|
||||
|
||||
attachment = self.env['ir.attachment'].with_user(SUPERUSER_ID).create(attachment_create_vals)
|
||||
|
||||
res = {invoice: {'attachment': attachment}}
|
||||
if errors and self.code == 'facturx_1_0_05':
|
||||
res[invoice].update({
|
||||
'success': False,
|
||||
'error': _("Errors occured while creating the EDI document (format: %s). The receiver "
|
||||
"might refuse it.", builder._description)
|
||||
+ '<p> <li>' + "</li> <li>".join(errors) + '</li> </p>',
|
||||
'blocking_level': 'info',
|
||||
})
|
||||
else:
|
||||
res[invoice]['success'] = True
|
||||
return res
|
||||
|
||||
def _get_move_applicability(self, move):
|
||||
# EXTENDS account_edi
|
||||
self.ensure_one()
|
||||
if self.code not in FORMAT_CODES:
|
||||
return super()._get_move_applicability(move)
|
||||
|
||||
if self._is_ubl_cii_available(move.company_id) and move.move_type in ('out_invoice', 'out_refund'):
|
||||
return {'post': self._ubl_cii_post_invoice}
|
||||
|
||||
def _is_embedding_to_invoice_pdf_needed(self):
|
||||
# EXTENDS account_edi
|
||||
self.ensure_one()
|
||||
|
||||
if self.code == 'facturx_1_0_05':
|
||||
return True
|
||||
return super()._is_embedding_to_invoice_pdf_needed()
|
||||
|
||||
def _prepare_invoice_report(self, pdf_writer, edi_document):
|
||||
# EXTENDS account_edi
|
||||
self.ensure_one()
|
||||
if self.code != 'facturx_1_0_05':
|
||||
return super()._prepare_invoice_report(pdf_writer, edi_document)
|
||||
attachment = edi_document.sudo().attachment_id
|
||||
if not attachment:
|
||||
return
|
||||
|
||||
pdf_writer.embed_odoo_attachment(attachment, subtype='text/xml')
|
||||
if not pdf_writer.is_pdfa:
|
||||
try:
|
||||
pdf_writer.convert_to_pdfa()
|
||||
except Exception as e:
|
||||
_logger.exception("Error while converting to PDF/A: %s", e)
|
||||
metadata_template = self.env.ref('account_edi_ubl_cii.account_invoice_pdfa_3_facturx_metadata',
|
||||
raise_if_not_found=False)
|
||||
if metadata_template:
|
||||
content = self.env['ir.qweb']._render('account_edi_ubl_cii.account_invoice_pdfa_3_facturx_metadata', {
|
||||
'title': edi_document.move_id.name,
|
||||
'date': fields.Date.context_today(self),
|
||||
})
|
||||
pdf_writer.add_file_metadata(content.encode())
|
||||
|
||||
####################################################
|
||||
# Import: Account.edi.format override
|
||||
####################################################
|
||||
|
||||
def _create_invoice_from_xml_tree(self, filename, tree, journal=None):
|
||||
# EXTENDS account_edi
|
||||
self.ensure_one()
|
||||
|
||||
if not journal:
|
||||
journal = self.env['account.journal'].browse(self._context.get("default_journal_id"))
|
||||
if not journal:
|
||||
context_move_type = self._context.get("default_move_type", "entry")
|
||||
if context_move_type in self.env['account.move'].get_sale_types():
|
||||
journal_type = "sale"
|
||||
elif context_move_type in self.env['account.move'].get_purchase_types():
|
||||
journal_type = "purchase"
|
||||
else:
|
||||
raise UserError(_("The journal in which to upload should either be a sale or a purchase journal."))
|
||||
journal = self.env['account.journal'].search([
|
||||
('company_id', '=', self.env.company.id), ('type', '=', journal_type)
|
||||
], limit=1)
|
||||
|
||||
if not self._is_ubl_cii_available(journal.company_id) and self.code != 'facturx_1_0_05':
|
||||
return super()._create_invoice_from_xml_tree(filename, tree, journal=journal)
|
||||
|
||||
# infer the xml builder
|
||||
invoice_xml_builder = self._infer_xml_builder_from_tree(tree)
|
||||
|
||||
if invoice_xml_builder is not None:
|
||||
invoice = invoice_xml_builder._import_invoice(journal, filename, tree)
|
||||
if invoice:
|
||||
return invoice
|
||||
|
||||
return super()._create_invoice_from_xml_tree(filename, tree, journal=journal)
|
||||
|
||||
def _update_invoice_from_xml_tree(self, filename, tree, invoice):
|
||||
# EXTENDS account_edi
|
||||
self.ensure_one()
|
||||
|
||||
if not self._is_ubl_cii_available(invoice.company_id) and self.code != 'facturx_1_0_05':
|
||||
return super()._update_invoice_from_xml_tree(filename, tree, invoice)
|
||||
|
||||
# infer the xml builder
|
||||
invoice_xml_builder = self._infer_xml_builder_from_tree(tree)
|
||||
|
||||
if invoice_xml_builder is not None:
|
||||
invoice = invoice_xml_builder._import_invoice(invoice.journal_id, filename, tree, invoice)
|
||||
if invoice:
|
||||
return invoice
|
||||
|
||||
return super()._update_invoice_from_xml_tree(filename, tree, invoice)
|
||||
File diff suppressed because it is too large
Load diff
|
|
@ -1,6 +1,5 @@
|
|||
# -*- coding: utf-8 -*-
|
||||
from odoo import models, _
|
||||
from odoo.tools import DEFAULT_SERVER_DATE_FORMAT, float_repr, is_html_empty, html2plaintext, cleanup_xml_node
|
||||
from odoo import _, models, Command
|
||||
from odoo.tools import float_repr, is_html_empty, html2plaintext, cleanup_xml_node
|
||||
from lxml import etree
|
||||
|
||||
from datetime import datetime
|
||||
|
|
@ -10,15 +9,32 @@ import logging
|
|||
_logger = logging.getLogger(__name__)
|
||||
|
||||
DEFAULT_FACTURX_DATE_FORMAT = '%Y%m%d'
|
||||
CII_NAMESPACES = {
|
||||
'ram': "urn:un:unece:uncefact:data:standard:ReusableAggregateBusinessInformationEntity:100",
|
||||
'rsm': "urn:un:unece:uncefact:data:standard:CrossIndustryInvoice:100",
|
||||
'udt': "urn:un:unece:uncefact:data:standard:UnqualifiedDataType:100",
|
||||
}
|
||||
|
||||
# Imcomplete, full list on https://service.unece.org/trade/untdid/d16b/tred/tred4461.htm
|
||||
PAYMENT_MEAN_CODES = {
|
||||
'Payment to bank account': 42,
|
||||
'SEPA direct debit': 59
|
||||
}
|
||||
|
||||
|
||||
class AccountEdiXmlCII(models.AbstractModel):
|
||||
_name = "account.edi.xml.cii"
|
||||
_inherit = 'account.edi.common'
|
||||
class AccountEdiXmlCii(models.AbstractModel):
|
||||
_name = 'account.edi.xml.cii'
|
||||
_inherit = ['account.edi.common']
|
||||
_description = "Factur-x/XRechnung CII 2.2.0"
|
||||
|
||||
def _find_value(self, xpath, tree, nsmap=False):
|
||||
# EXTENDS account.edi.common
|
||||
return super()._find_value(xpath, tree, CII_NAMESPACES)
|
||||
|
||||
def _export_invoice_filename(self, invoice):
|
||||
return "factur-x.xml"
|
||||
if invoice.commercial_partner_id.country_code == 'DE':
|
||||
return f"{invoice.name.replace('/', '_')}_zugferd.xml"
|
||||
return f"{invoice.name.replace('/', '_')}_factur_x.xml"
|
||||
|
||||
def _export_invoice_ecosio_schematrons(self):
|
||||
return {
|
||||
|
|
@ -53,7 +69,7 @@ class AccountEdiXmlCII(models.AbstractModel):
|
|||
),
|
||||
# [BR-DE-6] The element "Seller contact telephone number" (BT-42) must be transmitted.
|
||||
'seller_phone': self._check_required_fields(
|
||||
vals['record']['company_id']['partner_id']['commercial_partner_id'], ['phone', 'mobile'],
|
||||
vals['record']['company_id']['partner_id']['commercial_partner_id'], ['phone'],
|
||||
),
|
||||
# [BR-DE-7] The element "Seller contact email address" (BT-43) must be transmitted.
|
||||
'seller_email': self._check_required_fields(
|
||||
|
|
@ -92,7 +108,7 @@ class AccountEdiXmlCII(models.AbstractModel):
|
|||
def _get_scheduled_delivery_time(self, invoice):
|
||||
# don't create a bridge only to get line.sale_line_ids.order_id.picking_ids.date_done
|
||||
# line.sale_line_ids.order_id.picking_ids.scheduled_date or line.sale_line_ids.order_id.commitment_date
|
||||
return invoice.invoice_date
|
||||
return invoice.delivery_date or invoice.invoice_date
|
||||
|
||||
def _get_invoicing_period(self, invoice):
|
||||
# get the Invoicing period (BG-14): a list of dates covered by the invoice
|
||||
|
|
@ -108,6 +124,8 @@ class AccountEdiXmlCII(models.AbstractModel):
|
|||
}
|
||||
|
||||
def _export_invoice_vals(self, invoice):
|
||||
customer = invoice.partner_id
|
||||
supplier = invoice.company_id.partner_id.commercial_partner_id
|
||||
|
||||
def format_date(dt):
|
||||
# Format the date in the Factur-x standard.
|
||||
|
|
@ -118,10 +136,11 @@ class AccountEdiXmlCII(models.AbstractModel):
|
|||
# Facturx requires the monetary values to be rounded to 2 decimal values
|
||||
return float_repr(number, decimal_places)
|
||||
|
||||
def grouping_key_generator(base_line, tax_values):
|
||||
tax = tax_values['tax_repartition_line'].tax_id
|
||||
def grouping_key_generator(base_line, tax_data):
|
||||
tax = tax_data['tax']
|
||||
grouping_key = {
|
||||
**self._get_tax_unece_codes(invoice, tax),
|
||||
'tax_category_code': self._get_tax_category_code(customer.commercial_partner_id, supplier, tax),
|
||||
**self._get_tax_exemption_reason(customer.commercial_partner_id, supplier, tax),
|
||||
'amount': tax.amount,
|
||||
'amount_type': tax.amount_type,
|
||||
}
|
||||
|
|
@ -132,10 +151,10 @@ class AccountEdiXmlCII(models.AbstractModel):
|
|||
return grouping_key
|
||||
|
||||
# Validate the structure of the taxes
|
||||
self._validate_taxes(invoice)
|
||||
self._validate_taxes(invoice.invoice_line_ids.tax_ids)
|
||||
|
||||
# Create file content.
|
||||
tax_details = invoice._prepare_edi_tax_details(grouping_key_generator=grouping_key_generator)
|
||||
tax_details = invoice._prepare_invoice_aggregated_taxes(grouping_key_generator=grouping_key_generator)
|
||||
|
||||
# Fixed Taxes: filter them on the document level, and adapt the totals
|
||||
# Fixed taxes are not supposed to be taxes in real live. However, this is the way in Odoo to manage recupel
|
||||
|
|
@ -149,14 +168,6 @@ class AccountEdiXmlCII(models.AbstractModel):
|
|||
tax_details['base_amount_currency'] += fixed_tax_details['tax_amount_currency']
|
||||
tax_details['base_amount'] += fixed_tax_details['tax_amount']
|
||||
|
||||
if 'siret' in invoice.company_id._fields and invoice.company_id.siret:
|
||||
seller_siret = invoice.company_id.siret
|
||||
else:
|
||||
seller_siret = invoice.company_id.company_registry
|
||||
|
||||
buyer_siret = invoice.commercial_partner_id.company_registry
|
||||
if 'siret' in invoice.commercial_partner_id._fields and invoice.commercial_partner_id.siret:
|
||||
buyer_siret = invoice.commercial_partner_id.siret
|
||||
template_values = {
|
||||
**invoice._prepare_edi_vals_to_export(),
|
||||
'tax_details': tax_details,
|
||||
|
|
@ -166,8 +177,8 @@ class AccountEdiXmlCII(models.AbstractModel):
|
|||
'scheduled_delivery_time': self._get_scheduled_delivery_time(invoice),
|
||||
'intracom_delivery': False,
|
||||
'ExchangedDocument_vals': self._get_exchanged_document_vals(invoice),
|
||||
'seller_specified_legal_organization': seller_siret,
|
||||
'buyer_specified_legal_organization': buyer_siret,
|
||||
'seller_specified_legal_organization': invoice.company_id.company_registry,
|
||||
'buyer_specified_legal_organization': invoice.commercial_partner_id.company_registry,
|
||||
'ship_to_trade_party': invoice.partner_shipping_id if 'partner_shipping_id' in invoice._fields and invoice.partner_shipping_id
|
||||
else invoice.commercial_partner_id,
|
||||
# Chorus Pro fields
|
||||
|
|
@ -176,13 +187,33 @@ class AccountEdiXmlCII(models.AbstractModel):
|
|||
'purchase_order_reference': invoice.purchase_order_reference if 'purchase_order_reference' in invoice._fields
|
||||
and invoice.purchase_order_reference else invoice.ref or invoice.name,
|
||||
'contract_reference': invoice.contract_reference if 'contract_reference' in invoice._fields and invoice.contract_reference else '',
|
||||
'document_context_id': "urn:cen.eu:en16931:2017#conformant#urn:factur-x.eu:1p0:extended",
|
||||
}
|
||||
|
||||
# Change the document context based on the country of the partner, the default value is France (factur-X)
|
||||
if invoice.commercial_partner_id.country_code == 'DE':
|
||||
template_values['document_context_id'] = "urn:cen.eu:en16931:2017#conformant#urn:zugferd.de:2p2:extended"
|
||||
else:
|
||||
template_values['document_context_id'] = "urn:cen.eu:en16931:2017#conformant#urn:factur-x.eu:1p0:extended"
|
||||
|
||||
# data used for IncludedSupplyChainTradeLineItem / SpecifiedLineTradeSettlement
|
||||
for line_vals in template_values['invoice_line_vals_list']:
|
||||
line = line_vals['line']
|
||||
line_vals['unece_uom_code'] = self._get_uom_unece_code(line)
|
||||
line_vals['unece_uom_code'] = self._get_uom_unece_code(line.product_uom_id)
|
||||
|
||||
if line._fields.get('deferred_start_date') and (line.deferred_start_date or line.deferred_end_date):
|
||||
line_vals['billing_start'] = line.deferred_start_date
|
||||
line_vals['billing_end'] = line.deferred_end_date
|
||||
|
||||
# [BR - IC - 11] - In an Invoice with a VAT breakdown (BG-23) where the VAT category code (BT-118) is
|
||||
# "Intra-community supply" the Actual delivery date (BT-72) or the Invoicing period (BG-14) shall not be blank.
|
||||
billing_start_dates = [invoice.invoice_date] if invoice.invoice_date else []
|
||||
billing_start_dates += [line_vals['billing_start'] for line_vals in template_values['invoice_line_vals_list'] if line_vals.get('billing_start')]
|
||||
billing_end_dates = [invoice.invoice_date_due] if invoice.invoice_date_due else []
|
||||
billing_end_dates += [line_vals['billing_end'] for line_vals in template_values['invoice_line_vals_list'] if line_vals.get('billing_end')]
|
||||
if billing_start_dates:
|
||||
template_values['billing_start'] = min(billing_start_dates)
|
||||
if billing_end_dates:
|
||||
template_values['billing_end'] = max(billing_end_dates)
|
||||
|
||||
# data used for ApplicableHeaderTradeSettlement / ApplicableTradeTax (at the end of the xml)
|
||||
for tax_detail_vals in template_values['tax_details']['tax_details'].values():
|
||||
|
|
@ -193,12 +224,6 @@ class AccountEdiXmlCII(models.AbstractModel):
|
|||
|
||||
if tax_detail_vals.get('tax_category_code') == 'K':
|
||||
template_values['intracom_delivery'] = True
|
||||
# [BR - IC - 11] - In an Invoice with a VAT breakdown (BG-23) where the VAT category code (BT-118) is
|
||||
# "Intra-community supply" the Actual delivery date (BT-72) or the Invoicing period (BG-14) shall not be blank.
|
||||
if tax_detail_vals.get('tax_category_code') == 'K' and not template_values['scheduled_delivery_time']:
|
||||
date_range = self._get_invoicing_period(invoice)
|
||||
template_values['billing_start'] = min(date_range)
|
||||
template_values['billing_end'] = max(date_range)
|
||||
|
||||
# Fixed taxes: add them as charges on the invoice lines
|
||||
for line_vals in template_values['invoice_line_vals_list']:
|
||||
|
|
@ -214,10 +239,24 @@ class AccountEdiXmlCII(models.AbstractModel):
|
|||
sum_fixed_taxes = sum(x['amount'] for x in line_vals['allowance_charge_vals_list'])
|
||||
line_vals['line_total_amount'] = line_vals['line'].price_subtotal + sum_fixed_taxes
|
||||
|
||||
# The quantity is the line.quantity since we keep the unece_uom_code!
|
||||
line_vals['quantity'] = line_vals['line'].quantity
|
||||
|
||||
# Invert the quantity and the gross_price_total_unit if a line has a negative price total
|
||||
if line_vals['line'].currency_id.compare_amounts(line_vals['gross_price_total_unit'], 0) == -1:
|
||||
line_vals['quantity'] *= -1
|
||||
line_vals['gross_price_total_unit'] *= -1
|
||||
line_vals['price_subtotal_unit'] *= -1
|
||||
|
||||
# Fixed taxes: set the total adjusted amounts on the document level
|
||||
template_values['tax_basis_total_amount'] = tax_details['base_amount_currency']
|
||||
template_values['tax_total_amount'] = tax_details['tax_amount_currency']
|
||||
|
||||
if self.env['account.payment']._fields.get('sdd_mandate_id') and invoice.reconciled_payment_ids.sdd_mandate_id:
|
||||
template_values['payment_means_code'] = PAYMENT_MEAN_CODES['SEPA direct debit']
|
||||
else:
|
||||
template_values['payment_means_code'] = PAYMENT_MEAN_CODES['Payment to bank account']
|
||||
|
||||
return template_values
|
||||
|
||||
def _export_invoice(self, invoice):
|
||||
|
|
@ -230,161 +269,138 @@ class AccountEdiXmlCII(models.AbstractModel):
|
|||
# IMPORT
|
||||
# -------------------------------------------------------------------------
|
||||
|
||||
def _import_fill_invoice_form(self, journal, tree, invoice, qty_factor):
|
||||
def _import_retrieve_partner_vals(self, tree, role):
|
||||
return {
|
||||
'vat': self._find_value(f".//ram:{role}/ram:SpecifiedTaxRegistration/ram:ID[string-length(text()) > 5]", tree),
|
||||
'name': self._find_value(f".//ram:{role}/ram:Name", tree),
|
||||
'phone': self._find_value(f".//ram:{role}/ram:DefinedTradeContact/ram:TelephoneUniversalCommunication/ram:CompleteNumber", tree),
|
||||
'email': self._find_value(f".//ram:{role}//ram:EmailURIUniversalCommunication/ram:URIID", tree),
|
||||
'postal_address': self._get_postal_address(tree, role),
|
||||
}
|
||||
|
||||
def _find_value(xpath, element=tree):
|
||||
return self.env['account.edi.format']._find_value(xpath, element, tree.nsmap)
|
||||
def _get_postal_address(self, tree, role):
|
||||
return {
|
||||
'country_code': self._find_value(f'.//ram:{role}/ram:PostalTradeAddress//ram:CountryID', tree),
|
||||
'street': self._find_value(f'.//ram:{role}/ram:PostalTradeAddress//ram:LineOne', tree),
|
||||
'additional_street': self._find_value(f'.//ram:{role}/ram:PostalTradeAddress//ram:LineTwo', tree),
|
||||
'city': self._find_value(f'.//ram:{role}/ram:PostalTradeAddress//ram:CityName', tree),
|
||||
'zip': self._find_value(f'.//ram:{role}/ram:PostalTradeAddress//ram:PostcodeCode', tree),
|
||||
}
|
||||
|
||||
def _import_fill_invoice(self, invoice, tree, qty_factor):
|
||||
logs = []
|
||||
|
||||
invoice_values = {}
|
||||
if qty_factor == -1:
|
||||
logs.append(_("The invoice has been converted into a credit note and the quantities have been reverted."))
|
||||
role = 'SellerTradeParty' if invoice.journal_id.type == 'purchase' else 'BuyerTradeParty'
|
||||
partner, partner_logs = self._import_partner(invoice.company_id, **self._import_retrieve_partner_vals(tree, role))
|
||||
# Need to set partner before to compute bank and lines properly
|
||||
invoice.partner_id = partner.id
|
||||
invoice_values['currency_id'], currency_logs = self._import_currency(tree, './/{*}InvoiceCurrencyCode')
|
||||
|
||||
# ==== partner_id ====
|
||||
|
||||
role = invoice.journal_id.type == 'purchase' and 'SellerTradeParty' or 'BuyerTradeParty'
|
||||
name = self._find_value(f"//ram:{role}/ram:Name", tree)
|
||||
mail = self._find_value(f"//ram:{role}//ram:URIID[@schemeID='SMTP']", tree)
|
||||
vat = self._find_value(f"//ram:{role}/ram:SpecifiedTaxRegistration/ram:ID[string-length(text()) > 5]", tree)
|
||||
phone = self._find_value(f"//ram:{role}/ram:DefinedTradeContact/ram:TelephoneUniversalCommunication/ram:CompleteNumber", tree)
|
||||
country_code = self._find_value(f'//ram:{role}/ram:PostalTradeAddress//ram:CountryID', tree)
|
||||
self._import_retrieve_and_fill_partner(invoice, name=name, phone=phone, mail=mail, vat=vat, country_code=country_code)
|
||||
|
||||
# ==== currency_id ====
|
||||
|
||||
currency_code_node = tree.find('.//{*}InvoiceCurrencyCode')
|
||||
if currency_code_node is not None:
|
||||
currency = self.env['res.currency'].with_context(active_test=False).search([
|
||||
('name', '=', currency_code_node.text),
|
||||
], limit=1)
|
||||
if currency:
|
||||
if not currency.active:
|
||||
logs.append(_("The currency '%s' is not active.", currency.name))
|
||||
invoice.currency_id = currency
|
||||
else:
|
||||
logs.append(_("Could not retrieve currency: %s. Did you enable the multicurrency option and "
|
||||
"activate the currency ?", currency_code_node.text))
|
||||
|
||||
# ==== Bank Details ====
|
||||
|
||||
# ==== partner_bank_id ====
|
||||
bank_detail_nodes = tree.findall('.//{*}SpecifiedTradeSettlementPaymentMeans')
|
||||
bank_details = [
|
||||
bank_detail_node.findtext('{*}PayeePartyCreditorFinancialAccount/{*}IBANID')
|
||||
or bank_detail_node.findtext('{*}PayeePartyCreditorFinancialAccount/{*}ProprietaryID')
|
||||
for bank_detail_node in bank_detail_nodes
|
||||
if bank_detail_node.findtext('{*}PayeePartyCreditorFinancialAccount/{*}IBANID')
|
||||
or bank_detail_node.findtext('{*}PayeePartyCreditorFinancialAccount/{*}ProprietaryID')
|
||||
]
|
||||
|
||||
if bank_details:
|
||||
self._import_retrieve_and_fill_partner_bank_details(invoice, bank_details=bank_details)
|
||||
self._import_partner_bank(invoice, bank_details=bank_details)
|
||||
|
||||
# ==== Reference ====
|
||||
# ==== ref, invoice_origin, narration, payment_reference ====
|
||||
invoice_values['ref'] = tree.findtext('./{*}ExchangedDocument/{*}ID')
|
||||
invoice_values['invoice_origin'] = tree.findtext(
|
||||
'.//{*}BuyerOrderReferencedDocument/{*}IssuerAssignedID'
|
||||
)
|
||||
invoice_values['narration'] = self._import_description(tree, xpaths=[
|
||||
'./{*}ExchangedDocument/{*}IncludedNote/{*}Content',
|
||||
'.//{*}SpecifiedTradePaymentTerms/{*}Description',
|
||||
])
|
||||
invoice_values['payment_reference'] = tree.findtext(
|
||||
'./{*}SupplyChainTradeTransaction/{*}ApplicableHeaderTradeSettlement/{*}PaymentReference'
|
||||
)
|
||||
|
||||
ref_node = tree.find('./{*}ExchangedDocument/{*}ID')
|
||||
if ref_node is not None:
|
||||
invoice.ref = ref_node.text
|
||||
# ==== invoice_date, invoice_date_due ====
|
||||
issue_date = tree.findtext('./{*}ExchangedDocument/{*}IssueDateTime/{*}DateTimeString')
|
||||
if issue_date:
|
||||
invoice_values['invoice_date'] = datetime.strptime(issue_date.strip(), DEFAULT_FACTURX_DATE_FORMAT)
|
||||
due_date = tree.findtext('.//{*}SpecifiedTradePaymentTerms/{*}DueDateDateTime/{*}DateTimeString')
|
||||
if due_date:
|
||||
invoice_values['invoice_date_due'] = datetime.strptime(due_date.strip(), DEFAULT_FACTURX_DATE_FORMAT)
|
||||
|
||||
# ==== Invoice origin ====
|
||||
|
||||
invoice_origin_node = tree.find('./{*}OrderReference/{*}ID')
|
||||
if invoice_origin_node is not None:
|
||||
invoice.invoice_origin = invoice_origin_node.text
|
||||
|
||||
# === Note/narration ====
|
||||
|
||||
narration = ""
|
||||
note_node = tree.find('./{*}ExchangedDocument/{*}IncludedNote/{*}Content')
|
||||
if note_node is not None and note_node.text:
|
||||
narration += note_node.text + "\n"
|
||||
|
||||
payment_terms_node = tree.find('.//{*}SpecifiedTradePaymentTerms/{*}Description')
|
||||
if payment_terms_node is not None and payment_terms_node.text:
|
||||
narration += payment_terms_node.text + "\n"
|
||||
|
||||
invoice.narration = narration
|
||||
|
||||
# ==== payment_reference ====
|
||||
|
||||
payment_reference_node = tree.find('.//{*}BuyerOrderReferencedDocument/{*}IssuerAssignedID')
|
||||
if payment_reference_node is not None:
|
||||
invoice.payment_reference = payment_reference_node.text
|
||||
|
||||
# ==== invoice_date ====
|
||||
|
||||
invoice_date_node = tree.find('./{*}ExchangedDocument/{*}IssueDateTime/{*}DateTimeString')
|
||||
if invoice_date_node is not None and invoice_date_node.text:
|
||||
date_str = invoice_date_node.text.strip()
|
||||
date_obj = datetime.strptime(date_str, DEFAULT_FACTURX_DATE_FORMAT)
|
||||
invoice.invoice_date = date_obj.strftime(DEFAULT_SERVER_DATE_FORMAT)
|
||||
|
||||
# ==== invoice_date_due ====
|
||||
|
||||
invoice_date_due_node = tree.find('.//{*}SpecifiedTradePaymentTerms/{*}DueDateDateTime/{*}DateTimeString')
|
||||
if invoice_date_due_node is not None and invoice_date_due_node.text:
|
||||
date_str = invoice_date_due_node.text.strip()
|
||||
date_obj = datetime.strptime(date_str, DEFAULT_FACTURX_DATE_FORMAT)
|
||||
invoice.invoice_date_due = date_obj.strftime(DEFAULT_SERVER_DATE_FORMAT)
|
||||
|
||||
# ==== invoice_line_ids: AllowanceCharge (document level) ====
|
||||
|
||||
logs += self._import_fill_invoice_allowance_charge(tree, invoice, journal, qty_factor)
|
||||
|
||||
# ==== Prepaid amount ====
|
||||
|
||||
prepaid_node = tree.find('.//{*}ApplicableHeaderTradeSettlement/'
|
||||
'{*}SpecifiedTradeSettlementHeaderMonetarySummation/{*}TotalPrepaidAmount')
|
||||
logs += self._import_log_prepaid_amount(invoice, prepaid_node, qty_factor)
|
||||
|
||||
# ==== invoice_line_ids ====
|
||||
|
||||
line_nodes = tree.findall('./{*}SupplyChainTradeTransaction/{*}IncludedSupplyChainTradeLineItem')
|
||||
if line_nodes is not None:
|
||||
for invl_el in line_nodes:
|
||||
invoice_line = invoice.invoice_line_ids.create({'move_id': invoice.id})
|
||||
invl_logs = self._import_fill_invoice_line_form(journal, invl_el, invoice, invoice_line, qty_factor)
|
||||
logs += invl_logs
|
||||
# ==== Document level AllowanceCharge, Prepaid Amounts, Invoice Lines ====
|
||||
allowance_charges_line_vals, allowance_charges_logs = self._import_document_allowance_charges(
|
||||
tree, invoice, invoice.journal_id.type, qty_factor,
|
||||
)
|
||||
logs += self._import_prepaid_amount(invoice, tree, './/{*}ApplicableHeaderTradeSettlement/{*}SpecifiedTradeSettlementHeaderMonetarySummation/{*}TotalPrepaidAmount', qty_factor)
|
||||
invoice_line_vals, line_logs = self._import_lines(invoice, tree, './{*}SupplyChainTradeTransaction/{*}IncludedSupplyChainTradeLineItem',
|
||||
document_type=invoice.move_type, tax_type=invoice.journal_id.type, qty_factor=qty_factor)
|
||||
line_vals = allowance_charges_line_vals + invoice_line_vals
|
||||
|
||||
invoice_values = {
|
||||
**invoice_values,
|
||||
'invoice_line_ids': [Command.create(line_value) for line_value in line_vals],
|
||||
}
|
||||
invoice.write(invoice_values)
|
||||
logs += partner_logs + currency_logs + line_logs + allowance_charges_logs
|
||||
return logs
|
||||
|
||||
def _import_fill_invoice_line_form(self, journal, tree, invoice_form, invoice_line, qty_factor):
|
||||
logs = []
|
||||
def _get_tax_nodes(self, tree):
|
||||
return tree.findall('.//{*}ApplicableTradeTax/{*}RateApplicablePercent')
|
||||
|
||||
# Product.
|
||||
name = self._find_value('.//ram:SpecifiedTradeProduct/ram:Name', tree)
|
||||
invoice_line.product_id = self.env['account.edi.format']._retrieve_product(
|
||||
default_code=self._find_value('.//ram:SpecifiedTradeProduct/ram:SellerAssignedID', tree),
|
||||
name=self._find_value('.//ram:SpecifiedTradeProduct/ram:Name', tree),
|
||||
barcode=self._find_value('.//ram:SpecifiedTradeProduct/ram:GlobalID', tree)
|
||||
)
|
||||
# force original line description instead of the one copied from product's Sales Description
|
||||
if name:
|
||||
invoice_line.name = name
|
||||
def _get_document_allowance_charge_xpaths(self):
|
||||
return {
|
||||
'root': './{*}SupplyChainTradeTransaction/{*}ApplicableHeaderTradeSettlement/{*}SpecifiedTradeAllowanceCharge',
|
||||
'charge_indicator': './{*}ChargeIndicator/{*}Indicator',
|
||||
'base_amount': './{*}BasisAmount',
|
||||
'amount': './{*}ActualAmount',
|
||||
'reason': './{*}Reason',
|
||||
'percentage': './{*}CalculationPercent',
|
||||
'tax_percentage': './{*}CategoryTradeTax/{*}RateApplicablePercent',
|
||||
}
|
||||
|
||||
xpath_dict = {
|
||||
'basis_qty': [
|
||||
'./{*}SpecifiedLineTradeAgreement/{*}GrossPriceProductTradePrice/{*}BasisQuantity',
|
||||
'./{*}SpecifiedLineTradeAgreement/{*}NetPriceProductTradePrice/{*}BasisQuantity'
|
||||
],
|
||||
def _get_invoice_line_xpaths(self, document_type=False, qty_factor=1):
|
||||
return {
|
||||
'deferred_start_date': './{*}SpecifiedLineTradeSettlement/{*}BillingSpecifiedPeriod/{*}StartDateTime/{*}DateTimeString',
|
||||
'deferred_end_date': './{*}SpecifiedLineTradeSettlement/{*}BillingSpecifiedPeriod/{*}EndDateTime/{*}DateTimeString',
|
||||
'date_format': DEFAULT_FACTURX_DATE_FORMAT,
|
||||
}
|
||||
|
||||
def _get_line_xpaths(self, document_type=False, qty_factor=1):
|
||||
return {
|
||||
'basis_qty': (
|
||||
'./ram:SpecifiedLineTradeAgreement/ram:GrossPriceProductTradePrice/ram:BasisQuantity',
|
||||
'./ram:SpecifiedLineTradeAgreement/ram:NetPriceProductTradePrice/ram:BasisQuantity',
|
||||
),
|
||||
'gross_price_unit': './{*}SpecifiedLineTradeAgreement/{*}GrossPriceProductTradePrice/{*}ChargeAmount',
|
||||
'rebate': './{*}SpecifiedLineTradeAgreement/{*}GrossPriceProductTradePrice/{*}AppliedTradeAllowanceCharge/{*}ActualAmount',
|
||||
'net_price_unit': './{*}SpecifiedLineTradeAgreement/{*}NetPriceProductTradePrice/{*}ChargeAmount',
|
||||
'billed_qty': './{*}SpecifiedLineTradeDelivery/{*}BilledQuantity',
|
||||
'delivered_qty': './{*}SpecifiedLineTradeDelivery/{*}BilledQuantity',
|
||||
'allowance_charge': './/{*}SpecifiedLineTradeSettlement/{*}SpecifiedTradeAllowanceCharge',
|
||||
'allowance_charge_indicator': './{*}ChargeIndicator/{*}Indicator',
|
||||
'allowance_charge_amount': './{*}ActualAmount',
|
||||
'allowance_charge_reason': './{*}Reason',
|
||||
'allowance_charge_reason_code': './{*}ReasonCode',
|
||||
'line_total_amount': './{*}SpecifiedLineTradeSettlement/{*}SpecifiedTradeSettlementLineMonetarySummation/{*}LineTotalAmount',
|
||||
'name': [
|
||||
'./ram:SpecifiedTradeProduct/ram:Description',
|
||||
'./ram:SpecifiedTradeProduct/ram:Name',
|
||||
],
|
||||
'product': {
|
||||
'default_code': './ram:SpecifiedTradeProduct/ram:SellerAssignedID',
|
||||
'name': './ram:SpecifiedTradeProduct/ram:Name',
|
||||
'barcode': './ram:SpecifiedTradeProduct/ram:GlobalID',
|
||||
},
|
||||
}
|
||||
inv_line_vals = self._import_fill_invoice_line_values(tree, xpath_dict, invoice_line, qty_factor)
|
||||
# retrieve tax nodes
|
||||
tax_nodes = tree.findall('.//{*}ApplicableTradeTax/{*}RateApplicablePercent')
|
||||
return self._import_fill_invoice_line_taxes(journal, tax_nodes, invoice_line, inv_line_vals, logs)
|
||||
|
||||
# -------------------------------------------------------------------------
|
||||
# IMPORT : helpers
|
||||
# -------------------------------------------------------------------------
|
||||
|
||||
def _get_import_document_amount_sign(self, filename, tree):
|
||||
def _get_import_document_amount_sign(self, tree):
|
||||
"""
|
||||
In factur-x, an invoice has code 380 and a credit note has code 381. However, a credit note can be expressed
|
||||
as an invoice with negative amounts. For this case, we need a factor to take the opposite of each quantity
|
||||
|
|
@ -394,10 +410,10 @@ class AccountEdiXmlCII(models.AbstractModel):
|
|||
if move_type_code is None:
|
||||
return None, None
|
||||
if move_type_code.text == '381':
|
||||
return ('in_refund', 'out_refund'), 1
|
||||
return 'refund', 1
|
||||
if move_type_code.text == '380':
|
||||
amount_node = tree.find('.//{*}SpecifiedTradeSettlementHeaderMonetarySummation/{*}TaxBasisTotalAmount')
|
||||
if amount_node is not None and float(amount_node.text) < 0:
|
||||
return ('in_refund', 'out_refund'), -1
|
||||
return ('in_invoice', 'out_invoice'), 1
|
||||
return 'refund', -1
|
||||
return 'invoice', 1
|
||||
return None, None
|
||||
|
|
|
|||
File diff suppressed because it is too large
Load diff
|
|
@ -1,10 +1,9 @@
|
|||
# -*- coding: utf-8 -*-
|
||||
from odoo import models
|
||||
|
||||
|
||||
class AccountEdiXmlUBL21(models.AbstractModel):
|
||||
_name = "account.edi.xml.ubl_21"
|
||||
_inherit = 'account.edi.xml.ubl_20'
|
||||
class AccountEdiXmlUbl_21(models.AbstractModel):
|
||||
_name = 'account.edi.xml.ubl_21'
|
||||
_inherit = ['account.edi.xml.ubl_20']
|
||||
_description = "UBL 2.1"
|
||||
|
||||
# -------------------------------------------------------------------------
|
||||
|
|
@ -14,24 +13,63 @@ class AccountEdiXmlUBL21(models.AbstractModel):
|
|||
def _export_invoice_filename(self, invoice):
|
||||
return f"{invoice.name.replace('/', '_')}_ubl_21.xml"
|
||||
|
||||
def _export_invoice_ecosio_schematrons(self):
|
||||
return {
|
||||
'invoice': 'org.oasis-open:invoice:2.1',
|
||||
'credit_note': 'org.oasis-open:creditnote:2.1',
|
||||
}
|
||||
# -------------------------------------------------------------------------
|
||||
# EXPORT: Templates
|
||||
# -------------------------------------------------------------------------
|
||||
|
||||
def _export_invoice_vals(self, invoice):
|
||||
# EXTENDS account.edi.xml.ubl_20
|
||||
vals = super()._export_invoice_vals(invoice)
|
||||
def _get_invoice_node(self, vals):
|
||||
document_node = super()._get_invoice_node(vals)
|
||||
|
||||
vals.update({
|
||||
'InvoiceType_template': 'account_edi_ubl_cii.ubl_21_InvoiceType',
|
||||
'InvoiceLineType_template': 'account_edi_ubl_cii.ubl_21_InvoiceLineType',
|
||||
if vals['document_type'] != 'invoice':
|
||||
# In UBL 2.1, Delivery, PaymentMeans, PaymentTerms exist also in DebitNote and CreditNote
|
||||
self._add_invoice_delivery_nodes(document_node, vals)
|
||||
self._add_invoice_payment_means_nodes(document_node, vals)
|
||||
self._add_invoice_payment_terms_nodes(document_node, vals)
|
||||
|
||||
return document_node
|
||||
|
||||
def _add_invoice_header_nodes(self, document_node, vals):
|
||||
super()._add_invoice_header_nodes(document_node, vals)
|
||||
|
||||
invoice = vals['invoice']
|
||||
document_node.update({
|
||||
'cbc:UBLVersionID': {'_text': '2.1'},
|
||||
'cbc:DueDate': {'_text': invoice.invoice_date_due} if vals['document_type'] == 'invoice' else None,
|
||||
'cbc:CreditNoteTypeCode': {'_text': 261 if vals['process_type'] == 'selfbilling' else 381} if vals['document_type'] == 'credit_note' else None,
|
||||
'cbc:BuyerReference': {'_text': invoice.commercial_partner_id.ref},
|
||||
})
|
||||
|
||||
vals['vals'].update({
|
||||
'ubl_version_id': 2.1,
|
||||
'buyer_reference': invoice.commercial_partner_id.ref,
|
||||
})
|
||||
def _add_document_allowance_charge_nodes(self, document_node, vals):
|
||||
super()._add_document_allowance_charge_nodes(document_node, vals)
|
||||
|
||||
return vals
|
||||
# AllowanceCharge exists in debit notes only in UBL 2.1
|
||||
if vals['document_type'] == 'debit_note':
|
||||
document_node['cac:AllowanceCharge'] = []
|
||||
for base_line in vals['base_lines']:
|
||||
if self._is_document_allowance_charge(base_line):
|
||||
document_node['cac:AllowanceCharge'].append(
|
||||
self._get_document_allowance_charge_node({
|
||||
**vals,
|
||||
'base_line': base_line,
|
||||
})
|
||||
)
|
||||
|
||||
def _add_invoice_line_period_nodes(self, line_node, vals):
|
||||
base_line = vals['base_line']
|
||||
|
||||
# deferred_start_date & deferred_end_date are enterprise-only fields
|
||||
if (
|
||||
vals['document_type'] in {'invoice', 'credit_note'}
|
||||
and (base_line.get('deferred_start_date') or base_line.get('deferred_end_date'))
|
||||
):
|
||||
line_node['cac:InvoicePeriod'] = {
|
||||
'cbc:StartDate': {'_text': base_line['deferred_start_date']},
|
||||
'cbc:EndDate': {'_text': base_line['deferred_end_date']},
|
||||
}
|
||||
|
||||
def _add_document_line_allowance_charge_nodes(self, line_node, vals):
|
||||
line_node['cac:AllowanceCharge'] = []
|
||||
if node := self._get_line_discount_allowance_charge_node(vals):
|
||||
line_node['cac:AllowanceCharge'].append(node)
|
||||
if vals['fixed_taxes_as_allowance_charges']:
|
||||
line_node['cac:AllowanceCharge'].extend(self._get_line_fixed_tax_allowance_charge_nodes(vals))
|
||||
|
|
|
|||
|
|
@ -3,9 +3,9 @@
|
|||
from odoo import models
|
||||
|
||||
|
||||
class AccountEdiXmlUBLANZ(models.AbstractModel):
|
||||
_inherit = "account.edi.xml.ubl_bis3"
|
||||
class AccountEdiXmlUbl_A_Nz(models.AbstractModel):
|
||||
_name = 'account.edi.xml.ubl_a_nz'
|
||||
_inherit = ["account.edi.xml.ubl_bis3"]
|
||||
_description = "A-NZ BIS Billing 3.0"
|
||||
|
||||
"""
|
||||
|
|
@ -19,66 +19,91 @@ class AccountEdiXmlUBLANZ(models.AbstractModel):
|
|||
def _export_invoice_filename(self, invoice):
|
||||
return f"{invoice.name.replace('/', '_')}_a_nz.xml"
|
||||
|
||||
def _export_invoice_ecosio_schematrons(self):
|
||||
return {
|
||||
'invoice': 'eu.peppol.bis3.aunz.ubl:invoice:1.0.8',
|
||||
'credit_note': 'eu.peppol.bis3.aunz.ubl:creditnote:1.0.8',
|
||||
}
|
||||
# -------------------------------------------------------------------------
|
||||
# EXPORT: Templates
|
||||
# -------------------------------------------------------------------------
|
||||
|
||||
def _get_partner_party_tax_scheme_vals_list(self, partner, role):
|
||||
def _get_customization_id(self, process_type='billing'):
|
||||
if process_type == 'billing':
|
||||
return 'urn:cen.eu:en16931:2017#conformant#urn:fdc:peppol.eu:2017:poacc:billing:international:aunz:3.0'
|
||||
|
||||
def _ubl_get_line_allowance_charge_discount_node(self, vals, discount_values):
|
||||
# EXTENDS account.edi.xml.ubl_bis3
|
||||
vals_list = super()._get_partner_party_tax_scheme_vals_list(partner, role)
|
||||
discount_node = super()._ubl_get_line_allowance_charge_discount_node(vals, discount_values)
|
||||
discount_node['cbc:AllowanceChargeReason'] = None
|
||||
discount_node['cbc:MultiplierFactorNumeric'] = None
|
||||
discount_node['cbc:BaseAmount'] = None
|
||||
return discount_node
|
||||
|
||||
for vals in vals_list:
|
||||
if partner.country_id.code == "AU" and partner.vat:
|
||||
vals['company_id'] = partner.vat.replace(" ", "")
|
||||
def _ubl_add_values_tax_currency_code(self, vals):
|
||||
# OVERRIDE account.edi.xml.ubl_bis3
|
||||
self._ubl_add_values_tax_currency_code_empty(vals)
|
||||
|
||||
return vals_list
|
||||
|
||||
def _get_partner_party_vals(self, partner, role):
|
||||
def _ubl_tax_totals_node_grouping_key(self, base_line, tax_data, vals, currency):
|
||||
# EXTENDS account.edi.xml.ubl_bis3
|
||||
vals = super()._get_partner_party_vals(partner, role)
|
||||
tax_total_keys = super()._ubl_tax_totals_node_grouping_key(base_line, tax_data, vals, currency)
|
||||
|
||||
if partner.country_code == 'AU' and partner.vat:
|
||||
vals['endpoint_id'] = partner.vat.replace(" ", "")
|
||||
if partner.country_code == 'NZ':
|
||||
vals['endpoint_id'] = partner.company_registry
|
||||
company_currency = vals['company'].currency_id
|
||||
if (
|
||||
tax_total_keys['tax_total_key']
|
||||
and company_currency != vals['currency']
|
||||
and tax_total_keys['tax_total_key']['currency'] == company_currency
|
||||
):
|
||||
tax_total_keys['tax_total_key'] = None
|
||||
|
||||
for party_tax_scheme in vals['party_tax_scheme_vals']:
|
||||
party_tax_scheme['tax_scheme_id'] = 'GST'
|
||||
return tax_total_keys
|
||||
|
||||
return vals
|
||||
def _ubl_add_party_endpoint_id_node(self, vals):
|
||||
# EXTENDS
|
||||
super()._ubl_add_party_endpoint_id_node(vals)
|
||||
partner = vals['party_vals']['partner']
|
||||
commercial_partner = partner.commercial_partner_id
|
||||
|
||||
def _get_partner_party_legal_entity_vals_list(self, partner):
|
||||
# EXTENDS account.edi.xml.ubl_bis3
|
||||
vals_list = super()._get_partner_party_legal_entity_vals_list(partner)
|
||||
if commercial_partner.country_code == 'AU' and commercial_partner.vat:
|
||||
vat = commercial_partner.vat.replace(" ", "")
|
||||
vals['party_node']['cbc:EndpointID']['_text'] = vat
|
||||
elif commercial_partner.country_code == 'NZ' and commercial_partner.company_registry:
|
||||
vals['party_node']['cbc:EndpointID']['_text'] = commercial_partner.company_registry
|
||||
|
||||
for vals in vals_list:
|
||||
if partner.country_code == 'AU' and partner.vat:
|
||||
vals.update({
|
||||
'company_id': partner.vat.replace(" ", ""),
|
||||
'company_id_attrs': {'schemeID': '0151'},
|
||||
})
|
||||
if partner.country_code == 'NZ':
|
||||
vals.update({
|
||||
'company_id': partner.company_registry,
|
||||
'company_id_attrs': {'schemeID': '0088'},
|
||||
})
|
||||
return vals_list
|
||||
def _ubl_add_party_tax_scheme_nodes(self, vals):
|
||||
# EXTENDS
|
||||
super()._ubl_add_party_tax_scheme_nodes(vals)
|
||||
partner = vals['party_vals']['partner']
|
||||
commercial_partner = partner.commercial_partner_id
|
||||
|
||||
def _get_tax_category_list(self, invoice, taxes):
|
||||
# EXTENDS account.edi.xml.ubl_bis3
|
||||
vals_list = super()._get_tax_category_list(invoice, taxes)
|
||||
for vals in vals_list:
|
||||
vals['tax_scheme_id'] = 'GST'
|
||||
return vals_list
|
||||
if (
|
||||
(commercial_partner.country_code == 'AU' and commercial_partner.vat)
|
||||
or (commercial_partner.country_code == 'NZ' and commercial_partner.company_registry)
|
||||
):
|
||||
vals['party_node']['cac:PartyTaxScheme'] = [{
|
||||
'cbc:CompanyID': {
|
||||
'_text': vals['party_node']['cbc:EndpointID']['_text'],
|
||||
'schemeID': None,
|
||||
},
|
||||
'cac:TaxScheme': {
|
||||
'cbc:ID': {'_text': 'GST'},
|
||||
},
|
||||
}]
|
||||
|
||||
def _export_invoice_vals(self, invoice):
|
||||
# EXTENDS account.edi.xml.ubl_21
|
||||
vals = super()._export_invoice_vals(invoice)
|
||||
def _ubl_add_party_legal_entity_nodes(self, vals):
|
||||
# EXTENDS
|
||||
super()._ubl_add_party_legal_entity_nodes(vals)
|
||||
partner = vals['party_vals']['partner']
|
||||
commercial_partner = partner.commercial_partner_id
|
||||
|
||||
vals['vals'].update({
|
||||
'customization_id': 'urn:cen.eu:en16931:2017#conformant#urn:fdc:peppol.eu:2017:poacc:billing:international:aunz:3.0',
|
||||
})
|
||||
|
||||
return vals
|
||||
if commercial_partner.country_code == 'AU' and commercial_partner.vat:
|
||||
vals['party_node']['cac:PartyLegalEntity'] = [{
|
||||
'cbc:RegistrationName': {'_text': commercial_partner.name},
|
||||
'cbc:CompanyID': {
|
||||
'_text': vals['party_node']['cbc:EndpointID']['_text'],
|
||||
'schemeID': '0151',
|
||||
},
|
||||
}]
|
||||
elif commercial_partner.country_code == 'NZ' and commercial_partner.company_registry:
|
||||
vals['party_node']['cac:PartyLegalEntity'] = [{
|
||||
'cbc:RegistrationName': {'_text': commercial_partner.name},
|
||||
'cbc:CompanyID': {
|
||||
'_text': vals['party_node']['cbc:EndpointID']['_text'],
|
||||
'schemeID': '0088',
|
||||
},
|
||||
}]
|
||||
|
|
|
|||
File diff suppressed because it is too large
Load diff
|
|
@ -5,9 +5,9 @@ from odoo import models
|
|||
import re
|
||||
|
||||
|
||||
class AccountEdiXmlUBLEFFF(models.AbstractModel):
|
||||
_inherit = "account.edi.xml.ubl_20"
|
||||
class AccountEdiXmlUbl_Efff(models.AbstractModel):
|
||||
_name = 'account.edi.xml.ubl_efff'
|
||||
_inherit = ["account.edi.xml.ubl_20"]
|
||||
_description = "E-FFF (BE)"
|
||||
|
||||
# -------------------------------------------------------------------------
|
||||
|
|
@ -18,6 +18,3 @@ class AccountEdiXmlUBLEFFF(models.AbstractModel):
|
|||
# official naming convention
|
||||
vat = invoice.company_id.partner_id.commercial_partner_id.vat
|
||||
return 'efff_%s%s%s.xml' % (vat or '', '_' if vat else '', re.sub(r'[\W_]', '', invoice.name))
|
||||
|
||||
def _export_invoice_ecosio_schematrons(self):
|
||||
return None
|
||||
|
|
|
|||
|
|
@ -3,9 +3,9 @@
|
|||
from odoo import models
|
||||
|
||||
|
||||
class AccountEdiXmlUBLNL(models.AbstractModel):
|
||||
_inherit = "account.edi.xml.ubl_bis3"
|
||||
class AccountEdiXmlUbl_Nl(models.AbstractModel):
|
||||
_name = 'account.edi.xml.ubl_nl'
|
||||
_inherit = ["account.edi.xml.ubl_bis3"]
|
||||
_description = "SI-UBL 2.0 (NLCIUS)"
|
||||
|
||||
"""
|
||||
|
|
@ -32,58 +32,87 @@ class AccountEdiXmlUBLNL(models.AbstractModel):
|
|||
def _export_invoice_filename(self, invoice):
|
||||
return f"{invoice.name.replace('/', '_')}_nlcius.xml"
|
||||
|
||||
def _export_invoice_ecosio_schematrons(self):
|
||||
return {
|
||||
'invoice': 'org.simplerinvoicing:invoice:2.0.3.3',
|
||||
'credit_note': 'org.simplerinvoicing:creditnote:2.0.3.3',
|
||||
}
|
||||
# -------------------------------------------------------------------------
|
||||
# EXPORT: Templates
|
||||
# -------------------------------------------------------------------------
|
||||
|
||||
def _get_tax_category_list(self, invoice, taxes):
|
||||
# EXTENDS account.edi.xml.ubl_bis3
|
||||
vals_list = super()._get_tax_category_list(invoice, taxes)
|
||||
for tax in vals_list:
|
||||
# [BR-NL-35] The use of a tax exemption reason code (cac:TaxTotal/cac:TaxSubtotal/cac:TaxCategory
|
||||
# /cbc:TaxExemptionReasonCode) is not recommended
|
||||
tax.pop('tax_exemption_reason_code', None)
|
||||
return vals_list
|
||||
def _get_customization_id(self, process_type='billing'):
|
||||
if process_type == 'billing':
|
||||
return 'urn:cen.eu:en16931:2017#compliant#urn:fdc:nen.nl:nlcius:v1.0'
|
||||
|
||||
def _get_partner_address_vals(self, partner):
|
||||
def _ubl_default_tax_category_grouping_key(self, base_line, tax_data, vals, currency):
|
||||
# EXTENDS account.edi.xml.ubl_bis3
|
||||
vals = super()._get_partner_address_vals(partner)
|
||||
# [BR-NL-28] The use of a country subdivision (cac:AccountingCustomerParty/cac:Party/cac:PostalAddress
|
||||
# /cbc:CountrySubentity) is not recommended
|
||||
vals.pop('country_subentity', None)
|
||||
return vals
|
||||
grouping_key = super()._ubl_default_tax_category_grouping_key(base_line, tax_data, vals, currency)
|
||||
if not grouping_key:
|
||||
return
|
||||
|
||||
def _get_invoice_line_allowance_vals_list(self, line, tax_values_list=None):
|
||||
# EXTENDS account.edi.xml.ubl_bis3
|
||||
vals_list = super()._get_invoice_line_allowance_vals_list(line, tax_values_list=tax_values_list)
|
||||
# [BR-NL-32] Use of Discount reason code ( AllowanceChargeReasonCode ) is not recommended.
|
||||
# [BR-EN-34] Use of Charge reason code ( AllowanceChargeReasonCode ) is not recommended.
|
||||
# Careful ! [BR-42]-Each Invoice line allowance (BG-27) shall have an Invoice line allowance reason (BT-139)
|
||||
# or an Invoice line allowance reason code (BT-140).
|
||||
for vals in vals_list:
|
||||
if vals['allowance_charge_reason_code'] == 95:
|
||||
vals['allowance_charge_reason'] = 'Discount'
|
||||
if vals.get('allowance_charge_reason'):
|
||||
vals.pop('allowance_charge_reason_code')
|
||||
return vals_list
|
||||
grouping_key['tax_exemption_reason_code'] = None
|
||||
return grouping_key
|
||||
|
||||
def _get_invoice_payment_means_vals_list(self, invoice):
|
||||
def _ubl_add_values_tax_currency_code(self, vals):
|
||||
# OVERRIDE account.edi.xml.ubl_bis3
|
||||
self._ubl_add_values_tax_currency_code_empty(vals)
|
||||
|
||||
def _ubl_tax_totals_node_grouping_key(self, base_line, tax_data, vals, currency):
|
||||
# EXTENDS account.edi.xml.ubl_bis3
|
||||
vals_list = super()._get_invoice_payment_means_vals_list(invoice)
|
||||
tax_total_keys = super()._ubl_tax_totals_node_grouping_key(base_line, tax_data, vals, currency)
|
||||
|
||||
company_currency = vals['company'].currency_id
|
||||
if (
|
||||
tax_total_keys['tax_total_key']
|
||||
and company_currency != vals['currency']
|
||||
and tax_total_keys['tax_total_key']['currency'] == company_currency
|
||||
):
|
||||
tax_total_keys['tax_total_key'] = None
|
||||
|
||||
return tax_total_keys
|
||||
|
||||
def _ubl_get_line_allowance_charge_discount_node(self, vals, discount_values):
|
||||
# EXTENDS account.edi.xml.ubl_bis3
|
||||
discount_node = super()._ubl_get_line_allowance_charge_discount_node(vals, discount_values)
|
||||
discount_node['cbc:AllowanceChargeReasonCode'] = None
|
||||
discount_node['cbc:MultiplierFactorNumeric'] = None
|
||||
discount_node['cbc:BaseAmount'] = None
|
||||
return discount_node
|
||||
|
||||
def _ubl_add_accounting_supplier_party_identification_nodes(self, vals):
|
||||
# EXTENDS account.edi.xml.ubl_bis3
|
||||
super()._ubl_add_accounting_supplier_party_identification_nodes(vals)
|
||||
nodes = vals['party_node']['cac:PartyIdentification']
|
||||
partner = vals['party_vals']['partner']
|
||||
commercial_partner = partner.commercial_partner_id
|
||||
|
||||
if commercial_partner.peppol_endpoint:
|
||||
nodes.append({
|
||||
'cbc:ID': {
|
||||
'_text': commercial_partner.peppol_endpoint,
|
||||
'schemeID': None,
|
||||
},
|
||||
})
|
||||
|
||||
def _ubl_add_accounting_customer_party_identification_nodes(self, vals):
|
||||
# EXTENDS account.edi.xml.ubl_bis3
|
||||
super()._ubl_add_accounting_customer_party_identification_nodes(vals)
|
||||
partner = vals['party_vals']['partner']
|
||||
commercial_partner = partner.commercial_partner_id
|
||||
|
||||
if (
|
||||
commercial_partner.country_code == 'NL'
|
||||
and commercial_partner.peppol_endpoint
|
||||
):
|
||||
vals['party_node']['cac:PartyIdentification'] = [{
|
||||
'cbc:ID': {
|
||||
'_text': commercial_partner.peppol_endpoint,
|
||||
'schemeID': commercial_partner.peppol_eas if commercial_partner.peppol_eas in ('0106', '0190') else None,
|
||||
},
|
||||
}]
|
||||
|
||||
def _add_invoice_payment_means_nodes(self, document_node, vals):
|
||||
# EXTENDS account.edi.xml.ubl_bis3
|
||||
super()._add_invoice_payment_means_nodes(document_node, vals)
|
||||
# [BR-NL-29] The use of a payment means text (cac:PaymentMeans/cbc:PaymentMeansCode/@name) is not recommended
|
||||
for vals in vals_list:
|
||||
vals.pop('payment_means_code_attrs', None)
|
||||
return vals_list
|
||||
|
||||
def _export_invoice_vals(self, invoice):
|
||||
# EXTENDS account.edi.xml.ubl_bis3
|
||||
vals = super()._export_invoice_vals(invoice)
|
||||
|
||||
vals['vals']['customization_id'] = 'urn:cen.eu:en16931:2017#compliant#urn:fdc:nen.nl:nlcius:v1.0'
|
||||
|
||||
# [BR-NL-24] Use of previous invoice date ( IssueDate ) is not recommended.
|
||||
# vals['vals'].pop('issue_date') # careful, this causes other errors from the validator...
|
||||
|
||||
return vals
|
||||
payment_means_node = document_node['cac:PaymentMeans']
|
||||
if 'name' in payment_means_node['cbc:PaymentMeansCode']:
|
||||
payment_means_node['cbc:PaymentMeansCode']['name'] = None
|
||||
if 'listID' in payment_means_node['cbc:PaymentMeansCode']:
|
||||
payment_means_node['cbc:PaymentMeansCode']['listID'] = None
|
||||
|
|
|
|||
|
|
@ -2,9 +2,9 @@
|
|||
from odoo import models
|
||||
|
||||
|
||||
class AccountEdiXmlUBLSG(models.AbstractModel):
|
||||
_inherit = "account.edi.xml.ubl_bis3"
|
||||
_name = "account.edi.xml.ubl_sg"
|
||||
class AccountEdiXmlUbl_Sg(models.AbstractModel):
|
||||
_name = 'account.edi.xml.ubl_sg'
|
||||
_inherit = ["account.edi.xml.ubl_bis3"]
|
||||
_description = "SG BIS Billing 3.0"
|
||||
|
||||
"""
|
||||
|
|
@ -18,58 +18,61 @@ class AccountEdiXmlUBLSG(models.AbstractModel):
|
|||
def _export_invoice_filename(self, invoice):
|
||||
return f"{invoice.name.replace('/', '_')}_sg.xml"
|
||||
|
||||
def _export_invoice_ecosio_schematrons(self):
|
||||
return {
|
||||
'invoice': 'eu.peppol.bis3.sg.ubl:invoice:1.0.3',
|
||||
'credit_note': 'eu.peppol.bis3.sg.ubl:creditnote:1.0.3',
|
||||
# -------------------------------------------------------------------------
|
||||
# EXPORT: Templates
|
||||
# -------------------------------------------------------------------------
|
||||
|
||||
def _get_customization_id(self, process_type='billing'):
|
||||
if process_type == 'billing':
|
||||
return 'urn:cen.eu:en16931:2017#conformant#urn:fdc:peppol.eu:2017:poacc:billing:international:sg:3.0'
|
||||
|
||||
def _ubl_default_tax_category_grouping_key(self, base_line, tax_data, vals, currency):
|
||||
# EXTENDS account.edi.xml.ubl_bis3
|
||||
grouping_key = super()._ubl_default_tax_category_grouping_key(base_line, tax_data, vals, currency)
|
||||
if not grouping_key:
|
||||
return
|
||||
|
||||
grouping_key['tax_exemption_reason'] = None
|
||||
grouping_key['tax_exemption_reason_code'] = None
|
||||
|
||||
# For reference: https://www.peppolguide.sg/billing/bis/#_gst_category_codes
|
||||
if not tax_data or tax_data['tax'].amount == 0.0:
|
||||
grouping_key['tax_category_code'] = 'ZR'
|
||||
else:
|
||||
grouping_key['tax_category_code'] = 'SR'
|
||||
|
||||
return grouping_key
|
||||
|
||||
def _ubl_get_line_allowance_charge_discount_node(self, vals, discount_values):
|
||||
# EXTENDS account.edi.xml.ubl_bis3
|
||||
discount_node = super()._ubl_get_line_allowance_charge_discount_node(vals, discount_values)
|
||||
discount_node['cbc:AllowanceChargeReason'] = None
|
||||
discount_node['cbc:MultiplierFactorNumeric'] = None
|
||||
discount_node['cbc:BaseAmount'] = None
|
||||
return discount_node
|
||||
|
||||
def _ubl_add_values_tax_currency_code(self, vals):
|
||||
# OVERRIDE account.edi.xml.ubl_bis3
|
||||
self._ubl_add_values_tax_currency_code_empty(vals)
|
||||
|
||||
def _ubl_tax_totals_node_grouping_key(self, base_line, tax_data, vals, currency):
|
||||
# EXTENDS account.edi.xml.ubl_bis3
|
||||
tax_total_keys = super()._ubl_tax_totals_node_grouping_key(base_line, tax_data, vals, currency)
|
||||
|
||||
company_currency = vals['company'].currency_id
|
||||
if (
|
||||
tax_total_keys['tax_total_key']
|
||||
and company_currency != vals['currency']
|
||||
and tax_total_keys['tax_total_key']['currency'] == company_currency
|
||||
):
|
||||
tax_total_keys['tax_total_key'] = None
|
||||
|
||||
return tax_total_keys
|
||||
|
||||
def _add_invoice_payment_means_nodes(self, document_node, vals):
|
||||
""" https://www.peppolguide.sg/billing/bis/#_payment_means_information """
|
||||
super()._add_invoice_payment_means_nodes(document_node, vals)
|
||||
document_node['cac:PaymentMeans']['cbc:PaymentMeansCode'] = {
|
||||
'_text': 54,
|
||||
'name': 'Credit Card',
|
||||
}
|
||||
|
||||
def _get_partner_party_vals(self, partner, role):
|
||||
# EXTENDS account.edi.xml.ubl_bis3
|
||||
vals = super()._get_partner_party_vals(partner, role)
|
||||
|
||||
for party_tax_scheme in vals['party_tax_scheme_vals']:
|
||||
party_tax_scheme['tax_scheme_id'] = 'GST'
|
||||
|
||||
return vals
|
||||
|
||||
def _get_invoice_payment_means_vals_list(self, invoice):
|
||||
""" https://www.peppolguide.sg/billing/bis/#_payment_means_information
|
||||
"""
|
||||
vals_list = super()._get_invoice_payment_means_vals_list(invoice)
|
||||
for vals in vals_list:
|
||||
vals.update({
|
||||
'payment_means_code': 54,
|
||||
'payment_means_code_attrs': {'name': 'Credit Card'},
|
||||
})
|
||||
|
||||
return vals_list
|
||||
|
||||
def _get_tax_sg_codes(self, invoice, tax):
|
||||
""" https://www.peppolguide.sg/billing/bis/#_gst_category_codes
|
||||
"""
|
||||
tax_category_code = 'SR'
|
||||
if tax.amount == 0:
|
||||
tax_category_code = 'ZR'
|
||||
return tax_category_code
|
||||
|
||||
def _get_tax_category_list(self, invoice, taxes):
|
||||
# OVERRIDE
|
||||
res = []
|
||||
for tax in taxes:
|
||||
res.append({
|
||||
'id': self._get_tax_sg_codes(invoice, tax),
|
||||
'percent': tax.amount if tax.amount_type == 'percent' else False,
|
||||
'tax_scheme_id': 'GST',
|
||||
})
|
||||
return res
|
||||
|
||||
def _export_invoice_vals(self, invoice):
|
||||
# EXTENDS account.edi.xml.ubl_bis3
|
||||
vals = super()._export_invoice_vals(invoice)
|
||||
|
||||
vals['vals'].update({
|
||||
'customization_id': 'urn:cen.eu:en16931:2017#conformant#urn:fdc:peppol.eu:2017:poacc:billing:international:sg:3.0',
|
||||
})
|
||||
|
||||
return vals
|
||||
|
|
|
|||
|
|
@ -2,9 +2,9 @@
|
|||
from odoo import models
|
||||
|
||||
|
||||
class AccountEdiXmlUBLDE(models.AbstractModel):
|
||||
_inherit = "account.edi.xml.ubl_bis3"
|
||||
class AccountEdiXmlUbl_De(models.AbstractModel):
|
||||
_name = 'account.edi.xml.ubl_de'
|
||||
_inherit = ["account.edi.xml.ubl_bis3"]
|
||||
_description = "BIS3 DE (XRechnung)"
|
||||
|
||||
# -------------------------------------------------------------------------
|
||||
|
|
@ -12,41 +12,103 @@ class AccountEdiXmlUBLDE(models.AbstractModel):
|
|||
# -------------------------------------------------------------------------
|
||||
|
||||
def _export_invoice_filename(self, invoice):
|
||||
return f"{invoice.name.replace('/', '_')}_ubl_de.xml"
|
||||
|
||||
def _export_invoice_ecosio_schematrons(self):
|
||||
return {
|
||||
'invoice': 'de.xrechnung:ubl-invoice:2.2.0',
|
||||
'credit_note': 'de.xrechnung:ubl-creditnote:2.2.0',
|
||||
}
|
||||
|
||||
def _export_invoice_vals(self, invoice):
|
||||
# EXTENDS account.edi.xml.ubl_bis3
|
||||
vals = super()._export_invoice_vals(invoice)
|
||||
vals['vals']['customization_id'] = 'urn:cen.eu:en16931:2017#compliant#urn:xeinkauf.de:kosit:xrechnung_3.0'
|
||||
if not vals['vals'].get('buyer_reference'):
|
||||
vals['vals']['buyer_reference'] = 'N/A'
|
||||
return vals
|
||||
return f"{invoice.name.replace('/', '_')}_xrechnung.xml"
|
||||
|
||||
def _export_invoice_constraints(self, invoice, vals):
|
||||
# EXTENDS account.edi.xml.ubl_bis3
|
||||
constraints = super()._export_invoice_constraints(invoice, vals)
|
||||
|
||||
constraints.update({
|
||||
'bis3_de_supplier_telephone_required': self._check_required_fields(vals['supplier'], ['phone', 'mobile']),
|
||||
'bis3_de_supplier_telephone_required': self._check_required_fields(vals['supplier'], ['phone']),
|
||||
'bis3_de_supplier_electronic_mail_required': self._check_required_fields(vals['supplier'], 'email'),
|
||||
})
|
||||
|
||||
return constraints
|
||||
|
||||
def _get_partner_party_vals(self, partner, role):
|
||||
# EXTENDS account.edi.xml.ubl_bis3
|
||||
vals = super()._get_partner_party_vals(partner, role)
|
||||
# -------------------------------------------------------------------------
|
||||
# EXPORT: Templates
|
||||
# -------------------------------------------------------------------------
|
||||
|
||||
if not vals.get('endpoint_id') and partner.email:
|
||||
vals.update({
|
||||
'endpoint_id': partner.email,
|
||||
'endpoint_id_attrs': {'schemeID': 'EM'},
|
||||
def _get_customization_id(self, process_type='billing'):
|
||||
if process_type == 'billing':
|
||||
return 'urn:cen.eu:en16931:2017#compliant#urn:xeinkauf.de:kosit:xrechnung_3.0'
|
||||
|
||||
def _ubl_add_values_tax_currency_code(self, vals):
|
||||
# OVERRIDE account.edi.xml.ubl_bis3
|
||||
self._ubl_add_values_tax_currency_code_empty(vals)
|
||||
|
||||
def _ubl_tax_totals_node_grouping_key(self, base_line, tax_data, vals, currency):
|
||||
# EXTENDS account.edi.xml.ubl_bis3
|
||||
tax_total_keys = super()._ubl_tax_totals_node_grouping_key(base_line, tax_data, vals, currency)
|
||||
|
||||
company_currency = vals['company'].currency_id
|
||||
if (
|
||||
tax_total_keys['tax_total_key']
|
||||
and company_currency != vals['currency']
|
||||
and tax_total_keys['tax_total_key']['currency'] == company_currency
|
||||
):
|
||||
tax_total_keys['tax_total_key'] = None
|
||||
|
||||
return tax_total_keys
|
||||
|
||||
def _add_invoice_header_nodes(self, document_node, vals):
|
||||
# EXTENDS account.edi.xml.ubl_bis3
|
||||
super()._add_invoice_header_nodes(document_node, vals)
|
||||
if not document_node['cbc:BuyerReference']['_text']:
|
||||
document_node['cbc:BuyerReference']['_text'] = 'N/A'
|
||||
|
||||
def _ubl_add_party_endpoint_id_node(self, vals):
|
||||
# EXTENDS account.edi.xml.ubl_bis3
|
||||
super()._ubl_add_party_endpoint_id_node(vals)
|
||||
partner = vals['party_vals']['partner']
|
||||
|
||||
if not vals['party_node']['cbc:EndpointID']['_text'] and partner.email:
|
||||
vals['party_node']['cbc:EndpointID'] = {
|
||||
'_text': partner.email,
|
||||
'schemeID': 'EM'
|
||||
}
|
||||
|
||||
def _ubl_add_party_tax_scheme_nodes(self, vals):
|
||||
# EXTENDS account.edi.xml.ubl_bis3
|
||||
super()._ubl_add_party_tax_scheme_nodes(vals)
|
||||
nodes = vals['party_node']['cac:PartyTaxScheme']
|
||||
partner = vals['party_vals']['partner']
|
||||
commercial_partner = partner.commercial_partner_id
|
||||
|
||||
if (
|
||||
not nodes
|
||||
and commercial_partner.peppol_eas
|
||||
):
|
||||
nodes.append({
|
||||
'cbc:CompanyID': {'_text': None},
|
||||
'cac:TaxScheme': {
|
||||
'cbc:ID': {'_text': commercial_partner.peppol_eas},
|
||||
},
|
||||
})
|
||||
|
||||
return vals
|
||||
def _ubl_add_party_legal_entity_nodes(self, vals):
|
||||
# EXTENDS account.edi.xml.ubl_bis3
|
||||
super()._ubl_add_party_legal_entity_nodes(vals)
|
||||
nodes = vals['party_node']['cac:PartyLegalEntity']
|
||||
partner = vals['party_vals']['partner']
|
||||
commercial_partner = partner.commercial_partner_id
|
||||
|
||||
if (
|
||||
not nodes
|
||||
and commercial_partner.name
|
||||
):
|
||||
nodes.append({
|
||||
'cbc:RegistrationName': {'_text': commercial_partner.name},
|
||||
'cbc:CompanyID': {
|
||||
'_text': None,
|
||||
'schemeID': None,
|
||||
},
|
||||
})
|
||||
|
||||
def _ubl_get_line_allowance_charge_discount_node(self, vals, discount_values):
|
||||
# EXTENDS account.edi.xml.ubl_bis3
|
||||
discount_node = super()._ubl_get_line_allowance_charge_discount_node(vals, discount_values)
|
||||
discount_node['cbc:AllowanceChargeReason'] = None
|
||||
discount_node['cbc:MultiplierFactorNumeric'] = None
|
||||
discount_node['cbc:BaseAmount'] = None
|
||||
return discount_node
|
||||
|
|
|
|||
|
|
@ -0,0 +1,356 @@
|
|||
from base64 import b64decode
|
||||
from contextlib import suppress
|
||||
import binascii
|
||||
import re
|
||||
|
||||
from lxml import etree
|
||||
|
||||
from odoo import _, api, fields, models, Command
|
||||
from odoo.tools.mimetypes import guess_mimetype
|
||||
from odoo.exceptions import UserError
|
||||
from odoo.tools import frozendict
|
||||
|
||||
|
||||
class AccountMove(models.Model):
|
||||
_inherit = 'account.move'
|
||||
|
||||
ubl_cii_xml_id = fields.Many2one(
|
||||
comodel_name='ir.attachment',
|
||||
string="Attachment",
|
||||
compute=lambda self: self._compute_linked_attachment_id('ubl_cii_xml_id', 'ubl_cii_xml_file'),
|
||||
depends=['ubl_cii_xml_file']
|
||||
)
|
||||
ubl_cii_xml_file = fields.Binary(
|
||||
attachment=True,
|
||||
string="UBL/CII File",
|
||||
copy=False,
|
||||
)
|
||||
ubl_cii_xml_filename = fields.Char(
|
||||
string="UBL/CII Filename",
|
||||
compute='_compute_filename',
|
||||
)
|
||||
|
||||
# -------------------------------------------------------------------------
|
||||
# COMPUTE
|
||||
# -------------------------------------------------------------------------
|
||||
|
||||
@api.depends('ubl_cii_xml_file')
|
||||
def _compute_filename(self):
|
||||
""" Compute the filename based on the uploaded file. """
|
||||
for record in self:
|
||||
record.ubl_cii_xml_filename = record.ubl_cii_xml_id.name
|
||||
|
||||
# -------------------------------------------------------------------------
|
||||
# ACTIONS
|
||||
# -------------------------------------------------------------------------
|
||||
|
||||
def action_invoice_download_ubl(self):
|
||||
return {
|
||||
'type': 'ir.actions.act_url',
|
||||
'url': f'/account/download_invoice_documents/{",".join(map(str, self.ids))}/ubl?allow_fallback=true',
|
||||
'target': 'download',
|
||||
}
|
||||
|
||||
# -------------------------------------------------------------------------
|
||||
# BUSINESS
|
||||
# -------------------------------------------------------------------------
|
||||
|
||||
def _get_fields_to_detach(self):
|
||||
# EXTENDS account
|
||||
fields_list = super()._get_fields_to_detach()
|
||||
fields_list.append("ubl_cii_xml_file")
|
||||
return fields_list
|
||||
|
||||
def _get_invoice_legal_documents(self, filetype, allow_fallback=False):
|
||||
# EXTENDS account
|
||||
self.ensure_one()
|
||||
if filetype == 'ubl':
|
||||
if ubl_attachment := self.ubl_cii_xml_id:
|
||||
return {
|
||||
'filename': ubl_attachment.name,
|
||||
'filetype': 'xml',
|
||||
'content': ubl_attachment.raw,
|
||||
}
|
||||
elif allow_fallback:
|
||||
if self.partner_id and (suggested_edi_format := self.commercial_partner_id._get_suggested_ubl_cii_edi_format()):
|
||||
builder = self.env['res.partner']._get_edi_builder(suggested_edi_format)
|
||||
xml_content, errors = builder._export_invoice(self)
|
||||
filename = builder._export_invoice_filename(self)
|
||||
return {
|
||||
'filename': filename,
|
||||
'filetype': 'xml',
|
||||
'content': xml_content,
|
||||
'errors': errors,
|
||||
}
|
||||
return super()._get_invoice_legal_documents(filetype, allow_fallback=allow_fallback)
|
||||
|
||||
def get_extra_print_items(self):
|
||||
print_items = super().get_extra_print_items()
|
||||
posted_moves = self.filtered(lambda move: move.state == 'posted')
|
||||
suggested_edi_formats = {
|
||||
suggested_format
|
||||
for partner in posted_moves.commercial_partner_id
|
||||
if (suggested_format := partner ._get_suggested_ubl_cii_edi_format())
|
||||
}
|
||||
if posted_moves.ubl_cii_xml_id or suggested_edi_formats:
|
||||
print_items.append({
|
||||
'key': 'download_ubl',
|
||||
'description': _('Export XML'),
|
||||
**posted_moves.action_invoice_download_ubl(),
|
||||
})
|
||||
return print_items
|
||||
|
||||
def action_group_ungroup_lines_by_tax(self):
|
||||
"""
|
||||
This action allows the user to reload an imported move, grouping or not lines by tax
|
||||
"""
|
||||
self.ensure_one()
|
||||
self._check_move_for_group_ungroup_lines_by_tax()
|
||||
|
||||
# Check if lines look like they're grouped
|
||||
lines_grouped = any(
|
||||
re.match(re.escape(self.partner_id.name or self.env._("Unknown partner")) + r' - \d+ - .*', line.name)
|
||||
for line in self.line_ids.filtered(lambda x: x.display_type == 'product')
|
||||
)
|
||||
|
||||
if lines_grouped:
|
||||
self._ungroup_lines()
|
||||
else:
|
||||
self._group_lines_by_tax()
|
||||
|
||||
def _ungroup_lines(self):
|
||||
"""
|
||||
Ungroup lines using the original file, used to import the move
|
||||
"""
|
||||
error_message = self.env._("Cannot find the origin file, try by importing it again")
|
||||
attachments = self.env['ir.attachment'].search([
|
||||
('res_model', '=', 'account.move'),
|
||||
('res_id', '=', self.id),
|
||||
], order='create_date')
|
||||
if not attachments:
|
||||
raise UserError(error_message)
|
||||
|
||||
files_data = self._to_files_data(attachments)
|
||||
files_data.extend(self._unwrap_attachments(files_data))
|
||||
file_data_groups = self._group_files_data_into_groups_of_mixed_types(files_data)
|
||||
success = False
|
||||
|
||||
for file_data_group in file_data_groups:
|
||||
self.invoice_line_ids = [Command.clear()]
|
||||
res = self._extend_with_attachments(file_data_group)
|
||||
if res:
|
||||
success = True
|
||||
self._message_log(body=self.env._("Ungrouped lines from origin file"))
|
||||
break
|
||||
|
||||
if not success:
|
||||
raise UserError(error_message)
|
||||
|
||||
def _group_lines_by_tax(self):
|
||||
"""
|
||||
Group lines by tax, based on the invoice lines
|
||||
"""
|
||||
line_vals = self._get_line_vals_group_by_tax(self.partner_id)
|
||||
self.invoice_line_ids = [Command.clear()]
|
||||
self.invoice_line_ids = line_vals
|
||||
self._message_log(body=self.env._("Grouped lines by tax"))
|
||||
|
||||
def _get_line_vals_group_by_tax(self, partner):
|
||||
"""
|
||||
Create a collection of dicts containing the values to create invoice lines, grouped by
|
||||
tax and deferred date if present.
|
||||
:param partner: partner linked to the move
|
||||
"""
|
||||
AccountTax = self.env['account.tax']
|
||||
|
||||
base_lines, _tax_lines = self._get_rounded_base_and_tax_lines()
|
||||
|
||||
def aggregate_function(target_base_line, base_line):
|
||||
target_base_line.setdefault('_aggregated_quantity', 0.0)
|
||||
target_base_line['_aggregated_quantity'] += base_line['quantity']
|
||||
|
||||
def grouping_function(base_line):
|
||||
return {
|
||||
'_grouping_key': frozendict(AccountTax._prepare_base_line_grouping_key(base_line)),
|
||||
}
|
||||
|
||||
base_lines = AccountTax._reduce_base_lines_with_grouping_function(
|
||||
base_lines,
|
||||
grouping_function=grouping_function,
|
||||
aggregate_function=aggregate_function,
|
||||
)
|
||||
|
||||
to_create = []
|
||||
for base_line in base_lines:
|
||||
taxes = base_line['tax_ids']
|
||||
account = base_line['account_id']
|
||||
to_create.append(Command.create({
|
||||
'name': " - ".join([partner.name or self.env._("Unknown partner"), account.code, " / ".join(taxes.mapped('name')) or self.env._("Untaxed")]),
|
||||
'quantity': base_line['quantity'],
|
||||
'price_unit': base_line['price_unit'],
|
||||
**base_line['_grouping_key'],
|
||||
}))
|
||||
return to_create
|
||||
|
||||
def _check_move_for_group_ungroup_lines_by_tax(self):
|
||||
"""
|
||||
Perform checks to evaluate if a move is eligible to grouping/ungrouping
|
||||
"""
|
||||
if not self.is_purchase_document(include_receipts=True):
|
||||
raise UserError(self.env._("You can only (un)group lines of a incoming invoice (vendor bill)"))
|
||||
if self.state != 'draft':
|
||||
raise UserError(self.env._("You can only (un)group lines of a draft invoice"))
|
||||
|
||||
# -------------------------------------------------------------------------
|
||||
# EDI
|
||||
# -------------------------------------------------------------------------
|
||||
|
||||
def _get_import_file_type(self, file_data):
|
||||
""" Identify UBL files. """
|
||||
# EXTENDS 'account'
|
||||
if (tree := file_data['xml_tree']) is not None:
|
||||
if etree.QName(tree).localname == 'AttachedDocument':
|
||||
return 'account.edi.xml.ubl.attached_document'
|
||||
if tree.tag == '{urn:un:unece:uncefact:data:standard:CrossIndustryInvoice:100}CrossIndustryInvoice':
|
||||
return 'account.edi.xml.cii'
|
||||
if ubl_version := tree.findtext('{*}UBLVersionID'):
|
||||
if ubl_version == '2.0':
|
||||
return 'account.edi.xml.ubl_20'
|
||||
if ubl_version in ('2.1', '2.2', '2.3'):
|
||||
return 'account.edi.xml.ubl_21'
|
||||
if customization_id := tree.findtext('{*}CustomizationID'):
|
||||
if 'xrechnung' in customization_id:
|
||||
return 'account.edi.xml.ubl_de'
|
||||
if customization_id == 'urn:cen.eu:en16931:2017#compliant#urn:fdc:nen.nl:nlcius:v1.0':
|
||||
return 'account.edi.xml.ubl_nl'
|
||||
if customization_id == 'urn:cen.eu:en16931:2017#conformant#urn:fdc:peppol.eu:2017:poacc:billing:international:aunz:3.0':
|
||||
return 'account.edi.xml.ubl_a_nz'
|
||||
if customization_id == 'urn:cen.eu:en16931:2017#conformant#urn:fdc:peppol.eu:2017:poacc:billing:international:sg:3.0':
|
||||
return 'account.edi.xml.ubl_sg'
|
||||
if 'urn:cen.eu:en16931:2017' in customization_id:
|
||||
return 'account.edi.xml.ubl_bis3'
|
||||
|
||||
return super()._get_import_file_type(file_data)
|
||||
|
||||
def _unwrap_attachment(self, file_data, recurse=True):
|
||||
""" Unwrap UBL AttachedDocument files, which are wrappers around an inner file. """
|
||||
|
||||
if file_data['import_file_type'] != 'account.edi.xml.ubl.attached_document':
|
||||
return super()._unwrap_attachment(file_data, recurse)
|
||||
|
||||
content, tree = self._ubl_parse_attached_document(file_data['xml_tree'])
|
||||
if not content:
|
||||
return []
|
||||
|
||||
embedded_file_data = {
|
||||
'name': file_data['name'],
|
||||
'raw': content,
|
||||
'xml_tree': tree,
|
||||
'mimetype': guess_mimetype(content),
|
||||
'attachment': None,
|
||||
'origin_attachment': file_data['origin_attachment'],
|
||||
'origin_import_file_type': file_data['origin_import_file_type'],
|
||||
}
|
||||
embedded_file_data['import_file_type'] = self._get_import_file_type(embedded_file_data)
|
||||
|
||||
embedded = [embedded_file_data]
|
||||
if recurse:
|
||||
embedded.extend(self._unwrap_attachments(embedded, recurse=True))
|
||||
|
||||
return embedded
|
||||
|
||||
@api.model
|
||||
def _ubl_parse_attached_document(self, tree):
|
||||
"""
|
||||
In UBL, an AttachedDocument file is a wrapper around multiple different UBL files.
|
||||
According to the specifications the original document is stored within the top most
|
||||
Attachment node either as an Attachment/EmbeddedDocumentBinaryObject or (in special cases)
|
||||
a CDATA string stored in Attachment/ExternalReference/Description.
|
||||
|
||||
We must parse this before passing the original file to the decoder to figure out how best
|
||||
to handle it.
|
||||
"""
|
||||
attachment_node = tree.find('{*}Attachment')
|
||||
if attachment_node is None:
|
||||
return '', None
|
||||
|
||||
attachment_binary_data = attachment_node.find('./{*}EmbeddedDocumentBinaryObject')
|
||||
if attachment_binary_data is not None \
|
||||
and attachment_binary_data.attrib.get('mimeCode') in ('application/xml', 'text/xml'):
|
||||
with suppress(etree.XMLSyntaxError, binascii.Error):
|
||||
content_1 = b64decode(attachment_binary_data.text)
|
||||
return content_1, etree.fromstring(content_1)
|
||||
|
||||
external_reference = attachment_node.find('./{*}ExternalReference')
|
||||
if external_reference is not None:
|
||||
description = external_reference.findtext('./{*}Description')
|
||||
mime_code = external_reference.findtext('./{*}MimeCode')
|
||||
|
||||
if description and mime_code in ('application/xml', 'text/xml'):
|
||||
content_2 = description.encode('utf-8')
|
||||
with suppress(etree.XMLSyntaxError):
|
||||
return content_2, etree.fromstring(content_2)
|
||||
|
||||
# If neither EmbeddedDocumentBinaryObject nor ExternalReference/Description can be decoded as an XML,
|
||||
# fall back on the contents of EmbeddedDocumentBinaryObject.
|
||||
return content_1, None
|
||||
|
||||
def _get_edi_decoder(self, file_data, new=False):
|
||||
def _get_child_models(model):
|
||||
child_models = {model}
|
||||
for child in self.env.registry[model]._inherit_children:
|
||||
child_models.update(_get_child_models(child))
|
||||
return child_models
|
||||
|
||||
importable_models = [
|
||||
*_get_child_models('account.edi.xml.ubl_20'),
|
||||
*_get_child_models('account.edi.xml.cii'),
|
||||
]
|
||||
|
||||
if file_data['import_file_type'] in importable_models:
|
||||
return {
|
||||
'priority': 20,
|
||||
'decoder': self.env[file_data['import_file_type']]._import_invoice_ubl_cii,
|
||||
}
|
||||
return super()._get_edi_decoder(file_data, new)
|
||||
|
||||
def _need_ubl_cii_xml(self, ubl_cii_format):
|
||||
self.ensure_one()
|
||||
return not self.ubl_cii_xml_id \
|
||||
and (self.is_sale_document() or self._is_exportable_as_self_invoice()) \
|
||||
and ubl_cii_format in self.env['res.partner']._get_ubl_cii_formats()
|
||||
|
||||
def _is_exportable_as_self_invoice(self):
|
||||
return (
|
||||
self.state == 'posted'
|
||||
and self.is_purchase_document()
|
||||
and self.journal_id.is_self_billing
|
||||
and (invoice_edi_format := self.commercial_partner_id._get_peppol_edi_format())
|
||||
and (edi_builder := self.partner_id._get_edi_builder(invoice_edi_format)) is not None
|
||||
and edi_builder._can_export_selfbilling()
|
||||
)
|
||||
|
||||
@api.model
|
||||
def _get_line_vals_list(self, lines_vals):
|
||||
""" Get invoice line values list.
|
||||
|
||||
:param list[tuple] lines_vals: List of values ``[(name, qty, price, tax), ...]``.
|
||||
:returns: List of invoice line values.
|
||||
"""
|
||||
return [{
|
||||
'sequence': 0, # be sure to put these lines above the 'real' invoice lines
|
||||
'name': name,
|
||||
'quantity': quantity,
|
||||
'price_unit': price_unit,
|
||||
'tax_ids': [Command.set(tax_ids)],
|
||||
} for name, quantity, price_unit, tax_ids in lines_vals]
|
||||
|
||||
def _get_specific_tax(self, name, amount_type, amount, tax_type):
|
||||
AccountMoveLine = self.env['account.move.line']
|
||||
if hasattr(AccountMoveLine, '_predict_specific_tax'):
|
||||
# company check is already done in the prediction query
|
||||
predicted_tax_id = AccountMoveLine._predict_specific_tax(
|
||||
self, name, self.partner_id, amount_type, amount, tax_type,
|
||||
)
|
||||
return self.env['account.tax'].browse(predicted_tax_id)
|
||||
return self.env['account.tax']
|
||||
|
|
@ -0,0 +1,316 @@
|
|||
import base64
|
||||
import logging
|
||||
import io
|
||||
|
||||
from lxml import etree
|
||||
|
||||
from odoo import _, api, fields, models, tools, SUPERUSER_ID
|
||||
from odoo.addons.account_edi_ubl_cii.models.account_edi_common import SUPPORTED_FILE_TYPES
|
||||
from odoo.tools import cleanup_xml_node
|
||||
from odoo.tools.pdf import OdooPdfFileReader, OdooPdfFileWriter
|
||||
from odoo.addons.account.tools import dict_to_xml
|
||||
|
||||
_logger = logging.getLogger(__name__)
|
||||
|
||||
|
||||
class AccountMoveSend(models.AbstractModel):
|
||||
_inherit = 'account.move.send'
|
||||
|
||||
# -------------------------------------------------------------------------
|
||||
# CONSTRAINTS
|
||||
# -------------------------------------------------------------------------
|
||||
|
||||
@api.model
|
||||
def _get_move_constraints(self, move):
|
||||
constraints = super()._get_move_constraints(move)
|
||||
if move._is_exportable_as_self_invoice():
|
||||
constraints.pop('not_sale_document', None)
|
||||
return constraints
|
||||
|
||||
# -------------------------------------------------------------------------
|
||||
# ALERTS
|
||||
# -------------------------------------------------------------------------
|
||||
|
||||
def _get_alerts(self, moves, moves_data):
|
||||
# EXTENDS 'account'
|
||||
alerts = super()._get_alerts(moves, moves_data)
|
||||
|
||||
peppol_formats = set(self.env['res.partner']._get_peppol_formats())
|
||||
if peppol_format_moves := moves.filtered(lambda m: moves_data[m]['invoice_edi_format'] in peppol_formats):
|
||||
not_configured_company_partners = peppol_format_moves.company_id.partner_id.filtered(
|
||||
lambda partner: not (partner.peppol_eas and partner.peppol_endpoint)
|
||||
)
|
||||
if not_configured_company_partners:
|
||||
alerts['account_edi_ubl_cii_configure_company'] = {
|
||||
'message': _("Please fill in your company's VAT or Peppol Address to generate a complete XML file."),
|
||||
'level': 'info',
|
||||
'action_text': _("Configure"),
|
||||
'action': not_configured_company_partners._get_records_action(),
|
||||
}
|
||||
not_configured_partners = peppol_format_moves.partner_id.commercial_partner_id.filtered(
|
||||
lambda partner: not (partner.peppol_eas and partner.peppol_endpoint)
|
||||
)
|
||||
if not_configured_partners:
|
||||
alerts['account_edi_ubl_cii_configure_partner'] = {
|
||||
'message': _("Please fill in partner's VAT or Peppol Address."),
|
||||
'level': 'info',
|
||||
'action_text': _("View Partner(s)"),
|
||||
'action': not_configured_partners._get_records_action(name=_("Check Partner(s)"))
|
||||
}
|
||||
|
||||
if any(
|
||||
self.env['account.edi.xml.ubl_bis3']._is_customer_behind_chorus_pro(partner)
|
||||
for partner in peppol_format_moves.partner_id.commercial_partner_id
|
||||
):
|
||||
chorus_pro = self.env['ir.module.module'].sudo().search([('name', '=', 'l10n_fr_facturx_chorus_pro')], limit=1)
|
||||
if chorus_pro and chorus_pro.state != 'installed':
|
||||
alerts['account_edi_ubl_cii_chorus_pro_install'] = {
|
||||
'message': _("Please install the french Chorus pro module to have all the specific rules."),
|
||||
'level': 'info',
|
||||
'action': chorus_pro._get_records_action(),
|
||||
'action_text': _("Install Chorus Pro"),
|
||||
}
|
||||
return alerts
|
||||
|
||||
# -------------------------------------------------------------------------
|
||||
# ATTACHMENTS
|
||||
# -------------------------------------------------------------------------
|
||||
|
||||
def _get_invoice_extra_attachments(self, move):
|
||||
# EXTENDS 'account'
|
||||
return super()._get_invoice_extra_attachments(move) + move.ubl_cii_xml_id
|
||||
|
||||
def _get_placeholder_mail_attachments_data(self, move, invoice_edi_format=None, extra_edis=None, pdf_report=None):
|
||||
# EXTENDS 'account'
|
||||
results = super()._get_placeholder_mail_attachments_data(move, invoice_edi_format=invoice_edi_format, extra_edis=extra_edis, pdf_report=pdf_report)
|
||||
if move._need_ubl_cii_xml(invoice_edi_format):
|
||||
builder = move.partner_id.commercial_partner_id._get_edi_builder(invoice_edi_format)
|
||||
filename = builder._export_invoice_filename(move)
|
||||
results.append({
|
||||
'id': f'placeholder_{filename}',
|
||||
'name': filename,
|
||||
'mimetype': 'application/xml',
|
||||
'placeholder': True,
|
||||
})
|
||||
return results
|
||||
|
||||
@api.model
|
||||
def _display_attachments_widget(self, edi_format, sending_methods):
|
||||
ubl_format_info = self.env['res.partner']._get_ubl_cii_formats_info()
|
||||
return (
|
||||
super()._display_attachments_widget(edi_format, sending_methods)
|
||||
or ubl_format_info.get(edi_format, {}).get('embed_attachments')
|
||||
)
|
||||
|
||||
@api.model
|
||||
def _get_ubl_available_attachments(self, mail_attachments_widget, invoice_edi_format):
|
||||
if not invoice_edi_format or not mail_attachments_widget:
|
||||
return self.env['ir.attachment'], self.env['ir.attachment']
|
||||
attachment_ids = [values['id'] for values in mail_attachments_widget if values.get('manual')]
|
||||
attachments = self.env['ir.attachment'].browse(attachment_ids)
|
||||
|
||||
ubl_format_info = self.env['res.partner']._get_ubl_cii_formats_info().get(invoice_edi_format, {})
|
||||
if not ubl_format_info.get('embed_attachments'):
|
||||
return self.env['ir.attachment'], attachments
|
||||
|
||||
accepted_attachments = attachments.filtered(lambda attachment: attachment.mimetype in SUPPORTED_FILE_TYPES)
|
||||
return accepted_attachments, attachments - accepted_attachments
|
||||
|
||||
# -------------------------------------------------------------------------
|
||||
# BUSINESS ACTIONS
|
||||
# -------------------------------------------------------------------------
|
||||
|
||||
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 invoice._need_ubl_cii_xml(invoice_data['invoice_edi_format']):
|
||||
builder = invoice.partner_id.commercial_partner_id._get_edi_builder(invoice_data['invoice_edi_format'])
|
||||
xml_content, errors = (
|
||||
builder
|
||||
.with_context(from_peppol='peppol' in invoice_data['sending_methods'])
|
||||
._export_invoice(invoice)
|
||||
)
|
||||
filename = builder._export_invoice_filename(invoice)
|
||||
|
||||
# Failed.
|
||||
if errors:
|
||||
invoice_data['error'] = {
|
||||
'error_title': _("Errors occurred while creating the EDI document (format: %s):", builder._description),
|
||||
'errors': errors,
|
||||
}
|
||||
invoice_data['error_but_continue'] = True
|
||||
else:
|
||||
invoice_data['ubl_cii_xml_attachment_values'] = {
|
||||
'name': filename,
|
||||
'raw': xml_content,
|
||||
'mimetype': 'application/xml',
|
||||
'res_model': invoice._name,
|
||||
'res_id': invoice.id,
|
||||
'res_field': 'ubl_cii_xml_file', # Binary field
|
||||
}
|
||||
invoice_data['ubl_cii_xml_options'] = {
|
||||
'ubl_cii_format': invoice_data['invoice_edi_format'],
|
||||
'builder': builder,
|
||||
}
|
||||
|
||||
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)
|
||||
|
||||
# Add PDF to XML
|
||||
if self._needs_ubl_postprocessing(invoice_data):
|
||||
self._postprocess_invoice_ubl_xml(invoice, invoice_data)
|
||||
|
||||
# Always silently generate a Factur-X and embed it inside the PDF for inter-portability
|
||||
if invoice_data.get('ubl_cii_xml_options', {}).get('ubl_cii_format') in ('facturx', 'zugferd'):
|
||||
xml_facturx = invoice_data['ubl_cii_xml_attachment_values']['raw']
|
||||
else:
|
||||
xml_facturx = self.env['account.edi.xml.cii']._export_invoice(invoice)[0]
|
||||
|
||||
# during tests, no wkhtmltopdf, create the attachment for test purposes
|
||||
if tools.config['test_enable']:
|
||||
self.env['ir.attachment'].sudo().create({
|
||||
'name': 'factur-x.xml',
|
||||
'raw': xml_facturx,
|
||||
'res_id': invoice.id,
|
||||
'res_model': 'account.move',
|
||||
})
|
||||
return
|
||||
|
||||
# Read pdf content.
|
||||
pdf_values = (not self.env.context.get('custom_template_facturx') and invoice.invoice_pdf_report_id) or \
|
||||
invoice_data.get('pdf_attachment_values') or invoice_data['proforma_pdf_attachment_values']
|
||||
reader_buffer = io.BytesIO(pdf_values['raw'])
|
||||
reader = OdooPdfFileReader(reader_buffer, strict=False)
|
||||
|
||||
# Post-process.
|
||||
writer = OdooPdfFileWriter()
|
||||
writer.cloneReaderDocumentRoot(reader)
|
||||
|
||||
attachment_name = 'factur-x.xml'
|
||||
if invoice.commercial_partner_id.country_code == 'DE' and invoice.commercial_partner_id.peppol_eas != '0204':
|
||||
attachment_name = 'zugferd.xml'
|
||||
|
||||
writer.addAttachment(attachment_name, xml_facturx, subtype='text/xml')
|
||||
|
||||
# PDF-A.
|
||||
if ((invoice_data.get('ubl_cii_xml_options', {}).get('ubl_cii_format') in ('facturx', 'zugferd')
|
||||
or (invoice.commercial_partner_id.country_code in ('FR', 'DE') and invoice.commercial_partner_id.peppol_eas != '0204'))
|
||||
and invoice.country_code in ('FR', 'DE')
|
||||
and not writer.is_pdfa
|
||||
):
|
||||
try:
|
||||
writer.convert_to_pdfa()
|
||||
except Exception:
|
||||
_logger.exception("Error while converting to PDF/A")
|
||||
|
||||
# Extra metadata to be Factur-x PDF-A compliant.
|
||||
content = self.env['ir.qweb']._render(
|
||||
'account_edi_ubl_cii.account_invoice_pdfa_3_facturx_metadata',
|
||||
{
|
||||
'title': invoice.name,
|
||||
'date': fields.Date.context_today(self),
|
||||
},
|
||||
)
|
||||
if "<pdfaid:conformance>B</pdfaid:conformance>" in content:
|
||||
content.replace("<pdfaid:conformance>B</pdfaid:conformance>", "<pdfaid:conformance>A</pdfaid:conformance>")
|
||||
writer.add_file_metadata(content.encode())
|
||||
|
||||
# Replace the current content.
|
||||
writer_buffer = io.BytesIO()
|
||||
writer.write(writer_buffer)
|
||||
pdf_values['raw'] = writer_buffer.getvalue()
|
||||
reader_buffer.close()
|
||||
writer_buffer.close()
|
||||
|
||||
@api.model
|
||||
def _needs_ubl_postprocessing(self, invoice_data):
|
||||
return 'ubl_cii_xml_options' in invoice_data and invoice_data['ubl_cii_xml_options']['ubl_cii_format'] not in ('facturx', 'zugferd')
|
||||
|
||||
@api.model
|
||||
def _postprocess_invoice_ubl_xml(self, invoice, invoice_data):
|
||||
"""
|
||||
Include the PDF in the UBL as an AdditionalDocumentReference element.
|
||||
|
||||
According to UBL 2.1 standard, the AdditionalDocumentReference element should be
|
||||
placed above ProjectReference which isn't usually in xml files.
|
||||
So usually it's set above AccountingSupplierParty. Here, we try to find a suitable anchor point among
|
||||
the available element to insert our PDF attachment. If none of these are found, we
|
||||
skip adding the attachment to avoid breaking the XML structure.
|
||||
Inside CreditNote, the ProjectReference element is not used in xml.
|
||||
So we look for OriginatorDocumentReference instead.
|
||||
"""
|
||||
tree = etree.fromstring(invoice_data['ubl_cii_xml_attachment_values']['raw'])
|
||||
|
||||
localname = etree.QName(tree).localname
|
||||
anchor_xpath = {
|
||||
'Invoice': "//*[local-name()='ProjectReference' or local-name()='Signature' or local-name()='AccountingSupplierParty']",
|
||||
'CreditNote': "//*[local-name()='StatementDocumentReference' or local-name()='OriginatorDocumentReference' or local-name()='Signature' or local-name()='AccountingSupplierParty']",
|
||||
'DebitNote': "//*[local-name()='Signature' or local-name()='AccountingSupplierParty']",
|
||||
}.get(localname)
|
||||
|
||||
anchor_elements = tree.xpath(anchor_xpath)
|
||||
|
||||
if not anchor_elements:
|
||||
return
|
||||
|
||||
anchor_index = tree.index(anchor_elements[0])
|
||||
pdf_values = invoice.invoice_pdf_report_id or invoice_data.get('pdf_attachment_values') or invoice_data['proforma_pdf_attachment_values']
|
||||
|
||||
edi_model = invoice_data["ubl_cii_xml_options"]["builder"]
|
||||
doc_type_code_node = edi_model._get_document_type_code_node(invoice, invoice_data)
|
||||
vals = {'invoice': invoice}
|
||||
edi_model._add_invoice_config_vals(vals)
|
||||
nsmap = edi_model._get_document_nsmap(vals)
|
||||
|
||||
attachments_to_embed = [
|
||||
{
|
||||
'filename': attachment.name,
|
||||
'raw': attachment.raw,
|
||||
'mimetype': attachment.mimetype,
|
||||
}
|
||||
for attachment in self._get_ubl_available_attachments(
|
||||
invoice_data['mail_attachments_widget'],
|
||||
invoice_data['invoice_edi_format']
|
||||
)[0]
|
||||
] if invoice_data.get('mail_attachments_widget') else []
|
||||
attachments_to_embed.append({
|
||||
'filename': pdf_values['name'],
|
||||
'raw': pdf_values['raw'],
|
||||
'mimetype': pdf_values['mimetype'],
|
||||
'document_type_node': doc_type_code_node,
|
||||
})
|
||||
|
||||
for attachment_values in attachments_to_embed:
|
||||
additional_document_reference_node = {
|
||||
'_tag': 'cac:AdditionalDocumentReference',
|
||||
'cbc:ID': {'_text': attachment_values['filename']},
|
||||
'cbc:DocumentTypeCode': attachment_values.get('document_type_node'),
|
||||
'cac:Attachment': {
|
||||
'cbc:EmbeddedDocumentBinaryObject': {
|
||||
'_text': base64.b64encode(attachment_values['raw']).decode(),
|
||||
'mimeCode': attachment_values['mimetype'],
|
||||
'filename': attachment_values['filename']
|
||||
}
|
||||
}
|
||||
}
|
||||
tree.insert(anchor_index, dict_to_xml(additional_document_reference_node, nsmap=nsmap))
|
||||
|
||||
invoice_data['ubl_cii_xml_attachment_values']['raw'] = etree.tostring(
|
||||
cleanup_xml_node(tree), xml_declaration=True, encoding='UTF-8'
|
||||
)
|
||||
|
||||
def _link_invoice_documents(self, invoices_data):
|
||||
# EXTENDS 'account'
|
||||
super()._link_invoice_documents(invoices_data)
|
||||
|
||||
attachments_vals = [
|
||||
invoice_data.get('ubl_cii_xml_attachment_values')
|
||||
for invoice_data in invoices_data.values()
|
||||
if invoice_data.get('ubl_cii_xml_attachment_values')
|
||||
]
|
||||
if attachments_vals:
|
||||
attachments = self.env['ir.attachment'].with_user(SUPERUSER_ID).create(attachments_vals)
|
||||
res_ids = attachments.mapped('res_id')
|
||||
self.env['account.move'].browse(res_ids).invalidate_recordset(fnames=['ubl_cii_xml_id', 'ubl_cii_xml_file'])
|
||||
|
|
@ -0,0 +1,127 @@
|
|||
from odoo import api, fields, models
|
||||
|
||||
|
||||
class AccountTax(models.Model):
|
||||
_inherit = 'account.tax'
|
||||
|
||||
ubl_cii_tax_category_code = fields.Selection(
|
||||
help="The VAT category code used for electronic invoicing purposes.",
|
||||
string="Tax Category Code",
|
||||
selection=[
|
||||
('AE', 'AE - Vat Reverse Charge'),
|
||||
('E', 'E - Exempt from Tax'),
|
||||
('S', 'S - Standard rate'),
|
||||
('Z', 'Z - Zero rated goods'),
|
||||
('G', 'G - Free export item, VAT not charged'),
|
||||
('O', 'O - Services outside scope of tax'),
|
||||
('K', 'K - VAT exempt for EEA intra-community supply of goods and services'),
|
||||
('L', 'L - Canary Islands general indirect tax'),
|
||||
('M', 'M - Tax for production, services and importation in Ceuta and Melilla'),
|
||||
('B', 'B - Transferred (VAT), In Italy')
|
||||
]
|
||||
)
|
||||
ubl_cii_tax_exemption_reason_code = fields.Selection(
|
||||
help="The reason why the amount is exempted from VAT or why no VAT is being charged, used for electronic invoicing purposes.",
|
||||
string="Tax Exemption Reason Code",
|
||||
selection=[
|
||||
('VATEX-EU-79-C', 'VATEX-EU-79-C - Exempt based on article 79, point c of Council Directive 2006/112/EC'),
|
||||
('VATEX-EU-132', 'VATEX-EU-132 - Exempt based on article 132 of Council Directive 2006/112/EC'),
|
||||
('VATEX-EU-132-1A', 'VATEX-EU-132-1A - Exempt based on article 132, section 1 (a) of Council Directive 2006/112/EC'),
|
||||
('VATEX-EU-132-1B', 'VATEX-EU-132-1B - Exempt based on article 132, section 1 (b) of Council Directive 2006/112/EC'),
|
||||
('VATEX-EU-132-1C', 'VATEX-EU-132-1C - Exempt based on article 132, section 1 (c) of Council Directive 2006/112/EC'),
|
||||
('VATEX-EU-132-1D', 'VATEX-EU-132-1D - Exempt based on article 132, section 1 (d) of Council Directive 2006/112/EC'),
|
||||
('VATEX-EU-132-1E', 'VATEX-EU-132-1E - Exempt based on article 132, section 1 (e) of Council Directive 2006/112/EC'),
|
||||
('VATEX-EU-132-1F', 'VATEX-EU-132-1F - Exempt based on article 132, section 1 (f) of Council Directive 2006/112/EC'),
|
||||
('VATEX-EU-132-1G', 'VATEX-EU-132-1G - Exempt based on article 132, section 1 (g) of Council Directive 2006/112/EC'),
|
||||
('VATEX-EU-132-1H', 'VATEX-EU-132-1H - Exempt based on article 132, section 1 (h) of Council Directive 2006/112/EC'),
|
||||
('VATEX-EU-132-1I', 'VATEX-EU-132-1I - Exempt based on article 132, section 1 (i) of Council Directive 2006/112/EC'),
|
||||
('VATEX-EU-132-1J', 'VATEX-EU-132-1J - Exempt based on article 132, section 1 (j) of Council Directive 2006/112/EC'),
|
||||
('VATEX-EU-132-1K', 'VATEX-EU-132-1K - Exempt based on article 132, section 1 (k) of Council Directive 2006/112/EC'),
|
||||
('VATEX-EU-132-1L', 'VATEX-EU-132-1L - Exempt based on article 132, section 1 (l) of Council Directive 2006/112/EC'),
|
||||
('VATEX-EU-132-1M', 'VATEX-EU-132-1M - Exempt based on article 132, section 1 (m) of Council Directive 2006/112/EC'),
|
||||
('VATEX-EU-132-1N', 'VATEX-EU-132-1N - Exempt based on article 132, section 1 (n) of Council Directive 2006/112/EC'),
|
||||
('VATEX-EU-132-1O', 'VATEX-EU-132-1O - Exempt based on article 132, section 1 (o) of Council Directive 2006/112/EC'),
|
||||
('VATEX-EU-132-1P', 'VATEX-EU-132-1P - Exempt based on article 132, section 1 (p) of Council Directive 2006/112/EC'),
|
||||
('VATEX-EU-132-1Q', 'VATEX-EU-132-1Q - Exempt based on article 132, section 1 (q) of Council Directive 2006/112/EC'),
|
||||
('VATEX-EU-143', 'VATEX-EU-143 - Exempt based on article 143 of Council Directive 2006/112/EC'),
|
||||
('VATEX-EU-143-1A', 'VATEX-EU-143-1A - Exempt based on article 143, section 1 (a) of Council Directive 2006/112/EC'),
|
||||
('VATEX-EU-143-1B', 'VATEX-EU-143-1B - Exempt based on article 143, section 1 (b) of Council Directive 2006/112/EC'),
|
||||
('VATEX-EU-143-1C', 'VATEX-EU-143-1C - Exempt based on article 143, section 1 (c) of Council Directive 2006/112/EC'),
|
||||
('VATEX-EU-143-1D', 'VATEX-EU-143-1D - Exempt based on article 143, section 1 (d) of Council Directive 2006/112/EC'),
|
||||
('VATEX-EU-143-1E', 'VATEX-EU-143-1E - Exempt based on article 143, section 1 (e) of Council Directive 2006/112/EC'),
|
||||
('VATEX-EU-143-1F', 'VATEX-EU-143-1F - Exempt based on article 143, section 1 (f) of Council Directive 2006/112/EC'),
|
||||
('VATEX-EU-143-1FA', 'VATEX-EU-143-1FA - Exempt based on article 143, section 1 (fa) of Council Directive 2006/112/EC'),
|
||||
('VATEX-EU-143-1G', 'VATEX-EU-143-1G - Exempt based on article 143, section 1 (g) of Council Directive 2006/112/EC'),
|
||||
('VATEX-EU-143-1H', 'VATEX-EU-143-1H - Exempt based on article 143, section 1 (h) of Council Directive 2006/112/EC'),
|
||||
('VATEX-EU-143-1I', 'VATEX-EU-143-1I - Exempt based on article 143, section 1 (i) of Council Directive 2006/112/EC'),
|
||||
('VATEX-EU-143-1J', 'VATEX-EU-143-1J - Exempt based on article 143, section 1 (j) of Council Directive 2006/112/EC'),
|
||||
('VATEX-EU-143-1K', 'VATEX-EU-143-1K - Exempt based on article 143, section 1 (k) of Council Directive 2006/112/EC'),
|
||||
('VATEX-EU-143-1L', 'VATEX-EU-143-1L - Exempt based on article 143, section 1 (l) of Council Directive 2006/112/EC'),
|
||||
('VATEX-EU-144', 'VATEX-EU-144 - Exempt based on article 144 of Council Directive 2006/112/EC'),
|
||||
('VATEX-EU-146-1E', 'VATEX-EU-146-1E - Exempt based on article 146 section 1 (e) of Council Directive 2006/112/EC'),
|
||||
('VATEX-EU-148', 'VATEX-EU-148 - Exempt based on article 148 of Council Directive 2006/112/EC'),
|
||||
('VATEX-EU-148-A', 'VATEX-EU-148-A - Exempt based on article 148, section (a) of Council Directive 2006/112/EC'),
|
||||
('VATEX-EU-148-B', 'VATEX-EU-148-B - Exempt based on article 148, section (b) of Council Directive 2006/112/EC'),
|
||||
('VATEX-EU-148-C', 'VATEX-EU-148-C - Exempt based on article 148, section (c) of Council Directive 2006/112/EC'),
|
||||
('VATEX-EU-148-D', 'VATEX-EU-148-D - Exempt based on article 148, section (d) of Council Directive 2006/112/EC'),
|
||||
('VATEX-EU-148-E', 'VATEX-EU-148-E - Exempt based on article 148, section (e) of Council Directive 2006/112/EC'),
|
||||
('VATEX-EU-148-F', 'VATEX-EU-148-F - Exempt based on article 148, section (f) of Council Directive 2006/112/EC'),
|
||||
('VATEX-EU-148-G', 'VATEX-EU-148-G - Exempt based on article 148, section (g) of Council Directive 2006/112/EC'),
|
||||
('VATEX-EU-151', 'VATEX-EU-151 - Exempt based on article 151 of Council Directive 2006/112/EC'),
|
||||
('VATEX-EU-151-1A', 'VATEX-EU-151-1A - Exempt based on article 151, section 1 (a) of Council Directive 2006/112/EC'),
|
||||
('VATEX-EU-151-1AA', 'VATEX-EU-151-1AA - Exempt based on article 151, section 1 (aa) of Council Directive 2006/112/EC'),
|
||||
('VATEX-EU-151-1B', 'VATEX-EU-151-1B - Exempt based on article 151, section 1 (b) of Council Directive 2006/112/EC'),
|
||||
('VATEX-EU-151-1C', 'VATEX-EU-151-1C - Exempt based on article 151, section 1 (c) of Council Directive 2006/112/EC'),
|
||||
('VATEX-EU-151-1D', 'VATEX-EU-151-1D - Exempt based on article 151, section 1 (d) of Council Directive 2006/112/EC'),
|
||||
('VATEX-EU-151-1E', 'VATEX-EU-151-1E - Exempt based on article 151, section 1 (e) of Council Directive 2006/112/EC'),
|
||||
('VATEX-EU-153', 'VATEX-EU-153 - Exempt based on article 153 of Council Directive 2006/112/EC'),
|
||||
('VATEX-EU-159', 'VATEX-EU-159 - Exempt based on article 159 of Council Directive 2006/112/EC'),
|
||||
('VATEX-EU-309', 'VATEX-EU-309 - Exempt based on article 309 of Council Directive 2006/112/EC'),
|
||||
('VATEX-EU-AE', 'VATEX-EU-AE - Reverse charge'),
|
||||
('VATEX-EU-D', 'VATEX-EU-D - Intra-Community acquisition from second hand means of transport'),
|
||||
('VATEX-EU-F', 'VATEX-EU-F - Intra-Community acquisition of second hand goods'),
|
||||
('VATEX-EU-G', 'VATEX-EU-G - Export outside the EU'),
|
||||
('VATEX-EU-I', 'VATEX-EU-I - Intra-Community acquisition of works of art'),
|
||||
('VATEX-EU-IC', 'VATEX-EU-IC - Intra-Community supply'),
|
||||
('VATEX-EU-O', 'VATEX-EU-O - Not subject to VAT'),
|
||||
('VATEX-EU-J', 'VATEX-EU-J - Intra-Community acquisition of collectors items and antiques'),
|
||||
('VATEX-FR-FRANCHISE', 'VATEX-FR-FRANCHISE - France domestic VAT franchise in base'),
|
||||
('VATEX-FR-CNWVAT', 'VATEX-FR-CNWVAT - France domestic Credit Notes without VAT, due to supplier forfeit of VAT for discount'),
|
||||
('VATEX-FR-CGI261-1', 'VATEX-FR-CGI261-1 - Exempt based on 1 of article 261 of the Code Général des Impôts (CGI ; General tax code)'),
|
||||
('VATEX-FR-CGI261-2', 'VATEX-FR-CGI261-2 - Exempt based on 2 of article 261 of the Code Général des Impôts (CGI ; General tax code)'),
|
||||
('VATEX-FR-CGI261-3', 'VATEX-FR-CGI261-3 - Exempt based on 3 of article 261 of the Code Général des Impôts (CGI ; General tax code)'),
|
||||
('VATEX-FR-CGI261-4', 'VATEX-FR-CGI261-4 - Exempt based on 4 of article 261 of the Code Général des Impôts (CGI ; General tax code)'),
|
||||
('VATEX-FR-CGI261-5', 'VATEX-FR-CGI261-5 - Exempt based on 5 of article 261 of the Code Général des Impôts (CGI ; General tax code)'),
|
||||
('VATEX-FR-CGI261-7', 'VATEX-FR-CGI261-7 - Exempt based on 7 of article 261 of the Code Général des Impôts (CGI ; General tax code)'),
|
||||
('VATEX-FR-CGI261-8', 'VATEX-FR-CGI261-8 - Exempt based on 8 of article 261 of the Code Général des Impôts (CGI ; General tax code)'),
|
||||
('VATEX-FR-CGI261A', 'VATEX-FR-CGI261A - Exempt based on article 261 A of the Code Général des Impôts (CGI ; General tax code)'),
|
||||
('VATEX-FR-CGI261B', 'VATEX-FR-CGI261B - Exempt based on article 261 B of the Code Général des Impôts (CGI ; General tax code)'),
|
||||
('VATEX-FR-CGI261C-1', 'VATEX-FR-CGI261C-1 - Exempt based on 1° of article 261 C of the Code Général des Impôts (CGI ; General tax code)'),
|
||||
('VATEX-FR-CGI261C-2', 'VATEX-FR-CGI261C-2 - Exempt based on 2° of article 261 C of the Code Général des Impôts (CGI ; General tax code)'),
|
||||
('VATEX-FR-CGI261C-3', 'VATEX-FR-CGI261C-3 - Exempt based on 3° of article 261 C of the Code Général des Impôts (CGI ; General tax code)'),
|
||||
('VATEX-FR-CGI261D-1', 'VATEX-FR-CGI261D-1 - Exempt based on 1° of article 261 D of the Code Général des Impôts (CGI ; General tax code)'),
|
||||
('VATEX-FR-CGI261D-1BIS', 'VATEX-FR-CGI261D-1BIS - Exempt based on 1°bis of article 261 D of the Code Général des Impôts (CGI ; General tax code)'),
|
||||
('VATEX-FR-CGI261D-2', 'VATEX-FR-CGI261D-2 - Exempt based on 2° of article 261 D of the Code Général des Impôts (CGI ; General tax code)'),
|
||||
('VATEX-FR-CGI261D-3', 'VATEX-FR-CGI261D-3 - Exempt based on 3° of article 261 D of the Code Général des Impôts (CGI ; General tax code)'),
|
||||
('VATEX-FR-CGI261D-4', 'VATEX-FR-CGI261D-4 - Exempt based on 4° of article 261 D of the Code Général des Impôts (CGI ; General tax code)'),
|
||||
('VATEX-FR-CGI261E-1', 'VATEX-FR-CGI261E-1 - Exempt based on 1° of article 261 E of the Code Général des Impôts (CGI ; General tax code)'),
|
||||
('VATEX-FR-CGI261E-2', 'VATEX-FR-CGI261E-2 - Exempt based on 2° of article 261 E of the Code Général des Impôts (CGI ; General tax code)'),
|
||||
('VATEX-FR-CGI277A', 'VATEX-FR-CGI277A - Exempt based on article 277 A of the Code Général des Impôts (CGI ; General tax code)'),
|
||||
('VATEX-FR-CGI275', 'VATEX-FR-CGI275 - Exempt based on article 275 of the Code Général des Impôts (CGI ; General tax code)'),
|
||||
('VATEX-FR-298SEXDECIESA', 'VATEX-FR-298SEXDECIESA - Exempt based on article 298 sexdecies A of the Code Général des Impôts (CGI ; General tax code)'),
|
||||
('VATEX-FR-CGI295', 'VATEX-FR-CGI295 - Exempt based on article 295 of the Code Général des Impôts (CGI ; General tax code)'),
|
||||
('VATEX-FR-AE', 'VATEX-FR-AE - Exempt based on 2 of article 283 of the Code Général des Impôts (CGI ; General tax code)'),
|
||||
]
|
||||
)
|
||||
ubl_cii_requires_exemption_reason = fields.Boolean(compute='_compute_ubl_cii_requires_exemption_reason')
|
||||
|
||||
@api.depends('ubl_cii_tax_category_code')
|
||||
def _compute_ubl_cii_requires_exemption_reason(self):
|
||||
for tax in self:
|
||||
tax.ubl_cii_requires_exemption_reason = tax.ubl_cii_tax_category_code in ['AE', 'E', 'G', 'O', 'K']
|
||||
|
||||
@api.onchange('ubl_cii_requires_exemption_reason')
|
||||
def _onchange_ubl_cii_tax_category_code(self):
|
||||
for tax in self:
|
||||
if not tax.ubl_cii_requires_exemption_reason:
|
||||
tax.ubl_cii_tax_exemption_reason_code = False
|
||||
|
|
@ -1,113 +1,30 @@
|
|||
# -*- coding: utf-8 -*-
|
||||
# Part of Odoo. See LICENSE file for full copyright and licensing details.
|
||||
import io
|
||||
|
||||
from odoo import models
|
||||
from odoo.tools import cleanup_xml_node
|
||||
from odoo.tools.pdf import OdooPdfFileReader, OdooPdfFileWriter
|
||||
|
||||
from lxml import etree
|
||||
import base64
|
||||
from xml.sax.saxutils import escape, quoteattr
|
||||
import io
|
||||
|
||||
|
||||
class IrActionsReport(models.Model):
|
||||
_inherit = 'ir.actions.report'
|
||||
|
||||
def _is_invoice_report(self, report_ref):
|
||||
# EXTENDS account
|
||||
def _render_qweb_pdf_prepare_streams(self, report_ref, data, res_ids=None):
|
||||
# EXTENDS base
|
||||
collected_streams = super()._render_qweb_pdf_prepare_streams(report_ref, data, res_ids)
|
||||
|
||||
# allows to add factur-x.xml to custom PDF templates (comma separated list of template names)
|
||||
custom_templates = self.env['ir.config_parameter'].sudo().get_param('account.custom_templates_facturx_list', '')
|
||||
custom_templates = [report.strip() for report in custom_templates.split(',')]
|
||||
return super()._is_invoice_report(report_ref) or self._get_report(report_ref).report_name in custom_templates
|
||||
|
||||
def _add_pdf_into_invoice_xml(self, invoice, stream_data):
|
||||
format_codes = ['ubl_bis3', 'ubl_de', 'nlcius_1', 'efff_1']
|
||||
edi_attachments = invoice.edi_document_ids.filtered(lambda d: d.edi_format_id.code in format_codes).sudo().attachment_id
|
||||
for edi_attachment in edi_attachments:
|
||||
old_xml = base64.b64decode(edi_attachment.with_context(bin_size=False).datas, validate=True)
|
||||
tree = etree.fromstring(old_xml)
|
||||
anchor_elements = tree.xpath("//*[local-name()='AccountingSupplierParty']")
|
||||
additional_document_elements = tree.xpath("//*[local-name()='AdditionalDocumentReference']")
|
||||
# with this clause, we ensure the xml are only postprocessed once (even when the invoice is reset to
|
||||
# draft then validated again)
|
||||
if anchor_elements and not additional_document_elements:
|
||||
pdf_stream = stream_data['stream']
|
||||
pdf_content_b64 = base64.b64encode(pdf_stream.getvalue()).decode()
|
||||
pdf_name = '%s.pdf' % invoice.name.replace('/', '_')
|
||||
to_inject = '''
|
||||
<cac:AdditionalDocumentReference
|
||||
xmlns="urn:oasis:names:specification:ubl:schema:xsd:Invoice-2"
|
||||
xmlns:cbc="urn:oasis:names:specification:ubl:schema:xsd:CommonBasicComponents-2"
|
||||
xmlns:cac="urn:oasis:names:specification:ubl:schema:xsd:CommonAggregateComponents-2">
|
||||
<cbc:ID>%s</cbc:ID>
|
||||
<cac:Attachment>
|
||||
<cbc:EmbeddedDocumentBinaryObject mimeCode="application/pdf" filename=%s>
|
||||
%s
|
||||
</cbc:EmbeddedDocumentBinaryObject>
|
||||
</cac:Attachment>
|
||||
</cac:AdditionalDocumentReference>
|
||||
''' % (escape(pdf_name), quoteattr(pdf_name), pdf_content_b64)
|
||||
|
||||
anchor_index = tree.index(anchor_elements[0])
|
||||
tree.insert(anchor_index, etree.fromstring(to_inject))
|
||||
new_xml = etree.tostring(cleanup_xml_node(tree), xml_declaration=True, encoding='UTF-8')
|
||||
edi_attachment.sudo().write({
|
||||
'res_model': 'account.move',
|
||||
'res_id': invoice.id,
|
||||
'datas': base64.b64encode(new_xml),
|
||||
'mimetype': 'application/xml',
|
||||
})
|
||||
|
||||
def _render_qweb_pdf_prepare_streams(self, report_ref, data, res_ids=None):
|
||||
# EXTENDS base
|
||||
# Add the pdf report in the XML as base64 string.
|
||||
collected_streams = super()._render_qweb_pdf_prepare_streams(report_ref, data, res_ids=res_ids)
|
||||
|
||||
if collected_streams \
|
||||
and res_ids \
|
||||
and self._is_invoice_report(report_ref):
|
||||
for res_id, stream_data in collected_streams.items():
|
||||
invoice = self.env['account.move'].browse(res_id)
|
||||
self._add_pdf_into_invoice_xml(invoice, stream_data)
|
||||
|
||||
# If Factur-X isn't already generated, generate and embed it inside the PDF
|
||||
if len(res_ids) == 1:
|
||||
invoice = self.env['account.move'].browse(res_ids)
|
||||
edi_doc_codes = invoice.edi_document_ids.edi_format_id.mapped('code')
|
||||
# If Factur-X hasn't been generated, generate and embed it anyway
|
||||
if invoice.is_sale_document() \
|
||||
and invoice.state == 'posted' \
|
||||
and 'facturx_1_0_05' not in edi_doc_codes \
|
||||
and self.env.ref('account_edi_ubl_cii.edi_facturx_1_0_05', raise_if_not_found=False):
|
||||
# Add the attachments to the pdf file
|
||||
pdf_stream = collected_streams[invoice.id]['stream']
|
||||
|
||||
# Read pdf content.
|
||||
pdf_content = pdf_stream.getvalue()
|
||||
reader_buffer = io.BytesIO(pdf_content)
|
||||
reader = OdooPdfFileReader(reader_buffer, strict=False)
|
||||
|
||||
# Post-process and embed the additional files.
|
||||
writer = OdooPdfFileWriter()
|
||||
writer.cloneReaderDocumentRoot(reader)
|
||||
# Copy all pages from the reader to the writer (required for PyPDF2 3.x)
|
||||
for page_num in range(reader.getNumPages()):
|
||||
page = reader.getPage(page_num)
|
||||
writer.addPage(page)
|
||||
|
||||
# Generate and embed Factur-X
|
||||
xml_content, _errors = self.env['account.edi.xml.cii']._export_invoice(invoice)
|
||||
writer.addAttachment(
|
||||
name=self.env['account.edi.xml.cii']._export_invoice_filename(invoice),
|
||||
data=xml_content,
|
||||
subtype='text/xml',
|
||||
)
|
||||
|
||||
# Replace the current content.
|
||||
pdf_stream.close()
|
||||
new_pdf_stream = io.BytesIO()
|
||||
writer.write(new_pdf_stream)
|
||||
collected_streams[invoice.id]['stream'] = new_pdf_stream
|
||||
|
||||
if (
|
||||
collected_streams
|
||||
and res_ids
|
||||
and len(res_ids) == 1
|
||||
and self._get_report(report_ref).report_name in custom_templates
|
||||
):
|
||||
# Generate and embed Factur-X
|
||||
invoice = self.env['account.move'].browse(res_ids)
|
||||
if invoice.is_sale_document() and invoice.state == 'posted':
|
||||
pdf_stream = collected_streams[invoice.id]['stream']
|
||||
invoice_data = {'pdf_attachment_values': {'raw': pdf_stream.getvalue()}}
|
||||
self.env['account.move.send'].with_context(custom_template_facturx=True)._hook_invoice_document_after_pdf_report_render(invoice, invoice_data)
|
||||
collected_streams[invoice.id]['stream'] = io.BytesIO(invoice_data['pdf_attachment_values']['raw'])
|
||||
return collected_streams
|
||||
|
|
|
|||
|
|
@ -1,109 +0,0 @@
|
|||
# -*- coding: utf-8 -*-
|
||||
# Part of Odoo. See LICENSE file for full copyright and licensing details.
|
||||
|
||||
from odoo import models
|
||||
from odoo.tools import cleanup_xml_node
|
||||
from odoo.tools.pdf import OdooPdfFileReader, OdooPdfFileWriter
|
||||
|
||||
from lxml import etree
|
||||
import base64
|
||||
from xml.sax.saxutils import escape, quoteattr
|
||||
import io
|
||||
|
||||
|
||||
class IrActionsReport(models.Model):
|
||||
_inherit = 'ir.actions.report'
|
||||
|
||||
def _is_invoice_report(self, report_ref):
|
||||
# EXTENDS account
|
||||
# allows to add factur-x.xml to custom PDF templates (comma separated list of template names)
|
||||
custom_templates = self.env['ir.config_parameter'].sudo().get_param('account.custom_templates_facturx_list', '')
|
||||
custom_templates = [report.strip() for report in custom_templates.split(',')]
|
||||
return super()._is_invoice_report(report_ref) or self._get_report(report_ref).report_name in custom_templates
|
||||
|
||||
def _add_pdf_into_invoice_xml(self, invoice, stream_data):
|
||||
format_codes = ['ubl_bis3', 'ubl_de', 'nlcius_1', 'efff_1']
|
||||
edi_attachments = invoice.edi_document_ids.filtered(lambda d: d.edi_format_id.code in format_codes).sudo().attachment_id
|
||||
for edi_attachment in edi_attachments:
|
||||
old_xml = base64.b64decode(edi_attachment.with_context(bin_size=False).datas, validate=True)
|
||||
tree = etree.fromstring(old_xml)
|
||||
anchor_elements = tree.xpath("//*[local-name()='AccountingSupplierParty']")
|
||||
additional_document_elements = tree.xpath("//*[local-name()='AdditionalDocumentReference']")
|
||||
# with this clause, we ensure the xml are only postprocessed once (even when the invoice is reset to
|
||||
# draft then validated again)
|
||||
if anchor_elements and not additional_document_elements:
|
||||
pdf_stream = stream_data['stream']
|
||||
pdf_content_b64 = base64.b64encode(pdf_stream.getvalue()).decode()
|
||||
pdf_name = '%s.pdf' % invoice.name.replace('/', '_')
|
||||
to_inject = '''
|
||||
<cac:AdditionalDocumentReference
|
||||
xmlns="urn:oasis:names:specification:ubl:schema:xsd:Invoice-2"
|
||||
xmlns:cbc="urn:oasis:names:specification:ubl:schema:xsd:CommonBasicComponents-2"
|
||||
xmlns:cac="urn:oasis:names:specification:ubl:schema:xsd:CommonAggregateComponents-2">
|
||||
<cbc:ID>%s</cbc:ID>
|
||||
<cac:Attachment>
|
||||
<cbc:EmbeddedDocumentBinaryObject mimeCode="application/pdf" filename=%s>
|
||||
%s
|
||||
</cbc:EmbeddedDocumentBinaryObject>
|
||||
</cac:Attachment>
|
||||
</cac:AdditionalDocumentReference>
|
||||
''' % (escape(pdf_name), quoteattr(pdf_name), pdf_content_b64)
|
||||
|
||||
anchor_index = tree.index(anchor_elements[0])
|
||||
tree.insert(anchor_index, etree.fromstring(to_inject))
|
||||
new_xml = etree.tostring(cleanup_xml_node(tree), xml_declaration=True, encoding='UTF-8')
|
||||
edi_attachment.sudo().write({
|
||||
'res_model': 'account.move',
|
||||
'res_id': invoice.id,
|
||||
'datas': base64.b64encode(new_xml),
|
||||
'mimetype': 'application/xml',
|
||||
})
|
||||
|
||||
def _render_qweb_pdf_prepare_streams(self, report_ref, data, res_ids=None):
|
||||
# EXTENDS base
|
||||
# Add the pdf report in the XML as base64 string.
|
||||
collected_streams = super()._render_qweb_pdf_prepare_streams(report_ref, data, res_ids=res_ids)
|
||||
|
||||
if collected_streams \
|
||||
and res_ids \
|
||||
and self._is_invoice_report(report_ref):
|
||||
for res_id, stream_data in collected_streams.items():
|
||||
invoice = self.env['account.move'].browse(res_id)
|
||||
self._add_pdf_into_invoice_xml(invoice, stream_data)
|
||||
|
||||
# If Factur-X isn't already generated, generate and embed it inside the PDF
|
||||
if len(res_ids) == 1:
|
||||
invoice = self.env['account.move'].browse(res_ids)
|
||||
edi_doc_codes = invoice.edi_document_ids.edi_format_id.mapped('code')
|
||||
# If Factur-X hasn't been generated, generate and embed it anyway
|
||||
if invoice.is_sale_document() \
|
||||
and invoice.state == 'posted' \
|
||||
and 'facturx_1_0_05' not in edi_doc_codes \
|
||||
and self.env.ref('account_edi_ubl_cii.edi_facturx_1_0_05', raise_if_not_found=False):
|
||||
# Add the attachments to the pdf file
|
||||
pdf_stream = collected_streams[invoice.id]['stream']
|
||||
|
||||
# Read pdf content.
|
||||
pdf_content = pdf_stream.getvalue()
|
||||
reader_buffer = io.BytesIO(pdf_content)
|
||||
reader = OdooPdfFileReader(reader_buffer, strict=False)
|
||||
|
||||
# Post-process and embed the additional files.
|
||||
writer = OdooPdfFileWriter()
|
||||
writer.cloneReaderDocumentRoot(reader)
|
||||
|
||||
# Generate and embed Factur-X
|
||||
xml_content, _errors = self.env['account.edi.xml.cii']._export_invoice(invoice)
|
||||
writer.addAttachment(
|
||||
name=self.env['account.edi.xml.cii']._export_invoice_filename(invoice),
|
||||
data=xml_content,
|
||||
subtype='text/xml',
|
||||
)
|
||||
|
||||
# Replace the current content.
|
||||
pdf_stream.close()
|
||||
new_pdf_stream = io.BytesIO()
|
||||
writer.write(new_pdf_stream)
|
||||
collected_streams[invoice.id]['stream'] = new_pdf_stream
|
||||
|
||||
return collected_streams
|
||||
|
|
@ -1,14 +0,0 @@
|
|||
# -*- coding: utf-8 -*-
|
||||
|
||||
from odoo import models
|
||||
|
||||
|
||||
class MailTemplate(models.Model):
|
||||
_inherit = "mail.template"
|
||||
|
||||
def _get_edi_attachments(self, document):
|
||||
# EXTENDS account_edi
|
||||
# Avoid having factur-x.xml in the 'send & print' wizard
|
||||
if document.edi_format_id.code == 'facturx_1_0_05':
|
||||
return {}
|
||||
return super()._get_edi_attachments(document)
|
||||
|
|
@ -0,0 +1,320 @@
|
|||
# Part of Odoo. See LICENSE file for full copyright and licensing details.
|
||||
import re
|
||||
from stdnum.fr import siret
|
||||
|
||||
from odoo import models, fields, api, _
|
||||
from odoo.exceptions import ValidationError
|
||||
from odoo.addons.account_edi_ubl_cii.models.account_edi_common import EAS_MAPPING
|
||||
from odoo.addons.account.models.company import PEPPOL_DEFAULT_COUNTRIES
|
||||
|
||||
|
||||
PEPPOL_ENDPOINT_INVALIDCHARS_RE = re.compile(r'[^a-zA-Z\d\-._~]')
|
||||
PEPPOL_ENDPOINT_INVALID_CHARS_RE_BY_EAS = {
|
||||
'0208': re.compile(r'[^0-9]'),
|
||||
'9925': re.compile(r'[^beBE0-9]'),
|
||||
}
|
||||
|
||||
|
||||
def sanitize_peppol_endpoint(peppol_endpoint, eas=None):
|
||||
if not peppol_endpoint:
|
||||
return peppol_endpoint
|
||||
sanitizer = PEPPOL_ENDPOINT_INVALID_CHARS_RE_BY_EAS.get(eas, PEPPOL_ENDPOINT_INVALIDCHARS_RE)
|
||||
return sanitizer.sub('', peppol_endpoint)
|
||||
|
||||
|
||||
class ResPartner(models.Model):
|
||||
_inherit = 'res.partner'
|
||||
|
||||
invoice_edi_format = fields.Selection(
|
||||
selection_add=[
|
||||
('facturx', "France (FacturX)"),
|
||||
('ubl_bis3', "EU Standard (Peppol Bis 3.0)"),
|
||||
('zugferd', "Germany (ZUGFeRD)"),
|
||||
('xrechnung', "Germany (XRechnung)"),
|
||||
('nlcius', "Netherlands (NLCIUS)"),
|
||||
('ubl_a_nz', "Australia (BIS Billing 3.0 A-NZ)"),
|
||||
('ubl_sg', "Singapore (BIS Billing 3.0 SG)"),
|
||||
],
|
||||
)
|
||||
is_ubl_format = fields.Boolean(compute='_compute_is_ubl_format')
|
||||
is_peppol_edi_format = fields.Boolean(compute='_compute_is_peppol_edi_format') # TODO remove in master
|
||||
peppol_endpoint = fields.Char(
|
||||
string="Peppol Endpoint",
|
||||
help="Unique identifier used by the BIS Billing 3.0 and its derivatives, also known as 'Endpoint ID'.",
|
||||
compute="_compute_peppol_endpoint",
|
||||
store=True,
|
||||
readonly=False,
|
||||
tracking=True,
|
||||
)
|
||||
peppol_eas = fields.Selection(
|
||||
string="Peppol e-address (EAS)",
|
||||
help="""Code used to identify the Endpoint for BIS Billing 3.0 and its derivatives.
|
||||
List available at https://docs.peppol.eu/poacc/billing/3.0/codelist/eas/""",
|
||||
compute="_compute_peppol_eas",
|
||||
store=True,
|
||||
readonly=False,
|
||||
tracking=True,
|
||||
selection=[
|
||||
('9923', "Albania VAT"),
|
||||
('9922', "Andorra VAT"),
|
||||
('0151', "Australia ABN"),
|
||||
('9914', "Austria UID"),
|
||||
('9915', "Austria VOKZ"),
|
||||
('0208', "Belgian Company Registry"),
|
||||
('9925', "Belgian VAT"),
|
||||
('9924', "Bosnia and Herzegovina VAT"),
|
||||
('9926', "Bulgaria VAT"),
|
||||
('9934', "Croatia VAT"),
|
||||
('9928', "Cyprus VAT"),
|
||||
('9929', "Czech Republic VAT"),
|
||||
('0096', "Denmark P"),
|
||||
('0184', "Denmark CVR"),
|
||||
('0198', "Denmark SE"),
|
||||
('0191', "Estonia Company code"),
|
||||
('9931', "Estonia VAT"),
|
||||
('0037', "Finland LY-tunnus"),
|
||||
('0216', "Finland OVT code"),
|
||||
('0213', "Finland VAT"),
|
||||
('0002', "France SIRENE"),
|
||||
('0009', "France SIRET"),
|
||||
('9957', "France VAT"),
|
||||
('0225', "France FRCTC Electronic Address"),
|
||||
('0240', "France Register of legal persons"),
|
||||
('0204', "Germany Leitweg-ID"),
|
||||
('9930', "Germany VAT"),
|
||||
('9933', "Greece VAT"),
|
||||
('9910', "Hungary VAT"),
|
||||
('0196', "Iceland Kennitala"),
|
||||
('9935', "Ireland VAT"),
|
||||
('0211', "Italia Partita IVA"),
|
||||
('0097', "Italia FTI"),
|
||||
('0188', "Japan SST"),
|
||||
('0221', "Japan IIN"),
|
||||
('0218', "Latvia Unified registration number"),
|
||||
('9939', "Latvia VAT"),
|
||||
('9936', "Liechtenstein VAT"),
|
||||
('0200', "Lithuania JAK"),
|
||||
('9937', "Lithuania VAT"),
|
||||
('9938', "Luxembourg VAT"),
|
||||
('9942', "Macedonia VAT"),
|
||||
('0230', "Malaysia"),
|
||||
('9943', "Malta VAT"),
|
||||
('9940', "Monaco VAT"),
|
||||
('9941', "Montenegro VAT"),
|
||||
('0106', "Netherlands KvK"),
|
||||
('0190', "Netherlands OIN"),
|
||||
('9944', "Netherlands VAT"),
|
||||
('0192', "Norway Org.nr."),
|
||||
('9945', "Poland VAT"),
|
||||
('9946', "Portugal VAT"),
|
||||
('9947', "Romania VAT"),
|
||||
('9948', "Serbia VAT"),
|
||||
('0195', "Singapore UEN"),
|
||||
('9949', "Slovenia VAT"),
|
||||
('9950', "Slovakia VAT"),
|
||||
('9920', "Spain VAT"),
|
||||
('0007', "Sweden Org.nr."),
|
||||
('9955', "Sweden VAT"),
|
||||
('9927', "Swiss VAT"),
|
||||
('0183', "Swiss UIDB"),
|
||||
('9952', "Turkey VAT"),
|
||||
('0235', "UAE Tax Identification Number (TIN)"),
|
||||
('9932', "United Kingdom VAT"),
|
||||
('9959', "USA EIN"),
|
||||
('0060', "DUNS Number"),
|
||||
('0088', "EAN Location Code"),
|
||||
('0130', "Directorates of the European Commission"),
|
||||
('0135', "SIA Object Identifiers"),
|
||||
('0142', "SECETI Object Identifiers"),
|
||||
('0193', "UBL.BE party identifier"),
|
||||
('0199', "Legal Entity Identifier (LEI)"),
|
||||
('0201', "Codice Univoco Unità Organizzativa iPA"),
|
||||
('0202', "Indirizzo di Posta Elettronica Certificata"),
|
||||
('0209', "GS1 identification keys"),
|
||||
('0210', "Codice Fiscale"),
|
||||
('9913', "Business Registers Network"),
|
||||
('9918', "S.W.I.F.T"),
|
||||
('9919', "Kennziffer des Unternehmensregisters"),
|
||||
('9951', "San Marino VAT"),
|
||||
('9953', "Vatican VAT"),
|
||||
('AN', "O.F.T.P. (ODETTE File Transfer Protocol)"),
|
||||
('AQ', "X.400 address for mail text"),
|
||||
('AS', "AS2 exchange"),
|
||||
('AU', "File Transfer Protocol"),
|
||||
('EM', "Electronic mail"),
|
||||
]
|
||||
)
|
||||
available_peppol_eas = fields.Json(compute='_compute_available_peppol_eas')
|
||||
|
||||
@api.constrains('peppol_endpoint')
|
||||
def _check_peppol_fields(self):
|
||||
for partner in self:
|
||||
if partner.peppol_endpoint and partner.peppol_eas:
|
||||
error = self._build_error_peppol_endpoint(partner.peppol_eas, partner.peppol_endpoint)
|
||||
if error:
|
||||
raise ValidationError(error)
|
||||
|
||||
@api.model
|
||||
def _get_ubl_cii_formats(self):
|
||||
return list(self._get_ubl_cii_formats_info().keys())
|
||||
|
||||
@api.model
|
||||
def _get_ubl_cii_formats_info(self):
|
||||
return {
|
||||
'ubl_bis3': {
|
||||
'countries': list(PEPPOL_DEFAULT_COUNTRIES),
|
||||
'on_peppol': True,
|
||||
'sequence': 200,
|
||||
'embed_attachments': True,
|
||||
},
|
||||
'xrechnung': {'countries': ['DE'], 'sequence': 200, 'on_peppol': True},
|
||||
'ubl_a_nz': {'countries': ['NZ', 'AU'], 'on_peppol': False}, # Not yet available through Odoo's Access Point, although it's a Peppol valid format
|
||||
'nlcius': {'countries': ['NL'], 'on_peppol': True},
|
||||
'ubl_sg': {'countries': ['SG'], 'on_peppol': False}, # Same.
|
||||
'facturx': {'countries': ['FR'], 'on_peppol': False},
|
||||
'zugferd': {'countries': ['DE'], 'on_peppol': False},
|
||||
}
|
||||
|
||||
@api.model
|
||||
def _get_ubl_cii_formats_by_country(self):
|
||||
formats_info = self._get_ubl_cii_formats_info()
|
||||
countries = {country for format_val in formats_info.values() for country in (format_val.get('countries') or [])}
|
||||
return {
|
||||
country_code: [
|
||||
format_key
|
||||
for format_key, format_val in formats_info.items() if country_code in (format_val.get('countries') or [])
|
||||
]
|
||||
for country_code in countries
|
||||
}
|
||||
|
||||
def _get_suggested_ubl_cii_edi_format(self):
|
||||
self.ensure_one()
|
||||
format_mapping = self._get_ubl_cii_formats_by_country()
|
||||
country_code = self.commercial_partner_id._deduce_country_code()
|
||||
if country_code in format_mapping:
|
||||
formats_by_country = format_mapping[country_code]
|
||||
# return the format with the smallest sequence
|
||||
if len(formats_by_country) == 1:
|
||||
return formats_by_country[0]
|
||||
else:
|
||||
if self.peppol_eas == '0204':
|
||||
return 'xrechnung'
|
||||
formats_info = self._get_ubl_cii_formats_info()
|
||||
return min(formats_by_country, key=lambda e: formats_info[e].get('sequence', 100)) # we use a sequence of 100 by default
|
||||
return False
|
||||
|
||||
def _get_suggested_peppol_edi_format(self):
|
||||
self.ensure_one()
|
||||
suggested_format = self.commercial_partner_id._get_suggested_ubl_cii_edi_format()
|
||||
return suggested_format if suggested_format in self.env['res.partner']._get_peppol_formats() else 'ubl_bis3'
|
||||
|
||||
def _get_peppol_edi_format(self):
|
||||
self.ensure_one()
|
||||
return self.invoice_edi_format or self._get_suggested_peppol_edi_format()
|
||||
|
||||
@api.model
|
||||
def _get_peppol_formats(self):
|
||||
formats_info = self._get_ubl_cii_formats_info()
|
||||
return [format_key for format_key, format_vals in formats_info.items() if format_vals.get('on_peppol')]
|
||||
|
||||
def _peppol_eas_endpoint_depends(self):
|
||||
# field dependencies of methods _compute_peppol_endpoint() and _compute_peppol_eas()
|
||||
# because we need to extend depends in l10n modules
|
||||
return ['country_code', 'vat', 'company_registry']
|
||||
|
||||
@api.depends_context('company')
|
||||
@api.depends('invoice_edi_format')
|
||||
def _compute_is_ubl_format(self):
|
||||
for partner in self:
|
||||
partner.is_ubl_format = partner.invoice_edi_format in self._get_ubl_cii_formats()
|
||||
|
||||
@api.depends_context('company')
|
||||
@api.depends('invoice_edi_format')
|
||||
def _compute_is_peppol_edi_format(self):
|
||||
for partner in self:
|
||||
partner.is_peppol_edi_format = partner.invoice_edi_format in self._get_peppol_formats()
|
||||
|
||||
def _get_peppol_endpoint_value(self, country_code, field, eas):
|
||||
self.ensure_one()
|
||||
value = field in self._fields and self[field]
|
||||
|
||||
if (
|
||||
country_code == 'BE'
|
||||
and field == 'company_registry'
|
||||
and not value
|
||||
and self.vat
|
||||
):
|
||||
value = self.vat
|
||||
if value.isalnum():
|
||||
value = value.removeprefix(country_code)
|
||||
|
||||
return sanitize_peppol_endpoint(value, eas)
|
||||
|
||||
@api.depends('peppol_eas')
|
||||
def _compute_peppol_endpoint(self):
|
||||
""" If the EAS changes and a valid endpoint is available, set it. Otherwise, keep the existing value."""
|
||||
for partner in self:
|
||||
partner.peppol_endpoint = sanitize_peppol_endpoint(partner.peppol_endpoint, partner.peppol_eas)
|
||||
country_code = partner._deduce_country_code()
|
||||
if country_code in EAS_MAPPING:
|
||||
field = EAS_MAPPING[country_code].get(partner.peppol_eas)
|
||||
value = partner._get_peppol_endpoint_value(country_code, field, partner.peppol_eas)
|
||||
if field and value and not partner._build_error_peppol_endpoint(partner.peppol_eas, value):
|
||||
partner.peppol_endpoint = value
|
||||
|
||||
@api.depends(lambda self: self._peppol_eas_endpoint_depends())
|
||||
def _compute_peppol_eas(self):
|
||||
"""
|
||||
If the country_code changes, recompute the EAS only if there is a country_code, it exists in the
|
||||
EAS_MAPPING, and the current EAS is not consistent with the new country_code.
|
||||
"""
|
||||
for partner in self:
|
||||
partner.peppol_eas = partner.peppol_eas
|
||||
country_code = partner._deduce_country_code()
|
||||
if country_code in EAS_MAPPING:
|
||||
eas_to_field = EAS_MAPPING[country_code]
|
||||
if partner.peppol_eas not in eas_to_field.keys():
|
||||
new_eas = next(iter(EAS_MAPPING[country_code].keys()))
|
||||
# Iterate on the possible EAS until a valid one is found
|
||||
for eas, field in eas_to_field.items():
|
||||
if field and field in partner._fields:
|
||||
value = partner._get_peppol_endpoint_value(country_code, field, eas)
|
||||
if value and not partner._build_error_peppol_endpoint(eas, value):
|
||||
new_eas = eas
|
||||
break
|
||||
partner.peppol_eas = new_eas
|
||||
|
||||
@api.depends_context('company')
|
||||
@api.depends('company_id')
|
||||
def _compute_available_peppol_eas(self):
|
||||
# TO OVERRIDE
|
||||
self.available_peppol_eas = list(dict(self._fields['peppol_eas'].selection))
|
||||
|
||||
def _build_error_peppol_endpoint(self, eas, endpoint):
|
||||
""" This function contains all the rules regarding the peppol_endpoint."""
|
||||
if eas == '0208' and not re.match(r"^\d{10}$", endpoint):
|
||||
return _("The Peppol endpoint is not valid. The expected format is: 0239843188")
|
||||
if eas == '0009' and not siret.is_valid(endpoint):
|
||||
return _("The Peppol endpoint is not valid. The expected format is: 73282932000074")
|
||||
if eas == '0007' and not re.match(r"^\d{10}$", endpoint):
|
||||
return _("The Peppol endpoint is not valid. "
|
||||
"It should contain exactly 10 digits (Company Registry number)."
|
||||
"The expected format is: 1234567890")
|
||||
if PEPPOL_ENDPOINT_INVALIDCHARS_RE.search(endpoint) or not 1 <= len(endpoint) <= 50:
|
||||
return _("The Peppol endpoint (%s) is not valid. It should contain only letters and digit.", endpoint)
|
||||
|
||||
@api.model
|
||||
def _get_edi_builder(self, invoice_edi_format):
|
||||
if invoice_edi_format == 'xrechnung':
|
||||
return self.env['account.edi.xml.ubl_de']
|
||||
# Same template for the two formats (France and Germany)
|
||||
if invoice_edi_format in ('facturx', 'zugferd'):
|
||||
return self.env['account.edi.xml.cii']
|
||||
if invoice_edi_format == 'ubl_a_nz':
|
||||
return self.env['account.edi.xml.ubl_a_nz']
|
||||
if invoice_edi_format == 'nlcius':
|
||||
return self.env['account.edi.xml.ubl_nl']
|
||||
if invoice_edi_format == 'ubl_bis3':
|
||||
return self.env['account.edi.xml.ubl_bis3']
|
||||
if invoice_edi_format == 'ubl_sg':
|
||||
return self.env['account.edi.xml.ubl_sg']
|
||||
|
|
@ -0,0 +1,34 @@
|
|||
<?xml version="1.0" encoding="UTF-8"?>
|
||||
<odoo>
|
||||
<template id="account_invoices_generated_by_odoo">
|
||||
<t t-call="web.html_container">
|
||||
<t t-foreach="docs" t-as="o">
|
||||
<t t-set="lang" t-value="o.partner_id.lang"/>
|
||||
<t t-call="account_edi_ubl_cii.report_invoice_document"/>
|
||||
</t>
|
||||
</t>
|
||||
</template>
|
||||
|
||||
<template id="report_invoice_document" inherit_id="account.report_invoice_document" primary="True">
|
||||
<xpath expr="//t[@t-call='web.external_layout']" position="attributes">
|
||||
<attribute name="t-call">account_edi_ubl_cii.external_layout_with_context</attribute>
|
||||
</xpath>
|
||||
</template>
|
||||
|
||||
<template id="external_layout_with_context" inherit_id="web.external_layout" primary="True">
|
||||
<xpath expr="//t[@t-if='company.external_report_layout_id']" position="replace">
|
||||
<t t-set="chosen_layout" t-value="env.context.get('force_report_layout')"/>
|
||||
<t t-if="chosen_layout" t-call="{{ chosen_layout }}">
|
||||
<t t-out="0"/>
|
||||
</t>
|
||||
</xpath>
|
||||
</template>
|
||||
|
||||
<record id="action_report_account_invoices_generated_by_odoo" model="ir.actions.report">
|
||||
<field name="name">Invoice report generated by Odoo</field>
|
||||
<field name="model">account.move</field>
|
||||
<field name="report_type">qweb-pdf</field>
|
||||
<field name="report_name">account_edi_ubl_cii.account_invoices_generated_by_odoo</field>
|
||||
<field name="report_file">account_edi_ubl_cii.account_invoices_generated_by_odoo</field>
|
||||
</record>
|
||||
</odoo>
|
||||
|
|
@ -0,0 +1,7 @@
|
|||
.o_field_peppol_eas_selection > select {
|
||||
color: $headings-color;
|
||||
font-weight: $font-weight-bold;
|
||||
}
|
||||
.o_field_peppol_eas_selection {
|
||||
min-width: 200px;
|
||||
}
|
||||
|
|
@ -1,3 +1,9 @@
|
|||
# -*- encoding: utf-8 -*-
|
||||
# -*- coding: utf-8 -*-
|
||||
|
||||
from . import common
|
||||
from . import test_autopost_bills
|
||||
from . import test_partner_peppol_fields
|
||||
from . import test_ubl_cii
|
||||
from . import test_download_docs
|
||||
from . import test_ubl_export_bis3_be
|
||||
from . import test_ubl_export_bis3_selfbilling_be
|
||||
|
|
|
|||
|
|
@ -0,0 +1,204 @@
|
|||
from odoo import Command
|
||||
from odoo.addons.account.tests.common import AccountTestInvoicingCommon
|
||||
|
||||
|
||||
class TestUblCiiCommon(AccountTestInvoicingCommon):
|
||||
|
||||
@classmethod
|
||||
def setUpClass(cls):
|
||||
super().setUpClass()
|
||||
cls.partner_be = cls._create_partner_be()
|
||||
cls.partner_lu_dig = cls._create_partner_lu_dig()
|
||||
cls.partner_nl = cls._create_partner_nl()
|
||||
cls.partner_au = cls._create_partner_au()
|
||||
|
||||
@classmethod
|
||||
def _create_company(cls, **create_values):
|
||||
# EXTENDS 'account'
|
||||
create_values.setdefault('currency_id', cls.env.ref('base.EUR').id)
|
||||
company = super()._create_company(**create_values)
|
||||
company.tax_calculation_rounding_method = 'round_globally'
|
||||
return company
|
||||
|
||||
@classmethod
|
||||
def _create_partner_default_values(cls):
|
||||
return {
|
||||
'invoice_sending_method': 'manual',
|
||||
'property_account_receivable_id': cls.company_data['default_account_receivable'].id,
|
||||
'property_account_payable_id': cls.company_data['default_account_payable'].id,
|
||||
'company_id': cls.company_data['company'].id,
|
||||
}
|
||||
|
||||
@classmethod
|
||||
def _create_partner_be(cls, **kwargs):
|
||||
return cls.env['res.partner'].create({
|
||||
**cls._create_partner_default_values(),
|
||||
'name': 'partner_be',
|
||||
'street': "Rue des Bourlottes 9",
|
||||
'zip': "1367",
|
||||
'city': "Ramillies",
|
||||
'vat': 'BE0477472701',
|
||||
'company_registry': '0477472701',
|
||||
'bank_ids': [Command.create({'acc_number': 'BE90735788866632', 'allow_out_payment': True})],
|
||||
'country_id': cls.env.ref('base.be').id,
|
||||
**kwargs,
|
||||
})
|
||||
|
||||
@classmethod
|
||||
def _create_partner_lu_dig(cls, **kwargs):
|
||||
return cls.env['res.partner'].create({
|
||||
**cls._create_partner_default_values(),
|
||||
'name': "Division informatique et gestion",
|
||||
'street': "bd de la Foire",
|
||||
'zip': "L-1528",
|
||||
'city': "Luxembourg",
|
||||
'vat': None,
|
||||
'company_registry': None,
|
||||
'country_id': cls.env.ref('base.lu').id,
|
||||
'peppol_eas': '9938',
|
||||
'peppol_endpoint': '00005000041',
|
||||
**kwargs,
|
||||
})
|
||||
|
||||
@classmethod
|
||||
def _create_partner_nl(cls, **kwargs):
|
||||
return cls.env['res.partner'].create({
|
||||
**cls._create_partner_default_values(),
|
||||
'name': "partner_nl",
|
||||
'street': "Kunststraat, 3",
|
||||
'zip': "1000",
|
||||
'city': "Amsterdam",
|
||||
'vat': 'NL000099998B57',
|
||||
'company_registry': None,
|
||||
'country_id': cls.env.ref('base.nl').id,
|
||||
'peppol_eas': '0106',
|
||||
'peppol_endpoint': '77777677',
|
||||
**kwargs,
|
||||
})
|
||||
|
||||
@classmethod
|
||||
def _create_partner_au(cls, **kwargs):
|
||||
return cls.env['res.partner'].create({
|
||||
**cls._create_partner_default_values(),
|
||||
'name': "partner_au",
|
||||
'street': "Parliament Dr",
|
||||
'zip': "2600",
|
||||
'city': "Canberra",
|
||||
'vat': '53 930 548 027',
|
||||
'country_id': cls.env.ref('base.au').id,
|
||||
'bank_ids': [Command.create({'acc_number': '93999574162167', 'allow_out_payment': True})],
|
||||
**kwargs,
|
||||
})
|
||||
|
||||
@classmethod
|
||||
def _create_mixed_early_payment_term(cls, **kwargs):
|
||||
return cls.env['account.payment.term'].create({
|
||||
'name': "2/7 Net 30",
|
||||
'note': "Payment terms: 30 Days, 2% Early Payment Discount under 7 days",
|
||||
'early_discount': True,
|
||||
'discount_percentage': 2,
|
||||
'discount_days': 7,
|
||||
'early_pay_discount_computation': 'mixed',
|
||||
'line_ids': [Command.create({'value': 'percent', 'value_amount': 100.0, 'nb_days': 30})],
|
||||
**kwargs,
|
||||
})
|
||||
|
||||
@classmethod
|
||||
def _create_add_invoice_line_cash_rounding(cls, **kwargs):
|
||||
return cls.env['account.cash.rounding'].create({
|
||||
'name': "Rounding 0.05",
|
||||
'rounding': 0.05,
|
||||
'strategy': 'add_invoice_line',
|
||||
'profit_account_id': cls.company_data['default_account_revenue'].copy().id,
|
||||
'loss_account_id': cls.company_data['default_account_expense'].copy().id,
|
||||
'rounding_method': 'HALF-UP',
|
||||
**kwargs,
|
||||
})
|
||||
|
||||
@classmethod
|
||||
def _create_biggest_tax_cash_rounding(cls, **kwargs):
|
||||
return cls.env['account.cash.rounding'].create({
|
||||
'name': "Rounding 0.05",
|
||||
'rounding': 0.05,
|
||||
'strategy': 'biggest_tax',
|
||||
'rounding_method': 'HALF-UP',
|
||||
**kwargs,
|
||||
})
|
||||
|
||||
# -------------------------------------------------------------------------
|
||||
# EXPORT HELPERS
|
||||
# -------------------------------------------------------------------------
|
||||
|
||||
def subfolder(self):
|
||||
return 'export'
|
||||
|
||||
@classmethod
|
||||
def _generate_invoice_ubl_file(cls, invoice, **kwargs):
|
||||
cls.env['account.move.send']._generate_and_send_invoices(invoice, **{'sending_methods': ['manual'], **kwargs})
|
||||
|
||||
def _assert_invoice_ubl_file(self, invoice, filename):
|
||||
self.assertTrue(invoice.ubl_cii_xml_id)
|
||||
self.assert_xml(invoice.ubl_cii_xml_id.raw, filename, subfolder=self.subfolder())
|
||||
|
||||
# -------------------------------------------------------------------------
|
||||
# IMPORT HELPERS
|
||||
# -------------------------------------------------------------------------
|
||||
|
||||
@classmethod
|
||||
def _import_as_attachment_on(cls, file_path=None, attachment=None, journal=None):
|
||||
assert file_path or attachment
|
||||
assert not file_path or not attachment
|
||||
journal = journal or cls.company_data["default_journal_purchase"]
|
||||
if file_path:
|
||||
attachment = cls._import_as_attachment(file_path)
|
||||
return journal._create_document_from_attachment(attachment.id)
|
||||
|
||||
|
||||
class TestUblCiiBECommon(TestUblCiiCommon):
|
||||
|
||||
@classmethod
|
||||
def _create_company(cls, **create_values):
|
||||
company = super()._create_company(**create_values)
|
||||
|
||||
company.partner_id.write({
|
||||
'street': "Chaussée de Namur 40",
|
||||
'zip': "1367",
|
||||
'city': "Ramillies",
|
||||
'vat': 'BE0202239951',
|
||||
'company_registry': '0202239951',
|
||||
'country_id': cls.env.ref('base.be').id,
|
||||
'bank_ids': [Command.create({'acc_number': 'BE15001559627230', 'allow_out_payment': True})],
|
||||
})
|
||||
return company
|
||||
|
||||
def subfolder(self):
|
||||
return f'{super().subfolder()}/be'
|
||||
|
||||
|
||||
class TestUblCiiFRCommon(TestUblCiiCommon):
|
||||
|
||||
@classmethod
|
||||
def _create_company(cls, **create_values):
|
||||
company = super()._create_company(**create_values)
|
||||
|
||||
company.partner_id.write({
|
||||
'street': "Rue Grand Port 1",
|
||||
'zip': "35400",
|
||||
'city': "Saint-Malo",
|
||||
'vat': 'FR23334175221',
|
||||
'company_registry': '40678483500521',
|
||||
'country_id': cls.env.ref('base.fr').id,
|
||||
})
|
||||
return company
|
||||
|
||||
def subfolder(self):
|
||||
return f'{super().subfolder()}/fr'
|
||||
|
||||
|
||||
class TestUblBis3Common(TestUblCiiCommon):
|
||||
|
||||
@classmethod
|
||||
def _create_partner_default_values(cls):
|
||||
values = super()._create_partner_default_values()
|
||||
values['invoice_edi_format'] = 'ubl_bis3'
|
||||
return values
|
||||
|
|
@ -0,0 +1,147 @@
|
|||
import base64
|
||||
from datetime import datetime, date, timedelta
|
||||
from xml.etree import ElementTree as et
|
||||
|
||||
from odoo import fields
|
||||
from odoo.tests import tagged
|
||||
from odoo.tools import file_open
|
||||
|
||||
from odoo.addons.account.tests.common import AccountTestInvoicingCommon
|
||||
|
||||
|
||||
@tagged('post_install', '-at_install')
|
||||
class TestAutoPostBills(AccountTestInvoicingCommon):
|
||||
|
||||
def import_facturx(self, filename='facturx_out_invoice.xml', ref=None, date=None):
|
||||
self.env.cr._now = datetime.now() # reset transaction's NOW, otherwise all move will have the same create_date
|
||||
with (file_open(f"account_edi_ubl_cii/tests/test_files/{filename}", 'rb', filter_ext=('.xml',)) as file):
|
||||
file_read = file.read()
|
||||
tree = et.ElementTree(et.fromstring(file_read.decode()))
|
||||
if ref:
|
||||
tree.find('./{*}ExchangedDocument/{*}ID').text = ref
|
||||
if date:
|
||||
tree.find('./{*}ExchangedDocument/{*}IssueDateTime/{*}DateTimeString').text = date
|
||||
attachment = self.env['ir.attachment'].create({
|
||||
'name': 'test_file.xml',
|
||||
'datas': base64.encodebytes(et.tostring(tree.getroot())),
|
||||
})
|
||||
return self.company_data['default_journal_purchase'].with_context(disable_abnormal_invoice_detection=False)._create_document_from_attachment(attachment.id)
|
||||
|
||||
def assert_wizard(self, post_result, expected_nb_bills):
|
||||
self.assertEqual(post_result.get('res_model'), 'account.autopost.bills.wizard')
|
||||
wizard = self.env[post_result.get('res_model')].browse(post_result.get('res_id'))
|
||||
self.assertEqual(wizard.nb_unmodified_bills, expected_nb_bills)
|
||||
return wizard
|
||||
|
||||
def test_autopost_bills(self):
|
||||
"""
|
||||
When invoices from a same vendor are input thrice in a row without changing anything,
|
||||
so for invoice coming from OCR or e-Invoicing, we should show a banner to the user
|
||||
and allow him to automatically post future invoices from this vendor.
|
||||
- If there is a significant difference (see abnormal_amount), don't autopost and show the banner !
|
||||
- Not applicable to hashed journals
|
||||
"""
|
||||
# Create 1st bill ever for this partner, should NOT show popup
|
||||
move = self.import_facturx()
|
||||
autopost_bills_wizard = move.action_post()
|
||||
self.assertFalse(autopost_bills_wizard)
|
||||
self.assertFalse(move.is_manually_modified)
|
||||
|
||||
# Create 2nd bill without changes for this partner, should NOT show popup
|
||||
move = self.import_facturx()
|
||||
autopost_bills_wizard = move.action_post()
|
||||
self.assertFalse(autopost_bills_wizard)
|
||||
self.assertFalse(move.is_manually_modified)
|
||||
|
||||
# Create 3rd bill without changes for this partner, should show popup on posting
|
||||
move = self.import_facturx()
|
||||
autopost_bills_wizard = move.action_post()
|
||||
self.assertFalse(move.is_manually_modified)
|
||||
wizard = self.assert_wizard(autopost_bills_wizard, 3)
|
||||
wizard.action_ask_later() # Nothing changes, we should still show the popup
|
||||
|
||||
# Create 4th bill without changes for this partner, should show popup on posting
|
||||
move = self.import_facturx()
|
||||
autopost_bills_wizard = move.action_post()
|
||||
self.assertFalse(move.is_manually_modified)
|
||||
wizard = self.assert_wizard(autopost_bills_wizard, 4)
|
||||
wizard.action_ask_later() # Nothing changes, we should still show the popup
|
||||
|
||||
# Create 5th bill with changes, should NOT show popup on posting
|
||||
move = self.import_facturx().with_context(skip_is_manually_modified=False)
|
||||
move.invoice_date_due = fields.Date.today()
|
||||
autopost_bills_wizard = move.action_post()
|
||||
self.assertFalse(autopost_bills_wizard)
|
||||
self.assertTrue(move.is_manually_modified)
|
||||
|
||||
# Create again 3 bills without any changes
|
||||
for _ in range(3):
|
||||
move = self.import_facturx()
|
||||
autopost_bills_wizard = move.action_post()
|
||||
wizard = self.assert_wizard(autopost_bills_wizard, 3)
|
||||
wizard.action_automate_partner()
|
||||
|
||||
# Create 4th bill without changes with automation enabled => should automatically post, no popup
|
||||
move = self.import_facturx(ref="refbill4", date='20170102') # new ref and date to avoid duplicates
|
||||
self.assertEqual(move.state, 'posted')
|
||||
|
||||
# Reset
|
||||
move.partner_id.autopost_bills = 'ask'
|
||||
|
||||
# Create 5th bill without changes, should show popup on posting
|
||||
move = self.import_facturx()
|
||||
autopost_bills_wizard = move.action_post()
|
||||
wizard = self.assert_wizard(autopost_bills_wizard, 5)
|
||||
wizard.action_never_automate_partner()
|
||||
|
||||
# Create 6th bill without changes, should not show popup, and move should stay in draft
|
||||
move = self.import_facturx()
|
||||
self.assertEqual(move.state, 'draft')
|
||||
autopost_bills_wizard = move.action_post()
|
||||
self.assertFalse(autopost_bills_wizard)
|
||||
|
||||
# Reset
|
||||
move.partner_id.autopost_bills = 'ask'
|
||||
|
||||
# Create 7th bill without changes, should show popup on posting
|
||||
move = self.import_facturx()
|
||||
autopost_bills_wizard = move.action_post()
|
||||
wizard = self.assert_wizard(autopost_bills_wizard, 7)
|
||||
wizard.action_ask_later()
|
||||
|
||||
# Deactivate the feature fully from the settings
|
||||
# => Should never show popup, nor autopost (even if partner is on 'always')
|
||||
move.company_id.autopost_bills = False
|
||||
move.partner_id.autopost_bills = 'always'
|
||||
move = self.import_facturx()
|
||||
self.assertEqual(move.state, 'draft')
|
||||
autopost_bills_wizard = move.action_post()
|
||||
self.assertFalse(autopost_bills_wizard)
|
||||
|
||||
# Reset
|
||||
move.company_id.autopost_bills = True
|
||||
move.partner_id.autopost_bills = 'always'
|
||||
|
||||
# If the bill has a duplicate, don't autopost it
|
||||
move = self.import_facturx(ref="refbill4") # same ref as previous
|
||||
self.assertEqual(move.state, "draft")
|
||||
|
||||
# If there is a significant difference (see abnormal_amount), don't autopost even if 'always' is set
|
||||
base_date = date(2018, 1, 1)
|
||||
for i in range(10): # See test_unexpected_invoice
|
||||
move = self.import_facturx(ref=f"ref{i}", date=(base_date + timedelta(days=i)).strftime('%Y%m%d')) # automatically posted
|
||||
self.assertEqual(move.state, "posted")
|
||||
|
||||
move = self.import_facturx(filename='facturx_out_invoice_abnormal.xml') # amounts * 100 here, a bit abnormal...
|
||||
self.assertEqual(move.state, "draft") # even if partner's autopost is always
|
||||
res = move.action_post()
|
||||
self.assertEqual(res.get('res_model'), 'validate.account.move')
|
||||
wizard = self.env[res.get('res_model')].browse(res.get('res_id'))
|
||||
self.assertEqual(wizard.move_ids, move)
|
||||
|
||||
# Not applicable to hashed journals
|
||||
self.company_data['default_journal_purchase'].restrict_mode_hash_table = True
|
||||
move = self.import_facturx()
|
||||
self.assertEqual(move.state, "draft")
|
||||
res = move.action_post()
|
||||
self.assertFalse(res)
|
||||
|
|
@ -0,0 +1,65 @@
|
|||
from io import BytesIO
|
||||
from zipfile import ZipFile
|
||||
|
||||
from odoo.fields import Command
|
||||
from odoo.tests.common import tagged
|
||||
from odoo.addons.account_edi_ubl_cii.tests.common import TestUblBis3Common, TestUblCiiBECommon
|
||||
from odoo.addons.account.tests.common import AccountTestInvoicingHttpCommon
|
||||
|
||||
|
||||
@tagged('post_install', '-at_install')
|
||||
class TestDownloadDocs(TestUblBis3Common, TestUblCiiBECommon, AccountTestInvoicingHttpCommon):
|
||||
|
||||
@classmethod
|
||||
def setUpClass(cls):
|
||||
super().setUpClass()
|
||||
invoice_1 = cls.env['account.move'].create({
|
||||
'move_type': 'out_invoice',
|
||||
'partner_id': cls.partner_be.id,
|
||||
'invoice_line_ids': [
|
||||
Command.create({
|
||||
'price_unit': 100,
|
||||
'product_id': cls.product_a.id,
|
||||
'tax_ids': cls.tax_sale_a.ids,
|
||||
})
|
||||
]
|
||||
})
|
||||
invoice_2 = cls.env['account.move'].create({
|
||||
'move_type': 'out_invoice',
|
||||
'partner_id': cls.partner_be.id,
|
||||
'invoice_line_ids': [
|
||||
Command.create({
|
||||
'price_unit': 20,
|
||||
'product_id': cls.product_a.id,
|
||||
'tax_ids': cls.tax_sale_a.ids,
|
||||
})
|
||||
]
|
||||
})
|
||||
invoice_3 = cls.env['account.move'].create({
|
||||
'move_type': 'out_invoice',
|
||||
'partner_id': cls.partner_be.id,
|
||||
'invoice_line_ids': [
|
||||
Command.create({
|
||||
'price_unit': 300,
|
||||
'product_id': cls.product_a.id,
|
||||
'tax_ids': cls.tax_sale_a.ids,
|
||||
})
|
||||
]
|
||||
})
|
||||
cls.invoices = invoice_1 + invoice_2
|
||||
cls.invoices.action_post()
|
||||
cls._generate_invoice_ubl_file(cls.invoices)
|
||||
cls.invoices += invoice_3
|
||||
assert invoice_1.invoice_pdf_report_id and invoice_2.invoice_pdf_report_id and not invoice_3.invoice_pdf_report_id
|
||||
assert invoice_1.ubl_cii_xml_id and invoice_2.ubl_cii_xml_id and not invoice_3.ubl_cii_xml_id
|
||||
|
||||
def test_download_invoice_documents_filetype_all(self):
|
||||
self.authenticate(self.env.user.login, self.env.user.login)
|
||||
url = f'/account/download_invoice_documents/{",".join(map(str, self.invoices.ids))}/all'
|
||||
res = self.url_open(url)
|
||||
self.assertEqual(res.status_code, 200)
|
||||
with ZipFile(BytesIO(res.content)) as zip_file:
|
||||
files = zip_file.namelist()
|
||||
self.assertEqual(len(files), 5)
|
||||
xml_files = sum(file.endswith('.xml') for file in files)
|
||||
self.assertEqual(xml_files, 2)
|
||||
|
|
@ -0,0 +1,150 @@
|
|||
<?xml version='1.0' encoding='UTF-8'?>
|
||||
<Invoice xmlns:cbc="urn:oasis:names:specification:ubl:schema:xsd:CommonBasicComponents-2"
|
||||
xmlns:cac="urn:oasis:names:specification:ubl:schema:xsd:CommonAggregateComponents-2"
|
||||
xmlns="urn:oasis:names:specification:ubl:schema:xsd:Invoice-2">
|
||||
<cbc:CustomizationID>urn:cen.eu:en16931:2017#compliant#urn:fdc:peppol.eu:2017:poacc:billing:3.0
|
||||
</cbc:CustomizationID>
|
||||
<cbc:ProfileID>urn:fdc:peppol.eu:2017:poacc:billing:01:1.0</cbc:ProfileID>
|
||||
<cbc:ID>___ignore___</cbc:ID>
|
||||
<cbc:IssueDate>2017-01-01</cbc:IssueDate>
|
||||
<cbc:DueDate>2017-01-01</cbc:DueDate>
|
||||
<cbc:InvoiceTypeCode>380</cbc:InvoiceTypeCode>
|
||||
<cbc:DocumentCurrencyCode>USD</cbc:DocumentCurrencyCode>
|
||||
<cac:OrderReference>
|
||||
<cbc:ID>___ignore___</cbc:ID>
|
||||
</cac:OrderReference>
|
||||
<cac:AdditionalDocumentReference>
|
||||
<cbc:ID>___ignore___</cbc:ID>
|
||||
<cac:Attachment>
|
||||
<cbc:EmbeddedDocumentBinaryObject mimeCode="___ignore___" filename="___ignore___">
|
||||
___ignore___
|
||||
</cbc:EmbeddedDocumentBinaryObject>
|
||||
</cac:Attachment>
|
||||
</cac:AdditionalDocumentReference>
|
||||
<cac:AccountingSupplierParty>
|
||||
<cac:Party>
|
||||
<cbc:EndpointID schemeID="0208">0202239951</cbc:EndpointID>
|
||||
<cac:PartyName>
|
||||
<cbc:Name>company_1_data</cbc:Name>
|
||||
</cac:PartyName>
|
||||
<cac:PostalAddress>
|
||||
<cbc:StreetName>Chaussée de Namur 40</cbc:StreetName>
|
||||
<cbc:CityName>Ramillies</cbc:CityName>
|
||||
<cbc:PostalZone>1367</cbc:PostalZone>
|
||||
<cac:Country>
|
||||
<cbc:IdentificationCode>BE</cbc:IdentificationCode>
|
||||
</cac:Country>
|
||||
</cac:PostalAddress>
|
||||
<cac:PartyTaxScheme>
|
||||
<cbc:CompanyID>BE0202239951</cbc:CompanyID>
|
||||
<cac:TaxScheme>
|
||||
<cbc:ID>VAT</cbc:ID>
|
||||
</cac:TaxScheme>
|
||||
</cac:PartyTaxScheme>
|
||||
<cac:PartyLegalEntity>
|
||||
<cbc:RegistrationName>company_1_data</cbc:RegistrationName>
|
||||
<cbc:CompanyID>BE0202239951</cbc:CompanyID>
|
||||
</cac:PartyLegalEntity>
|
||||
<cac:Contact>
|
||||
<cbc:Name>company_1_data</cbc:Name>
|
||||
</cac:Contact>
|
||||
</cac:Party>
|
||||
</cac:AccountingSupplierParty>
|
||||
<cac:AccountingCustomerParty>
|
||||
<cac:Party>
|
||||
<cbc:EndpointID schemeID="0208">0477472701</cbc:EndpointID>
|
||||
<cac:PartyName>
|
||||
<cbc:Name>partner_a</cbc:Name>
|
||||
</cac:PartyName>
|
||||
<cac:PostalAddress>
|
||||
<cbc:StreetName>Rue des Bourlottes 9</cbc:StreetName>
|
||||
<cbc:CityName>Ramillies</cbc:CityName>
|
||||
<cbc:PostalZone>1367</cbc:PostalZone>
|
||||
<cac:Country>
|
||||
<cbc:IdentificationCode>BE</cbc:IdentificationCode>
|
||||
</cac:Country>
|
||||
</cac:PostalAddress>
|
||||
<cac:PartyTaxScheme>
|
||||
<cbc:CompanyID>BE0477472701</cbc:CompanyID>
|
||||
<cac:TaxScheme>
|
||||
<cbc:ID>VAT</cbc:ID>
|
||||
</cac:TaxScheme>
|
||||
</cac:PartyTaxScheme>
|
||||
<cac:PartyLegalEntity>
|
||||
<cbc:RegistrationName>partner_a</cbc:RegistrationName>
|
||||
<cbc:CompanyID>BE0477472701</cbc:CompanyID>
|
||||
</cac:PartyLegalEntity>
|
||||
<cac:Contact>
|
||||
<cbc:Name>partner_a</cbc:Name>
|
||||
</cac:Contact>
|
||||
</cac:Party>
|
||||
</cac:AccountingCustomerParty>
|
||||
<cac:Delivery>
|
||||
<cac:DeliveryLocation>
|
||||
<cac:Address>
|
||||
<cbc:StreetName>Rue des Bourlottes 9</cbc:StreetName>
|
||||
<cbc:CityName>Ramillies</cbc:CityName>
|
||||
<cbc:PostalZone>1367</cbc:PostalZone>
|
||||
<cac:Country>
|
||||
<cbc:IdentificationCode>BE</cbc:IdentificationCode>
|
||||
</cac:Country>
|
||||
</cac:Address>
|
||||
</cac:DeliveryLocation>
|
||||
<cac:DeliveryParty>
|
||||
<cac:PartyName>
|
||||
<cbc:Name>partner_a</cbc:Name>
|
||||
</cac:PartyName>
|
||||
</cac:DeliveryParty>
|
||||
</cac:Delivery>
|
||||
<cac:PaymentMeans>
|
||||
<cbc:PaymentMeansCode name="credit transfer">30</cbc:PaymentMeansCode>
|
||||
<cbc:PaymentID>___ignore___</cbc:PaymentID>
|
||||
<cac:PayeeFinancialAccount>
|
||||
<cbc:ID>BE15001559627230</cbc:ID>
|
||||
</cac:PayeeFinancialAccount>
|
||||
</cac:PaymentMeans>
|
||||
<cac:PaymentTerms>
|
||||
<cbc:Note>Payment terms: Immediate Payment</cbc:Note>
|
||||
</cac:PaymentTerms>
|
||||
<cac:TaxTotal>
|
||||
<cbc:TaxAmount currencyID="USD">14.70</cbc:TaxAmount>
|
||||
<cac:TaxSubtotal>
|
||||
<cbc:TaxableAmount currencyID="USD">70.00</cbc:TaxableAmount>
|
||||
<cbc:TaxAmount currencyID="USD">14.70</cbc:TaxAmount>
|
||||
<cac:TaxCategory>
|
||||
<cbc:ID>S</cbc:ID>
|
||||
<cbc:Percent>21.0</cbc:Percent>
|
||||
<cac:TaxScheme>
|
||||
<cbc:ID>VAT</cbc:ID>
|
||||
</cac:TaxScheme>
|
||||
</cac:TaxCategory>
|
||||
</cac:TaxSubtotal>
|
||||
</cac:TaxTotal>
|
||||
<cac:LegalMonetaryTotal>
|
||||
<cbc:LineExtensionAmount currencyID="USD">70.00</cbc:LineExtensionAmount>
|
||||
<cbc:TaxExclusiveAmount currencyID="USD">70.00</cbc:TaxExclusiveAmount>
|
||||
<cbc:TaxInclusiveAmount currencyID="USD">84.70</cbc:TaxInclusiveAmount>
|
||||
<cbc:PrepaidAmount currencyID="USD">0.00</cbc:PrepaidAmount>
|
||||
<cbc:PayableRoundingAmount currencyID="USD">0.30</cbc:PayableRoundingAmount>
|
||||
<cbc:PayableAmount currencyID="USD">85.00</cbc:PayableAmount>
|
||||
</cac:LegalMonetaryTotal>
|
||||
<cac:InvoiceLine>
|
||||
<cbc:ID>___ignore___</cbc:ID>
|
||||
<cbc:InvoicedQuantity unitCode="C62">1.0</cbc:InvoicedQuantity>
|
||||
<cbc:LineExtensionAmount currencyID="USD">70.00</cbc:LineExtensionAmount>
|
||||
<cac:Item>
|
||||
<cbc:Description>product_a</cbc:Description>
|
||||
<cbc:Name>product_a</cbc:Name>
|
||||
<cac:ClassifiedTaxCategory>
|
||||
<cbc:ID>S</cbc:ID>
|
||||
<cbc:Percent>21.0</cbc:Percent>
|
||||
<cac:TaxScheme>
|
||||
<cbc:ID>VAT</cbc:ID>
|
||||
</cac:TaxScheme>
|
||||
</cac:ClassifiedTaxCategory>
|
||||
</cac:Item>
|
||||
<cac:Price>
|
||||
<cbc:PriceAmount currencyID="USD">70.0</cbc:PriceAmount>
|
||||
</cac:Price>
|
||||
</cac:InvoiceLine>
|
||||
</Invoice>
|
||||
|
|
@ -0,0 +1,149 @@
|
|||
<?xml version='1.0' encoding='UTF-8'?>
|
||||
<Invoice xmlns:cbc="urn:oasis:names:specification:ubl:schema:xsd:CommonBasicComponents-2"
|
||||
xmlns:cac="urn:oasis:names:specification:ubl:schema:xsd:CommonAggregateComponents-2"
|
||||
xmlns="urn:oasis:names:specification:ubl:schema:xsd:Invoice-2">
|
||||
<cbc:CustomizationID>urn:cen.eu:en16931:2017#compliant#urn:fdc:peppol.eu:2017:poacc:billing:3.0
|
||||
</cbc:CustomizationID>
|
||||
<cbc:ProfileID>urn:fdc:peppol.eu:2017:poacc:billing:01:1.0</cbc:ProfileID>
|
||||
<cbc:ID>___ignore___</cbc:ID>
|
||||
<cbc:IssueDate>2017-01-01</cbc:IssueDate>
|
||||
<cbc:DueDate>2017-01-01</cbc:DueDate>
|
||||
<cbc:InvoiceTypeCode>380</cbc:InvoiceTypeCode>
|
||||
<cbc:DocumentCurrencyCode>USD</cbc:DocumentCurrencyCode>
|
||||
<cac:OrderReference>
|
||||
<cbc:ID>___ignore___</cbc:ID>
|
||||
</cac:OrderReference>
|
||||
<cac:AdditionalDocumentReference>
|
||||
<cbc:ID>___ignore___</cbc:ID>
|
||||
<cac:Attachment>
|
||||
<cbc:EmbeddedDocumentBinaryObject mimeCode="___ignore___" filename="___ignore___">
|
||||
___ignore___
|
||||
</cbc:EmbeddedDocumentBinaryObject>
|
||||
</cac:Attachment>
|
||||
</cac:AdditionalDocumentReference>
|
||||
<cac:AccountingSupplierParty>
|
||||
<cac:Party>
|
||||
<cbc:EndpointID schemeID="0208">0202239951</cbc:EndpointID>
|
||||
<cac:PartyName>
|
||||
<cbc:Name>company_1_data</cbc:Name>
|
||||
</cac:PartyName>
|
||||
<cac:PostalAddress>
|
||||
<cbc:StreetName>Chaussée de Namur 40</cbc:StreetName>
|
||||
<cbc:CityName>Ramillies</cbc:CityName>
|
||||
<cbc:PostalZone>1367</cbc:PostalZone>
|
||||
<cac:Country>
|
||||
<cbc:IdentificationCode>BE</cbc:IdentificationCode>
|
||||
</cac:Country>
|
||||
</cac:PostalAddress>
|
||||
<cac:PartyTaxScheme>
|
||||
<cbc:CompanyID>BE0202239951</cbc:CompanyID>
|
||||
<cac:TaxScheme>
|
||||
<cbc:ID>VAT</cbc:ID>
|
||||
</cac:TaxScheme>
|
||||
</cac:PartyTaxScheme>
|
||||
<cac:PartyLegalEntity>
|
||||
<cbc:RegistrationName>company_1_data</cbc:RegistrationName>
|
||||
<cbc:CompanyID>BE0202239951</cbc:CompanyID>
|
||||
</cac:PartyLegalEntity>
|
||||
<cac:Contact>
|
||||
<cbc:Name>company_1_data</cbc:Name>
|
||||
</cac:Contact>
|
||||
</cac:Party>
|
||||
</cac:AccountingSupplierParty>
|
||||
<cac:AccountingCustomerParty>
|
||||
<cac:Party>
|
||||
<cbc:EndpointID schemeID="0208">0477472701</cbc:EndpointID>
|
||||
<cac:PartyName>
|
||||
<cbc:Name>partner_a</cbc:Name>
|
||||
</cac:PartyName>
|
||||
<cac:PostalAddress>
|
||||
<cbc:StreetName>Rue des Bourlottes 9</cbc:StreetName>
|
||||
<cbc:CityName>Ramillies</cbc:CityName>
|
||||
<cbc:PostalZone>1367</cbc:PostalZone>
|
||||
<cac:Country>
|
||||
<cbc:IdentificationCode>BE</cbc:IdentificationCode>
|
||||
</cac:Country>
|
||||
</cac:PostalAddress>
|
||||
<cac:PartyTaxScheme>
|
||||
<cbc:CompanyID>BE0477472701</cbc:CompanyID>
|
||||
<cac:TaxScheme>
|
||||
<cbc:ID>VAT</cbc:ID>
|
||||
</cac:TaxScheme>
|
||||
</cac:PartyTaxScheme>
|
||||
<cac:PartyLegalEntity>
|
||||
<cbc:RegistrationName>partner_a</cbc:RegistrationName>
|
||||
<cbc:CompanyID>BE0477472701</cbc:CompanyID>
|
||||
</cac:PartyLegalEntity>
|
||||
<cac:Contact>
|
||||
<cbc:Name>partner_a</cbc:Name>
|
||||
</cac:Contact>
|
||||
</cac:Party>
|
||||
</cac:AccountingCustomerParty>
|
||||
<cac:Delivery>
|
||||
<cac:DeliveryLocation>
|
||||
<cac:Address>
|
||||
<cbc:StreetName>Rue des Bourlottes 9</cbc:StreetName>
|
||||
<cbc:CityName>Ramillies</cbc:CityName>
|
||||
<cbc:PostalZone>1367</cbc:PostalZone>
|
||||
<cac:Country>
|
||||
<cbc:IdentificationCode>BE</cbc:IdentificationCode>
|
||||
</cac:Country>
|
||||
</cac:Address>
|
||||
</cac:DeliveryLocation>
|
||||
<cac:DeliveryParty>
|
||||
<cac:PartyName>
|
||||
<cbc:Name>partner_a</cbc:Name>
|
||||
</cac:PartyName>
|
||||
</cac:DeliveryParty>
|
||||
</cac:Delivery>
|
||||
<cac:PaymentMeans>
|
||||
<cbc:PaymentMeansCode name="credit transfer">30</cbc:PaymentMeansCode>
|
||||
<cbc:PaymentID>___ignore___</cbc:PaymentID>
|
||||
<cac:PayeeFinancialAccount>
|
||||
<cbc:ID>BE15001559627230</cbc:ID>
|
||||
</cac:PayeeFinancialAccount>
|
||||
</cac:PaymentMeans>
|
||||
<cac:PaymentTerms>
|
||||
<cbc:Note>Payment terms: Immediate Payment</cbc:Note>
|
||||
</cac:PaymentTerms>
|
||||
<cac:TaxTotal>
|
||||
<cbc:TaxAmount currencyID="USD">15.00</cbc:TaxAmount>
|
||||
<cac:TaxSubtotal>
|
||||
<cbc:TaxableAmount currencyID="USD">70.00</cbc:TaxableAmount>
|
||||
<cbc:TaxAmount currencyID="USD">15.00</cbc:TaxAmount>
|
||||
<cac:TaxCategory>
|
||||
<cbc:ID>S</cbc:ID>
|
||||
<cbc:Percent>21.0</cbc:Percent>
|
||||
<cac:TaxScheme>
|
||||
<cbc:ID>VAT</cbc:ID>
|
||||
</cac:TaxScheme>
|
||||
</cac:TaxCategory>
|
||||
</cac:TaxSubtotal>
|
||||
</cac:TaxTotal>
|
||||
<cac:LegalMonetaryTotal>
|
||||
<cbc:LineExtensionAmount currencyID="USD">70.00</cbc:LineExtensionAmount>
|
||||
<cbc:TaxExclusiveAmount currencyID="USD">70.00</cbc:TaxExclusiveAmount>
|
||||
<cbc:TaxInclusiveAmount currencyID="USD">85.00</cbc:TaxInclusiveAmount>
|
||||
<cbc:PrepaidAmount currencyID="USD">0.00</cbc:PrepaidAmount>
|
||||
<cbc:PayableAmount currencyID="USD">85.00</cbc:PayableAmount>
|
||||
</cac:LegalMonetaryTotal>
|
||||
<cac:InvoiceLine>
|
||||
<cbc:ID>___ignore___</cbc:ID>
|
||||
<cbc:InvoicedQuantity unitCode="C62">1.0</cbc:InvoicedQuantity>
|
||||
<cbc:LineExtensionAmount currencyID="USD">70.00</cbc:LineExtensionAmount>
|
||||
<cac:Item>
|
||||
<cbc:Description>product_a</cbc:Description>
|
||||
<cbc:Name>product_a</cbc:Name>
|
||||
<cac:ClassifiedTaxCategory>
|
||||
<cbc:ID>S</cbc:ID>
|
||||
<cbc:Percent>21.0</cbc:Percent>
|
||||
<cac:TaxScheme>
|
||||
<cbc:ID>VAT</cbc:ID>
|
||||
</cac:TaxScheme>
|
||||
</cac:ClassifiedTaxCategory>
|
||||
</cac:Item>
|
||||
<cac:Price>
|
||||
<cbc:PriceAmount currencyID="USD">70.0</cbc:PriceAmount>
|
||||
</cac:Price>
|
||||
</cac:InvoiceLine>
|
||||
</Invoice>
|
||||
Some files were not shown because too many files have changed in this diff Show more
Loading…
Add table
Add a link
Reference in a new issue