summaryrefslogtreecommitdiff
path: root/addons/account_edi_facturx/data
diff options
context:
space:
mode:
authorstephanchrst <stephanchrst@gmail.com>2022-05-10 21:51:50 +0700
committerstephanchrst <stephanchrst@gmail.com>2022-05-10 21:51:50 +0700
commit3751379f1e9a4c215fb6eb898b4ccc67659b9ace (patch)
treea44932296ef4a9b71d5f010906253d8c53727726 /addons/account_edi_facturx/data
parent0a15094050bfde69a06d6eff798e9a8ddf2b8c21 (diff)
initial commit 2
Diffstat (limited to 'addons/account_edi_facturx/data')
-rw-r--r--addons/account_edi_facturx/data/account_edi_data.xml11
-rw-r--r--addons/account_edi_facturx/data/facturx_templates.xml235
-rw-r--r--addons/account_edi_facturx/data/files/Invoice.pdfbin0 -> 197033 bytes
3 files changed, 246 insertions, 0 deletions
diff --git a/addons/account_edi_facturx/data/account_edi_data.xml b/addons/account_edi_facturx/data/account_edi_data.xml
new file mode 100644
index 00000000..d581c468
--- /dev/null
+++ b/addons/account_edi_facturx/data/account_edi_data.xml
@@ -0,0 +1,11 @@
+<?xml version="1.0" encoding="utf-8"?>
+<odoo>
+ <data>
+
+ <record id="edi_facturx_1_0_05" model="account.edi.format">
+ <field name="name">Factur-X (FR)</field>
+ <field name="code">facturx_1_0_05</field>
+ </record>
+
+ </data>
+</odoo> \ No newline at end of file
diff --git a/addons/account_edi_facturx/data/facturx_templates.xml b/addons/account_edi_facturx/data/facturx_templates.xml
new file mode 100644
index 00000000..c68389b1
--- /dev/null
+++ b/addons/account_edi_facturx/data/facturx_templates.xml
@@ -0,0 +1,235 @@
+<?xml version="1.0" encoding="utf-8"?>
+<odoo>
+ <data>
+ <template id="account_invoice_line_facturx_export">
+ <t t-set="line" t-value="line_values['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">
+ <ram:IncludedSupplyChainTradeLineItem>
+ <!-- Line number. -->
+ <ram:AssociatedDocumentLineDocument>
+ <ram:LineID t-esc="line_values['index']"/>
+ </ram:AssociatedDocumentLineDocument>
+
+ <!-- Product. -->
+ <ram:SpecifiedTradeProduct>
+ <ram:GlobalID
+ schemeID="0160"
+ t-if="line.product_id and line.product_id.barcode"
+ t-esc="line.product_id.barcode"/>
+ <ram:SellerAssignedID
+ t-if="line.product_id and line.product_id.default_code"
+ t-esc="line.product_id.default_code"/>
+ <ram:Name t-esc="line.name"/>
+ </ram:SpecifiedTradeProduct>
+
+ <!-- Amounts. -->
+ <ram:SpecifiedLineTradeAgreement>
+ <ram:GrossPriceProductTradePrice>
+ <ram:ChargeAmount
+ t-att-currencyID="currency.name"
+ t-esc="format_monetary(line.price_unit, currency)"/>
+
+ <!-- Discount. -->
+ <ram:AppliedTradeAllowanceCharge t-if="line.discount">
+ <ram:ChargeIndicator>
+ <udt:Indicator t-esc="'false' if line.discount == 100 else 'true'"/>
+ </ram:ChargeIndicator>
+ <ram:CalculationPercent t-esc="line.discount"/>
+ </ram:AppliedTradeAllowanceCharge>
+ </ram:GrossPriceProductTradePrice>
+ </ram:SpecifiedLineTradeAgreement>
+
+ <!-- Quantity. -->
+ <ram:SpecifiedLineTradeDelivery>
+ <ram:BilledQuantity
+ t-esc="line.quantity"/>
+ </ram:SpecifiedLineTradeDelivery>
+
+ <ram:SpecifiedLineTradeSettlement>
+ <t t-foreach="line_values['tax_details']" t-as="tax_vals">
+ <t t-set="tax" t-value="tax_vals['tax']"/>
+ <ram:ApplicableTradeTax t-if="tax.amount_type == 'percent'">
+ <ram:RateApplicablePercent t-esc="tax.amount"/>
+ </ram:ApplicableTradeTax>
+ </t>
+ <!-- Subtotal. -->
+ <ram:SpecifiedTradeSettlementLineMonetarySummation>
+ <ram:LineTotalAmount
+ t-att-currencyID="currency.name"
+ t-esc="format_monetary(line.price_subtotal, currency)"/>
+ </ram:SpecifiedTradeSettlementLineMonetarySummation>
+ </ram:SpecifiedLineTradeSettlement>
+
+ </ram:IncludedSupplyChainTradeLineItem>
+ </t>
+ </template>
+
+ <template id="account_invoice_partner_facturx_export">
+ <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">
+ <!-- Contact. -->
+ <ram:Name t-if="partner.name" t-esc="partner.name"/>
+ <ram:DefinedTradeContact>
+ <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:TelephoneUniversalCommunication>
+ <ram:EmailURIUniversalCommunication t-if="partner.email">
+ <ram:URIID schemeID='SMTP' t-esc="partner.email"/>
+ </ram:EmailURIUniversalCommunication>
+ </ram:DefinedTradeContact>
+
+ <!-- Address. -->
+ <ram:PostalTradeAddress>
+ <ram:PostcodeCode t-if="partner.zip" t-esc="partner.zip"/>
+ <ram:LineOne t-if="partner.street" t-esc="partner.street"/>
+ <ram:LineTwo t-if="partner.street2" t-esc="partner.street2"/>
+ <ram:CityName t-if="partner.city" t-esc="partner.city"/>
+ <ram:CountryID t-if="partner.country_id" t-esc="partner.country_id.code"/>
+ </ram:PostalTradeAddress>
+ </t>
+ </template>
+
+ <template id="account_invoice_facturx_export">
+ <t t-set="currency" t-value="record.currency_id or record.company_currency_id"/>
+ <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">
+ <!-- Factur-x level:
+ * minimum or basicwl: urn:factur-x.eu:1p0...
+ * basic: urn:cen.eu:en16931:2017:compliant:factur-x.eu:1p0:basic
+ * en16931: urn:cen.eu:en16931:2017
+ -->
+ <rsm:ExchangedDocumentContext>
+ <ram:GuidelineSpecifiedDocumentContextParameter>
+ <ram:ID>urn:cen.eu:en16931:2017</ram:ID>
+ </ram:GuidelineSpecifiedDocumentContextParameter>
+ </rsm:ExchangedDocumentContext>
+
+ <!-- Document Headers. -->
+ <rsm:ExchangedDocument>
+ <ram:ID t-esc="record.name"/>
+ <ram:TypeCode t-esc="'381' if 'refund' in record.move_type else '380'"/>
+ <ram:IssueDateTime>
+ <udt:DateTimeString format="102" t-esc="format_date(record.invoice_date)"/>
+ </ram:IssueDateTime>
+ <ram:IncludedNote t-if="record.narration">
+ <ram:Content t-esc="record.narration"/>
+ </ram:IncludedNote>
+ </rsm:ExchangedDocument>
+
+ <rsm:SupplyChainTradeTransaction>
+ <!-- Invoice lines. -->
+ <t t-foreach="invoice_line_values" t-as="line_values">
+ <t t-call="account_edi_facturx.account_invoice_line_facturx_export"/>
+ </t>
+
+ <!-- Partners. -->
+ <ram:ApplicableHeaderTradeAgreement>
+ <!-- Seller. -->
+ <ram:SellerTradeParty>
+ <!-- Address. -->
+ <t t-call="account_edi_facturx.account_invoice_partner_facturx_export">
+ <t t-set="partner" t-value="record.company_id.partner_id"/>
+ </t>
+
+ <!-- VAT. -->
+ <ram:SpecifiedTaxRegistration t-if="record.company_id.vat">
+ <ram:ID schemeID="VA" t-esc="record.company_id.vat"/>
+ </ram:SpecifiedTaxRegistration>
+ </ram:SellerTradeParty>
+
+ <!-- Customer. -->
+ <ram:BuyerTradeParty>
+ <!-- Address. -->
+ <t t-call="account_edi_facturx.account_invoice_partner_facturx_export">
+ <t t-set="partner" t-value="record.commercial_partner_id"/>
+ </t>
+
+ <!-- VAT. -->
+ <ram:SpecifiedTaxRegistration t-if="record.commercial_partner_id.vat">
+ <ram:ID schemeID="VA" t-esc="record.commercial_partner_id.vat"/>
+ </ram:SpecifiedTaxRegistration>
+ </ram:BuyerTradeParty>
+
+ <!-- Reference. -->
+ <ram:BuyerOrderReferencedDocument>
+ <ram:IssuerAssignedID t-esc="'%s: %s' % (record.name, record.payment_reference) if record.payment_reference else record.name"/>
+ </ram:BuyerOrderReferencedDocument>
+ </ram:ApplicableHeaderTradeAgreement>
+
+ <!-- Delivery. Don't make a dependency with sale only for one field. -->
+ <ram:ApplicableHeaderTradeDelivery>
+ <ram:ShipToTradeParty
+ t-if="'partner_shipping_id' in record._fields and record.partner_shipping_id">
+ <t t-call="account_edi_facturx.account_invoice_partner_facturx_export">
+ <t t-set="partner" t-value="record.partner_shipping_id"/>
+ </t>
+ </ram:ShipToTradeParty>
+ </ram:ApplicableHeaderTradeDelivery>
+
+ <!-- Taxes. -->
+ <ram:ApplicableHeaderTradeSettlement>
+
+ <!-- Bank account. -->
+ <ram:SpecifiedTradeSettlementPaymentMeans t-if="record.partner_bank_id.acc_type == 'iban'">
+ <ram:PayeePartyCreditorFinancialAccount>
+ <ram:IBANID t-esc="record.partner_bank_id.sanitized_acc_number"/>
+ </ram:PayeePartyCreditorFinancialAccount>
+ </ram:SpecifiedTradeSettlementPaymentMeans>
+
+ <!-- Tax Summary. -->
+ <t t-foreach="tax_details" t-as="tax_vals">
+ <t t-set="tax_line" t-value="tax_vals['line']"/>
+ <ram:ApplicableTradeTax>
+ <ram:CalculatedAmount
+ t-att-currencyID="currency.name"
+ t-esc="format_monetary(tax_vals['tax_amount'], currency)"/>
+ <ram:BasisAmount
+ t-att-currencyID="currency.name"
+ t-esc="format_monetary(tax_vals['tax_base_amount'], currency)"/>
+ <ram:RateApplicablePercent
+ t-if="tax_line.tax_line_id.amount_type == 'percent'"
+ t-esc="tax_line.tax_line_id.amount"/>
+ </ram:ApplicableTradeTax>
+ </t>
+
+ <!-- Payment Term. -->
+ <ram:SpecifiedTradePaymentTerms>
+ <ram:Description t-if="record.invoice_payment_term_id" t-esc="record.invoice_payment_term_id.name"/>
+ <ram:DueDateDateTime t-if="record.invoice_date_due">
+ <udt:DateTimeString t-esc="format_date(record.invoice_date_due)"/>
+ </ram:DueDateDateTime>
+ </ram:SpecifiedTradePaymentTerms>
+
+ <!-- Summary. -->
+ <ram:SpecifiedTradeSettlementHeaderMonetarySummation>
+ <ram:LineTotalAmount
+ t-att-currencyID="currency.name"
+ t-esc="format_monetary(record.amount_untaxed, currency)"/>
+ <ram:TaxBasisTotalAmount
+ t-att-currencyID="currency.name"
+ t-esc="format_monetary(record.amount_untaxed, currency)"/>
+ <ram:TaxTotalAmount
+ t-att-currencyID="currency.name"
+ t-esc="format_monetary(record.amount_tax, currency)"/>
+ <ram:GrandTotalAmount
+ t-att-currencyID="currency.name"
+ t-esc="format_monetary(record.amount_total, currency)"/>
+ <ram:TotalPrepaidAmount
+ t-att-currencyID="currency.name"
+ t-esc="format_monetary(record.amount_total - record.amount_residual, currency)"/>
+ <ram:DuePayableAmount
+ t-att-currencyID="currency.name"
+ t-esc="format_monetary(record.amount_residual, currency)"/>
+ </ram:SpecifiedTradeSettlementHeaderMonetarySummation>
+ </ram:ApplicableHeaderTradeSettlement>
+ </rsm:SupplyChainTradeTransaction>
+ </rsm:CrossIndustryInvoice>
+ </template>
+ </data>
+</odoo>
diff --git a/addons/account_edi_facturx/data/files/Invoice.pdf b/addons/account_edi_facturx/data/files/Invoice.pdf
new file mode 100644
index 00000000..c86d80fb
--- /dev/null
+++ b/addons/account_edi_facturx/data/files/Invoice.pdf
Binary files differ