diff options
| author | stephanchrst <stephanchrst@gmail.com> | 2022-05-10 21:51:50 +0700 |
|---|---|---|
| committer | stephanchrst <stephanchrst@gmail.com> | 2022-05-10 21:51:50 +0700 |
| commit | 3751379f1e9a4c215fb6eb898b4ccc67659b9ace (patch) | |
| tree | a44932296ef4a9b71d5f010906253d8c53727726 /addons/account_edi_facturx/data | |
| parent | 0a15094050bfde69a06d6eff798e9a8ddf2b8c21 (diff) | |
initial commit 2
Diffstat (limited to 'addons/account_edi_facturx/data')
| -rw-r--r-- | addons/account_edi_facturx/data/account_edi_data.xml | 11 | ||||
| -rw-r--r-- | addons/account_edi_facturx/data/facturx_templates.xml | 235 | ||||
| -rw-r--r-- | addons/account_edi_facturx/data/files/Invoice.pdf | bin | 0 -> 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 Binary files differnew file mode 100644 index 00000000..c86d80fb --- /dev/null +++ b/addons/account_edi_facturx/data/files/Invoice.pdf |
