summaryrefslogtreecommitdiff
path: root/addons/l10n_generic_coa
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/l10n_generic_coa
parent0a15094050bfde69a06d6eff798e9a8ddf2b8c21 (diff)
initial commit 2
Diffstat (limited to 'addons/l10n_generic_coa')
-rw-r--r--addons/l10n_generic_coa/__init__.py8
-rw-r--r--addons/l10n_generic_coa/__manifest__.py29
-rw-r--r--addons/l10n_generic_coa/data/account.account.template.csv35
-rw-r--r--addons/l10n_generic_coa/data/l10n_generic_coa.xml12
-rw-r--r--addons/l10n_generic_coa/data/l10n_generic_coa_post.xml103
-rw-r--r--addons/l10n_generic_coa/demo/account_bank_statement_demo.xml129
-rw-r--r--addons/l10n_generic_coa/demo/account_invoice_demo.xml208
-rw-r--r--addons/l10n_generic_coa/demo/account_reconcile_model.xml34
-rw-r--r--addons/l10n_generic_coa/static/src/demo/bank_statement_yourcompany_1.pdfbin0 -> 23482 bytes
-rw-r--r--addons/l10n_generic_coa/static/src/demo/in_invoice_yourcompany_demo_1.pdfbin0 -> 19969 bytes
-rw-r--r--addons/l10n_generic_coa/static/src/demo/in_invoice_yourcompany_demo_2.pdfbin0 -> 47172 bytes
11 files changed, 558 insertions, 0 deletions
diff --git a/addons/l10n_generic_coa/__init__.py b/addons/l10n_generic_coa/__init__.py
new file mode 100644
index 00000000..d417dc68
--- /dev/null
+++ b/addons/l10n_generic_coa/__init__.py
@@ -0,0 +1,8 @@
+# -*- coding: utf-8 -*-
+# Part of Odoo. See LICENSE file for full copyright and licensing details.
+
+
+def uninstall_hook(cr, registry):
+ cr.execute(
+ "DELETE FROM ir_model_data WHERE module = 'l10n_generic_coa'"
+ )
diff --git a/addons/l10n_generic_coa/__manifest__.py b/addons/l10n_generic_coa/__manifest__.py
new file mode 100644
index 00000000..0d62b68e
--- /dev/null
+++ b/addons/l10n_generic_coa/__manifest__.py
@@ -0,0 +1,29 @@
+# -*- coding: utf-8 -*-
+# Part of Odoo. See LICENSE file for full copyright and licensing details.
+
+{
+ 'name': 'Generic - Accounting',
+ 'version': '1.1',
+ 'category': 'Accounting/Localizations/Account Charts',
+ 'description': """
+This is the base module to manage the generic accounting chart in Odoo.
+==============================================================================
+
+Install some generic chart of accounts.
+ """,
+ 'depends': [
+ 'account',
+ ],
+ 'data': [
+ 'data/l10n_generic_coa.xml',
+ 'data/account.account.template.csv',
+ 'data/l10n_generic_coa_post.xml',
+ ],
+ 'demo': [
+ 'demo/account_bank_statement_demo.xml',
+ 'demo/account_invoice_demo.xml',
+ 'demo/account_reconcile_model.xml',
+ ],
+ 'uninstall_hook': 'uninstall_hook',
+ 'license': 'LGPL-3',
+}
diff --git a/addons/l10n_generic_coa/data/account.account.template.csv b/addons/l10n_generic_coa/data/account.account.template.csv
new file mode 100644
index 00000000..9030e5bb
--- /dev/null
+++ b/addons/l10n_generic_coa/data/account.account.template.csv
@@ -0,0 +1,35 @@
+"id","name","code","user_type_id/id","chart_template_id/id","tag_ids/id","reconcile"
+"current_assets","Current Assets","1010","account.data_account_type_current_assets","l10n_generic_coa.configurable_chart_template","","False"
+"stock_valuation","Stock Valuation","1101","account.data_account_type_current_assets","l10n_generic_coa.configurable_chart_template","","False"
+"stock_in","Stock Interim (Received)","1102","account.data_account_type_current_assets","l10n_generic_coa.configurable_chart_template","","True"
+"stock_out","Stock Interim (Delivered)","1103","account.data_account_type_current_assets","l10n_generic_coa.configurable_chart_template","","True"
+"receivable","Account Receivable","1210","account.data_account_type_receivable","l10n_generic_coa.configurable_chart_template","","True"
+"to_receive_rec","Products to receive","1211","account.data_account_type_current_assets","l10n_generic_coa.configurable_chart_template","","True"
+"tax_paid","Tax Paid","1310","account.data_account_type_current_assets","l10n_generic_coa.configurable_chart_template","","False"
+"tax_receivable","Tax Receivable","1320","account.data_account_type_current_assets","l10n_generic_coa.configurable_chart_template","","False"
+"prepayments","Prepayments","1410","account.data_account_type_prepayments","l10n_generic_coa.configurable_chart_template","","False"
+"fixed_assets","Fixed Asset","1510","account.data_account_type_fixed_assets","l10n_generic_coa.configurable_chart_template","","False"
+"non_current_assets","Non-current assets","1910","account.data_account_type_non_current_assets","l10n_generic_coa.configurable_chart_template","","False"
+"current_liabilities","Current Liabilities","2010","account.data_account_type_current_liabilities","l10n_generic_coa.configurable_chart_template","","False"
+"payable","Account Payable","2110","account.data_account_type_payable","l10n_generic_coa.configurable_chart_template","","True"
+"to_receive_pay","Bills to receive","2111","account.data_account_type_current_liabilities","l10n_generic_coa.configurable_chart_template","","True"
+"tax_received","Tax Received","2510","account.data_account_type_current_liabilities","l10n_generic_coa.configurable_chart_template","","False"
+"tax_payable","Tax Payable","2520","account.data_account_type_current_liabilities","l10n_generic_coa.configurable_chart_template","","False"
+"non_current_liabilities","Non-current Liabilities","2910","account.data_account_type_non_current_liabilities","l10n_generic_coa.configurable_chart_template","","False"
+"capital","Capital","3010","account.data_account_type_equity","l10n_generic_coa.configurable_chart_template","","False"
+"dividends","Dividends","3020","account.data_account_type_equity","l10n_generic_coa.configurable_chart_template","","False"
+"income","Product Sales","4000","account.data_account_type_revenue","l10n_generic_coa.configurable_chart_template","account.account_tag_operating","False"
+"income_currency_exchange","Foreign Exchange Gain","4410","account.data_account_type_revenue","l10n_generic_coa.configurable_chart_template","account.account_tag_financing","False"
+"cash_diff_income","Cash Difference Gain","4420","account.data_account_type_revenue","l10n_generic_coa.configurable_chart_template","account.account_tag_investing","False"
+"other_income","Other Income","4500","account.data_account_type_other_income","l10n_generic_coa.configurable_chart_template","","False"
+"cost_of_goods_sold","Cost of Goods Sold","5000","account.data_account_type_direct_costs","l10n_generic_coa.configurable_chart_template","account.account_tag_operating","False"
+"expense","Expenses","6000","account.data_account_type_expenses","l10n_generic_coa.configurable_chart_template","account.account_tag_operating","False"
+"expense_invest","Purchase of Equipments","6110","account.data_account_type_expenses","l10n_generic_coa.configurable_chart_template","account.account_tag_investing","False"
+"expense_rent","Rent","6120","account.data_account_type_expenses","l10n_generic_coa.configurable_chart_template","account.account_tag_investing","False"
+"expense_finance","Bank Fees","6200","account.data_account_type_expenses","l10n_generic_coa.configurable_chart_template","account.account_tag_financing","False"
+"expense_salary","Salary Expenses","6300","account.data_account_type_expenses","l10n_generic_coa.configurable_chart_template","account.account_tag_operating","False"
+"expense_currency_exchange","Foreign Exchange Loss","6410","account.data_account_type_expenses","l10n_generic_coa.configurable_chart_template","account.account_tag_financing","False"
+"cash_diff_expense","Cash Difference Loss","6420","account.data_account_type_expenses","l10n_generic_coa.configurable_chart_template","account.account_tag_investing","False"
+"expense_rd","RD Expenses","9610","account.data_account_type_expenses","l10n_generic_coa.configurable_chart_template","account.account_tag_investing","False"
+"expense_sales","Sales Expenses","9620","account.data_account_type_expenses","l10n_generic_coa.configurable_chart_template","account.account_tag_investing","False"
+"pos_receivable","Account Receivable (PoS)","1013","account.data_account_type_receivable","l10n_generic_coa.configurable_chart_template","","True"
diff --git a/addons/l10n_generic_coa/data/l10n_generic_coa.xml b/addons/l10n_generic_coa/data/l10n_generic_coa.xml
new file mode 100644
index 00000000..b729c78c
--- /dev/null
+++ b/addons/l10n_generic_coa/data/l10n_generic_coa.xml
@@ -0,0 +1,12 @@
+<?xml version="1.0" encoding="utf-8"?>
+<odoo>
+ <!-- Account Tax Group -->
+ <record id="configurable_chart_template" model="account.chart.template">
+ <field name="name">Configurable Account Chart Template</field>
+ <field name="code_digits">6</field>
+ <field name="bank_account_code_prefix">1014</field>
+ <field name="cash_account_code_prefix">1015</field>
+ <field name="transfer_account_code_prefix">1017</field>
+ <field name="currency_id" ref="base.USD"/>
+ </record>
+</odoo>
diff --git a/addons/l10n_generic_coa/data/l10n_generic_coa_post.xml b/addons/l10n_generic_coa/data/l10n_generic_coa_post.xml
new file mode 100644
index 00000000..5ecfaff8
--- /dev/null
+++ b/addons/l10n_generic_coa/data/l10n_generic_coa_post.xml
@@ -0,0 +1,103 @@
+<?xml version="1.0" encoding="utf-8"?>
+<odoo>
+<data noupdate="1">
+ <!-- Tax template for sale and purchase -->
+ <record id="tax_group_15" model="account.tax.group">
+ <field name="name">Tax 15%</field>
+ </record>
+</data>
+<data>
+ <!-- Chart template account links -->
+ <record id="configurable_chart_template" model="account.chart.template">
+ <field name="complete_tax_set" eval="False"/>
+ <field name="use_anglo_saxon" eval="True"/>
+
+ <field name="property_account_receivable_id" ref="receivable"/>
+ <field name="property_account_payable_id" ref="payable"/>
+
+ <field name="property_account_expense_categ_id" ref="expense"/>
+ <field name="property_account_income_categ_id" ref="income"/>
+
+ <field name="property_stock_account_input_categ_id" ref="stock_in"/>
+ <field name="property_stock_account_output_categ_id" ref="stock_out"/>
+ <field name="property_stock_valuation_account_id" ref="stock_valuation"/>
+
+ <field name="income_currency_exchange_account_id" ref="income_currency_exchange"/>
+ <field name="expense_currency_exchange_account_id" ref="expense_currency_exchange"/>
+
+ <field name="default_cash_difference_income_account_id" ref="cash_diff_income"/>
+ <field name="default_cash_difference_expense_account_id" ref="cash_diff_expense"/>
+ <field name="default_pos_receivable_account_id" ref="pos_receivable"/>
+
+ <field name="property_tax_payable_account_id" ref="tax_payable"/>
+ <field name="property_tax_receivable_account_id" ref="tax_receivable"/>
+ </record>
+
+ <record id="sale_tax_template" model="account.tax.template">
+ <field name="chart_template_id" ref="configurable_chart_template"/>
+ <field name="name">Tax 15%</field>
+ <field name="amount">15</field>
+ <field name="type_tax_use">sale</field>
+ <field name="tax_group_id" ref="tax_group_15"/>
+ <field name="invoice_repartition_line_ids" eval="[(5, 0, 0),
+ (0,0, {
+ 'factor_percent': 100,
+ 'repartition_type': 'base',
+ }),
+ (0,0, {
+ 'factor_percent': 100,
+ 'repartition_type': 'tax',
+ 'account_id': ref('tax_received'),
+ }),
+ ]"/>
+ <field name="refund_repartition_line_ids" eval="[(5, 0, 0),
+ (0,0, {
+ 'factor_percent': 100,
+ 'repartition_type': 'base',
+ }),
+ (0,0, {
+ 'factor_percent': 100,
+ 'repartition_type': 'tax',
+ 'account_id': ref('tax_received'),
+ }),
+ ]"/>
+ </record>
+
+ <record id="purchase_tax_template" model="account.tax.template">
+ <field name="chart_template_id" ref="configurable_chart_template"/>
+ <field name="name">Purchase Tax 15%</field>
+ <field name="amount">15</field>
+ <field name="type_tax_use">purchase</field>
+ <field name="tax_group_id" ref="tax_group_15"/>
+ <field name="invoice_repartition_line_ids" eval="[(5, 0, 0),
+ (0,0, {
+ 'factor_percent': 100,
+ 'repartition_type': 'base',
+ }),
+ (0,0, {
+ 'factor_percent': 100,
+ 'repartition_type': 'tax',
+ 'account_id': ref('tax_paid'),
+ }),
+ ]"/>
+ <field name="refund_repartition_line_ids" eval="[(5, 0, 0),
+ (0,0, {
+ 'factor_percent': 100,
+ 'repartition_type': 'base',
+ }),
+ (0,0, {
+ 'factor_percent': 100,
+ 'repartition_type': 'tax',
+ 'account_id': ref('tax_paid'),
+ }),
+ ]"/>
+ </record>
+
+ <!-- Try to instanciate for relevant companies -->
+</data>
+<data noupdate="1">
+ <function model="account.chart.template" name="try_loading">
+ <value eval="[ref('l10n_generic_coa.configurable_chart_template')]"/>
+ </function>
+</data>
+</odoo>
diff --git a/addons/l10n_generic_coa/demo/account_bank_statement_demo.xml b/addons/l10n_generic_coa/demo/account_bank_statement_demo.xml
new file mode 100644
index 00000000..73c061cd
--- /dev/null
+++ b/addons/l10n_generic_coa/demo/account_bank_statement_demo.xml
@@ -0,0 +1,129 @@
+<?xml version="1.0" encoding="utf-8"?>
+<odoo>
+ <data noupdate="1">
+ <record id="demo_bank_statement_1" model="account.bank.statement">
+ <field name="journal_id" model="account.journal" search="[
+ ('type', '=', 'bank'),
+ ('company_id', '=', obj().env.company.id)]"/>
+ <field name="date" eval="time.strftime('%Y')+'-01-01'"/>
+ <field name="balance_end_real">9944.87</field>
+ <field name="balance_start">5103.0</field>
+ </record>
+
+ <record id="demo_bank_statement_line_1" model="account.bank.statement.line">
+ <field name="ref"></field>
+ <field name="statement_id" ref="l10n_generic_coa.demo_bank_statement_1"/>
+ <field name="sequence">1</field>
+ <field name="payment_ref" eval="'INV/%s/00002 and INV/%s/00003' % (time.strftime('%Y'), time.strftime('%Y'))"/>
+ <field name="journal_id" model="account.journal" search="[
+ ('type', '=', 'bank'),
+ ('company_id', '=', obj().env.company.id)]"/>
+ <field name="amount">1275.0</field>
+ <field name="date" eval="time.strftime('%Y')+'-01-01'"/>
+ <field name="partner_id" ref="base.res_partner_2"/>
+ </record>
+
+ <record id="demo_bank_statement_line_2" model="account.bank.statement.line">
+ <field name="ref"></field>
+ <field name="statement_id" ref="l10n_generic_coa.demo_bank_statement_1"/>
+ <field name="sequence">2</field>
+ <field name="payment_ref">Bank fees</field>
+ <field name="journal_id" model="account.journal" search="[
+ ('type', '=', 'bank'),
+ ('company_id', '=', obj().env.company.id)]"/>
+ <field name="amount">-32.58</field>
+ <field name="date" eval="time.strftime('%Y')+'-01-01'"/>
+ </record>
+
+ <record id="demo_bank_statement_line_3" model="account.bank.statement.line">
+ <field name="ref"></field>
+ <field name="statement_id" ref="l10n_generic_coa.demo_bank_statement_1"/>
+ <field name="sequence">3</field>
+ <field name="payment_ref">Prepayment</field>
+ <field name="journal_id" model="account.journal" search="[
+ ('type', '=', 'bank'),
+ ('company_id', '=', obj().env.company.id)]"/>
+ <field name="amount">650.0</field>
+ <field name="date" eval="time.strftime('%Y')+'-01-01'"/>
+ <field name="partner_id" ref="base.res_partner_12"/>
+ </record>
+
+ <record id="demo_bank_statement_line_4" model="account.bank.statement.line">
+ <field name="ref"></field>
+ <field name="statement_id" ref="l10n_generic_coa.demo_bank_statement_1"/>
+ <field name="sequence">4</field>
+ <field name="payment_ref" eval="'First 2000 $ of invoice %s/00001' % time.strftime('%Y')"/>
+ <field name="journal_id" model="account.journal" search="[
+ ('type', '=', 'bank'),
+ ('company_id', '=', obj().env.company.id)]"/>
+ <field name="amount">2000.0</field>
+ <field name="date" eval="time.strftime('%Y')+'-01-01'"/>
+ <field name="partner_id" ref="base.res_partner_12"/>
+ </record>
+
+ <record id="demo_bank_statement_line_5" model="account.bank.statement.line">
+ <field name="ref"></field>
+ <field name="statement_id" ref="l10n_generic_coa.demo_bank_statement_1"/>
+ <field name="sequence">5</field>
+ <field name="payment_ref">Last Year Interests</field>
+ <field name="journal_id" model="account.journal" search="[
+ ('type', '=', 'bank'),
+ ('company_id', '=', obj().env.company.id)]"/>
+ <field name="amount">102.78</field>
+ <field name="date" eval="time.strftime('%Y')+'-01-01'"/>
+ </record>
+
+ <record id="demo_bank_statement_line_6" model="account.bank.statement.line">
+ <field name="ref"></field>
+ <field name="statement_id" ref="l10n_generic_coa.demo_bank_statement_1"/>
+ <field name="sequence">1</field>
+ <field name="payment_ref" eval="'INV/'+time.strftime('%Y')+'/00002'"/>
+ <field name="journal_id" model="account.journal" search="[
+ ('type', '=', 'bank'),
+ ('company_id', '=', obj().env.company.id)]"/>
+ <field name="amount">750.0</field>
+ <field name="date" eval="time.strftime('%Y')+'-01-01'"/>
+ <field name="partner_id" ref="base.res_partner_2"/>
+ </record>
+
+ <record id="demo_bank_statement_line_7" model="account.bank.statement.line">
+ <field name="ref"></field>
+ <field name="statement_id" ref="l10n_generic_coa.demo_bank_statement_1"/>
+ <field name="sequence">7</field>
+ <field name="payment_ref">R:9772938 10/07 AX 9415116318 T:5 BRT: 100,00€ C/ croip</field>
+ <field name="journal_id" model="account.journal" search="[
+ ('type', '=', 'bank'),
+ ('company_id', '=', obj().env.company.id)]"/>
+ <field name="amount">96.67</field>
+ <field name="date" eval="time.strftime('%Y')+'-01-01'"/>
+ <field name="partner_id" ref="base.res_partner_2"/>
+ </record>
+
+ <!-- Also create a pdf attachment in chatter -->
+
+ <record id="ir_attachment_bank_statement_1" model="ir.attachment">
+ <field name="type">binary</field>
+ <field name="datas" type="base64" file="l10n_generic_coa/static/src/demo/bank_statement_yourcompany_1.pdf"/>
+ <field name="name">bank_statement_yourcompany_demo.pdf</field>
+ <field name="res_model">account.bank.statement</field>
+ <field name="res_id" ref="demo_bank_statement_1"/>
+ </record>
+
+ <record id="demo_bank_statement_1" model="account.bank.statement">
+ <field name="message_main_attachment_id" ref="ir_attachment_bank_statement_1"/>
+ </record>
+
+ <record id="mail_message_bank_statement_1" model="mail.message">
+ <field name="model">account.bank.statement</field>
+ <field name="res_id" ref="l10n_generic_coa.demo_bank_statement_1"/>
+ <field name="body">Bank statement attachment</field>
+ <field name="message_type">comment</field>
+ <field name="author_id" ref="base.partner_demo"/>
+ <field name="attachment_ids" eval="[(6, 0, [ref('ir_attachment_bank_statement_1')])]"/>
+ </record>
+
+ <function model="account.bank.statement" name="button_post">
+ <value eval="[ref('demo_bank_statement_1')]"/>
+ </function>
+ </data>
+</odoo>
diff --git a/addons/l10n_generic_coa/demo/account_invoice_demo.xml b/addons/l10n_generic_coa/demo/account_invoice_demo.xml
new file mode 100644
index 00000000..6cccfa14
--- /dev/null
+++ b/addons/l10n_generic_coa/demo/account_invoice_demo.xml
@@ -0,0 +1,208 @@
+<?xml version="1.0" encoding="utf-8"?>
+<odoo>
+ <data noupdate="1">
+ <!-- ==== Invoice Demo 1 with attachment ==== -->
+ <record id="demo_invoice_1" model="account.move">
+ <field name="move_type">out_invoice</field>
+ <field name="partner_id" ref="base.res_partner_12"/>
+ <field name="invoice_user_id" ref="base.user_demo"/>
+ <field name="invoice_payment_term_id" ref="account.account_payment_term_end_following_month"/>
+ <field name="invoice_date" eval="time.strftime('%Y-%m')+'-01'"/>
+ <field name="invoice_line_ids" eval="[
+ (0, 0, {'product_id': ref('product.consu_delivery_02'), 'quantity': 5}),
+ (0, 0, {'product_id': ref('product.consu_delivery_03'), 'quantity': 5}),
+ ]"/>
+ </record>
+
+ <!-- ==== Invoice Demo 2 ==== -->
+ <record id="demo_invoice_2" model="account.move">
+ <field name="move_type">out_invoice</field>
+ <field name="partner_id" ref="base.res_partner_2"/>
+ <field name="invoice_user_id" eval="False"/>
+ <field name="invoice_date" eval="time.strftime('%Y-%m')+'-08'"/>
+ <field name="invoice_line_ids" eval="[
+ (0, 0, {'product_id': ref('product.consu_delivery_03'), 'quantity': 5}),
+ (0, 0, {'product_id': ref('product.consu_delivery_01'), 'quantity': 20}),
+ ]"/>
+ </record>
+
+ <!-- ==== Invoice Demo 3 ==== -->
+ <record id="demo_invoice_3" model="account.move">
+ <field name="move_type">out_invoice</field>
+ <field name="partner_id" ref="base.res_partner_2"/>
+ <field name="invoice_user_id" eval="False"/>
+ <field name="invoice_date" eval="time.strftime('%Y-%m')+'-08'"/>
+ <field name="invoice_line_ids" eval="[
+ (0, 0, {'product_id': ref('product.consu_delivery_01'), 'quantity': 5}),
+ (0, 0, {'product_id': ref('product.consu_delivery_03'), 'quantity': 5}),
+ ]"/>
+ </record>
+
+ <!-- ==== Invoice Demo 4 - Create an invoice that will generate a followup ==== -->
+ <record id="demo_invoice_followup" model="account.move">
+ <field name="move_type">out_invoice</field>
+ <field name="partner_id" ref="base.res_partner_2"/>
+ <field name="invoice_user_id" ref="base.user_demo"/>
+ <field name="invoice_payment_term_id" ref="account.account_payment_term_immediate"/>
+
+ <field name="invoice_date" eval="(datetime.today() + timedelta(days=-15)).strftime('%Y-%m-%d')"/>
+ <field name="invoice_line_ids" eval="[
+ (0, 0, {'product_id': ref('product.consu_delivery_02'), 'quantity': 5}),
+ (0, 0, {'product_id': ref('product.consu_delivery_03'), 'quantity': 5}),
+ ]"/>
+ </record>
+
+ <!-- ==== Invoice Demo 5 - Draft Vendor Bill ==== -->
+ <record id="demo_invoice_5" model="account.move">
+ <field name="move_type">in_invoice</field>
+ <field name="partner_id" ref="base.res_partner_12"/>
+ <field name="invoice_user_id" ref="base.user_demo"/>
+ <field name="invoice_payment_term_id" ref="account.account_payment_term_end_following_month"/>
+ <field name="invoice_date" eval="time.strftime('%Y-%m')+'-01'"/>
+ <field name="invoice_line_ids" eval="[
+ (0, 0, {'product_id': ref('product.product_delivery_01'), 'price_unit': 10.0, 'quantity': 1}),
+ (0, 0, {'product_id': ref('product.product_order_01'), 'price_unit': 4.0, 'quantity': 5}),
+ ]"/>
+ </record>
+
+ <!-- ==== Invoice Demo 6 - Draft Vendor Bill for OCR ==== -->
+
+ <record id="demo_invoice_extract" model="account.move" context="{'default_move_type': 'in_invoice'}">
+ <field name="move_type">in_invoice</field>
+ <field name="invoice_user_id" ref="base.user_demo"/>
+ </record>
+
+ <!-- ==== Invoice Demo 7 - Posted vendor bill ==== -->
+ <record id="demo_invoice_equipment_purchase" model="account.move">
+ <field name="move_type">in_invoice</field>
+ <field name="ref">INV/2018/0057</field>
+ <field name="partner_id" ref="base.res_partner_12"/>
+ <field name="invoice_user_id" eval="False"/>
+ <field name="invoice_date">2018-09-17</field>
+ <field name="invoice_line_ids" eval="[
+ (0, 0, {'name': 'Redeem Reference Number: PO02529', 'quantity': 1, 'price_unit': 541.10})
+ ]"/>
+ </record>
+
+ <!-- ==== Post invoices ==== -->
+ <!-- Ensure every detail related to the partner is set (fiscal position, payment terms, bank,...)-->
+ <function model="account.move" name="_onchange_partner_id">
+ <value eval="[ref('demo_invoice_1')]"/>
+ </function>
+ <function model="account.move" name="_onchange_partner_id">
+ <value eval="[ref('demo_invoice_2')]"/>
+ </function>
+ <function model="account.move" name="_onchange_partner_id">
+ <value eval="[ref('demo_invoice_3')]"/>
+ </function>
+ <function model="account.move" name="_onchange_partner_id">
+ <value eval="[ref('demo_invoice_equipment_purchase')]"/>
+ </function>
+
+ <!-- Ensure the lines are consistent with the products (taxes, price, name) -->
+ <!-- check_move_validity=False because the dynamic lines are computed after, it is checked later at the post function -->
+ <function model="account.move.line" name="_onchange_product_id" context="{'check_move_validity': False}">
+ <value model="account.move.line" eval="obj().search([('move_id', 'in', [
+ ref('demo_invoice_1'), ref('demo_invoice_2'), ref('demo_invoice_3'),
+ ref('demo_invoice_followup'), ref('demo_invoice_equipment_purchase'),
+ ])]).ids"/>
+ </function>
+
+ <!-- Recompute the taxes and receivable lines after the onchange executed above -->
+ <function model="account.move" name="_recompute_dynamic_lines" context="{'check_move_validity': False}">
+ <value eval="[
+ ref('demo_invoice_1'), ref('demo_invoice_2'), ref('demo_invoice_3'),
+ ref('demo_invoice_followup'), ref('demo_invoice_equipment_purchase'),
+ ]"/>
+ <value name="recompute_all_taxes" eval="True"/>
+ <value name="recompute_tax_base_amount" eval="True"/>
+ </function>
+
+ <function model="account.move" name="action_post">
+ <value eval="[
+ ref('demo_invoice_1'), ref('demo_invoice_2'), ref('demo_invoice_3'),
+ ref('demo_invoice_followup'), ref('demo_invoice_equipment_purchase'),
+ ]"/>
+ </function>
+
+ <!-- ==== Create attachments for posted invoices ==== -->
+ <record id="ir_attachment_in_invoice_1" model="ir.attachment">
+ <field name="type">binary</field>
+ <field name="datas" type="base64" file="l10n_generic_coa/static/src/demo/in_invoice_yourcompany_demo_1.pdf"/>
+ <field name="name">in_invoice_yourcompany_demo.pdf</field>
+ <field name="res_model">account.move</field>
+ <field name="res_id" ref="demo_invoice_extract"/>
+ </record>
+
+ <record id="demo_invoice_extract" model="account.move">
+ <field name="message_main_attachment_id" ref="ir_attachment_in_invoice_1"/>
+ </record>
+
+ <record id="mail_message_in_invoice_1" model="mail.message">
+ <field name="model">account.move</field>
+ <field name="res_id" ref="l10n_generic_coa.demo_invoice_extract"/>
+ <field name="body">Vendor Bill attachment</field>
+ <field name="message_type">comment</field>
+ <field name="author_id" ref="base.partner_demo"/>
+ <field name="attachment_ids" eval="[(6, 0, [ref('ir_attachment_in_invoice_1')])]"/>
+ </record>
+
+ <record id="ir_attachment_in_invoice_2" model="ir.attachment">
+ <field name="type">binary</field>
+ <field name="datas" type="base64" file="l10n_generic_coa/static/src/demo/in_invoice_yourcompany_demo_2.pdf"/>
+ <field name="name">in_invoice_yourcompany_demo.pdf</field>
+ <field name="res_model">account.move</field>
+ <field name="res_id" ref="demo_invoice_equipment_purchase"/>
+ </record>
+
+ <record id="demo_invoice_equipment_purchase" model="account.move">
+ <field name="message_main_attachment_id" ref="ir_attachment_in_invoice_2"/>
+ </record>
+
+ <record id="mail_message_in_invoice_2" model="mail.message">
+ <field name="model">account.move</field>
+ <field name="res_id" ref="l10n_generic_coa.demo_invoice_equipment_purchase"/>
+ <field name="body">Vendor Bill attachment</field>
+ <field name="message_type">comment</field>
+ <field name="author_id" ref="base.partner_demo"/>
+ <field name="attachment_ids" eval="[(6, 0, [ref('ir_attachment_in_invoice_2')])]"/>
+ </record>
+
+ <record id="invoice_activity_1" model="mail.activity">
+ <field name="res_id" ref="l10n_generic_coa.demo_invoice_3"/>
+ <field name="res_model_id" ref="account.model_account_move"/>
+ <field name="activity_type_id" ref="mail.mail_activity_data_todo"/>
+ <field name="date_deadline" eval="(DateTime.today() + relativedelta(days=5)).strftime('%Y-%m-%d %H:%M')"/>
+ <field name="summary">Follow-up on payment</field>
+ <field name="create_uid" ref="base.user_admin"/>
+ <field name="user_id" ref="base.user_admin"/>
+ </record>
+ <record id="invoice_activity_2" model="mail.activity">
+ <field name="res_id" ref="l10n_generic_coa.demo_invoice_2"/>
+ <field name="res_model_id" ref="account.model_account_move"/>
+ <field name="activity_type_id" ref="mail.mail_activity_data_call"/>
+ <field name="date_deadline" eval="DateTime.today().strftime('%Y-%m-%d %H:%M')"/>
+ <field name="create_uid" ref="base.user_admin"/>
+ <field name="user_id" ref="base.user_admin"/>
+ </record>
+ <record id="invoice_activity_3" model="mail.activity">
+ <field name="res_id" ref="l10n_generic_coa.demo_invoice_1"/>
+ <field name="res_model_id" ref="account.model_account_move"/>
+ <field name="activity_type_id" ref="mail.mail_activity_data_todo"/>
+ <field name="date_deadline" eval="(DateTime.today() + relativedelta(days=5)).strftime('%Y-%m-%d %H:%M')"/>
+ <field name="summary">Include upsell</field>
+ <field name="create_uid" ref="base.user_admin"/>
+ <field name="user_id" ref="base.user_admin"/>
+ </record>
+ <record id="invoice_activity_4" model="mail.activity">
+ <field name="res_id" ref="l10n_generic_coa.demo_invoice_extract"/>
+ <field name="res_model_id" ref="account.model_account_move"/>
+ <field name="activity_type_id" ref="mail.mail_activity_data_todo"/>
+ <field name="date_deadline" eval="(DateTime.today() + relativedelta(days=5)).strftime('%Y-%m-%d %H:%M')"/>
+ <field name="summary">Update address</field>
+ <field name="create_uid" ref="base.user_admin"/>
+ <field name="user_id" ref="base.user_admin"/>
+ </record>
+
+ </data>
+</odoo>
diff --git a/addons/l10n_generic_coa/demo/account_reconcile_model.xml b/addons/l10n_generic_coa/demo/account_reconcile_model.xml
new file mode 100644
index 00000000..5934fdd0
--- /dev/null
+++ b/addons/l10n_generic_coa/demo/account_reconcile_model.xml
@@ -0,0 +1,34 @@
+<?xml version="1.0" encoding="utf-8"?>
+<odoo>
+ <data noupdate="0">
+ <record id="reconcile_from_label" model="account.reconcile.model">
+ <field name="name">Line with Bank Fees</field>
+ <field name="rule_type">writeoff_suggestion</field>
+ <field name="match_label">contains</field>
+ <field name="match_label_param">BRT</field>
+ <field name="decimal_separator">,</field>
+ </record>
+
+ <record id="reconcile_from_label_line1" model="account.reconcile.model.line">
+ <field name="model_id" ref="l10n_generic_coa.reconcile_from_label"/>
+ <field name="sequence">1</field>
+ <field name="label">Due amount</field>
+ <field name="account_id" model="account.account"
+ search="[('user_type_id', '=', ref('account.data_account_type_revenue')),
+ ('company_id', '=', obj().env.company.id)]"/>
+ <field name="amount_type">regex</field>
+ <field name="amount_string">BRT: ([\d,]+)</field>
+ </record>
+
+ <record id="reconcile_from_label_line2" model="account.reconcile.model.line">
+ <field name="model_id" ref="l10n_generic_coa.reconcile_from_label"/>
+ <field name="sequence">2</field>
+ <field name="label">Bank Fees</field>
+ <field name="account_id" model="account.account"
+ search="[('user_type_id', '=', ref('account.data_account_type_direct_costs')),
+ ('company_id', '=', obj().env.company.id)]"/>
+ <field name="amount_type">percentage</field>
+ <field name="amount_string">100</field>
+ </record>
+ </data>
+</odoo>
diff --git a/addons/l10n_generic_coa/static/src/demo/bank_statement_yourcompany_1.pdf b/addons/l10n_generic_coa/static/src/demo/bank_statement_yourcompany_1.pdf
new file mode 100644
index 00000000..5de72134
--- /dev/null
+++ b/addons/l10n_generic_coa/static/src/demo/bank_statement_yourcompany_1.pdf
Binary files differ
diff --git a/addons/l10n_generic_coa/static/src/demo/in_invoice_yourcompany_demo_1.pdf b/addons/l10n_generic_coa/static/src/demo/in_invoice_yourcompany_demo_1.pdf
new file mode 100644
index 00000000..98b6026c
--- /dev/null
+++ b/addons/l10n_generic_coa/static/src/demo/in_invoice_yourcompany_demo_1.pdf
Binary files differ
diff --git a/addons/l10n_generic_coa/static/src/demo/in_invoice_yourcompany_demo_2.pdf b/addons/l10n_generic_coa/static/src/demo/in_invoice_yourcompany_demo_2.pdf
new file mode 100644
index 00000000..59878fe1
--- /dev/null
+++ b/addons/l10n_generic_coa/static/src/demo/in_invoice_yourcompany_demo_2.pdf
Binary files differ