diff --git a/.tx/config b/.tx/config
new file mode 100644
index 00000000000..23e76595a0f
--- /dev/null
+++ b/.tx/config
@@ -0,0 +1,1133 @@
+[main]
+host = https://www.transifex.com
+type = PO
+
+[odoo-9.base]
+file_filter = openerp/addons/base/i18n/.po
+source_file = openerp/addons/base/i18n/base.pot
+source_lang = en
+
+[odoo-9.account]
+file_filter = addons/account/i18n/.po
+source_file = addons/account/i18n/account.pot
+source_lang = en
+
+[odoo-9.account_accountant]
+file_filter = addons/account_accountant/i18n/.po
+source_file = addons/account_accountant/i18n/account_accountant.pot
+source_lang = en
+
+[odoo-9.account_analytic_analysis]
+file_filter = addons/account_analytic_analysis/i18n/.po
+source_file = addons/account_analytic_analysis/i18n/account_analytic_analysis.pot
+source_lang = en
+
+[odoo-9.account_analytic_default]
+file_filter = addons/account_analytic_default/i18n/.po
+source_file = addons/account_analytic_default/i18n/account_analytic_default.pot
+source_lang = en
+
+[odoo-9.account_analytic_plans]
+file_filter = addons/account_analytic_plans/i18n/.po
+source_file = addons/account_analytic_plans/i18n/account_analytic_plans.pot
+source_lang = en
+
+[odoo-9.account_anglo_saxon]
+file_filter = addons/account_anglo_saxon/i18n/.po
+source_file = addons/account_anglo_saxon/i18n/account_anglo_saxon.pot
+source_lang = en
+
+[odoo-9.account_asset]
+file_filter = addons/account_asset/i18n/.po
+source_file = addons/account_asset/i18n/account_asset.pot
+source_lang = en
+
+[odoo-9.account_bank_statement_extensions]
+file_filter = addons/account_bank_statement_extensions/i18n/.po
+source_file = addons/account_bank_statement_extensions/i18n/account_bank_statement_extensions.pot
+source_lang = en
+
+[odoo-9.account_budget]
+file_filter = addons/account_budget/i18n/.po
+source_file = addons/account_budget/i18n/account_budget.pot
+source_lang = en
+
+[odoo-9.account_cancel]
+file_filter = addons/account_cancel/i18n/.po
+source_file = addons/account_cancel/i18n/account_cancel.pot
+source_lang = en
+
+[odoo-9.account_chart]
+file_filter = addons/account_chart/i18n/.po
+source_file = addons/account_chart/i18n/account_chart.pot
+source_lang = en
+
+[odoo-9.account_check_writing]
+file_filter = addons/account_check_writing/i18n/.po
+source_file = addons/account_check_writing/i18n/account_check_writing.pot
+source_lang = en
+
+[odoo-9.account_followup]
+file_filter = addons/account_followup/i18n/.po
+source_file = addons/account_followup/i18n/account_followup.pot
+source_lang = en
+
+[odoo-9.account_payment]
+file_filter = addons/account_payment/i18n/.po
+source_file = addons/account_payment/i18n/account_payment.pot
+source_lang = en
+
+[odoo-9.account_sequence]
+file_filter = addons/account_sequence/i18n/.po
+source_file = addons/account_sequence/i18n/account_sequence.pot
+source_lang = en
+
+[odoo-9.account_test]
+file_filter = addons/account_test/i18n/.po
+source_file = addons/account_test/i18n/account_test.pot
+source_lang = en
+
+[odoo-9.account_voucher]
+file_filter = addons/account_voucher/i18n/.po
+source_file = addons/account_voucher/i18n/account_voucher.pot
+source_lang = en
+
+[odoo-9.analytic]
+file_filter = addons/analytic/i18n/.po
+source_file = addons/analytic/i18n/analytic.pot
+source_lang = en
+
+[odoo-9.analytic_contract_hr_expense]
+file_filter = addons/analytic_contract_hr_expense/i18n/.po
+source_file = addons/analytic_contract_hr_expense/i18n/analytic_contract_hr_expense.pot
+source_lang = en
+
+[odoo-9.analytic_user_function]
+file_filter = addons/analytic_user_function/i18n/.po
+source_file = addons/analytic_user_function/i18n/analytic_user_function.pot
+source_lang = en
+
+[odoo-9.anonymization]
+file_filter = addons/anonymization/i18n/.po
+source_file = addons/anonymization/i18n/anonymization.pot
+source_lang = en
+
+[odoo-9.association]
+file_filter = addons/association/i18n/.po
+source_file = addons/association/i18n/association.pot
+source_lang = en
+
+[odoo-9.auth_crypt]
+file_filter = addons/auth_crypt/i18n/.po
+source_file = addons/auth_crypt/i18n/auth_crypt.pot
+source_lang = en
+
+[odoo-9.auth_ldap]
+file_filter = addons/auth_ldap/i18n/.po
+source_file = addons/auth_ldap/i18n/auth_ldap.pot
+source_lang = en
+
+[odoo-9.auth_oauth]
+file_filter = addons/auth_oauth/i18n/.po
+source_file = addons/auth_oauth/i18n/auth_oauth.pot
+source_lang = en
+
+[odoo-9.auth_openid]
+file_filter = addons/auth_openid/i18n/.po
+source_file = addons/auth_openid/i18n/auth_openid.pot
+source_lang = en
+
+[odoo-9.auth_signup]
+file_filter = addons/auth_signup/i18n/.po
+source_file = addons/auth_signup/i18n/auth_signup.pot
+source_lang = en
+
+[odoo-9.base_action_rule]
+file_filter = addons/base_action_rule/i18n/.po
+source_file = addons/base_action_rule/i18n/base_action_rule.pot
+source_lang = en
+
+[odoo-9.base_gengo]
+file_filter = addons/base_gengo/i18n/.po
+source_file = addons/base_gengo/i18n/base_gengo.pot
+source_lang = en
+
+[odoo-9.base_geolocalize]
+file_filter = addons/base_geolocalize/i18n/.po
+source_file = addons/base_geolocalize/i18n/base_geolocalize.pot
+source_lang = en
+
+[odoo-9.base_iban]
+file_filter = addons/base_iban/i18n/.po
+source_file = addons/base_iban/i18n/base_iban.pot
+source_lang = en
+
+[odoo-9.base_import]
+file_filter = addons/base_import/i18n/.po
+source_file = addons/base_import/i18n/base_import.pot
+source_lang = en
+
+[odoo-9.base_import_module]
+file_filter = addons/base_import_module/i18n/.po
+source_file = addons/base_import_module/i18n/base_import_module.pot
+source_lang = en
+
+[odoo-9.base_report_designer]
+file_filter = addons/base_report_designer/i18n/.po
+source_file = addons/base_report_designer/i18n/base_report_designer.pot
+source_lang = en
+
+[odoo-9.base_setup]
+file_filter = addons/base_setup/i18n/.po
+source_file = addons/base_setup/i18n/base_setup.pot
+source_lang = en
+
+[odoo-9.base_vat]
+file_filter = addons/base_vat/i18n/.po
+source_file = addons/base_vat/i18n/base_vat.pot
+source_lang = en
+
+[odoo-9.board]
+file_filter = addons/board/i18n/.po
+source_file = addons/board/i18n/board.pot
+source_lang = en
+
+[odoo-9.bus]
+file_filter = addons/bus/i18n/.po
+source_file = addons/bus/i18n/bus.pot
+source_lang = en
+
+[odoo-9.calendar]
+file_filter = addons/calendar/i18n/.po
+source_file = addons/calendar/i18n/calendar.pot
+source_lang = en
+
+[odoo-9.claim_from_delivery]
+file_filter = addons/claim_from_delivery/i18n/.po
+source_file = addons/claim_from_delivery/i18n/claim_from_delivery.pot
+source_lang = en
+
+[odoo-9.contacts]
+file_filter = addons/contacts/i18n/.po
+source_file = addons/contacts/i18n/contacts.pot
+source_lang = en
+
+[odoo-9.crm]
+file_filter = addons/crm/i18n/.po
+source_file = addons/crm/i18n/crm.pot
+source_lang = en
+
+[odoo-9.crm_claim]
+file_filter = addons/crm_claim/i18n/.po
+source_file = addons/crm_claim/i18n/crm_claim.pot
+source_lang = en
+
+[odoo-9.crm_helpdesk]
+file_filter = addons/crm_helpdesk/i18n/.po
+source_file = addons/crm_helpdesk/i18n/crm_helpdesk.pot
+source_lang = en
+
+[odoo-9.crm_mass_mailing]
+file_filter = addons/crm_mass_mailing/i18n/.po
+source_file = addons/crm_mass_mailing/i18n/crm_mass_mailing.pot
+source_lang = en
+
+[odoo-9.crm_partner_assign]
+file_filter = addons/crm_partner_assign/i18n/.po
+source_file = addons/crm_partner_assign/i18n/crm_partner_assign.pot
+source_lang = en
+
+[odoo-9.crm_profiling]
+file_filter = addons/crm_profiling/i18n/.po
+source_file = addons/crm_profiling/i18n/crm_profiling.pot
+source_lang = en
+
+[odoo-9.crm_project_issue]
+file_filter = addons/crm_project_issue/i18n/.po
+source_file = addons/crm_project_issue/i18n/crm_project_issue.pot
+source_lang = en
+
+[odoo-9.decimal_precision]
+file_filter = addons/decimal_precision/i18n/.po
+source_file = addons/decimal_precision/i18n/decimal_precision.pot
+source_lang = en
+
+[odoo-9.delivery]
+file_filter = addons/delivery/i18n/.po
+source_file = addons/delivery/i18n/delivery.pot
+source_lang = en
+
+[odoo-9.document]
+file_filter = addons/document/i18n/.po
+source_file = addons/document/i18n/document.pot
+source_lang = en
+
+[odoo-9.edi]
+file_filter = addons/edi/i18n/.po
+source_file = addons/edi/i18n/edi.pot
+source_lang = en
+
+[odoo-9.email_template]
+file_filter = addons/email_template/i18n/.po
+source_file = addons/email_template/i18n/email_template.pot
+source_lang = en
+
+[odoo-9.event]
+file_filter = addons/event/i18n/.po
+source_file = addons/event/i18n/event.pot
+source_lang = en
+
+[odoo-9.event_sale]
+file_filter = addons/event_sale/i18n/.po
+source_file = addons/event_sale/i18n/event_sale.pot
+source_lang = en
+
+[odoo-9.fetchmail]
+file_filter = addons/fetchmail/i18n/.po
+source_file = addons/fetchmail/i18n/fetchmail.pot
+source_lang = en
+
+[odoo-9.fleet]
+file_filter = addons/fleet/i18n/.po
+source_file = addons/fleet/i18n/fleet.pot
+source_lang = en
+
+[odoo-9.gamification]
+file_filter = addons/gamification/i18n/.po
+source_file = addons/gamification/i18n/gamification.pot
+source_lang = en
+
+[odoo-9.gamification_sale_crm]
+file_filter = addons/gamification_sale_crm/i18n/.po
+source_file = addons/gamification_sale_crm/i18n/gamification_sale_crm.pot
+source_lang = en
+
+[odoo-9.google_account]
+file_filter = addons/google_account/i18n/.po
+source_file = addons/google_account/i18n/google_account.pot
+source_lang = en
+
+[odoo-9.google_calendar]
+file_filter = addons/google_calendar/i18n/.po
+source_file = addons/google_calendar/i18n/google_calendar.pot
+source_lang = en
+
+[odoo-9.google_drive]
+file_filter = addons/google_drive/i18n/.po
+source_file = addons/google_drive/i18n/google_drive.pot
+source_lang = en
+
+[odoo-9.google_spreadsheet]
+file_filter = addons/google_spreadsheet/i18n/.po
+source_file = addons/google_spreadsheet/i18n/google_spreadsheet.pot
+source_lang = en
+
+[odoo-9.hr]
+file_filter = addons/hr/i18n/.po
+source_file = addons/hr/i18n/hr.pot
+source_lang = en
+
+[odoo-9.hr_applicant_document]
+file_filter = addons/hr_applicant_document/i18n/.po
+source_file = addons/hr_applicant_document/i18n/hr_applicant_document.pot
+source_lang = en
+
+[odoo-9.hr_attendance]
+file_filter = addons/hr_attendance/i18n/.po
+source_file = addons/hr_attendance/i18n/hr_attendance.pot
+source_lang = en
+
+[odoo-9.hr_contract]
+file_filter = addons/hr_contract/i18n/.po
+source_file = addons/hr_contract/i18n/hr_contract.pot
+source_lang = en
+
+[odoo-9.hr_evaluation]
+file_filter = addons/hr_evaluation/i18n/.po
+source_file = addons/hr_evaluation/i18n/hr_evaluation.pot
+source_lang = en
+
+[odoo-9.hr_expense]
+file_filter = addons/hr_expense/i18n/.po
+source_file = addons/hr_expense/i18n/hr_expense.pot
+source_lang = en
+
+[odoo-9.hr_gamification]
+file_filter = addons/hr_gamification/i18n/.po
+source_file = addons/hr_gamification/i18n/hr_gamification.pot
+source_lang = en
+
+[odoo-9.hr_holidays]
+file_filter = addons/hr_holidays/i18n/.po
+source_file = addons/hr_holidays/i18n/hr_holidays.pot
+source_lang = en
+
+[odoo-9.hr_payroll]
+file_filter = addons/hr_payroll/i18n/.po
+source_file = addons/hr_payroll/i18n/hr_payroll.pot
+source_lang = en
+
+[odoo-9.hr_payroll_account]
+file_filter = addons/hr_payroll_account/i18n/.po
+source_file = addons/hr_payroll_account/i18n/hr_payroll_account.pot
+source_lang = en
+
+[odoo-9.hr_recruitment]
+file_filter = addons/hr_recruitment/i18n/.po
+source_file = addons/hr_recruitment/i18n/hr_recruitment.pot
+source_lang = en
+
+[odoo-9.hr_timesheet]
+file_filter = addons/hr_timesheet/i18n/.po
+source_file = addons/hr_timesheet/i18n/hr_timesheet.pot
+source_lang = en
+
+[odoo-9.hr_timesheet_invoice]
+file_filter = addons/hr_timesheet_invoice/i18n/.po
+source_file = addons/hr_timesheet_invoice/i18n/hr_timesheet_invoice.pot
+source_lang = en
+
+[odoo-9.hr_timesheet_sheet]
+file_filter = addons/hr_timesheet_sheet/i18n/.po
+source_file = addons/hr_timesheet_sheet/i18n/hr_timesheet_sheet.pot
+source_lang = en
+
+[odoo-9.im_chat]
+file_filter = addons/im_chat/i18n/.po
+source_file = addons/im_chat/i18n/im_chat.pot
+source_lang = en
+
+[odoo-9.im_livechat]
+file_filter = addons/im_livechat/i18n/.po
+source_file = addons/im_livechat/i18n/im_livechat.pot
+source_lang = en
+
+[odoo-9.im_odoo_support]
+file_filter = addons/im_odoo_support/i18n/.po
+source_file = addons/im_odoo_support/i18n/im_odoo_support.pot
+source_lang = en
+
+[odoo-9.knowledge]
+file_filter = addons/knowledge/i18n/.po
+source_file = addons/knowledge/i18n/knowledge.pot
+source_lang = en
+
+[odoo-9.l10n_ar]
+file_filter = addons/l10n_ar/i18n/.po
+source_file = addons/l10n_ar/i18n/l10n_ar.pot
+source_lang = en
+
+[odoo-9.l10n_be]
+file_filter = addons/l10n_be/i18n/.po
+source_file = addons/l10n_be/i18n/l10n_be.pot
+source_lang = en
+
+[odoo-9.l10n_be_coda]
+file_filter = addons/l10n_be_coda/i18n/.po
+source_file = addons/l10n_be_coda/i18n/l10n_be_coda.pot
+source_lang = en
+
+[odoo-9.l10n_be_hr_payroll]
+file_filter = addons/l10n_be_hr_payroll/i18n/.po
+source_file = addons/l10n_be_hr_payroll/i18n/l10n_be_hr_payroll.pot
+source_lang = en
+
+[odoo-9.l10n_be_intrastat]
+file_filter = addons/l10n_be_intrastat/i18n/.po
+source_file = addons/l10n_be_intrastat/i18n/l10n_be_intrastat.pot
+source_lang = en
+
+[odoo-9.l10n_be_invoice_bba]
+file_filter = addons/l10n_be_invoice_bba/i18n/.po
+source_file = addons/l10n_be_invoice_bba/i18n/l10n_be_invoice_bba.pot
+source_lang = en
+
+[odoo-9.l10n_bo]
+file_filter = addons/l10n_bo/i18n/.po
+source_file = addons/l10n_bo/i18n/l10n_bo.pot
+source_lang = en
+
+[odoo-9.l10n_br]
+file_filter = addons/l10n_br/i18n/.po
+source_file = addons/l10n_br/i18n/l10n_br.pot
+source_lang = en
+
+[odoo-9.l10n_cl]
+file_filter = addons/l10n_cl/i18n/.po
+source_file = addons/l10n_cl/i18n/l10n_cl.pot
+source_lang = en
+
+[odoo-9.l10n_cr]
+file_filter = addons/l10n_cr/i18n/.po
+source_file = addons/l10n_cr/i18n/l10n_cr.pot
+source_lang = en
+
+[odoo-9.l10n_de]
+file_filter = addons/l10n_de/i18n/.po
+source_file = addons/l10n_de/i18n/l10n_de.pot
+source_lang = en
+
+[odoo-9.l10n_ec]
+file_filter = addons/l10n_ec/i18n/.po
+source_file = addons/l10n_ec/i18n/l10n_ec.pot
+source_lang = en
+
+[odoo-9.l10n_es]
+file_filter = addons/l10n_es/i18n/.po
+source_file = addons/l10n_es/i18n/l10n_es.pot
+source_lang = en
+
+[odoo-9.l10n_eu_service]
+file_filter = addons/l10n_eu_service/i18n/.po
+source_file = addons/l10n_eu_service/i18n/l10n_eu_service.pot
+source_lang = en
+
+[odoo-9.l10n_fr]
+file_filter = addons/l10n_fr/i18n/.po
+source_file = addons/l10n_fr/i18n/l10n_fr.pot
+source_lang = en
+
+[odoo-9.l10n_fr_rib]
+file_filter = addons/l10n_fr_rib/i18n/.po
+source_file = addons/l10n_fr_rib/i18n/l10n_fr_rib.pot
+source_lang = en
+
+[odoo-9.l10n_gr]
+file_filter = addons/l10n_gr/i18n/.po
+source_file = addons/l10n_gr/i18n/l10n_gr.pot
+source_lang = en
+
+[odoo-9.l10n_gt]
+file_filter = addons/l10n_gt/i18n/.po
+source_file = addons/l10n_gt/i18n/l10n_gt.pot
+source_lang = en
+
+[odoo-9.l10n_hn]
+file_filter = addons/l10n_hn/i18n/.po
+source_file = addons/l10n_hn/i18n/l10n_hn.pot
+source_lang = en
+
+[odoo-9.l10n_in]
+file_filter = addons/l10n_in/i18n/.po
+source_file = addons/l10n_in/i18n/l10n_in.pot
+source_lang = en
+
+[odoo-9.l10n_in_hr_payroll]
+file_filter = addons/l10n_in_hr_payroll/i18n/.po
+source_file = addons/l10n_in_hr_payroll/i18n/l10n_in_hr_payroll.pot
+source_lang = en
+
+[odoo-9.l10n_it]
+file_filter = addons/l10n_it/i18n/.po
+source_file = addons/l10n_it/i18n/l10n_it.pot
+source_lang = en
+
+[odoo-9.l10n_lu]
+file_filter = addons/l10n_lu/i18n/.po
+source_file = addons/l10n_lu/i18n/l10n_lu.pot
+source_lang = en
+
+[odoo-9.l10n_ma]
+file_filter = addons/l10n_ma/i18n/.po
+source_file = addons/l10n_ma/i18n/l10n_ma.pot
+source_lang = en
+
+[odoo-9.l10n_multilang]
+file_filter = addons/l10n_multilang/i18n/.po
+source_file = addons/l10n_multilang/i18n/l10n_multilang.pot
+source_lang = en
+
+[odoo-9.l10n_nl]
+file_filter = addons/l10n_nl/i18n/.po
+source_file = addons/l10n_nl/i18n/l10n_nl.pot
+source_lang = en
+
+[odoo-9.l10n_pe]
+file_filter = addons/l10n_pe/i18n/.po
+source_file = addons/l10n_pe/i18n/l10n_pe.pot
+source_lang = en
+
+[odoo-9.l10n_pl]
+file_filter = addons/l10n_pl/i18n/.po
+source_file = addons/l10n_pl/i18n/l10n_pl.pot
+source_lang = en
+
+[odoo-9.l10n_syscohada]
+file_filter = addons/l10n_syscohada/i18n/.po
+source_file = addons/l10n_syscohada/i18n/l10n_syscohada.pot
+source_lang = en
+
+[odoo-9.l10n_th]
+file_filter = addons/l10n_th/i18n/.po
+source_file = addons/l10n_th/i18n/l10n_th.pot
+source_lang = en
+
+[odoo-9.l10n_uk]
+file_filter = addons/l10n_uk/i18n/.po
+source_file = addons/l10n_uk/i18n/l10n_uk.pot
+source_lang = en
+
+[odoo-9.l10n_ve]
+file_filter = addons/l10n_ve/i18n/.po
+source_file = addons/l10n_ve/i18n/l10n_ve.pot
+source_lang = en
+
+[odoo-9.lunch]
+file_filter = addons/lunch/i18n/.po
+source_file = addons/lunch/i18n/lunch.pot
+source_lang = en
+
+[odoo-9.mail]
+file_filter = addons/mail/i18n/.po
+source_file = addons/mail/i18n/mail.pot
+source_lang = en
+
+[odoo-9.marketing]
+file_filter = addons/marketing/i18n/.po
+source_file = addons/marketing/i18n/marketing.pot
+source_lang = en
+
+[odoo-9.marketing_campaign]
+file_filter = addons/marketing_campaign/i18n/.po
+source_file = addons/marketing_campaign/i18n/marketing_campaign.pot
+source_lang = en
+
+[odoo-9.marketing_campaign_crm_demo]
+file_filter = addons/marketing_campaign_crm_demo/i18n/.po
+source_file = addons/marketing_campaign_crm_demo/i18n/marketing_campaign_crm_demo.pot
+source_lang = en
+
+[odoo-9.marketing_crm]
+file_filter = addons/marketing_crm/i18n/.po
+source_file = addons/marketing_crm/i18n/marketing_crm.pot
+source_lang = en
+
+[odoo-9.mass_mailing]
+file_filter = addons/mass_mailing/i18n/.po
+source_file = addons/mass_mailing/i18n/mass_mailing.pot
+source_lang = en
+
+[odoo-9.membership]
+file_filter = addons/membership/i18n/.po
+source_file = addons/membership/i18n/membership.pot
+source_lang = en
+
+[odoo-9.mrp]
+file_filter = addons/mrp/i18n/.po
+source_file = addons/mrp/i18n/mrp.pot
+source_lang = en
+
+[odoo-9.mrp_byproduct]
+file_filter = addons/mrp_byproduct/i18n/.po
+source_file = addons/mrp_byproduct/i18n/mrp_byproduct.pot
+source_lang = en
+
+[odoo-9.mrp_operations]
+file_filter = addons/mrp_operations/i18n/.po
+source_file = addons/mrp_operations/i18n/mrp_operations.pot
+source_lang = en
+
+[odoo-9.mrp_repair]
+file_filter = addons/mrp_repair/i18n/.po
+source_file = addons/mrp_repair/i18n/mrp_repair.pot
+source_lang = en
+
+[odoo-9.multi_company]
+file_filter = addons/multi_company/i18n/.po
+source_file = addons/multi_company/i18n/multi_company.pot
+source_lang = en
+
+[odoo-9.note]
+file_filter = addons/note/i18n/.po
+source_file = addons/note/i18n/note.pot
+source_lang = en
+
+[odoo-9.note_pad]
+file_filter = addons/note_pad/i18n/.po
+source_file = addons/note_pad/i18n/note_pad.pot
+source_lang = en
+
+[odoo-9.pad]
+file_filter = addons/pad/i18n/.po
+source_file = addons/pad/i18n/pad.pot
+source_lang = en
+
+[odoo-9.pad_project]
+file_filter = addons/pad_project/i18n/.po
+source_file = addons/pad_project/i18n/pad_project.pot
+source_lang = en
+
+[odoo-9.payment]
+file_filter = addons/payment/i18n/.po
+source_file = addons/payment/i18n/payment.pot
+source_lang = en
+
+[odoo-9.payment_adyen]
+file_filter = addons/payment_adyen/i18n/.po
+source_file = addons/payment_adyen/i18n/payment_adyen.pot
+source_lang = en
+
+[odoo-9.payment_buckaroo]
+file_filter = addons/payment_buckaroo/i18n/.po
+source_file = addons/payment_buckaroo/i18n/payment_buckaroo.pot
+source_lang = en
+
+[odoo-9.payment_ogone]
+file_filter = addons/payment_ogone/i18n/.po
+source_file = addons/payment_ogone/i18n/payment_ogone.pot
+source_lang = en
+
+[odoo-9.payment_paypal]
+file_filter = addons/payment_paypal/i18n/.po
+source_file = addons/payment_paypal/i18n/payment_paypal.pot
+source_lang = en
+
+[odoo-9.payment_transfer]
+file_filter = addons/payment_transfer/i18n/.po
+source_file = addons/payment_transfer/i18n/payment_transfer.pot
+source_lang = en
+
+[odoo-9.point_of_sale]
+file_filter = addons/point_of_sale/i18n/.po
+source_file = addons/point_of_sale/i18n/point_of_sale.pot
+source_lang = en
+
+[odoo-9.portal]
+file_filter = addons/portal/i18n/.po
+source_file = addons/portal/i18n/portal.pot
+source_lang = en
+
+[odoo-9.portal_claim]
+file_filter = addons/portal_claim/i18n/.po
+source_file = addons/portal_claim/i18n/portal_claim.pot
+source_lang = en
+
+[odoo-9.portal_project]
+file_filter = addons/portal_project/i18n/.po
+source_file = addons/portal_project/i18n/portal_project.pot
+source_lang = en
+
+[odoo-9.portal_project_issue]
+file_filter = addons/portal_project_issue/i18n/.po
+source_file = addons/portal_project_issue/i18n/portal_project_issue.pot
+source_lang = en
+
+[odoo-9.portal_sale]
+file_filter = addons/portal_sale/i18n/.po
+source_file = addons/portal_sale/i18n/portal_sale.pot
+source_lang = en
+
+[odoo-9.pos_discount]
+file_filter = addons/pos_discount/i18n/.po
+source_file = addons/pos_discount/i18n/pos_discount.pot
+source_lang = en
+
+[odoo-9.pos_restaurant]
+file_filter = addons/pos_restaurant/i18n/.po
+source_file = addons/pos_restaurant/i18n/pos_restaurant.pot
+source_lang = en
+
+[odoo-9.procurement]
+file_filter = addons/procurement/i18n/.po
+source_file = addons/procurement/i18n/procurement.pot
+source_lang = en
+
+[odoo-9.procurement_jit]
+file_filter = addons/procurement_jit/i18n/.po
+source_file = addons/procurement_jit/i18n/procurement_jit.pot
+source_lang = en
+
+[odoo-9.product]
+file_filter = addons/product/i18n/.po
+source_file = addons/product/i18n/product.pot
+source_lang = en
+
+[odoo-9.product_email_template]
+file_filter = addons/product_email_template/i18n/.po
+source_file = addons/product_email_template/i18n/product_email_template.pot
+source_lang = en
+
+[odoo-9.product_expiry]
+file_filter = addons/product_expiry/i18n/.po
+source_file = addons/product_expiry/i18n/product_expiry.pot
+source_lang = en
+
+[odoo-9.product_extended]
+file_filter = addons/product_extended/i18n/.po
+source_file = addons/product_extended/i18n/product_extended.pot
+source_lang = en
+
+[odoo-9.product_margin]
+file_filter = addons/product_margin/i18n/.po
+source_file = addons/product_margin/i18n/product_margin.pot
+source_lang = en
+
+[odoo-9.product_visible_discount]
+file_filter = addons/product_visible_discount/i18n/.po
+source_file = addons/product_visible_discount/i18n/product_visible_discount.pot
+source_lang = en
+
+[odoo-9.project]
+file_filter = addons/project/i18n/.po
+source_file = addons/project/i18n/project.pot
+source_lang = en
+
+[odoo-9.project_issue]
+file_filter = addons/project_issue/i18n/.po
+source_file = addons/project_issue/i18n/project_issue.pot
+source_lang = en
+
+[odoo-9.project_issue_sheet]
+file_filter = addons/project_issue_sheet/i18n/.po
+source_file = addons/project_issue_sheet/i18n/project_issue_sheet.pot
+source_lang = en
+
+[odoo-9.project_timesheet]
+file_filter = addons/project_timesheet/i18n/.po
+source_file = addons/project_timesheet/i18n/project_timesheet.pot
+source_lang = en
+
+[odoo-9.purchase]
+file_filter = addons/purchase/i18n/.po
+source_file = addons/purchase/i18n/purchase.pot
+source_lang = en
+
+[odoo-9.purchase_analytic_plans]
+file_filter = addons/purchase_analytic_plans/i18n/.po
+source_file = addons/purchase_analytic_plans/i18n/purchase_analytic_plans.pot
+source_lang = en
+
+[odoo-9.purchase_double_validation]
+file_filter = addons/purchase_double_validation/i18n/.po
+source_file = addons/purchase_double_validation/i18n/purchase_double_validation.pot
+source_lang = en
+
+[odoo-9.purchase_requisition]
+file_filter = addons/purchase_requisition/i18n/.po
+source_file = addons/purchase_requisition/i18n/purchase_requisition.pot
+source_lang = en
+
+[odoo-9.report]
+file_filter = addons/report/i18n/.po
+source_file = addons/report/i18n/report.pot
+source_lang = en
+
+[odoo-9.report_intrastat]
+file_filter = addons/report_intrastat/i18n/.po
+source_file = addons/report_intrastat/i18n/report_intrastat.pot
+source_lang = en
+
+[odoo-9.report_webkit]
+file_filter = addons/report_webkit/i18n/.po
+source_file = addons/report_webkit/i18n/report_webkit.pot
+source_lang = en
+
+[odoo-9.resource]
+file_filter = addons/resource/i18n/.po
+source_file = addons/resource/i18n/resource.pot
+source_lang = en
+
+[odoo-9.sale]
+file_filter = addons/sale/i18n/.po
+source_file = addons/sale/i18n/sale.pot
+source_lang = en
+
+[odoo-9.sale_analytic_plans]
+file_filter = addons/sale_analytic_plans/i18n/.po
+source_file = addons/sale_analytic_plans/i18n/sale_analytic_plans.pot
+source_lang = en
+
+[odoo-9.sale_crm]
+file_filter = addons/sale_crm/i18n/.po
+source_file = addons/sale_crm/i18n/sale_crm.pot
+source_lang = en
+
+[odoo-9.sale_journal]
+file_filter = addons/sale_journal/i18n/.po
+source_file = addons/sale_journal/i18n/sale_journal.pot
+source_lang = en
+
+[odoo-9.sale_layout]
+file_filter = addons/sale_layout/i18n/.po
+source_file = addons/sale_layout/i18n/sale_layout.pot
+source_lang = en
+
+[odoo-9.sale_margin]
+file_filter = addons/sale_margin/i18n/.po
+source_file = addons/sale_margin/i18n/sale_margin.pot
+source_lang = en
+
+[odoo-9.sale_mrp]
+file_filter = addons/sale_mrp/i18n/.po
+source_file = addons/sale_mrp/i18n/sale_mrp.pot
+source_lang = en
+
+[odoo-9.sale_order_dates]
+file_filter = addons/sale_order_dates/i18n/.po
+source_file = addons/sale_order_dates/i18n/sale_order_dates.pot
+source_lang = en
+
+[odoo-9.sale_service]
+file_filter = addons/sale_service/i18n/.po
+source_file = addons/sale_service/i18n/sale_service.pot
+source_lang = en
+
+[odoo-9.sales_team]
+file_filter = addons/sales_team/i18n/.po
+source_file = addons/sales_team/i18n/sales_team.pot
+source_lang = en
+
+[odoo-9.sale_stock]
+file_filter = addons/sale_stock/i18n/.po
+source_file = addons/sale_stock/i18n/sale_stock.pot
+source_lang = en
+
+[odoo-9.share]
+file_filter = addons/share/i18n/.po
+source_file = addons/share/i18n/share.pot
+source_lang = en
+
+[odoo-9.stock]
+file_filter = addons/stock/i18n/.po
+source_file = addons/stock/i18n/stock.pot
+source_lang = en
+
+[odoo-9.stock_account]
+file_filter = addons/stock_account/i18n/.po
+source_file = addons/stock_account/i18n/stock_account.pot
+source_lang = en
+
+[odoo-9.stock_dropshipping]
+file_filter = addons/stock_dropshipping/i18n/.po
+source_file = addons/stock_dropshipping/i18n/stock_dropshipping.pot
+source_lang = en
+
+[odoo-9.stock_invoice_directly]
+file_filter = addons/stock_invoice_directly/i18n/.po
+source_file = addons/stock_invoice_directly/i18n/stock_invoice_directly.pot
+source_lang = en
+
+[odoo-9.stock_landed_costs]
+file_filter = addons/stock_landed_costs/i18n/.po
+source_file = addons/stock_landed_costs/i18n/stock_landed_costs.pot
+source_lang = en
+
+[odoo-9.stock_picking_wave]
+file_filter = addons/stock_picking_wave/i18n/.po
+source_file = addons/stock_picking_wave/i18n/stock_picking_wave.pot
+source_lang = en
+
+[odoo-9.subscription]
+file_filter = addons/subscription/i18n/.po
+source_file = addons/subscription/i18n/subscription.pot
+source_lang = en
+
+[odoo-9.survey]
+file_filter = addons/survey/i18n/.po
+source_file = addons/survey/i18n/survey.pot
+source_lang = en
+
+[odoo-9.survey_crm]
+file_filter = addons/survey_crm/i18n/.po
+source_file = addons/survey_crm/i18n/survey_crm.pot
+source_lang = en
+
+[odoo-9.warning]
+file_filter = addons/warning/i18n/.po
+source_file = addons/warning/i18n/warning.pot
+source_lang = en
+
+[odoo-9.web]
+file_filter = addons/web/i18n/.po
+source_file = addons/web/i18n/web.pot
+source_lang = en
+
+[odoo-9.web_calendar]
+file_filter = addons/web_calendar/i18n/.po
+source_file = addons/web_calendar/i18n/web_calendar.pot
+source_lang = en
+
+[odoo-9.web_diagram]
+file_filter = addons/web_diagram/i18n/.po
+source_file = addons/web_diagram/i18n/web_diagram.pot
+source_lang = en
+
+[odoo-9.web_gantt]
+file_filter = addons/web_gantt/i18n/.po
+source_file = addons/web_gantt/i18n/web_gantt.pot
+source_lang = en
+
+[odoo-9.web_graph]
+file_filter = addons/web_graph/i18n/.po
+source_file = addons/web_graph/i18n/web_graph.pot
+source_lang = en
+
+[odoo-9.web_kanban]
+file_filter = addons/web_kanban/i18n/.po
+source_file = addons/web_kanban/i18n/web_kanban.pot
+source_lang = en
+
+[odoo-9.web_kanban_gauge]
+file_filter = addons/web_kanban_gauge/i18n/.po
+source_file = addons/web_kanban_gauge/i18n/web_kanban_gauge.pot
+source_lang = en
+
+[odoo-9.web_linkedin]
+file_filter = addons/web_linkedin/i18n/.po
+source_file = addons/web_linkedin/i18n/web_linkedin.pot
+source_lang = en
+
+[odoo-9.web_view_editor]
+file_filter = addons/web_view_editor/i18n/.po
+source_file = addons/web_view_editor/i18n/web_view_editor.pot
+source_lang = en
+
+[odoo-9.website]
+file_filter = addons/website/i18n/.po
+source_file = addons/website/i18n/website.pot
+source_lang = en
+
+[odoo-9.website_blog]
+file_filter = addons/website_blog/i18n/.po
+source_file = addons/website_blog/i18n/website_blog.pot
+source_lang = en
+
+[odoo-9.website_certification]
+file_filter = addons/website_certification/i18n/.po
+source_file = addons/website_certification/i18n/website_certification.pot
+source_lang = en
+
+[odoo-9.website_crm]
+file_filter = addons/website_crm/i18n/.po
+source_file = addons/website_crm/i18n/website_crm.pot
+source_lang = en
+
+[odoo-9.website_crm_partner_assign]
+file_filter = addons/website_crm_partner_assign/i18n/.po
+source_file = addons/website_crm_partner_assign/i18n/website_crm_partner_assign.pot
+source_lang = en
+
+[odoo-9.website_customer]
+file_filter = addons/website_customer/i18n/.po
+source_file = addons/website_customer/i18n/website_customer.pot
+source_lang = en
+
+[odoo-9.website_event]
+file_filter = addons/website_event/i18n/.po
+source_file = addons/website_event/i18n/website_event.pot
+source_lang = en
+
+[odoo-9.website_event_sale]
+file_filter = addons/website_event_sale/i18n/.po
+source_file = addons/website_event_sale/i18n/website_event_sale.pot
+source_lang = en
+
+[odoo-9.website_event_track]
+file_filter = addons/website_event_track/i18n/.po
+source_file = addons/website_event_track/i18n/website_event_track.pot
+source_lang = en
+
+[odoo-9.website_forum]
+file_filter = addons/website_forum/i18n/.po
+source_file = addons/website_forum/i18n/website_forum.pot
+source_lang = en
+
+[odoo-9.website_forum_doc]
+file_filter = addons/website_forum_doc/i18n/.po
+source_file = addons/website_forum_doc/i18n/website_forum_doc.pot
+source_lang = en
+
+[odoo-9.website_gengo]
+file_filter = addons/website_gengo/i18n/.po
+source_file = addons/website_gengo/i18n/website_gengo.pot
+source_lang = en
+
+[odoo-9.website_google_map]
+file_filter = addons/website_google_map/i18n/.po
+source_file = addons/website_google_map/i18n/website_google_map.pot
+source_lang = en
+
+[odoo-9.website_hr]
+file_filter = addons/website_hr/i18n/.po
+source_file = addons/website_hr/i18n/website_hr.pot
+source_lang = en
+
+[odoo-9.website_hr_recruitment]
+file_filter = addons/website_hr_recruitment/i18n/.po
+source_file = addons/website_hr_recruitment/i18n/website_hr_recruitment.pot
+source_lang = en
+
+[odoo-9.website_livechat]
+file_filter = addons/website_livechat/i18n/.po
+source_file = addons/website_livechat/i18n/website_livechat.pot
+source_lang = en
+
+[odoo-9.website_mail]
+file_filter = addons/website_mail/i18n/.po
+source_file = addons/website_mail/i18n/website_mail.pot
+source_lang = en
+
+[odoo-9.website_mail_group]
+file_filter = addons/website_mail_group/i18n/.po
+source_file = addons/website_mail_group/i18n/website_mail_group.pot
+source_lang = en
+
+[odoo-9.website_membership]
+file_filter = addons/website_membership/i18n/.po
+source_file = addons/website_membership/i18n/website_membership.pot
+source_lang = en
+
+[odoo-9.website_partner]
+file_filter = addons/website_partner/i18n/.po
+source_file = addons/website_partner/i18n/website_partner.pot
+source_lang = en
+
+[odoo-9.website_payment]
+file_filter = addons/website_payment/i18n/.po
+source_file = addons/website_payment/i18n/website_payment.pot
+source_lang = en
+
+[odoo-9.website_project]
+file_filter = addons/website_project/i18n/.po
+source_file = addons/website_project/i18n/website_project.pot
+source_lang = en
+
+[odoo-9.website_quote]
+file_filter = addons/website_quote/i18n/.po
+source_file = addons/website_quote/i18n/website_quote.pot
+source_lang = en
+
+[odoo-9.website_report]
+file_filter = addons/website_report/i18n/.po
+source_file = addons/website_report/i18n/website_report.pot
+source_lang = en
+
+[odoo-9.website_sale]
+file_filter = addons/website_sale/i18n/.po
+source_file = addons/website_sale/i18n/website_sale.pot
+source_lang = en
+
+[odoo-9.website_sale_delivery]
+file_filter = addons/website_sale_delivery/i18n/.po
+source_file = addons/website_sale_delivery/i18n/website_sale_delivery.pot
+source_lang = en
+
+[odoo-9.website_sale_options]
+file_filter = addons/website_sale_options/i18n/.po
+source_file = addons/website_sale_options/i18n/website_sale_options.pot
+source_lang = en
+
+[odoo-9.website_twitter]
+file_filter = addons/website_twitter/i18n/.po
+source_file = addons/website_twitter/i18n/website_twitter.pot
+source_lang = en
+
+[odoo-9.web_tests]
+file_filter = addons/web_tests/i18n/.po
+source_file = addons/web_tests/i18n/web_tests.pot
+source_lang = en
+
+[odoo-9.web_tests_demo]
+file_filter = addons/web_tests_demo/i18n/.po
+source_file = addons/web_tests_demo/i18n/web_tests_demo.pot
+source_lang = en
diff --git a/addons/account/models/account_move.py b/addons/account/models/account_move.py
index 4a7554c2f54..e74957f1b06 100644
--- a/addons/account/models/account_move.py
+++ b/addons/account/models/account_move.py
@@ -625,8 +625,7 @@ class AccountMoveLine(models.Model):
amount_currency_str = formatLang(self.env, abs(actual_debit or actual_credit), currency_obj=line_currency)
total_amount_currency_str = formatLang(self.env, total_amount, currency_obj=line_currency)
ctx = context.copy()
- if target_date:
- ctx.update({'date': target_date})
+ ctx.update({'date': line.date})
total_amount = line_currency.with_context(ctx).compute(total_amount, target_currency)
actual_debit = line_currency.with_context(ctx).compute(actual_debit, target_currency)
actual_credit = line_currency.with_context(ctx).compute(actual_credit, target_currency)
diff --git a/addons/account/models/partner.py b/addons/account/models/partner.py
index 654946b6fbf..0fe71725319 100644
--- a/addons/account/models/partner.py
+++ b/addons/account/models/partner.py
@@ -105,16 +105,16 @@ class AccountFiscalPosition(models.Model):
PartnerObj = self.env['res.partner']
partner = PartnerObj.browse(partner_id)
- # partner manually set fiscal position always win
- if partner.property_account_position_id:
- return partner.property_account_position_id.id
-
# if no delivery use invocing
if delivery_id:
delivery = PartnerObj.browse(delivery_id)
else:
delivery = partner
+ # partner manually set fiscal position always win
+ if delivery.property_account_position_id or partner.property_account_position_id:
+ return delivery.property_account_position_id.id or partner.property_account_position_id.id
+
domains = [[('auto_apply', '=', True), ('vat_required', '=', bool(partner.vat))]]
if partner.vat:
# Possibly allow fallback to non-VAT positions, if no VAT-required position matches
@@ -240,9 +240,44 @@ class ResPartner(models.Model):
if not self.ids:
self.total_invoiced = 0.0
return True
+
+ user_currency_id = self.env.user.company_id.currency_id.id
for partner in self:
- invoices = account_invoice_report.search([('partner_id', 'child_of', partner.id), ('state', 'not in', ['draft', 'cancel'])])
- partner.total_invoiced = sum(inv.user_currency_price_total for inv in invoices)
+ all_partner_ids = self.search([('id', 'child_of', partner.id)]).ids
+
+ # searching account.invoice.report via the orm is comparatively expensive
+ # (generates queries "id in []" forcing to build the full table).
+ # In simple cases where all invoices are in the same currency than the user's company
+ # access directly these elements
+
+ # generate where clause to include multicompany rules
+ where_query = account_invoice_report._where_calc([
+ ('partner_id', 'in', all_partner_ids), ('state', 'not in', ['draft', 'cancel'])
+ ])
+ account_invoice_report._apply_ir_rules(where_query, 'read')
+ from_clause, where_clause, where_clause_params = where_query.get_sql()
+
+ query = """ WITH currency_rate (currency_id, rate, date_start, date_end) AS (
+ SELECT r.currency_id, r.rate, r.name AS date_start,
+ (SELECT name FROM res_currency_rate r2
+ WHERE r2.name > r.name AND
+ r2.currency_id = r.currency_id
+ ORDER BY r2.name ASC
+ LIMIT 1) AS date_end
+ FROM res_currency_rate r
+ )
+ SELECT SUM(price_total * cr.rate) as total
+ FROM account_invoice_report account_invoice_report, currency_rate cr
+ WHERE %s
+ AND cr.currency_id = %%s
+ AND (COALESCE(account_invoice_report.date, NOW()) >= cr.date_start)
+ AND (COALESCE(account_invoice_report.date, NOW()) < cr.date_end OR cr.date_end IS NULL)
+ """ % where_clause
+
+ # price_total is in the currency with rate = 1
+ # total_invoice should be displayed in the current user's currency
+ self.env.cr.execute(query, where_clause_params + [user_currency_id])
+ partner.total_invoiced = self.env.cr.fetchone()[0]
@api.multi
def _journal_item_count(self):
diff --git a/addons/account/tests/test_reconciliation.py b/addons/account/tests/test_reconciliation.py
index cb69a12e12e..e2e2b3a4749 100644
--- a/addons/account/tests/test_reconciliation.py
+++ b/addons/account/tests/test_reconciliation.py
@@ -1,5 +1,6 @@
from openerp.addons.account.tests.account_test_classes import AccountingTestCase
import time
+import unittest2
class TestReconciliation(AccountingTestCase):
@@ -15,6 +16,8 @@ class TestReconciliation(AccountingTestCase):
self.account_invoice_line_model = self.env['account.invoice.line']
self.acc_bank_stmt_model = self.env['account.bank.statement']
self.acc_bank_stmt_line_model = self.env['account.bank.statement.line']
+ self.res_currency_model = self.registry('res.currency')
+ self.res_currency_rate_model = self.registry('res.currency.rate')
self.partner_agrolait_id = self.env.ref("base.res_partner_2").id
self.currency_swiss_id = self.env.ref("base.CHF").id
@@ -209,3 +212,98 @@ class TestReconciliation(AccountingTestCase):
self.account_euro.id: {'debit': 0.0, 'credit': 42.0, 'amount_currency': -50, 'currency_id': self.currency_swiss_id},
self.account_rcv.id: {'debit': 42.0, 'credit': 0.0, 'amount_currency': 50, 'currency_id': self.currency_swiss_id},
})
+
+ @unittest2.skip('adapt to new accounting')
+ def test_balanced_exchanges_gain_loss(self):
+ # The point of this test is to show that we handle correctly the gain/loss exchanges during reconciliations in foreign currencies.
+ # For instance, with a company set in EUR, and a USD rate set to 0.033,
+ # the reconciliation of an invoice of 2.00 USD (60.61 EUR) and a bank statement of two lines of 1.00 USD (30.30 EUR)
+ # will lead to an exchange loss, that should be handled correctly within the journal items.
+ cr, uid = self.cr, self.uid
+ # We update the currency rate of the currency USD in order to force the gain/loss exchanges in next steps
+ self.res_currency_rate_model.create(cr, uid, {
+ 'name': time.strftime('%Y-%m-%d') + ' 00:00:00',
+ 'currency_id': self.currency_usd_id,
+ 'rate': 0.033,
+ })
+ # We create a customer invoice of 2.00 USD
+ invoice_id = self.account_invoice_model.create(cr, uid, {
+ 'partner_id': self.partner_agrolait_id,
+ 'currency_id': self.currency_usd_id,
+ 'name': 'Foreign invoice with exchange gain',
+ 'account_id': self.account_rcv_id,
+ 'type': 'out_invoice',
+ 'date_invoice': time.strftime('%Y-%m-%d'),
+ 'journal_id': self.bank_journal_usd_id,
+ 'invoice_line': [
+ (0, 0, {
+ 'name': 'line that will lead to an exchange gain',
+ 'quantity': 1,
+ 'price_unit': 2,
+ })
+ ]
+ })
+ self.registry('account.invoice').signal_workflow(cr, uid, [invoice_id], 'invoice_open')
+ invoice = self.account_invoice_model.browse(cr, uid, invoice_id)
+ # We create a bank statement with two lines of 1.00 USD each.
+ bank_stmt_id = self.acc_bank_stmt_model.create(cr, uid, {
+ 'journal_id': self.bank_journal_usd_id,
+ 'date': time.strftime('%Y-%m-%d'),
+ 'line_ids': [
+ (0, 0, {
+ 'name': 'half payment',
+ 'partner_id': self.partner_agrolait_id,
+ 'amount': 1.0,
+ 'date': time.strftime('%Y-%m-%d')
+ }),
+ (0, 0, {
+ 'name': 'second half payment',
+ 'partner_id': self.partner_agrolait_id,
+ 'amount': 1.0,
+ 'date': time.strftime('%Y-%m-%d')
+ })
+ ]
+ })
+
+ statement = self.acc_bank_stmt_model.browse(cr, uid, bank_stmt_id)
+
+ # We process the reconciliation of the invoice line with the two bank statement lines
+ line_id = None
+ for l in invoice.move_id.line_id:
+ if l.account_id.id == self.account_rcv_id:
+ line_id = l
+ break
+ for statement_line in statement.line_ids:
+ self.acc_bank_stmt_line_model.process_reconciliation(cr, uid, statement_line.id, [
+ {'counterpart_move_line_id': line_id.id, 'credit': 1.0, 'debit': 0.0, 'name': line_id.name}
+ ])
+
+ # The invoice should be paid, as the payments totally cover its total
+ self.assertEquals(invoice.state, 'paid', 'The invoice should be paid by now')
+ reconcile = None
+ for payment in invoice.payment_ids:
+ reconcile = payment.reconcile_id
+ break
+ # The invoice should be reconciled (entirely, not a partial reconciliation)
+ self.assertTrue(reconcile, 'The invoice should be totally reconciled')
+ result = {}
+ exchange_loss_line = None
+ for line in reconcile.line_id:
+ res_account = result.setdefault(line.account_id, {'debit': 0.0, 'credit': 0.0, 'count': 0})
+ res_account['debit'] = res_account['debit'] + line.debit
+ res_account['credit'] = res_account['credit'] + line.credit
+ res_account['count'] += 1
+ if line.credit == 0.01:
+ exchange_loss_line = line
+ # We should be able to find a move line of 0.01 EUR on the Debtors account, being the cent we lost during the currency exchange
+ self.assertTrue(exchange_loss_line, 'There should be one move line of 0.01 EUR in credit')
+ # The journal items of the reconciliation should have their debit and credit total equal
+ # Besides, the total debit and total credit should be 60.61 EUR (2.00 USD)
+ self.assertEquals(sum([res['debit'] for res in result.values()]), 60.61)
+ self.assertEquals(sum([res['credit'] for res in result.values()]), 60.61)
+ counterpart_exchange_loss_line = None
+ for line in exchange_loss_line.move_id.line_id:
+ if line.account_id.id == self.account_fx_expense_id:
+ counterpart_exchange_loss_line = line
+ # We should be able to find a move line of 0.01 EUR on the Foreign Exchange Loss account
+ self.assertTrue(counterpart_exchange_loss_line, 'There should be one move line of 0.01 EUR on account "Foreign Exchange Loss"')
diff --git a/addons/account/views/report_invoice.xml b/addons/account/views/report_invoice.xml
index 04911aa1795..68dd852ffbc 100644
--- a/addons/account/views/report_invoice.xml
+++ b/addons/account/views/report_invoice.xml
@@ -8,7 +8,7 @@
diff --git a/addons/account/views/res_config_view.xml b/addons/account/views/res_config_view.xml
index fec1e264299..2d072115052 100644
--- a/addons/account/views/res_config_view.xml
+++ b/addons/account/views/res_config_view.xml
@@ -149,7 +149,7 @@
@@ -168,7 +168,7 @@
diff --git a/addons/account_analytic_analysis/__init__.py b/addons/account_analytic_analysis/__init__.py
index f44526e4cfa..b27cee9bfb4 100644
--- a/addons/account_analytic_analysis/__init__.py
+++ b/addons/account_analytic_analysis/__init__.py
@@ -3,5 +3,3 @@
import account_analytic_analysis
import res_config
-import product_template
-import sale_order
diff --git a/addons/account_analytic_analysis/__openerp__.py b/addons/account_analytic_analysis/__openerp__.py
index 4bb3e168f03..07102ba3de4 100644
--- a/addons/account_analytic_analysis/__openerp__.py
+++ b/addons/account_analytic_analysis/__openerp__.py
@@ -22,7 +22,6 @@ Adds menu to show relevant information to each manager.You can also view the rep
'account_analytic_analysis_cron.xml',
'res_config_view.xml',
'views/account_analytic_analysis.xml',
- 'product_template_view.xml',
],
'demo': ['analytic_account_demo.xml', 'analytic_account_demo.yml'],
'test': ['../account/test/account_minimal_test.xml', 'test/account_analytic_analysis.yml'],
diff --git a/addons/account_analytic_analysis/account_analytic_analysis.py b/addons/account_analytic_analysis/account_analytic_analysis.py
index 5c6c682f79a..821d250d76c 100644
--- a/addons/account_analytic_analysis/account_analytic_analysis.py
+++ b/addons/account_analytic_analysis/account_analytic_analysis.py
@@ -28,7 +28,7 @@ class account_analytic_invoice_line(osv.osv):
_columns = {
'product_id': fields.many2one('product.product','Product',required=True),
- 'analytic_account_id': fields.many2one('account.analytic.account', 'Analytic Account'),
+ 'analytic_account_id': fields.many2one('account.analytic.account', 'Analytic Account', ondelete='cascade'),
'name': fields.text('Description', required=True),
'quantity': fields.float('Quantity', required=True),
'uom_id': fields.many2one('product.uom', 'Unit of Measure',required=True),
diff --git a/addons/account_analytic_analysis/product_template.py b/addons/account_analytic_analysis/product_template.py
deleted file mode 100644
index 07b3ce99f37..00000000000
--- a/addons/account_analytic_analysis/product_template.py
+++ /dev/null
@@ -1,17 +0,0 @@
-# -*- coding: utf-8 -*-
-
-from openerp import models, fields
-
-
-class product_template(models.Model):
- """ Add recurrent_invoice field to product template if it is true,
- it will add to related contract.
- """
- _inherit = "product.template"
-
- recurring_invoice = fields.Boolean(
- string='Recurrent Invoice Product', default=False,
- help="If selected, this product will be added to the "
- "related contract (which must be associated with the SO). \n"
- "It will be used as product for invoice lines and generate "
- "the recurring invoices automatically")
diff --git a/addons/account_analytic_analysis/product_template_view.xml b/addons/account_analytic_analysis/product_template_view.xml
deleted file mode 100644
index 3a24fb3d458..00000000000
--- a/addons/account_analytic_analysis/product_template_view.xml
+++ /dev/null
@@ -1,19 +0,0 @@
-
-
-
-
-
- product_template_form_view.inherit
- product.template
-
-
-
-
-
-
-
-
-
-
-
-
diff --git a/addons/account_analytic_analysis/sale_order.py b/addons/account_analytic_analysis/sale_order.py
deleted file mode 100644
index e52e185b5df..00000000000
--- a/addons/account_analytic_analysis/sale_order.py
+++ /dev/null
@@ -1,25 +0,0 @@
-# -*- coding: utf-8 -*-
-
-from openerp import models, api
-
-
-class sale_order_line(models.Model):
- _inherit = "sale.order.line"
-
- @api.one
- def button_confirm(self):
- if self.product_id.recurring_invoice and self.order_id.project_id:
- invoice_line_ids = [((0, 0, {
- 'product_id': self.product_id.id,
- 'analytic_account_id': self.order_id.project_id.id,
- 'name': self.name,
- 'quantity': self.product_uom_qty,
- 'uom_id': self.product_uom.id,
- 'price_unit': self.price_unit,
- 'price_subtotal': self.price_subtotal
- }))]
- analytic_values = {'recurring_invoices': True, 'recurring_invoice_line_ids': invoice_line_ids}
- if not self.order_id.project_id.partner_id:
- analytic_values['partner_id'] = self.order_id.partner_id.id
- self.order_id.project_id.write(analytic_values)
- return super(sale_order_line, self).button_confirm()
diff --git a/addons/account_budget/account_budget_view.xml b/addons/account_budget/account_budget_view.xml
index 8c2be0ee5f4..3ac0561e758 100644
--- a/addons/account_budget/account_budget_view.xml
+++ b/addons/account_budget/account_budget_view.xml
@@ -268,6 +268,7 @@
account.analytic.account.form.inherit.budget
account.analytic.account
+
diff --git a/addons/account_voucher/account_voucher.py b/addons/account_voucher/account_voucher.py
index 4f457bf6f11..840661ce71c 100644
--- a/addons/account_voucher/account_voucher.py
+++ b/addons/account_voucher/account_voucher.py
@@ -104,6 +104,10 @@ class AccountVoucher(models.Model):
account_id = self.partner_id.property_account_receivable_id.id
elif self.journal_id.type == 'purchase':
account_id = self.partner_id.property_account_payable_id.id
+ elif self.voucher_type == 'sale':
+ account_id = sef.journal_id.default_debit_account_id.id
+ elif self.voucher_type == 'purchase':
+ account_id = self.journal_id.default_credit_account_id.id
else:
account_id = self.journal_id.default_credit_account_id.id or self.journal_id.default_debit_account_id.id
self.account_id = account_id
@@ -146,6 +150,10 @@ class AccountVoucher(models.Model):
account_id = partner.property_account_receivable_id.id
elif journal.type == 'purchase':
account_id = partner.property_account_payable_id.id
+ elif self.voucher_type == 'sale':
+ account_id = journal.default_debit_account_id.id
+ elif self.voucher_type == 'purchase':
+ account_id = journal.default_credit_account_id.id
else:
account_id = journal.default_credit_account_id.id or journal.default_debit_account_id.id
self.account_id = account_id
diff --git a/addons/auth_signup/controllers/main.py b/addons/auth_signup/controllers/main.py
index 7c9c5a55b21..1518e69e63f 100644
--- a/addons/auth_signup/controllers/main.py
+++ b/addons/auth_signup/controllers/main.py
@@ -96,6 +96,7 @@ class AuthSignupHome(openerp.addons.web.controllers.main.Home):
values = dict((key, qcontext.get(key)) for key in ('login', 'name', 'password'))
assert any([k for k in values.values()]), "The form was not properly filled in."
assert values.get('password') == qcontext.get('confirm_password'), "Passwords do not match; please retype them."
+ values['lang'] = request.lang
self._signup_with_values(qcontext.get('token'), values)
request.cr.commit()
diff --git a/addons/barcodes/barcodes_view.xml b/addons/barcodes/barcodes_view.xml
index 2011c923ff3..06ae009e11b 100644
--- a/addons/barcodes/barcodes_view.xml
+++ b/addons/barcodes/barcodes_view.xml
@@ -15,7 +15,7 @@
Barcodes Nomenclatures define how barcodes are recognized and categorized.
- When a barcode is scanned it is associated to the first rule with a matching
+ When a barcode is scanned it is associated to the first rule with a matching
pattern. The pattern syntax is that of regular expression, and a barcode is matched
if the regular expression matches a prefix of the barcode.
diff --git a/addons/base_action_rule/base_action_rule.py b/addons/base_action_rule/base_action_rule.py
index 41fe67d379c..11dc5ab5a74 100644
--- a/addons/base_action_rule/base_action_rule.py
+++ b/addons/base_action_rule/base_action_rule.py
@@ -184,7 +184,7 @@ class base_action_rule(osv.osv):
action_model = self.pool.get('base.action.rule')
action_dom = [('model', '=', self._name),
('kind', 'in', ['on_create', 'on_create_or_write'])]
- action_ids = action_model.search(cr, uid, action_dom, context=context)
+ action_ids = action_model.search(cr, uid, action_dom, context=dict(context, active_test=True))
# check postconditions, and execute actions on the records that satisfy them
for action in action_model.browse(cr, uid, action_ids, context=context):
@@ -379,7 +379,7 @@ class base_action_rule(osv.osv):
context = context or {}
# retrieve all the action rules to run based on a timed condition
action_dom = [('kind', '=', 'on_time')]
- action_ids = self.search(cr, uid, action_dom, context=context)
+ action_ids = self.search(cr, uid, action_dom, context=dict(context, active_test=True))
for action in self.browse(cr, uid, action_ids, context=context):
now = datetime.now()
if action.last_run:
diff --git a/addons/calendar/calendar.py b/addons/calendar/calendar.py
index 84fd9a24f58..8005eed0ece 100644
--- a/addons/calendar/calendar.py
+++ b/addons/calendar/calendar.py
@@ -657,18 +657,18 @@ class ir_model(osv.Model):
original_exp_report = openerp.service.report.exp_report
-def exp_report(db, uid, object, ids, data=None, context=None):
+def exp_report(db, uid, object, ids, datas=None, context=None):
"""
Export Report
"""
if object == 'printscreen.list':
- original_exp_report(db, uid, object, ids, data, context)
+ original_exp_report(db, uid, object, ids, datas, context)
new_ids = []
for id in ids:
new_ids.append(calendar_id2real_id(id))
- if data.get('id', False):
- data['id'] = calendar_id2real_id(data['id'])
- return original_exp_report(db, uid, object, new_ids, data, context)
+ if datas.get('id', False):
+ datas['id'] = calendar_id2real_id(datas['id'])
+ return original_exp_report(db, uid, object, new_ids, datas, context)
openerp.service.report.exp_report = exp_report
diff --git a/addons/crm/crm_phonecall_view.xml b/addons/crm/crm_phonecall_view.xml
index ac3a9493395..1383c996078 100644
--- a/addons/crm/crm_phonecall_view.xml
+++ b/addons/crm/crm_phonecall_view.xml
@@ -159,6 +159,8 @@
on_change="on_change_partner_id(partner_id)"/>
+
diff --git a/addons/crm/res_config_view.xml b/addons/crm/res_config_view.xml
index 86299f37464..0a444d765f1 100644
--- a/addons/crm/res_config_view.xml
+++ b/addons/crm/res_config_view.xml
@@ -60,6 +60,13 @@
+
+
+ To be able to set your Leads Email Alias, you need to fill your alias domain first.
+
+
+
diff --git a/addons/crm/wizard/crm_lead_to_opportunity.py b/addons/crm/wizard/crm_lead_to_opportunity.py
index 576cb5afef3..e621910c71d 100644
--- a/addons/crm/wizard/crm_lead_to_opportunity.py
+++ b/addons/crm/wizard/crm_lead_to_opportunity.py
@@ -173,7 +173,7 @@ class crm_lead2opportunity_mass_convert(osv.osv_memory):
_columns = {
'user_ids': fields.many2many('res.users', string='Salesmen'),
- 'team_id': fields.many2one('crm.team', 'Sales Team', oldname='section_id'),
+ 'team_id': fields.many2one('crm.team', 'Sales Team', select=True, oldname='section_id'),
'deduplicate': fields.boolean('Apply deduplication', help='Merge with existing leads/opportunities of each partner'),
'action': fields.selection([
('each_exist_or_create', 'Use existing partner or create'),
diff --git a/addons/delivery/__init__.py b/addons/delivery/__init__.py
index 0dd312c92d5..02d8c7c70af 100644
--- a/addons/delivery/__init__.py
+++ b/addons/delivery/__init__.py
@@ -5,3 +5,4 @@ import delivery
import partner
import sale
import stock
+import models
diff --git a/addons/delivery/__openerp__.py b/addons/delivery/__openerp__.py
index 77979915987..7257056bf4e 100644
--- a/addons/delivery/__openerp__.py
+++ b/addons/delivery/__openerp__.py
@@ -11,9 +11,9 @@ Allows you to add delivery methods in sale orders and picking.
==============================================================
You can define your own carrier and delivery grids for prices. When creating
-invoices from picking, OpenERP is able to add and compute the shipping line.
+invoices from picking, the system is able to add and compute the shipping line.
""",
- 'author': 'OpenERP SA',
+ 'author': 'Odoo SA',
'depends': ['sale_stock'],
'data': [
'security/ir.model.access.csv',
diff --git a/addons/delivery/delivery.py b/addons/delivery/delivery.py
index cc3bba4b0bf..41f2cc2099f 100644
--- a/addons/delivery/delivery.py
+++ b/addons/delivery/delivery.py
@@ -16,20 +16,6 @@ class delivery_carrier(osv.osv):
_description = "Carrier"
_order = 'sequence, id'
- def name_get(self, cr, uid, ids, context=None):
- if not len(ids):
- return []
- if context is None:
- context = {}
- order_id = context.get('order_id',False)
- if not order_id:
- res = super(delivery_carrier, self).name_get(cr, uid, ids, context=context)
- else:
- order = self.pool.get('sale.order').browse(cr, uid, order_id, context=context)
- currency = order.pricelist_id.currency_id.name or ''
- res = [(r['id'], r['name']+' ('+(str(r['price']))+' '+currency+')') for r in self.read(cr, uid, ids, ['name', 'price'], context)]
- return res
-
def get_price(self, cr, uid, ids, field_name, arg=None, context=None):
res={}
if context is None:
diff --git a/addons/delivery/delivery_view.xml b/addons/delivery/delivery_view.xml
index ea951c10d6f..525a5227cfe 100644
--- a/addons/delivery/delivery_view.xml
+++ b/addons/delivery/delivery_view.xml
@@ -35,8 +35,9 @@
+
-
+
@@ -97,7 +98,7 @@
tree,form
- Click to define a new deliver method.
+ Click to define a new delivery method.
Each carrier (e.g. UPS) can have several delivery methods (e.g.
UPS Express, UPS Standard) with a set of pricing rules attached
@@ -229,24 +230,40 @@
stock.picking
-
-
-
-
+
+
+
+
+
-
-
-
-
+
+
-
-
+
+
-
-
-
-
-
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
@@ -292,28 +309,46 @@
-
- delivery.sale.order_withcarrier.form.view
+
+ delivery.sale.order.form.view.with_carrier
sale.order
-
-
-
-
-
-
-
-
-
-
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ delivery.stock.picking_withcarrier.form.view.shipping
+ stock.picking
+
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/addons/delivery/models/__init__.py b/addons/delivery/models/__init__.py
new file mode 100644
index 00000000000..a023a5ca67b
--- /dev/null
+++ b/addons/delivery/models/__init__.py
@@ -0,0 +1,24 @@
+# -*- coding: utf-8 -*-
+##############################################################################
+#
+# Odoo, Open Source Business Applications
+# Copyright (c) 2015 Odoo S.A.
+#
+# This program is free software: you can redistribute it and/or modify
+# it under the terms of the GNU Affero General Public License as
+# published by the Free Software Foundation, either version 3 of the
+# License, or (at your option) any later version.
+#
+# This program is distributed in the hope that it will be useful,
+# but WITHOUT ANY WARRANTY; without even the implied warranty of
+# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+# GNU Affero General Public License for more details.
+#
+# You should have received a copy of the GNU Affero General Public License
+# along with this program. If not, see .
+#
+##############################################################################
+
+import delivery_carrier
+import sale_order
+import stock_picking
diff --git a/addons/delivery/models/delivery_carrier.py b/addons/delivery/models/delivery_carrier.py
new file mode 100644
index 00000000000..1a59f182fcb
--- /dev/null
+++ b/addons/delivery/models/delivery_carrier.py
@@ -0,0 +1,125 @@
+# -*- coding: utf-8 -*-
+##############################################################################
+#
+# Odoo, Open Source Business Applications
+# Copyright (c) 2015 Odoo S.A.
+#
+# This program is free software: you can redistribute it and/or modify
+# it under the terms of the GNU Affero General Public License as
+# published by the Free Software Foundation, either version 3 of the
+# License, or (at your option) any later version.
+#
+# This program is distributed in the hope that it will be useful,
+# but WITHOUT ANY WARRANTY; without even the implied warranty of
+# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+# GNU Affero General Public License for more details.
+#
+# You should have received a copy of the GNU Affero General Public License
+# along with this program. If not, see .
+#
+##############################################################################
+
+import logging
+from openerp import models, fields, api
+from openerp.exceptions import UserError
+
+_logger = logging.getLogger(__name__)
+
+
+class DeliveryCarrier(models.Model):
+ _inherit = 'delivery.carrier'
+ ''' A Shipping Provider
+
+ In order to add your own external provider, follow these steps:
+
+ 1. Create your model MyProvider that _inherit 'delivery.carrier'
+ 2. Extend the selection of the field "delivery_type" with a pair
+ ('', 'My Provider')
+ 3. Add your methods:
+ _get_shipping_price_from_so
+ _send_shipping
+ _open_tracking_page
+ _cancel_shipment
+ (they are documented hereunder)
+ '''
+
+ # -------------------------------- #
+ # Internals for shipping providers #
+ # -------------------------------- #
+
+ delivery_type = fields.Selection([('grid', 'Default Delivery')], string="Delivery Type", default='grid', required='True')
+
+ price = fields.Float(compute='get_price')
+ available = fields.Boolean(compute='get_price')
+
+ @api.one
+ def get_price(self):
+ SaleOrder = self.env['sale.order']
+
+ self.available = False
+ self.price = False
+
+ order_id = self.env.context.get('order_id')
+ if order_id:
+ # FIXME: temporary hack until we refactor the delivery API in master
+
+ if self.delivery_type != 'grid':
+ try:
+ order = SaleOrder.browse(order_id)
+ self.price = self.get_shipping_price_from_so(order)[0]
+ self.available = True
+ except UserError as e:
+ # no suitable delivery method found, probably configuration error
+ _logger.info("Carrier %s: %s, not found", self.name, e.name)
+ self.price = 0.0
+ else:
+ res = super(DeliveryCarrier, self).get_price('price', [])
+ self.available = res[self.id]['available']
+ self.price = res[self.id]['price']
+
+ # -------------------------- #
+ # API for external providers #
+ # -------------------------- #
+
+ # TODO define and handle exceptions that could be thrown by providers
+
+ def get_shipping_price_from_so(self, orders):
+ ''' For every sale order, compute the price of the shipment
+
+ :param orders: A recordset of sale orders
+ :return list: A list of floats, containing the estimated price for the shipping of the sale order
+ '''
+ self.ensure_one()
+ if hasattr(self, '%s_get_shipping_price_from_so' % self.delivery_type):
+ return getattr(self, '%s_get_shipping_price_from_so' % self.delivery_type)(orders)
+
+ def send_shipping(self, pickings):
+ ''' Send the package to the service provider
+
+ :param pickings: A recordset of pickings
+ :return list: A list of dictionaries (one per picking) containing of the form::
+ { 'exact_price': price,
+ 'tracking_number': number }
+ '''
+ self.ensure_one()
+ if hasattr(self, '%s_send_shipping' % self.delivery_type):
+ return getattr(self, '%s_send_shipping' % self.delivery_type)(pickings)
+
+ def get_tracking_link(self, pickings):
+ ''' Ask the tracking link to the service provider
+
+ :param pickings: A recordset of pickings
+ :return list: A list of string URLs, containing the tracking links for every picking
+ '''
+ self.ensure_one()
+ if hasattr(self, '%s_get_tracking_link' % self.delivery_type):
+ return getattr(self, '%s_get_tracking_link' % self.delivery_type)(pickings)
+
+ def cancel_shipment(self, pickings):
+ ''' Cancel a shipment
+
+ :param pickings: A recordset of pickings
+ '''
+ self.ensure_one()
+ if hasattr(self, '%s_cancel_shipment' % self.delivery_type):
+ return getattr(self, '%s_cancel_shipment' % self.delivery_type)(pickings)
diff --git a/addons/delivery/models/sale_order.py b/addons/delivery/models/sale_order.py
new file mode 100644
index 00000000000..31a5a261ccf
--- /dev/null
+++ b/addons/delivery/models/sale_order.py
@@ -0,0 +1,76 @@
+# -*- coding: utf-8 -*-
+##############################################################################
+#
+# Odoo, Open Source Business Applications
+# Copyright (c) 2015 Odoo S.A.
+#
+# This program is free software: you can redistribute it and/or modify
+# it under the terms of the GNU Affero General Public License as
+# published by the Free Software Foundation, either version 3 of the
+# License, or (at your option) any later version.
+#
+# This program is distributed in the hope that it will be useful,
+# but WITHOUT ANY WARRANTY; without even the implied warranty of
+# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+# GNU Affero General Public License for more details.
+#
+# You should have received a copy of the GNU Affero General Public License
+# along with this program. If not, see .
+#
+##############################################################################
+
+from openerp import models, fields, api, _
+from openerp.exceptions import UserError
+
+
+class SaleOrder(models.Model):
+ _inherit = 'sale.order'
+
+ delivery_price = fields.Float(string='Estimated Delivery Price', compute='_compute_delivery_price')
+
+ @api.depends('carrier_id', 'partner_id', 'order_line')
+ def _compute_delivery_price(self):
+ for order in self:
+ order.delivery_price = order.carrier_id.with_context(order_id=order.id).price
+
+ @api.multi
+ def delivery_set(self):
+
+ SaleOrderLine = self.env['sale.order.line']
+
+ # Remove delivery products from the sale order
+ self._delivery_unset()
+
+ for order in self:
+ if order.carrier_id and order.carrier_id.delivery_type != 'grid':
+ # Shipping providers are used when delivery_type is other than 'grid'
+
+ if order.state not in ('draft', 'sent'):
+ raise UserError(_('The order state have to be draft to add delivery lines.'))
+
+ carrier = order.carrier_id
+ account_id = carrier.product_id.property_account_income.id
+ if not account_id:
+ account_id = carrier.product_id.categ_id.property_account_income_categ.id
+
+ # Apply fiscal position
+ taxes = carrier.product_id.taxes_id
+ taxes_ids = taxes.ids
+ if order.partner_id and order.fiscal_position_id:
+ account_id = order.fiscal_position_id.map_account(account_id)
+ taxes_ids = order.fiscal_position_id.map_tax(taxes).ids
+
+ SaleOrderLine.create({
+ 'order_id': order.id,
+ 'name': order.carrier_id.name,
+ 'product_uom_qty': 1,
+ 'product_uom': order.carrier_id.product_id.uom_id.id,
+ 'product_id': order.carrier_id.product_id.id,
+ 'price_unit': order.carrier_id.get_shipping_price_from_so(order)[0],
+ 'tax_id': [(6, 0, taxes_ids)],
+ 'is_delivery': True
+ })
+
+ else:
+ # Classic grid-based carriers
+ super(SaleOrder, self).delivery_set()
diff --git a/addons/delivery/models/stock_picking.py b/addons/delivery/models/stock_picking.py
new file mode 100644
index 00000000000..355c978d366
--- /dev/null
+++ b/addons/delivery/models/stock_picking.py
@@ -0,0 +1,110 @@
+# -*- coding: utf-8 -*-
+##############################################################################
+#
+# Odoo, Open Source Business Applications
+# Copyright (c) 2015 Odoo S.A.
+#
+# This program is free software: you can redistribute it and/or modify
+# it under the terms of the GNU Affero General Public License as
+# published by the Free Software Foundation, either version 3 of the
+# License, or (at your option) any later version.
+#
+# This program is distributed in the hope that it will be useful,
+# but WITHOUT ANY WARRANTY; without even the implied warranty of
+# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+# GNU Affero General Public License for more details.
+#
+# You should have received a copy of the GNU Affero General Public License
+# along with this program. If not, see .
+#
+##############################################################################
+
+from openerp import models, fields, api
+
+class StockPicking(models.Model):
+ _inherit = 'stock.picking'
+
+ carrier_price = fields.Float(string="Shipping Cost", readonly=True)
+ delivery_type = fields.Selection(related='carrier_id.delivery_type', readonly=True)
+
+ @api.multi
+ def do_transfer(self):
+ res = super(StockPicking, self).do_transfer()
+
+ if self.carrier_id and self.carrier_id.delivery_type != 'grid':
+ self.send_to_shipper()
+ return res
+
+ # Signature due to strange old api methods
+ @api.model
+ def _prepare_shipping_invoice_line(self, picking, invoice):
+ picking.ensure_one()
+ invoice.ensure_one()
+
+ carrier = picking.carrier_id
+
+ # No carrier
+ if not carrier:
+ return None
+ # Carrier already invoiced on the sale order
+ if any(inv_line.product_id.id == carrier.product_id.id for inv_line in invoice.invoice_line_ids):
+ return None
+
+ # Classic carrier
+ if carrier.delivery_type == 'grid':
+ return super(StockPicking, self)._prepare_shipping_invoice_line(picking, invoice)
+
+ # Shipping provider
+ price = picking.carrier_price
+
+ account_id = carrier.product_id.property_account_income.id
+ if not account_id:
+ account_id = carrier.product_id.categ_id.property_account_income_categ.id
+
+ taxes = carrier.product_id.taxes_id
+ taxes_ids = taxes.ids
+
+ # Apply original SO fiscal position
+ if picking.sale_id.fiscal_position_id:
+ fpos = picking.sale_id.fiscal_position_id
+ account_id = fpos.map_account(account_id)
+ taxes_ids = fpos.map_tax(taxes).ids
+
+ res = {
+ 'name': carrier.name,
+ 'invoice_id': invoice.id,
+ 'uos_id': carrier.product_id.uos_id.id,
+ 'product_id': carrier.product_id.id,
+ 'account_id': account_id,
+ 'price_unit': price,
+ 'quantity': 1,
+ 'invoice_line_tax_id': [(6, 0, taxes_ids)],
+ }
+
+ return res
+
+ @api.one
+ def send_to_shipper(self):
+ res = self.carrier_id.send_shipping(self)[0]
+ self.carrier_price = res['exact_price']
+ self.carrier_tracking_ref = res['tracking_number']
+ msg = "Shipment sent to carrier %s for expedition with tracking number %s" % (self.carrier_id.name, self.carrier_tracking_ref)
+ self.message_post(body=msg)
+
+ @api.multi
+ def open_website_url(self):
+ self.ensure_one()
+
+ client_action = {'type': 'ir.actions.act_url',
+ 'name': "Shipment Tracking Page",
+ 'target': 'new',
+ 'url': self.carrier_id.get_tracking_link(self)[0]
+ }
+ return client_action
+
+ @api.one
+ def cancel_shipment(self):
+ self.carrier_id.cancel_shipment(self)
+ msg = "Shipment %s cancelled" % self.carrier_tracking_ref
+ self.message_post(body=msg)
+ self.carrier_tracking_ref = False
diff --git a/addons/delivery/stock.py b/addons/delivery/stock.py
index 3bd3a837f30..600ac2023ac 100644
--- a/addons/delivery/stock.py
+++ b/addons/delivery/stock.py
@@ -64,6 +64,7 @@ class stock_picking(osv.osv):
"""
carrier_obj = self.pool.get('delivery.carrier')
grid_obj = self.pool.get('delivery.grid')
+ fpos_obj = self.pool['account.fiscal.position']
if not picking.carrier_id or \
any(inv_line.product_id.id == picking.carrier_id.product_id.id
for inv_line in invoice.invoice_line_ids):
@@ -82,12 +83,15 @@ class stock_picking(osv.osv):
.property_account_income_categ_id.id
taxes = picking.carrier_id.product_id.taxes_id
+ taxes_ids = [x.id for x in taxes]
partner = picking.partner_id or False
- if partner:
- account_id = self.pool.get('account.fiscal.position').map_account(cr, uid, partner.property_account_position_id, account_id)
- taxes_ids = self.pool.get('account.fiscal.position').map_tax(cr, uid, partner.property_account_position_id, taxes)
- else:
- taxes_ids = [x.id for x in taxes]
+ fpos = None
+ if picking.sale_id and picking.sale_id.fiscal_position_id:
+ fpos = picking.sale_id.fiscal_position_id
+ elif picking.partner_id:
+ fpos = partner.property_account_position_id
+ account_id = fpos_obj.map_account(cr, uid, fpos, account_id, context=context)
+ taxes_ids = fpos_obj.map_tax(cr, uid, fpos, taxes, context=context)
return {
'name': picking.carrier_id.name,
diff --git a/addons/document/wizard/document_configuration_view.xml b/addons/document/wizard/document_configuration_view.xml
index f837ebd09ef..dad1a88052e 100644
--- a/addons/document/wizard/document_configuration_view.xml
+++ b/addons/document/wizard/document_configuration_view.xml
@@ -29,9 +29,5 @@
new
-
-
- automatic
-
diff --git a/addons/event/event.py b/addons/event/event.py
index 2293d192366..b9d49e22b25 100644
--- a/addons/event/event.py
+++ b/addons/event/event.py
@@ -79,6 +79,9 @@ class event_event(models.Model):
seats_used = fields.Integer(
oldname='register_attended', string='Number of Participations',
store=True, readonly=True, compute='_compute_seats')
+ seats_expected = fields.Integer(
+ string='Number of Expected Attendees',
+ readonly=True, compute='_compute_seats')
@api.multi
@api.depends('seats_max', 'registration_ids.state')
@@ -107,6 +110,7 @@ class event_event(models.Model):
for event in self:
if event.seats_max > 0:
event.seats_available = event.seats_max - (event.seats_reserved + event.seats_used)
+ event.seats_expected = event.seats_unconfirmed + event.seats_reserved + event.seats_used
# Registration fields
registration_ids = fields.One2many(
@@ -250,7 +254,7 @@ class event_event(models.Model):
return res
@api.one
- def mail_attendees(self, template_id, force_send=True, filter_func=lambda self: True):
+ def mail_attendees(self, template_id, force_send=False, filter_func=lambda self: True):
for attendee in self.registration_ids.filtered(filter_func):
self.env['mail.template'].browse(template_id).send_mail(attendee.id, force_send=force_send)
@@ -336,7 +340,11 @@ class event_registration(models.Model):
body=_('New registration confirmed: %s.') % (self.name or ''),
subtype="event.mt_event_registration")
self.state = 'open'
- self.env['event.mail'].run()
+
+ # auto-trigger after_sub (on subscribe) mail schedulers, if needed
+ onsubscribe_schedulers = self.event_id.event_mail_ids.filtered(
+ lambda s: s.interval_type == 'after_sub')
+ onsubscribe_schedulers.execute()
@api.one
def button_reg_close(self):
diff --git a/addons/event/event_data.xml b/addons/event/event_data.xml
index 2419132f409..b2babe25281 100644
--- a/addons/event/event_data.xml
+++ b/addons/event/event_data.xml
@@ -39,7 +39,7 @@
hours
-1
-
+
event.mail
run
diff --git a/addons/event/event_mail.py b/addons/event/event_mail.py
index 7495284c762..d6db023bcd7 100644
--- a/addons/event/event_mail.py
+++ b/addons/event/event_mail.py
@@ -84,9 +84,13 @@ class EventMailScheduler(models.Model):
return True
@api.model
- def run(self):
+ def run(self, autocommit=False):
schedulers = self.search([('done', '=', False), ('scheduled_date', '<=', datetime.strftime(fields.datetime.now(), tools.DEFAULT_SERVER_DATETIME_FORMAT))])
- return schedulers.execute()
+ for scheduler in schedulers:
+ scheduler.execute()
+ if autocommit:
+ self.env.cr.commit()
+ return True
class EventMailRegistration(models.Model):
diff --git a/addons/event/event_view.xml b/addons/event/event_view.xml
index f291824afe7..bd90a57919c 100644
--- a/addons/event/event_view.xml
+++ b/addons/event/event_view.xml
@@ -48,7 +48,7 @@
form
Attendees
tree,form,calendar,graph
-
{'search_default_event_id': active_id, 'default_event_id': active_id, 'search_default_not_cancelled': 1}
+
{'search_default_event_id': active_id, 'default_event_id': active_id, 'search_default_expected': True}
@@ -71,7 +71,7 @@
class="oe_stat_button oe_event_attendee_button"
icon="fa-github"
help="Register with this event">
-
+
@@ -158,6 +158,8 @@
+
+
@@ -191,11 +193,11 @@
@@ -368,7 +370,7 @@
-
+
diff --git a/addons/event/tests/test_mail_schedule.py b/addons/event/tests/test_mail_schedule.py
index c712e48919f..f92cf0fcc5b 100644
--- a/addons/event/tests/test_mail_schedule.py
+++ b/addons/event/tests/test_mail_schedule.py
@@ -48,27 +48,12 @@ class TestMailSchedule(TestEventCommon):
'email': 'reg1@example.com',
})
- # check before event scheduler
- schedulers = self.EventMail.search([('event_id', '=', test_event.id), ('interval_type', '=', 'before_event')])
- self.assertEqual(len(schedulers), 1, 'event: wrong scheduler creation')
- self.assertEqual(schedulers[0].scheduled_date, datetime.datetime.strftime(event_date_begin + relativedelta(days=-2), tools.DEFAULT_SERVER_DATETIME_FORMAT), 'event: incorrect scheduled date')
-
- # execute event reminder scheduler
- schedulers[0].execute()
-
- self.assertTrue(schedulers[0].mail_sent, 'event: reminder scheduler should have sent an email')
- self.assertTrue(schedulers[0].done, 'event: reminder scheduler should be done')
-
- mails = self.env['mail.mail'].search([('subject', 'ilike', 'reminder'), ('date', '>=', datetime.datetime.strftime(now, tools.DEFAULT_SERVER_DATETIME_FORMAT))], order='date DESC', limit=3)
- self.assertEqual(len(mails), 0, 'event: reminder to sent is not empty')
-
# check subscription scheduler
schedulers = self.EventMail.search([('event_id', '=', test_event.id), ('interval_type', '=', 'after_sub')])
self.assertEqual(len(schedulers), 1, 'event: wrong scheduler creation')
self.assertEqual(schedulers[0].scheduled_date, test_event.create_date, 'event: incorrect scheduled date for checking controller')
- # execute subscription scheduler
- schedulers[0].execute()
+ # verify that subscription scheduler was auto-executed after each registration
self.assertEqual(len(schedulers[0].mail_registration_ids), 2, 'event: incorrect number of mail scheduled date')
mails = self.env['mail.mail'].search([('subject', 'ilike', 'subscription'), ('date', '>=', datetime.datetime.strftime(now, tools.DEFAULT_SERVER_DATETIME_FORMAT))], order='date DESC', limit=3)
@@ -76,3 +61,19 @@ class TestMailSchedule(TestEventCommon):
for registration in schedulers[0].mail_registration_ids:
self.assertTrue(registration.mail_sent, 'event: wrongly confirmed mailing on subscription')
+
+ # check before event scheduler
+ schedulers = self.EventMail.search([('event_id', '=', test_event.id), ('interval_type', '=', 'before_event')])
+ self.assertEqual(len(schedulers), 1, 'event: wrong scheduler creation')
+ self.assertEqual(schedulers[0].scheduled_date, datetime.datetime.strftime(event_date_begin + relativedelta(days=-2), tools.DEFAULT_SERVER_DATETIME_FORMAT), 'event: incorrect scheduled date')
+
+ # execute event reminder scheduler explicitly
+ schedulers[0].execute()
+
+ self.assertTrue(schedulers[0].mail_sent, 'event: reminder scheduler should have sent an email')
+ self.assertTrue(schedulers[0].done, 'event: reminder scheduler should be done')
+
+ mails = self.env['mail.mail'].search([('subject', 'ilike', 'reminder'), ('date', '>=', datetime.datetime.strftime(now, tools.DEFAULT_SERVER_DATETIME_FORMAT))], order='date DESC', limit=3)
+ self.assertEqual(len(mails), 2, 'event: wrong number of reminders in outgoing mail queue')
+
+
diff --git a/addons/google_calendar/google_calendar.py b/addons/google_calendar/google_calendar.py
index df90f78f5d1..1bcbad15413 100644
--- a/addons/google_calendar/google_calendar.py
+++ b/addons/google_calendar/google_calendar.py
@@ -85,12 +85,13 @@ class SyncEvent(object):
def compute_OP(self, modeFull=True):
#If event are already in Gmail and in OpenERP
if self.OE.found and self.GG.found:
+ is_owner = self.OE.event.env.user.id == self.OE.event.user_id.id
#If the event has been deleted from one side, we delete on other side !
- if self.OE.status != self.GG.status:
+ if self.OE.status != self.GG.status and is_owner:
self.OP = Delete((self.OE.status and "OE") or (self.GG.status and "GG"),
'The event has been deleted from one side, we delete on other side !')
#If event is not deleted !
- elif self.OE.status and self.GG.status:
+ elif self.OE.status and (self.GG.status or not is_owner):
if self.OE.update.split('.')[0] != self.GG.update.split('.')[0]:
if self.OE.update < self.GG.update:
tmpSrc = 'GG'
@@ -423,7 +424,7 @@ class google_calendar(osv.AbstractModel):
if type == "write":
for oe_attendee in event['attendee_ids']:
if oe_attendee.email == google_attendee['email']:
- calendar_attendee_obj.write(cr, uid, [oe_attendee.id], {'state': google_attendee['responseStatus']}, context=context)
+ calendar_attendee_obj.write(cr, uid, [oe_attendee.id], {'state': google_attendee['responseStatus'], 'google_internal_event_id': single_event_dict.get('id')}, context=context)
google_attendee['found'] = True
continue
@@ -442,6 +443,7 @@ class google_calendar(osv.AbstractModel):
partner_record.append((4, attendee.get('id')))
attendee['partner_id'] = attendee.pop('id')
attendee['state'] = google_attendee['responseStatus']
+ attendee['google_internal_event_id'] = single_event_dict.get('id')
attendee_record.append((0, 0, attendee))
for google_alarm in single_event_dict.get('reminders', {}).get('overrides', []):
alarm_id = calendar_alarm_obj.search(
@@ -626,7 +628,7 @@ class google_calendar(osv.AbstractModel):
update_date = datetime.strptime(response['updated'], "%Y-%m-%dT%H:%M:%S.%fz")
ev_obj.write(cr, uid, att.event_id.id, {'oe_update_date': update_date})
new_ids.append(response['id'])
- att_obj.write(cr, uid, [att.id], {'google_internal_event_id': response['id'], 'oe_synchro_date': update_date})
+ att_obj.write(cr, uid, [att.id for att in att.event_id.attendee_ids], {'google_internal_event_id': response['id'], 'oe_synchro_date': update_date})
cr.commit()
else:
_logger.warning("Impossible to create event %s. [%s] Enable DEBUG for response detail.", att.event_id.id, st)
@@ -946,7 +948,7 @@ class google_calendar(osv.AbstractModel):
self.pool['res.users'].write(cr, SUPERUSER_ID, uid, vals, context=context)
def get_minTime(self, cr, uid, context=None):
- number_of_week = self.pool['ir.config_parameter'].get_param(cr, uid, 'calendar.week_synchro', default=13)
+ number_of_week = int(self.pool['ir.config_parameter'].get_param(cr, uid, 'calendar.week_synchro', default=13))
return datetime.now() - timedelta(weeks=number_of_week)
def get_need_synchro_attendee(self, cr, uid, context=None):
diff --git a/addons/hr_applicant_document/views/hr_applicant.xml b/addons/hr_applicant_document/views/hr_applicant.xml
index d5582db34f5..49ebec5946b 100644
--- a/addons/hr_applicant_document/views/hr_applicant.xml
+++ b/addons/hr_applicant_document/views/hr_applicant.xml
@@ -20,6 +20,7 @@
kanban,tree,form
[('res_model','=','hr.applicant')]
+
Search through resumes and motivation letters.
diff --git a/addons/hr_gamification/wizard/grant_badge.py b/addons/hr_gamification/wizard/grant_badge.py
index e03fbfe9ad8..634a6f8fd28 100644
--- a/addons/hr_gamification/wizard/grant_badge.py
+++ b/addons/hr_gamification/wizard/grant_badge.py
@@ -13,7 +13,7 @@ class hr_grant_badge_wizard(osv.TransientModel):
'employee_id': fields.many2one("hr.employee", string='Employee', required=True),
'user_id': fields.related("employee_id", "user_id",
type="many2one", relation="res.users",
- store=True, string='User')
+ store=True, string='User', required=True)
}
def action_grant_badge(self, cr, uid, ids, context=None):
@@ -40,4 +40,4 @@ class hr_grant_badge_wizard(osv.TransientModel):
badge_user = badge_user_obj.create(cr, uid, values, context=context)
result = badge_user_obj._send_badge(cr, uid, [badge_user], context=context)
- return result
\ No newline at end of file
+ return result
diff --git a/addons/hr_payroll/hr_payroll.py b/addons/hr_payroll/hr_payroll.py
index d449015405e..2f221802dd2 100644
--- a/addons/hr_payroll/hr_payroll.py
+++ b/addons/hr_payroll/hr_payroll.py
@@ -262,7 +262,7 @@ class hr_payslip(osv.osv):
\n* When user cancel payslip the status is \'Rejected\'.'),
'line_ids': one2many_mod2('hr.payslip.line', 'slip_id', 'Payslip Lines', readonly=True, states={'draft':[('readonly',False)]}),
'company_id': fields.many2one('res.company', 'Company', required=False, readonly=True, states={'draft': [('readonly', False)]}, copy=False),
- 'worked_days_line_ids': fields.one2many('hr.payslip.worked_days', 'payslip_id', 'Payslip Worked Days', required=False, readonly=True, states={'draft': [('readonly', False)]}),
+ 'worked_days_line_ids': fields.one2many('hr.payslip.worked_days', 'payslip_id', 'Payslip Worked Days', copy=True, required=False, readonly=True, states={'draft': [('readonly', False)]}),
'input_line_ids': fields.one2many('hr.payslip.input', 'payslip_id', 'Payslip Inputs', required=False, readonly=True, states={'draft': [('readonly', False)]}),
'paid': fields.boolean('Made Payment Order ? ', required=False, readonly=True, states={'draft': [('readonly', False)]}, copy=False),
'note': fields.text('Internal Note', readonly=True, states={'draft':[('readonly',False)]}),
@@ -304,7 +304,6 @@ class hr_payslip(osv.osv):
mod_obj = self.pool.get('ir.model.data')
for payslip in self.browse(cr, uid, ids, context=context):
id_copy = self.copy(cr, uid, payslip.id, {'credit_note': True, 'name': _('Refund: ')+payslip.name}, context=context)
- self.compute_sheet(cr, uid, [id_copy], context=context)
self.signal_workflow(cr, uid, [id_copy], 'hr_verify_sheet')
self.signal_workflow(cr, uid, [id_copy], 'process_sheet')
diff --git a/addons/hr_timesheet_invoice/hr_timesheet_invoice_view.xml b/addons/hr_timesheet_invoice/hr_timesheet_invoice_view.xml
index 967da3c3f17..69837e9fe72 100644
--- a/addons/hr_timesheet_invoice/hr_timesheet_invoice_view.xml
+++ b/addons/hr_timesheet_invoice/hr_timesheet_invoice_view.xml
@@ -14,7 +14,7 @@
-
+
diff --git a/addons/l10n_be/account_fiscal_position_tax_template.xml b/addons/l10n_be/account_fiscal_position_tax_template.xml
index 79ad1bf0a53..cb6df0384df 100644
--- a/addons/l10n_be/account_fiscal_position_tax_template.xml
+++ b/addons/l10n_be/account_fiscal_position_tax_template.xml
@@ -223,5 +223,105 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/addons/l10n_be/fiscal_templates.xml b/addons/l10n_be/fiscal_templates.xml
index 26e6accf645..fa482443db5 100644
--- a/addons/l10n_be/fiscal_templates.xml
+++ b/addons/l10n_be/fiscal_templates.xml
@@ -18,7 +18,11 @@
Régime Intra-Communautaire
-
+
+
+ Régime Cocontractant
+
+
diff --git a/addons/l10n_be/l10n_be_sequence.xml b/addons/l10n_be/l10n_be_sequence.xml
index f6a9bcec651..8ce7eef4239 100644
--- a/addons/l10n_be/l10n_be_sequence.xml
+++ b/addons/l10n_be/l10n_be_sequence.xml
@@ -8,6 +8,7 @@
Declarantnum
declarantnum
5
+
diff --git a/addons/l10n_be_invoice_bba/invoice.py b/addons/l10n_be_invoice_bba/invoice.py
index 9da1d83fbc3..d3b3c057944 100644
--- a/addons/l10n_be_invoice_bba/invoice.py
+++ b/addons/l10n_be_invoice_bba/invoice.py
@@ -195,7 +195,7 @@ class account_invoice(osv.osv):
_columns = {
'reference_type': fields.selection(_get_reference_type, 'Communication Type',
- required=True),
+ required=True, readonly=True),
}
_constraints = [
(_check_communication, 'Invalid BBA Structured Communication !', ['Communication']),
diff --git a/addons/l10n_lu/__openerp__.py b/addons/l10n_lu/__openerp__.py
index 4e78c376739..0358c884ce6 100644
--- a/addons/l10n_lu/__openerp__.py
+++ b/addons/l10n_lu/__openerp__.py
@@ -3,6 +3,7 @@
# Copyright (C) 2011 Thamini S.à.R.L ()
# Copyright (C) 2011 ADN Consultants S.à.R.L ()
+# Copyright (C) 2014 ACSONE SA/NV ()
{
'name': 'Luxembourg - Accounting',
@@ -12,12 +13,18 @@
This is the base module to manage the accounting chart for Luxembourg.
======================================================================
- * the Luxembourg Official Chart of Accounts (law of June 2009 + 2011 chart and Taxes),
+ * the Luxembourg Official Chart of Accounts (law of June 2009 + 2015 chart and Taxes),
* the Tax Code Chart for Luxembourg
* the main taxes used in Luxembourg
- * default fiscal position for local, intracom, extracom """,
- 'author': 'OpenERP SA & ADN',
- 'website': 'http://www.openerp.com http://www.adn-luxembourg.com',
+ * default fiscal position for local, intracom, extracom
+
+Notes:
+ * the 2015 chart of taxes is implemented to a large extent,
+ see the first sheet of tax.xls for details of coverage
+ * to update the chart of tax template, update tax.xls and run tax2csv.py
+""",
+ 'author': 'OpenERP SA, ADN, ACSONE SA/NV',
+ 'website': 'https://www.odoo.com',
'depends': ['account', 'base_vat', 'base_iban'],
'data': [
# basic accounting data
@@ -26,10 +33,9 @@ This is the base module to manage the accounting chart for Luxembourg.
'account.account.type-2011.csv',
'account.account.template-2011.csv',
'account_chart_template.xml',
- 'account.tax.template-2011.csv',
- # Change BRE: adds fiscal position
+ 'account.tax.template-2015.csv',
'account.fiscal.position.template-2011.csv',
- 'account.fiscal.position.tax.template-2011.csv',
+ 'account.fiscal.position.tax.template-2015.csv',
# configuration wizard, views, reports...
'l10n_lu_wizard.xml',
],
diff --git a/addons/l10n_lu/account.fiscal.position.tax.template-2011.csv b/addons/l10n_lu/account.fiscal.position.tax.template-2015.csv
similarity index 56%
rename from addons/l10n_lu/account.fiscal.position.tax.template-2011.csv
rename to addons/l10n_lu/account.fiscal.position.tax.template-2015.csv
index 588241a7c6c..aaaf7634bd8 100644
--- a/addons/l10n_lu/account.fiscal.position.tax.template-2011.csv
+++ b/addons/l10n_lu/account.fiscal.position.tax.template-2015.csv
@@ -1,79 +1,126 @@
id,position_id:id,tax_src_id:id,tax_dest_id:id
-fiscal_position_tax_template_LU_1,account_fiscal_position_template_LU_IC,lu_2011_tax_VB-PA-15,lu_2011_tax_VB-IC-15
-fiscal_position_tax_template_LU_2,account_fiscal_position_template_LU_IC,lu_2011_tax_VB-PA-12,lu_2011_tax_VB-IC-12
-fiscal_position_tax_template_LU_3,account_fiscal_position_template_LU_IC,lu_2011_tax_VB-PA-6,lu_2011_tax_VB-IC-6
-fiscal_position_tax_template_LU_4,account_fiscal_position_template_LU_IC,lu_2011_tax_VB-PA-3,lu_2011_tax_VB-IC-3
+fiscal_position_tax_template_LU_85,account_fiscal_position_template_LU_IC,lu_2015_tax_VB-PA-17,lu_2011_tax_VB-IC-0
+fiscal_position_tax_template_LU_1,account_fiscal_position_template_LU_IC,lu_2011_tax_VB-PA-15,lu_2011_tax_VB-IC-0
+fiscal_position_tax_template_LU_86,account_fiscal_position_template_LU_IC,lu_2015_tax_VB-PA-14,lu_2011_tax_VB-IC-0
+fiscal_position_tax_template_LU_2,account_fiscal_position_template_LU_IC,lu_2011_tax_VB-PA-12,lu_2011_tax_VB-IC-0
+fiscal_position_tax_template_LU_87,account_fiscal_position_template_LU_IC,lu_2015_tax_VB-PA-8,lu_2011_tax_VB-IC-0
+fiscal_position_tax_template_LU_3,account_fiscal_position_template_LU_IC,lu_2011_tax_VB-PA-6,lu_2011_tax_VB-IC-0
+fiscal_position_tax_template_LU_4,account_fiscal_position_template_LU_IC,lu_2011_tax_VB-PA-3,lu_2011_tax_VB-IC-0
fiscal_position_tax_template_LU_5,account_fiscal_position_template_LU_IC,lu_2011_tax_VB-PA-0,lu_2011_tax_VB-IC-0
-fiscal_position_tax_template_LU_6,account_fiscal_position_template_LU_IC,lu_2011_tax_VP-PA-15,lu_2011_tax_VP-IC-15
-fiscal_position_tax_template_LU_7,account_fiscal_position_template_LU_IC,lu_2011_tax_VP-PA-12,lu_2011_tax_VP-IC-12
-fiscal_position_tax_template_LU_8,account_fiscal_position_template_LU_IC,lu_2011_tax_VP-PA-6,lu_2011_tax_VP-IC-6
-fiscal_position_tax_template_LU_9,account_fiscal_position_template_LU_IC,lu_2011_tax_VP-PA-3,lu_2011_tax_VP-IC-3
+fiscal_position_tax_template_LU_88,account_fiscal_position_template_LU_IC,lu_2015_tax_VP-PA-17,lu_2011_tax_VP-IC-0
+fiscal_position_tax_template_LU_89,account_fiscal_position_template_LU_IC,lu_2015_tax_VP-PA-14,lu_2011_tax_VP-IC-0
+fiscal_position_tax_template_LU_90,account_fiscal_position_template_LU_IC,lu_2015_tax_VP-PA-8,lu_2011_tax_VP-IC-0
+fiscal_position_tax_template_LU_6,account_fiscal_position_template_LU_IC,lu_2011_tax_VP-PA-15,lu_2011_tax_VP-IC-0
+fiscal_position_tax_template_LU_7,account_fiscal_position_template_LU_IC,lu_2011_tax_VP-PA-12,lu_2011_tax_VP-IC-0
+fiscal_position_tax_template_LU_8,account_fiscal_position_template_LU_IC,lu_2011_tax_VP-PA-6,lu_2011_tax_VP-IC-0
+fiscal_position_tax_template_LU_9,account_fiscal_position_template_LU_IC,lu_2011_tax_VP-PA-3,lu_2011_tax_VP-IC-0
+fiscal_position_tax_template_LU_91,account_fiscal_position_template_LU_IC,lu_2015_tax_FB-PA-17,lu_2015_tax_FB-IC-17
+fiscal_position_tax_template_LU_92,account_fiscal_position_template_LU_IC,lu_2015_tax_FB-PA-14,lu_2015_tax_FB-IC-14
+fiscal_position_tax_template_LU_93,account_fiscal_position_template_LU_IC,lu_2015_tax_FB-PA-8,lu_2015_tax_FB-IC-8
fiscal_position_tax_template_LU_11,account_fiscal_position_template_LU_IC,lu_2011_tax_FB-PA-15,lu_2011_tax_FB-IC-15
fiscal_position_tax_template_LU_12,account_fiscal_position_template_LU_IC,lu_2011_tax_FB-PA-12,lu_2011_tax_FB-IC-12
fiscal_position_tax_template_LU_13,account_fiscal_position_template_LU_IC,lu_2011_tax_FB-PA-6,lu_2011_tax_FB-IC-6
fiscal_position_tax_template_LU_14,account_fiscal_position_template_LU_IC,lu_2011_tax_FB-PA-3,lu_2011_tax_FB-IC-3
fiscal_position_tax_template_LU_15,account_fiscal_position_template_LU_IC,lu_2011_tax_FB-PA-0,lu_2011_tax_FB-IC-0
+fiscal_position_tax_template_LU_94,account_fiscal_position_template_LU_IC,lu_2015_tax_FP-PA-17,lu_2015_tax_FP-IC-17
+fiscal_position_tax_template_LU_95,account_fiscal_position_template_LU_IC,lu_2015_tax_FP-PA-14,lu_2015_tax_FP-IC-14
+fiscal_position_tax_template_LU_96,account_fiscal_position_template_LU_IC,lu_2015_tax_FP-PA-8,lu_2015_tax_FP-IC-8
fiscal_position_tax_template_LU_16,account_fiscal_position_template_LU_IC,lu_2011_tax_FP-PA-15,lu_2011_tax_FP-IC-15
fiscal_position_tax_template_LU_17,account_fiscal_position_template_LU_IC,lu_2011_tax_FP-PA-12,lu_2011_tax_FP-IC-12
fiscal_position_tax_template_LU_18,account_fiscal_position_template_LU_IC,lu_2011_tax_FP-PA-6,lu_2011_tax_FP-IC-6
fiscal_position_tax_template_LU_19,account_fiscal_position_template_LU_IC,lu_2011_tax_FP-PA-3,lu_2011_tax_FP-IC-3
fiscal_position_tax_template_LU_20,account_fiscal_position_template_LU_IC,lu_2011_tax_FP-PA-0,lu_2011_tax_FP-IC-0
+fiscal_position_tax_template_LU_97,account_fiscal_position_template_LU_IC,lu_2015_tax_IB-PA-17,lu_2015_tax_IB-IC-17
+fiscal_position_tax_template_LU_98,account_fiscal_position_template_LU_IC,lu_2015_tax_IB-PA-14,lu_2015_tax_IB-IC-14
+fiscal_position_tax_template_LU_99,account_fiscal_position_template_LU_IC,lu_2015_tax_IB-PA-8,lu_2015_tax_IB-IC-8
fiscal_position_tax_template_LU_21,account_fiscal_position_template_LU_IC,lu_2011_tax_IB-PA-15,lu_2011_tax_IB-IC-15
fiscal_position_tax_template_LU_22,account_fiscal_position_template_LU_IC,lu_2011_tax_IB-PA-12,lu_2011_tax_IB-IC-12
fiscal_position_tax_template_LU_23,account_fiscal_position_template_LU_IC,lu_2011_tax_IB-PA-6,lu_2011_tax_IB-IC-6
fiscal_position_tax_template_LU_24,account_fiscal_position_template_LU_IC,lu_2011_tax_IB-PA-3,lu_2011_tax_IB-IC-3
fiscal_position_tax_template_LU_25,account_fiscal_position_template_LU_IC,lu_2011_tax_IB-PA-0,lu_2011_tax_IB-IC-0
+fiscal_position_tax_template_LU_100,account_fiscal_position_template_LU_IC,lu_2015_tax_IP-PA-17,lu_2015_tax_IP-IC-17
+fiscal_position_tax_template_LU_101,account_fiscal_position_template_LU_IC,lu_2015_tax_IP-PA-14,lu_2015_tax_IP-IC-14
+fiscal_position_tax_template_LU_102,account_fiscal_position_template_LU_IC,lu_2015_tax_IP-PA-8,lu_2015_tax_IP-IC-8
fiscal_position_tax_template_LU_26,account_fiscal_position_template_LU_IC,lu_2011_tax_IP-PA-15,lu_2011_tax_IP-IC-15
fiscal_position_tax_template_LU_27,account_fiscal_position_template_LU_IC,lu_2011_tax_IP-PA-12,lu_2011_tax_IP-IC-12
fiscal_position_tax_template_LU_28,account_fiscal_position_template_LU_IC,lu_2011_tax_IP-PA-6,lu_2011_tax_IP-IC-6
fiscal_position_tax_template_LU_29,account_fiscal_position_template_LU_IC,lu_2011_tax_IP-PA-3,lu_2011_tax_IP-IC-3
fiscal_position_tax_template_LU_30,account_fiscal_position_template_LU_IC,lu_2011_tax_IP-PA-0,lu_2011_tax_IP-IC-0
+fiscal_position_tax_template_LU_103,account_fiscal_position_template_LU_IC,lu_2015_tax_AB-PA-17,lu_2015_tax_AB-IC-17
+fiscal_position_tax_template_LU_104,account_fiscal_position_template_LU_IC,lu_2015_tax_AB-PA-14,lu_2015_tax_AB-IC-14
+fiscal_position_tax_template_LU_105,account_fiscal_position_template_LU_IC,lu_2015_tax_AB-PA-8,lu_2015_tax_AB-IC-8
fiscal_position_tax_template_LU_31,account_fiscal_position_template_LU_IC,lu_2011_tax_AB-PA-15,lu_2011_tax_AB-IC-15
fiscal_position_tax_template_LU_32,account_fiscal_position_template_LU_IC,lu_2011_tax_AB-PA-12,lu_2011_tax_AB-IC-12
-fiscal_position_tax_template_LU_33,account_fiscal_position_template_LU_IC,lu_2011_tax_AB-PA-9,lu_2011_tax_AB-IC-9
fiscal_position_tax_template_LU_34,account_fiscal_position_template_LU_IC,lu_2011_tax_AB-PA-6,lu_2011_tax_AB-IC-6
fiscal_position_tax_template_LU_35,account_fiscal_position_template_LU_IC,lu_2011_tax_AB-PA-3,lu_2011_tax_AB-IC-3
fiscal_position_tax_template_LU_36,account_fiscal_position_template_LU_IC,lu_2011_tax_AB-PA-0,lu_2011_tax_AB-IC-0
+fiscal_position_tax_template_LU_106,account_fiscal_position_template_LU_IC,lu_2015_tax_AP-PA-17,lu_2015_tax_AP-IC-17
+fiscal_position_tax_template_LU_107,account_fiscal_position_template_LU_IC,lu_2015_tax_AP-PA-14,lu_2015_tax_AP-IC-14
+fiscal_position_tax_template_LU_108,account_fiscal_position_template_LU_IC,lu_2015_tax_AP-PA-8,lu_2015_tax_AP-IC-8
fiscal_position_tax_template_LU_37,account_fiscal_position_template_LU_IC,lu_2011_tax_AP-PA-15,lu_2011_tax_AP-IC-15
fiscal_position_tax_template_LU_38,account_fiscal_position_template_LU_IC,lu_2011_tax_AP-PA-12,lu_2011_tax_AP-IC-12
fiscal_position_tax_template_LU_40,account_fiscal_position_template_LU_IC,lu_2011_tax_AP-PA-6,lu_2011_tax_AP-IC-6
fiscal_position_tax_template_LU_41,account_fiscal_position_template_LU_IC,lu_2011_tax_AP-PA-3,lu_2011_tax_AP-IC-3
fiscal_position_tax_template_LU_42,account_fiscal_position_template_LU_IC,lu_2011_tax_AP-PA-0,lu_2011_tax_AP-IC-0
-fiscal_position_tax_template_LU_43,account_fiscal_position_template_LU_EC,lu_2011_tax_VB-PA-15,lu_2011_tax_VB-EC-15
-fiscal_position_tax_template_LU_44,account_fiscal_position_template_LU_EC,lu_2011_tax_VB-PA-12,lu_2011_tax_VB-EC-12
-fiscal_position_tax_template_LU_45,account_fiscal_position_template_LU_EC,lu_2011_tax_VB-PA-6,lu_2011_tax_VB-EC-6
-fiscal_position_tax_template_LU_46,account_fiscal_position_template_LU_EC,lu_2011_tax_VB-PA-3,lu_2011_tax_VB-EC-3
+fiscal_position_tax_template_LU_109,account_fiscal_position_template_LU_EC,lu_2015_tax_VB-PA-17,lu_2011_tax_VB-EC-0
+fiscal_position_tax_template_LU_110,account_fiscal_position_template_LU_EC,lu_2015_tax_VB-PA-14,lu_2011_tax_VB-EC-0
+fiscal_position_tax_template_LU_111,account_fiscal_position_template_LU_EC,lu_2015_tax_VB-PA-8,lu_2011_tax_VB-EC-0
+fiscal_position_tax_template_LU_43,account_fiscal_position_template_LU_EC,lu_2011_tax_VB-PA-15,lu_2011_tax_VB-EC-0
+fiscal_position_tax_template_LU_44,account_fiscal_position_template_LU_EC,lu_2011_tax_VB-PA-12,lu_2011_tax_VB-EC-0
+fiscal_position_tax_template_LU_45,account_fiscal_position_template_LU_EC,lu_2011_tax_VB-PA-6,lu_2011_tax_VB-EC-0
+fiscal_position_tax_template_LU_46,account_fiscal_position_template_LU_EC,lu_2011_tax_VB-PA-3,lu_2011_tax_VB-EC-0
fiscal_position_tax_template_LU_47,account_fiscal_position_template_LU_EC,lu_2011_tax_VB-PA-0,lu_2011_tax_VB-EC-0
-fiscal_position_tax_template_LU_48,account_fiscal_position_template_LU_EC,lu_2011_tax_VP-PA-15,lu_2011_tax_VP-EC-15
-fiscal_position_tax_template_LU_49,account_fiscal_position_template_LU_EC,lu_2011_tax_VP-PA-12,lu_2011_tax_VP-EC-12
-fiscal_position_tax_template_LU_50,account_fiscal_position_template_LU_EC,lu_2011_tax_VP-PA-6,lu_2011_tax_VP-EC-6
-fiscal_position_tax_template_LU_51,account_fiscal_position_template_LU_EC,lu_2011_tax_VP-PA-3,lu_2011_tax_VP-EC-3
+fiscal_position_tax_template_LU_112,account_fiscal_position_template_LU_EC,lu_2015_tax_VP-PA-17,lu_2011_tax_VP-EC-0
+fiscal_position_tax_template_LU_113,account_fiscal_position_template_LU_EC,lu_2015_tax_VP-PA-14,lu_2011_tax_VP-EC-0
+fiscal_position_tax_template_LU_114,account_fiscal_position_template_LU_EC,lu_2015_tax_VP-PA-8,lu_2011_tax_VP-EC-0
+fiscal_position_tax_template_LU_48,account_fiscal_position_template_LU_EC,lu_2011_tax_VP-PA-15,lu_2011_tax_VP-EC-0
+fiscal_position_tax_template_LU_49,account_fiscal_position_template_LU_EC,lu_2011_tax_VP-PA-12,lu_2011_tax_VP-EC-0
+fiscal_position_tax_template_LU_50,account_fiscal_position_template_LU_EC,lu_2011_tax_VP-PA-6,lu_2011_tax_VP-EC-0
+fiscal_position_tax_template_LU_51,account_fiscal_position_template_LU_EC,lu_2011_tax_VP-PA-3,lu_2011_tax_VP-EC-0
fiscal_position_tax_template_LU_52,account_fiscal_position_template_LU_EC,lu_2011_tax_VP-PA-0,lu_2011_tax_VP-EC-0
+fiscal_position_tax_template_LU_115,account_fiscal_position_template_LU_EC,lu_2015_tax_FB-PA-17,lu_2015_tax_FB-EC-17
+fiscal_position_tax_template_LU_116,account_fiscal_position_template_LU_EC,lu_2015_tax_FB-PA-14,lu_2015_tax_FB-EC-14
+fiscal_position_tax_template_LU_117,account_fiscal_position_template_LU_EC,lu_2015_tax_FB-PA-8,lu_2015_tax_FB-EC-8
fiscal_position_tax_template_LU_53,account_fiscal_position_template_LU_EC,lu_2011_tax_FB-PA-15,lu_2011_tax_FB-EC-15
fiscal_position_tax_template_LU_54,account_fiscal_position_template_LU_EC,lu_2011_tax_FB-PA-12,lu_2011_tax_FB-EC-12
fiscal_position_tax_template_LU_55,account_fiscal_position_template_LU_EC,lu_2011_tax_FB-PA-6,lu_2011_tax_FB-EC-6
fiscal_position_tax_template_LU_56,account_fiscal_position_template_LU_EC,lu_2011_tax_FB-PA-3,lu_2011_tax_FB-EC-3
fiscal_position_tax_template_LU_57,account_fiscal_position_template_LU_EC,lu_2011_tax_FB-PA-0,lu_2011_tax_FB-EC-0
+fiscal_position_tax_template_LU_118,account_fiscal_position_template_LU_EC,lu_2015_tax_FP-PA-17,lu_2015_tax_FP-EC-17
+fiscal_position_tax_template_LU_119,account_fiscal_position_template_LU_EC,lu_2015_tax_FP-PA-14,lu_2015_tax_FP-EC-14
+fiscal_position_tax_template_LU_120,account_fiscal_position_template_LU_EC,lu_2015_tax_FP-PA-8,lu_2015_tax_FP-EC-8
fiscal_position_tax_template_LU_58,account_fiscal_position_template_LU_EC,lu_2011_tax_FP-PA-15,lu_2011_tax_FP-EC-15
fiscal_position_tax_template_LU_59,account_fiscal_position_template_LU_EC,lu_2011_tax_FP-PA-12,lu_2011_tax_FP-EC-12
fiscal_position_tax_template_LU_60,account_fiscal_position_template_LU_EC,lu_2011_tax_FP-PA-6,lu_2011_tax_FP-EC-6
fiscal_position_tax_template_LU_61,account_fiscal_position_template_LU_EC,lu_2011_tax_FP-PA-3,lu_2011_tax_FP-EC-3
fiscal_position_tax_template_LU_62,account_fiscal_position_template_LU_EC,lu_2011_tax_FP-PA-0,lu_2011_tax_FP-EC-0
+fiscal_position_tax_template_LU_121,account_fiscal_position_template_LU_EC,lu_2015_tax_IB-PA-17,lu_2015_tax_IB-EC-17
+fiscal_position_tax_template_LU_122,account_fiscal_position_template_LU_EC,lu_2015_tax_IB-PA-14,lu_2015_tax_IB-EC-14
+fiscal_position_tax_template_LU_123,account_fiscal_position_template_LU_EC,lu_2015_tax_IB-PA-8,lu_2015_tax_IB-EC-8
fiscal_position_tax_template_LU_63,account_fiscal_position_template_LU_EC,lu_2011_tax_IB-PA-15,lu_2011_tax_IB-EC-15
fiscal_position_tax_template_LU_64,account_fiscal_position_template_LU_EC,lu_2011_tax_IB-PA-12,lu_2011_tax_IB-EC-12
fiscal_position_tax_template_LU_65,account_fiscal_position_template_LU_EC,lu_2011_tax_IB-PA-6,lu_2011_tax_IB-EC-6
fiscal_position_tax_template_LU_66,account_fiscal_position_template_LU_EC,lu_2011_tax_IB-PA-3,lu_2011_tax_IB-EC-3
fiscal_position_tax_template_LU_67,account_fiscal_position_template_LU_EC,lu_2011_tax_IB-PA-0,lu_2011_tax_IB-EC-0
+fiscal_position_tax_template_LU_124,account_fiscal_position_template_LU_EC,lu_2015_tax_IP-PA-17,lu_2015_tax_IP-EC-17
+fiscal_position_tax_template_LU_125,account_fiscal_position_template_LU_EC,lu_2015_tax_IP-PA-14,lu_2015_tax_IP-EC-14
+fiscal_position_tax_template_LU_126,account_fiscal_position_template_LU_EC,lu_2015_tax_IP-PA-8,lu_2015_tax_IP-EC-8
fiscal_position_tax_template_LU_68,account_fiscal_position_template_LU_EC,lu_2011_tax_IP-PA-15,lu_2011_tax_IP-EC-15
fiscal_position_tax_template_LU_69,account_fiscal_position_template_LU_EC,lu_2011_tax_IP-PA-12,lu_2011_tax_IP-EC-12
fiscal_position_tax_template_LU_70,account_fiscal_position_template_LU_EC,lu_2011_tax_IP-PA-6,lu_2011_tax_IP-EC-6
fiscal_position_tax_template_LU_71,account_fiscal_position_template_LU_EC,lu_2011_tax_IP-PA-3,lu_2011_tax_IP-EC-3
fiscal_position_tax_template_LU_72,account_fiscal_position_template_LU_EC,lu_2011_tax_IP-PA-0,lu_2011_tax_IP-EC-0
+fiscal_position_tax_template_LU_127,account_fiscal_position_template_LU_EC,lu_2015_tax_AB-PA-17,lu_2015_tax_AB-EC-17
+fiscal_position_tax_template_LU_128,account_fiscal_position_template_LU_EC,lu_2015_tax_AB-PA-14,lu_2015_tax_AB-EC-14
+fiscal_position_tax_template_LU_129,account_fiscal_position_template_LU_EC,lu_2015_tax_AB-PA-8,lu_2015_tax_AB-EC-8
fiscal_position_tax_template_LU_73,account_fiscal_position_template_LU_EC,lu_2011_tax_AB-PA-15,lu_2011_tax_AB-EC-15
fiscal_position_tax_template_LU_74,account_fiscal_position_template_LU_EC,lu_2011_tax_AB-PA-12,lu_2011_tax_AB-EC-12
fiscal_position_tax_template_LU_76,account_fiscal_position_template_LU_EC,lu_2011_tax_AB-PA-6,lu_2011_tax_AB-EC-6
fiscal_position_tax_template_LU_77,account_fiscal_position_template_LU_EC,lu_2011_tax_AB-PA-3,lu_2011_tax_AB-EC-3
fiscal_position_tax_template_LU_78,account_fiscal_position_template_LU_EC,lu_2011_tax_AB-PA-0,lu_2011_tax_AB-EC-0
+fiscal_position_tax_template_LU_130,account_fiscal_position_template_LU_EC,lu_2015_tax_AP-PA-17,lu_2015_tax_AP-EC-17
+fiscal_position_tax_template_LU_131,account_fiscal_position_template_LU_EC,lu_2015_tax_AP-PA-14,lu_2015_tax_AP-EC-14
+fiscal_position_tax_template_LU_132,account_fiscal_position_template_LU_EC,lu_2015_tax_AP-PA-8,lu_2015_tax_AP-EC-8
fiscal_position_tax_template_LU_79,account_fiscal_position_template_LU_EC,lu_2011_tax_AP-PA-15,lu_2011_tax_AP-EC-15
fiscal_position_tax_template_LU_80,account_fiscal_position_template_LU_EC,lu_2011_tax_AP-PA-12,lu_2011_tax_AP-EC-12
fiscal_position_tax_template_LU_82,account_fiscal_position_template_LU_EC,lu_2011_tax_AP-PA-6,lu_2011_tax_AP-EC-6
diff --git a/addons/l10n_lu/account.tax.code.template-2015.csv b/addons/l10n_lu/account.tax.code.template-2015.csv
new file mode 100644
index 00000000000..0f619682f71
--- /dev/null
+++ b/addons/l10n_lu/account.tax.code.template-2015.csv
@@ -0,0 +1,598 @@
+id,parent_id:id,code,sign,sequence,name,info
+lu_tax_code_template_mensuel,,mensuel,0,0,Déclaration Mensuelle 2015,
+lu_tct_mCA,lu_tax_code_template_mensuel,CA,0,1,I.-II. CALCUL DU CHIFFRE D'AFFAIRE IMPOSABLE,
+lu_tct_mBASES,lu_tax_code_template_mensuel,BASES,0,2,II. AUTRES BASES,
+lu_tct_m012,lu_tct_mCA,012,0,2,I.A. Chiffre d'affaires global,
+lu_tct_m021,lu_tct_m012,021,1,3,I.B. Exonérations et montants déductibles,
+lu_tct_m457,lu_tct_m021,457,1,4,"I.B.1. Livraisons intracommunautaires de biens à des personnes identifiées à la TVA dans un autre Etat membre (art.43/1/d,e et f) (3)",
+lu_tct_m014,lu_tct_m021,014,1,5,I.B.2. Exportations (art.43/1/a et b),
+lu_tct_m015,lu_tct_m021,015,1,6,I.B.3. Autres exonérations (art.43 et 60bis),
+lu_tct_m016,lu_tct_m021,016,1,7,I.B.4. Autres exonérations (art.44 et 56quater),
+lu_tct_m017,lu_tct_m021,017,1,8,I.B.5. Tabacs fabriqués,
+lu_tct_m018,lu_tct_m021,018,1,9,"I.B.6.a) Livraisons subséquentes à des acquisitions intracommunautaires dans le cadre d'opérations triangulaires, lorsque le destinataire identifié à la TVA dans l'Etat membre de destination des biens y est le redevable de la taxe (4)",
+lu_tct_m423,lu_tct_m021,423,1,10,I.B.6.b)1) Prestations de services à des identifiés à la TVA dans un autre Etat membre non exonérées dans l'Etat membre du preneur redevable (art.17/1/b) (5),
+lu_tct_m424,lu_tct_m021,424,1,11,I.B.6.b)2) Prestations de services à des identifiés à la TVA dans un autre Etat membre exonérées dans l'Etat membre du preneur (art.17/1/b),
+lu_tct_m226,lu_tct_m021,226,1,12,I.B.6.c) Opérations réalisées dans le cadre du régime particulier de l'article 56sexies,
+lu_tct_m019,lu_tct_m021,019,1,13,I.B.6.d) Autres opérations réalisées (imposables) à l'étranger,
+lu_tct_m419,lu_tct_m021,419,1,14,I.B.7. Opérations à l'intérieur du pays pour lesquelles le preneur est le redevable,
+lu_tct_m022,lu_tct_m012,022,1,15,I.C. Chiffre d'affaires imposable,
+lu_tct_m037,lu_tct_m022,037,1,16,II.A. Ventilation du chiffre d'affaires imposable – base,
+lu_tct_m701,lu_tct_m037,701,1,17,II.A. base 17%,
+lu_tct_m029,lu_tct_m037,029,1,18,II.A. base 15%,
+lu_tct_m703,lu_tct_m037,703,1,19,II.A. base 14%,
+lu_tct_m032,lu_tct_m037,032,1,20,II.A. base 12%,
+lu_tct_m705,lu_tct_m037,705,1,21,II.A. base 8%,
+lu_tct_m030,lu_tct_m037,030,1,22,II.A. base 6%,
+lu_tct_m031,lu_tct_m037,031,1,23,II.A. base 3%,
+lu_tct_m033,lu_tct_m037,033,1,24,II.A. base 0%,
+lu_tct_m051,lu_tct_mBASES,051,0,25,II.B. Acquisitions intracommunautaires de biens – base,
+lu_tct_m711,lu_tct_m051,711,1,26,II.B. base 17%,
+lu_tct_m047,lu_tct_m051,047,1,27,II.B. base 15%,
+lu_tct_m713,lu_tct_m051,713,1,28,II.B. base 14%,
+lu_tct_m050,lu_tct_m051,050,1,29,II.B. base 12%,
+lu_tct_m715,lu_tct_m051,715,1,30,II.B. base 8%,
+lu_tct_m048,lu_tct_m051,048,1,31,II.B. base 6%,
+lu_tct_m049,lu_tct_m051,049,1,32,II.B. base 3%,
+lu_tct_m194,lu_tct_m051,194,1,33,II.B. base exonérée,
+lu_tct_m152,lu_tct_mBASES,152,0,34,II.C. Acquisitions effectuées dans le cadre d'opérations triangulaires – base,
+lu_tct_m065,lu_tct_mBASES,065,0,35,II.D. Importations de biens – base,
+lu_tct_m721,lu_tct_m065,721,1,36,II.D.1. base 17%,
+lu_tct_m057,lu_tct_m065,057,1,37,II.D.1. base 15%,
+lu_tct_m723,lu_tct_m065,723,1,38,II.D.1. base 14%,
+lu_tct_m060,lu_tct_m065,060,1,39,II.D.1. base 12%,
+lu_tct_m725,lu_tct_m065,725,1,40,II.D.1. base 8%,
+lu_tct_m058,lu_tct_m065,058,1,41,II.D.1. base 6%,
+lu_tct_m059,lu_tct_m065,059,1,42,II.D.1. base 3%,
+lu_tct_m195,lu_tct_m065,195,1,43,II.D.1. base exonérée,
+lu_tct_m731,lu_tct_m065,731,1,44,II.D.2.. base 17%,
+lu_tct_m061,lu_tct_m065,061,1,45,II.D.2.. base 15%,
+lu_tct_m733,lu_tct_m065,733,1,46,II.D.2.. base 14%,
+lu_tct_m064,lu_tct_m065,064,1,47,II.D.2.. base 12%,
+lu_tct_m735,lu_tct_m065,735,1,48,II.D.2.. base 8%,
+lu_tct_m062,lu_tct_m065,062,1,49,II.D.2.. base 6%,
+lu_tct_m063,lu_tct_m065,063,1,50,II.D.2.. base 3%,
+lu_tct_m196,lu_tct_m065,196,1,51,II.D.2.. base exonérée,
+lu_tct_m409,lu_tct_mBASES,409,0,52,II.E. Prestations de services à déclarer par le preneur redevable de la taxe – base,
+lu_tct_m436,lu_tct_m409,436,1,53,II.E.1. base,
+lu_tct_m741,lu_tct_m436,741,1,54,II.E.1.a) base 17%,
+lu_tct_m427,lu_tct_m436,427,1,55,II.E.1.a) base 15%,
+lu_tct_m743,lu_tct_m436,743,1,56,II.E.1.a) base 14%,
+lu_tct_m433,lu_tct_m436,433,1,57,II.E.1.a) base 12%,
+lu_tct_m745,lu_tct_m436,745,1,58,II.E.1.a) base 8%,
+lu_tct_m429,lu_tct_m436,429,1,59,II.E.1.a) base 6%,
+lu_tct_m431,lu_tct_m436,431,1,60,II.E.1.a) base 3%,
+lu_tct_m435,lu_tct_m436,435,1,61,II.E.1.b) exonérées,
+lu_tct_m463,lu_tct_m409,463,1,62,II.E.2. base,
+lu_tct_m751,lu_tct_m463,751,1,63,II.E.2. base 17%,
+lu_tct_m437,lu_tct_m463,437,1,64,II.E.2. base 15%,
+lu_tct_m753,lu_tct_m463,753,1,65,II.E.2. base 14%,
+lu_tct_m443,lu_tct_m463,443,1,66,II.E.2. base 12%,
+lu_tct_m755,lu_tct_m463,755,1,67,II.E.2. base 8%,
+lu_tct_m439,lu_tct_m463,439,1,68,II.E.2. base 6%,
+lu_tct_m441,lu_tct_m463,441,1,69,II.E.2. base 3%,
+lu_tct_m445,lu_tct_m463,445,1,70,II.E.2. exonérées,
+lu_tct_mTAXE,lu_tax_code_template_mensuel,TAXE,0,71,II.-III.-IV. CALCUL DE LA TAXE,
+lu_tct_m105,lu_tct_mTAXE,105,0,72,IV.C. Excédent,
+lu_tct_m103,lu_tct_m105,103,1,73,IV.A. Total de la taxe en aval,
+lu_tct_m076,lu_tct_m103,076,1,74,II.H. Total de la taxe en aval,
+lu_tct_m046,lu_tct_m076,046,1,75,II.A. Ventilation du chiffre d'affaires imposable – taxe,
+lu_tct_m702,lu_tct_m046,702,1,76,II.A. taxe 17%,
+lu_tct_m038,lu_tct_m046,038,1,77,II.A. taxe 15%,
+lu_tct_m704,lu_tct_m046,704,1,78,II.A. taxe 14%,
+lu_tct_m041,lu_tct_m046,041,1,79,II.A. taxe 12%,
+lu_tct_m706,lu_tct_m046,706,1,80,II.A. taxe 8%,
+lu_tct_m039,lu_tct_m046,039,1,81,II.A. taxe 6%,
+lu_tct_m040,lu_tct_m046,040,1,82,II.A. taxe 3%,
+lu_tct_m042,lu_tct_m046,042,1,83,II.A. taxe 0%,
+lu_tct_m056,lu_tct_m076,056,1,84,II.B. Acquisitions intracommunautaires de biens – taxe,
+lu_tct_m712,lu_tct_m056,712,1,85,II.B. taxe 17%,
+lu_tct_m052,lu_tct_m056,052,1,86,II.B. taxe 15%,
+lu_tct_m714,lu_tct_m056,714,1,87,II.B. taxe 14%,
+lu_tct_m055,lu_tct_m056,055,1,88,II.B. taxe 12%,
+lu_tct_m716,lu_tct_m056,716,1,89,II.B. taxe 8%,
+lu_tct_m053,lu_tct_m056,053,1,90,II.B. taxe 6%,
+lu_tct_m054,lu_tct_m056,054,1,91,II.B. taxe 3%,
+lu_tct_m407,lu_tct_m076,407,1,92,II.D. Importations de biens – taxe,
+lu_tct_m722,lu_tct_m407,722,1,93,II.D.1. taxe 17%,
+lu_tct_m066,lu_tct_m407,066,1,94,II.D.1. taxe 15%,
+lu_tct_m724,lu_tct_m407,724,1,95,II.D.1. taxe 14%,
+lu_tct_m069,lu_tct_m407,069,1,96,II.D.1. taxe 12%,
+lu_tct_m726,lu_tct_m407,726,1,97,II.D.1. taxe 8%,
+lu_tct_m067,lu_tct_m407,067,1,98,II.D.1. taxe 6%,
+lu_tct_m068,lu_tct_m407,068,1,99,II.D.1. taxe 3%,
+lu_tct_m732,lu_tct_m407,732,1,100,II.D.2.. taxe 17%,
+lu_tct_m071,lu_tct_m407,071,1,101,II.D.2.. taxe 15%,
+lu_tct_m734,lu_tct_m407,734,1,102,II.D.2.. taxe 14%,
+lu_tct_m074,lu_tct_m407,074,1,103,II.D.2.. taxe 12%,
+lu_tct_m736,lu_tct_m407,736,1,104,II.D.2.. taxe 8%,
+lu_tct_m072,lu_tct_m407,072,1,105,II.D.2.. taxe 6%,
+lu_tct_m073,lu_tct_m407,073,1,106,II.D.2.. taxe 3%,
+lu_tct_m410,lu_tct_m076,410,1,107,II.E. Prestations de services à déclarer par le preneur redevable de la taxe – taxe,
+lu_tct_m462,lu_tct_m410,462,1,108,II.E.1.a) taxe,
+lu_tct_m742,lu_tct_m462,742,1,109,II.E.1.a) taxe 17%,
+lu_tct_m428,lu_tct_m462,428,1,110,II.E.1.a) taxe 15%,
+lu_tct_m744,lu_tct_m462,744,1,111,II.E.1.a) taxe 14%,
+lu_tct_m434,lu_tct_m462,434,1,112,II.E.1.a) taxe 12%,
+lu_tct_m746,lu_tct_m462,746,1,113,II.E.1.a) taxe 8%,
+lu_tct_m430,lu_tct_m462,430,1,114,II.E.1.a) taxe 6%,
+lu_tct_m432,lu_tct_m462,432,1,115,II.E.1.a) taxe 3%,
+lu_tct_m464,lu_tct_m410,464,1,116,II.E.2. taxe,
+lu_tct_m752,lu_tct_m464,752,1,117,II.E.2. taxe 17%,
+lu_tct_m438,lu_tct_m464,438,1,118,II.E.2. taxe 15%,
+lu_tct_m754,lu_tct_m464,754,1,119,II.E.2. taxe 14%,
+lu_tct_m444,lu_tct_m464,444,1,120,II.E.2. taxe 12%,
+lu_tct_m756,lu_tct_m464,756,1,121,II.E.2. taxe 8%,
+lu_tct_m440,lu_tct_m464,440,1,122,II.E.2. taxe 6%,
+lu_tct_m442,lu_tct_m464,442,1,123,II.E.2. taxe 3%,
+lu_tct_m104,lu_tct_m105,104,-1,124,IV.A. Total de la taxe en amont déductible,
+lu_tct_m102,lu_tct_m104,102,1,125,III.C. Total de la taxe en amont déductible,
+lu_tct_m093,lu_tct_m102,093,1,126,III.A. Total de la taxe en amont,
+lu_tct_m458,lu_tct_m093,458,1,127,III.A.1. Achats de biens et de services à l'intérieur du pays (art.48/1/a),
+lu_tct_m459,lu_tct_m093,459,1,128,III.A.2. Acquisitions intracommunautaires de biens (art.48/1/b),
+lu_tct_m460,lu_tct_m093,460,1,129,III.A.3. Importations de biens (taxe déclarée ou payée) (art.48/1/c),
+lu_tct_m090,lu_tct_m093,090,1,130,III.A.4. Affectations de biens (art.48/1/d),
+lu_tct_m461,lu_tct_m093,461,1,131,III.A.5. Taxe déclarée comme débiteur (voir points II.E et F),
+lu_tct_m092,lu_tct_m093,092,1,132,III.A.6. Taxe acquittée comme caution solidaire,
+lu_tct_m228,lu_tct_m093,228,1,133,"III.A.7. Taxe régularisée - régime particulier suspensif (art.60bis/9, al. 2)",
+lu_tct_mNA,lu_tax_code_template_mensuel,NA,0,134,Codes non assignés,
+lu_tax_code_template_b_AB-EC-0,lu_tct_m195,b_AB-EC-0,1,,Base - Achat Biens Exonéré - Extracommunautaire,
+lu_tax_code_template_b_AB-EC-12,lu_tct_m060,b_AB-EC-12,1,,Base - Achat Biens 12% - Extracommunautaire (+),
+lu_tax_code_template_b_AB-EC-14,lu_tct_m723,b_AB-EC-14,1,,Base - Achat Biens 14% - Extracommunautaire (+),
+lu_tax_code_template_b_AB-EC-15,lu_tct_m057,b_AB-EC-15,1,,Base - Achat Biens 15% - Extracommunautaire (+),
+lu_tax_code_template_b_AB-EC-17,lu_tct_m721,b_AB-EC-17,1,,Base - Achat Biens 17% - Extracommunautaire (+),
+lu_tax_code_template_b_AB-EC-3,lu_tct_m059,b_AB-EC-3,1,,Base - Achat Biens 3% - Extracommunautaire (+),
+lu_tax_code_template_b_AB-EC-6,lu_tct_m058,b_AB-EC-6,1,,Base - Achat Biens 6% - Extracommunautaire (+),
+lu_tax_code_template_b_AB-EC-8,lu_tct_m725,b_AB-EC-8,1,,Base - Achat Biens 8% - Extracommunautaire (+),
+lu_tax_code_template_b_AB-ECP-0,lu_tct_m196,b_AB-ECP-0,1,,Base - Achat Biens Exonéré - Extracommunautaire fin privées,
+lu_tax_code_template_b_AB-ECP-12,lu_tct_m064,b_AB-ECP-12,1,,Base - Achat Biens 12% - Extracommunautaire fin privées (+),
+lu_tax_code_template_b_AB-ECP-14,lu_tct_m733,b_AB-ECP-14,1,,Base - Achat Biens 14% - Extracommunautaire fin privées (+),
+lu_tax_code_template_b_AB-ECP-15,lu_tct_m061,b_AB-ECP-15,1,,Base - Achat Biens 15% - Extracommunautaire fin privées (+),
+lu_tax_code_template_b_AB-ECP-17,lu_tct_m731,b_AB-ECP-17,1,,Base - Achat Biens 17% - Extracommunautaire fin privées (+),
+lu_tax_code_template_b_AB-ECP-3,lu_tct_m063,b_AB-ECP-3,1,,Base - Achat Biens 3% - Extracommunautaire fin privées (+),
+lu_tax_code_template_b_AB-ECP-6,lu_tct_m062,b_AB-ECP-6,1,,Base - Achat Biens 6% - Extracommunautaire fin privées (+),
+lu_tax_code_template_b_AB-ECP-8,lu_tct_m735,b_AB-ECP-8,1,,Base - Achat Biens 8% - Extracommunautaire fin privées (+),
+lu_tax_code_template_b_AB-IC-0,lu_tct_m194,b_AB-IC-0,1,,Base - Achat Biens Exonéré - Intracommunautaire,
+lu_tax_code_template_b_AB-IC-12,lu_tct_m050,b_AB-IC-12,1,,Base - Achat Biens 12% - Intracommunautaire (+),
+lu_tax_code_template_b_AB-IC-14,lu_tct_m713,b_AB-IC-14,1,,Base - Achat Biens 14% - Intracommunautaire (+),
+lu_tax_code_template_b_AB-IC-15,lu_tct_m047,b_AB-IC-15,1,,Base - Achat Biens 15% - Intracommunautaire (+),
+lu_tax_code_template_b_AB-IC-17,lu_tct_m711,b_AB-IC-17,1,,Base - Achat Biens 17% - Intracommunautaire (+),
+lu_tax_code_template_b_AB-IC-3,lu_tct_m049,b_AB-IC-3,1,,Base - Achat Biens 3% - Intracommunautaire (+),
+lu_tax_code_template_b_AB-IC-6,lu_tct_m048,b_AB-IC-6,1,,Base - Achat Biens 6% - Intracommunautaire (+),
+lu_tax_code_template_b_AB-IC-8,lu_tct_m715,b_AB-IC-8,1,,Base - Achat Biens 8% - Intracommunautaire (+),
+lu_tax_code_template_b_AB-PA-0,lu_tct_mNA,b_AB-PA-0,1,,Base - Achat Biens 0% - Pays,
+lu_tax_code_template_b_AB-PA-12,lu_tct_mNA,b_AB-PA-12,1,,Base - Achat Biens 12% - Pays,
+lu_tax_code_template_b_AB-PA-14,lu_tct_mNA,b_AB-PA-14,1,,Base - Achat Biens 14% - Pays,
+lu_tax_code_template_b_AB-PA-15,lu_tct_mNA,b_AB-PA-15,1,,Base - Achat Biens 15% - Pays,
+lu_tax_code_template_b_AB-PA-17,lu_tct_mNA,b_AB-PA-17,1,,Base - Achat Biens 17% - Pays,
+lu_tax_code_template_b_AB-PA-3,lu_tct_mNA,b_AB-PA-3,1,,Base - Achat Biens 3% - Pays,
+lu_tax_code_template_b_AB-PA-6,lu_tct_mNA,b_AB-PA-6,1,,Base - Achat Biens 6% - Pays,
+lu_tax_code_template_b_AB-PA-8,lu_tct_mNA,b_AB-PA-8,1,,Base - Achat Biens 8% - Pays,
+lu_tax_code_template_b_AP-EC-0,lu_tct_m445,b_AP-EC-0,1,,Base - Achat Prestations Exonérées - Extracommunautaire,
+lu_tax_code_template_b_AP-EC-12,lu_tct_m443,b_AP-EC-12,1,,Base - Achat Prestations 12% - Extracommunautaire (+),
+lu_tax_code_template_b_AP-EC-14,lu_tct_m753,b_AP-EC-14,1,,Base - Achat Prestations 14% - Extracommunautaire (+),
+lu_tax_code_template_b_AP-EC-15,lu_tct_m437,b_AP-EC-15,1,,Base - Achat Prestations 15% - Extracommunautaire (+),
+lu_tax_code_template_b_AP-EC-17,lu_tct_m751,b_AP-EC-17,1,,Base - Achat Prestations 17% - Extracommunautaire (+),
+lu_tax_code_template_b_AP-EC-3,lu_tct_m441,b_AP-EC-3,1,,Base - Achat Prestations 3% - Extracommunautaire (+),
+lu_tax_code_template_b_AP-EC-6,lu_tct_m439,b_AP-EC-6,1,,Base - Achat Prestations 6% - Extracommunautaire (+),
+lu_tax_code_template_b_AP-EC-8,lu_tct_m755,b_AP-EC-8,1,,Base - Achat Prestations 8% - Extracommunautaire (+),
+lu_tax_code_template_b_AP-IC-0,lu_tct_m435,b_AP-IC-0,1,,Base - Achat Prestations Exonérées - Intracommunautaire,
+lu_tax_code_template_b_AP-IC-12,lu_tct_m433,b_AP-IC-12,1,,Base - Achat Prestations 12% - Intracommunautaire (+),
+lu_tax_code_template_b_AP-IC-14,lu_tct_m743,b_AP-IC-14,1,,Base - Achat Prestations 14% - Intracommunautaire (+),
+lu_tax_code_template_b_AP-IC-15,lu_tct_m427,b_AP-IC-15,1,,Base - Achat Prestations 15% - Intracommunautaire (+),
+lu_tax_code_template_b_AP-IC-17,lu_tct_m741,b_AP-IC-17,1,,Base - Achat Prestations 17% - Intracommunautaire (+),
+lu_tax_code_template_b_AP-IC-3,lu_tct_m431,b_AP-IC-3,1,,Base - Achat Prestations 3% - Intracommunautaire (+),
+lu_tax_code_template_b_AP-IC-6,lu_tct_m429,b_AP-IC-6,1,,Base - Achat Prestations 6% - Intracommunautaire (+),
+lu_tax_code_template_b_AP-IC-8,lu_tct_m745,b_AP-IC-8,1,,Base - Achat Prestations 8% - Intracommunautaire (+),
+lu_tax_code_template_b_AP-PA-0,lu_tct_mNA,b_AP-PA-0,1,,Base - Achat Prestations 0% - Pays,
+lu_tax_code_template_b_AP-PA-12,lu_tct_mNA,b_AP-PA-12,1,,Base - Achat Prestations 12% - Pays,
+lu_tax_code_template_b_AP-PA-14,lu_tct_mNA,b_AP-PA-14,1,,Base - Achat Prestations 14% - Pays,
+lu_tax_code_template_b_AP-PA-15,lu_tct_mNA,b_AP-PA-15,1,,Base - Achat Prestations 15% - Pays,
+lu_tax_code_template_b_AP-PA-17,lu_tct_mNA,b_AP-PA-17,1,,Base - Achat Prestations 17% - Pays,
+lu_tax_code_template_b_AP-PA-3,lu_tct_mNA,b_AP-PA-3,1,,Base - Achat Prestations 3% - Pays,
+lu_tax_code_template_b_AP-PA-6,lu_tct_mNA,b_AP-PA-6,1,,Base - Achat Prestations 6% - Pays,
+lu_tax_code_template_b_AP-PA-8,lu_tct_mNA,b_AP-PA-8,1,,Base - Achat Prestations 8% - Pays,
+lu_tax_code_template_b_FB-EC-0,lu_tct_m195,b_FB-EC-0,1,,Base - Frais Biens Exonéré - Extracommunautaire,
+lu_tax_code_template_b_FB-EC-12,lu_tct_m060,b_FB-EC-12,1,,Base - Frais Biens 12% - Extracommunautaire (+),
+lu_tax_code_template_b_FB-EC-14,lu_tct_m723,b_FB-EC-14,1,,Base - Frais Biens 14% - Extracommunautaire (+),
+lu_tax_code_template_b_FB-EC-15,lu_tct_m057,b_FB-EC-15,1,,Base - Frais Biens 15% - Extracommunautaire (+),
+lu_tax_code_template_b_FB-EC-17,lu_tct_m721,b_FB-EC-17,1,,Base - Frais Biens 17% - Extracommunautaire (+),
+lu_tax_code_template_b_FB-EC-3,lu_tct_m059,b_FB-EC-3,1,,Base - Frais Biens 3% - Extracommunautaire (+),
+lu_tax_code_template_b_FB-EC-6,lu_tct_m058,b_FB-EC-6,1,,Base - Frais Biens 6% - Extracommunautaire (+),
+lu_tax_code_template_b_FB-EC-8,lu_tct_m725,b_FB-EC-8,1,,Base - Frais Biens 8% - Extracommunautaire (+),
+lu_tax_code_template_b_FB-ECP-0,lu_tct_m196,b_FB-ECP-0,1,,Base - Frais Biens Exonéré - Extracommunautaire fin privées,
+lu_tax_code_template_b_FB-ECP-12,lu_tct_m064,b_FB-ECP-12,1,,Base - Frais Biens 12% - Extracommunautaire fin privées (+),
+lu_tax_code_template_b_FB-ECP-14,lu_tct_m733,b_FB-ECP-14,1,,Base - Frais Biens 14% - Extracommunautaire fin privées (+),
+lu_tax_code_template_b_FB-ECP-15,lu_tct_m061,b_FB-ECP-15,1,,Base - Frais Biens 15% - Extracommunautaire fin privées (+),
+lu_tax_code_template_b_FB-ECP-17,lu_tct_m731,b_FB-ECP-17,1,,Base - Frais Biens 17% - Extracommunautaire fin privées (+),
+lu_tax_code_template_b_FB-ECP-3,lu_tct_m063,b_FB-ECP-3,1,,Base - Frais Biens 3% - Extracommunautaire fin privées (+),
+lu_tax_code_template_b_FB-ECP-6,lu_tct_m062,b_FB-ECP-6,1,,Base - Frais Biens 6% - Extracommunautaire fin privées (+),
+lu_tax_code_template_b_FB-ECP-8,lu_tct_m735,b_FB-ECP-8,1,,Base - Frais Biens 8% - Extracommunautaire fin privées (+),
+lu_tax_code_template_b_FB-IC-0,lu_tct_m194,b_FB-IC-0,1,,Base - Frais Biens Exonéré - Intracommunautaire,
+lu_tax_code_template_b_FB-IC-12,lu_tct_m050,b_FB-IC-12,1,,Base - Frais Biens 12% - Intracommunautaire (+),
+lu_tax_code_template_b_FB-IC-14,lu_tct_m713,b_FB-IC-14,1,,Base - Frais Biens 14% - Intracommunautaire (+),
+lu_tax_code_template_b_FB-IC-15,lu_tct_m047,b_FB-IC-15,1,,Base - Frais Biens 15% - Intracommunautaire (+),
+lu_tax_code_template_b_FB-IC-17,lu_tct_m711,b_FB-IC-17,1,,Base - Frais Biens 17% - Intracommunautaire (+),
+lu_tax_code_template_b_FB-IC-3,lu_tct_m049,b_FB-IC-3,1,,Base - Frais Biens 3% - Intracommunautaire (+),
+lu_tax_code_template_b_FB-IC-6,lu_tct_m048,b_FB-IC-6,1,,Base - Frais Biens 6% - Intracommunautaire (+),
+lu_tax_code_template_b_FB-IC-8,lu_tct_m715,b_FB-IC-8,1,,Base - Frais Biens 8% - Intracommunautaire (+),
+lu_tax_code_template_b_FB-PA-0,lu_tct_mNA,b_FB-PA-0,1,,Base - Frais Biens 0% - Pays,
+lu_tax_code_template_b_FB-PA-12,lu_tct_mNA,b_FB-PA-12,1,,Base - Frais Biens 12% - Pays,
+lu_tax_code_template_b_FB-PA-14,lu_tct_mNA,b_FB-PA-14,1,,Base - Frais Biens 14% - Pays,
+lu_tax_code_template_b_FB-PA-15,lu_tct_mNA,b_FB-PA-15,1,,Base - Frais Biens 15% - Pays,
+lu_tax_code_template_b_FB-PA-17,lu_tct_mNA,b_FB-PA-17,1,,Base - Frais Biens 17% - Pays,
+lu_tax_code_template_b_FB-PA-3,lu_tct_mNA,b_FB-PA-3,1,,Base - Frais Biens 3% - Pays,
+lu_tax_code_template_b_FB-PA-6,lu_tct_mNA,b_FB-PA-6,1,,Base - Frais Biens 6% - Pays,
+lu_tax_code_template_b_FB-PA-8,lu_tct_mNA,b_FB-PA-8,1,,Base - Frais Biens 8% - Pays,
+lu_tax_code_template_b_FP-EC-0,lu_tct_m445,b_FP-EC-0,1,,Base - Frais Prestations Exonérées - Extracommunautaire,
+lu_tax_code_template_b_FP-EC-12,lu_tct_m443,b_FP-EC-12,1,,Base - Frais Prestations 12% - Extracommunautaire (+),
+lu_tax_code_template_b_FP-EC-14,lu_tct_m753,b_FP-EC-14,1,,Base - Frais Prestations 14% - Extracommunautaire (+),
+lu_tax_code_template_b_FP-EC-15,lu_tct_m437,b_FP-EC-15,1,,Base - Frais Prestations 15% - Extracommunautaire (+),
+lu_tax_code_template_b_FP-EC-17,lu_tct_m751,b_FP-EC-17,1,,Base - Frais Prestations 17% - Extracommunautaire (+),
+lu_tax_code_template_b_FP-EC-3,lu_tct_m441,b_FP-EC-3,1,,Base - Frais Prestations 3% - Extracommunautaire (+),
+lu_tax_code_template_b_FP-EC-6,lu_tct_m439,b_FP-EC-6,1,,Base - Frais Prestations 6% - Extracommunautaire (+),
+lu_tax_code_template_b_FP-EC-8,lu_tct_m755,b_FP-EC-8,1,,Base - Frais Prestations 8% - Extracommunautaire (+),
+lu_tax_code_template_b_FP-IC-0,lu_tct_m435,b_FP-IC-0,1,,Base - Frais Prestations Exonérées - Intracommunautaire,
+lu_tax_code_template_b_FP-IC-12,lu_tct_m433,b_FP-IC-12,1,,Base - Frais Prestations 12% - Intracommunautaire (+),
+lu_tax_code_template_b_FP-IC-14,lu_tct_m743,b_FP-IC-14,1,,Base - Frais Prestations 14% - Intracommunautaire (+),
+lu_tax_code_template_b_FP-IC-15,lu_tct_m427,b_FP-IC-15,1,,Base - Frais Prestations 15% - Intracommunautaire (+),
+lu_tax_code_template_b_FP-IC-17,lu_tct_m741,b_FP-IC-17,1,,Base - Frais Prestations 17% - Intracommunautaire (+),
+lu_tax_code_template_b_FP-IC-3,lu_tct_m431,b_FP-IC-3,1,,Base - Frais Prestations 3% - Intracommunautaire (+),
+lu_tax_code_template_b_FP-IC-6,lu_tct_m429,b_FP-IC-6,1,,Base - Frais Prestations 6% - Intracommunautaire (+),
+lu_tax_code_template_b_FP-IC-8,lu_tct_m745,b_FP-IC-8,1,,Base - Frais Prestations 8% - Intracommunautaire (+),
+lu_tax_code_template_b_FP-PA-0,lu_tct_mNA,b_FP-PA-0,1,,Base - Frais Prestations 0% - Pays,
+lu_tax_code_template_b_FP-PA-12,lu_tct_mNA,b_FP-PA-12,1,,Base - Frais Prestations 12% - Pays,
+lu_tax_code_template_b_FP-PA-14,lu_tct_mNA,b_FP-PA-14,1,,Base - Frais Prestations 14% - Pays,
+lu_tax_code_template_b_FP-PA-15,lu_tct_mNA,b_FP-PA-15,1,,Base - Frais Prestations 15% - Pays,
+lu_tax_code_template_b_FP-PA-17,lu_tct_mNA,b_FP-PA-17,1,,Base - Frais Prestations 17% - Pays,
+lu_tax_code_template_b_FP-PA-3,lu_tct_mNA,b_FP-PA-3,1,,Base - Frais Prestations 3% - Pays,
+lu_tax_code_template_b_FP-PA-6,lu_tct_mNA,b_FP-PA-6,1,,Base - Frais Prestations 6% - Pays,
+lu_tax_code_template_b_FP-PA-8,lu_tct_mNA,b_FP-PA-8,1,,Base - Frais Prestations 8% - Pays,
+lu_tax_code_template_b_IB-EC-0,lu_tct_m195,b_IB-EC-0,1,,Base - Investissement Biens Exonéré - Extracommunautaire,
+lu_tax_code_template_b_IB-EC-12,lu_tct_m060,b_IB-EC-12,1,,Base - Investissement Biens 12% - Extracommunautaire (+),
+lu_tax_code_template_b_IB-EC-14,lu_tct_m723,b_IB-EC-14,1,,Base - Investissement Biens 14% - Extracommunautaire (+),
+lu_tax_code_template_b_IB-EC-15,lu_tct_m057,b_IB-EC-15,1,,Base - Investissement Biens 15% - Extracommunautaire (+),
+lu_tax_code_template_b_IB-EC-17,lu_tct_m721,b_IB-EC-17,1,,Base - Investissement Biens 17% - Extracommunautaire (+),
+lu_tax_code_template_b_IB-EC-3,lu_tct_m059,b_IB-EC-3,1,,Base - Investissement Biens 3% - Extracommunautaire (+),
+lu_tax_code_template_b_IB-EC-6,lu_tct_m058,b_IB-EC-6,1,,Base - Investissement Biens 6% - Extracommunautaire (+),
+lu_tax_code_template_b_IB-EC-8,lu_tct_m725,b_IB-EC-8,1,,Base - Investissement Biens 8% - Extracommunautaire (+),
+lu_tax_code_template_b_IB-ECP-0,lu_tct_m196,b_IB-ECP-0,1,,Base - Investissement Biens Exonéré - Extracommunautaire fin privées,
+lu_tax_code_template_b_IB-ECP-12,lu_tct_m064,b_IB-ECP-12,1,,Base - Investissement Biens 12% - Extracommunautaire fin privées (+),
+lu_tax_code_template_b_IB-ECP-14,lu_tct_m733,b_IB-ECP-14,1,,Base - Investissement Biens 14% - Extracommunautaire fin privées (+),
+lu_tax_code_template_b_IB-ECP-15,lu_tct_m061,b_IB-ECP-15,1,,Base - Investissement Biens 15% - Extracommunautaire fin privées (+),
+lu_tax_code_template_b_IB-ECP-17,lu_tct_m731,b_IB-ECP-17,1,,Base - Investissement Biens 17% - Extracommunautaire fin privées (+),
+lu_tax_code_template_b_IB-ECP-3,lu_tct_m063,b_IB-ECP-3,1,,Base - Investissement Biens 3% - Extracommunautaire fin privées (+),
+lu_tax_code_template_b_IB-ECP-6,lu_tct_m062,b_IB-ECP-6,1,,Base - Investissement Biens 6% - Extracommunautaire fin privées (+),
+lu_tax_code_template_b_IB-ECP-8,lu_tct_m735,b_IB-ECP-8,1,,Base - Investissement Biens 8% - Extracommunautaire fin privées (+),
+lu_tax_code_template_b_IB-IC-0,lu_tct_m194,b_IB-IC-0,1,,Base - Investissement Biens Exonéré - Intracommunautaire,
+lu_tax_code_template_b_IB-IC-12,lu_tct_m050,b_IB-IC-12,1,,Base - Investissement Biens 12% - Intracommunautaire (+),
+lu_tax_code_template_b_IB-IC-14,lu_tct_m713,b_IB-IC-14,1,,Base - Investissement Biens 14% - Intracommunautaire (+),
+lu_tax_code_template_b_IB-IC-15,lu_tct_m047,b_IB-IC-15,1,,Base - Investissement Biens 15% - Intracommunautaire (+),
+lu_tax_code_template_b_IB-IC-17,lu_tct_m711,b_IB-IC-17,1,,Base - Investissement Biens 17% - Intracommunautaire (+),
+lu_tax_code_template_b_IB-IC-3,lu_tct_m049,b_IB-IC-3,1,,Base - Investissement Biens 3% - Intracommunautaire (+),
+lu_tax_code_template_b_IB-IC-6,lu_tct_m048,b_IB-IC-6,1,,Base - Investissement Biens 6% - Intracommunautaire (+),
+lu_tax_code_template_b_IB-IC-8,lu_tct_m715,b_IB-IC-8,1,,Base - Investissement Biens 8% - Intracommunautaire (+),
+lu_tax_code_template_b_IB-PA-0,lu_tct_mNA,b_IB-PA-0,1,,Base - Investissement Biens 0% - Pays,
+lu_tax_code_template_b_IB-PA-12,lu_tct_mNA,b_IB-PA-12,1,,Base - Investissement Biens 12% - Pays,
+lu_tax_code_template_b_IB-PA-14,lu_tct_mNA,b_IB-PA-14,1,,Base - Investissement Biens 14% - Pays,
+lu_tax_code_template_b_IB-PA-15,lu_tct_mNA,b_IB-PA-15,1,,Base - Investissement Biens 15% - Pays,
+lu_tax_code_template_b_IB-PA-17,lu_tct_mNA,b_IB-PA-17,1,,Base - Investissement Biens 17% - Pays,
+lu_tax_code_template_b_IB-PA-3,lu_tct_mNA,b_IB-PA-3,1,,Base - Investissement Biens 3% - Pays,
+lu_tax_code_template_b_IB-PA-6,lu_tct_mNA,b_IB-PA-6,1,,Base - Investissement Biens 6% - Pays,
+lu_tax_code_template_b_IB-PA-8,lu_tct_mNA,b_IB-PA-8,1,,Base - Investissement Biens 8% - Pays,
+lu_tax_code_template_b_IP-EC-0,lu_tct_m445,b_IP-EC-0,1,,Base - Investissement Prestations Exonérées - Extracommunautaire,
+lu_tax_code_template_b_IP-EC-12,lu_tct_m443,b_IP-EC-12,1,,Base - Investissement Prestations 12% - Extracommunautaire (+),
+lu_tax_code_template_b_IP-EC-14,lu_tct_m753,b_IP-EC-14,1,,Base - Investissement Prestations 14% - Extracommunautaire (+),
+lu_tax_code_template_b_IP-EC-15,lu_tct_m437,b_IP-EC-15,1,,Base - Investissement Prestations 15% - Extracommunautaire (+),
+lu_tax_code_template_b_IP-EC-17,lu_tct_m751,b_IP-EC-17,1,,Base - Investissement Prestations 17% - Extracommunautaire (+),
+lu_tax_code_template_b_IP-EC-3,lu_tct_m441,b_IP-EC-3,1,,Base - Investissement Prestations 3% - Extracommunautaire (+),
+lu_tax_code_template_b_IP-EC-6,lu_tct_m439,b_IP-EC-6,1,,Base - Investissement Prestations 6% - Extracommunautaire (+),
+lu_tax_code_template_b_IP-EC-8,lu_tct_m755,b_IP-EC-8,1,,Base - Investissement Prestations 8% - Extracommunautaire (+),
+lu_tax_code_template_b_IP-IC-0,lu_tct_m435,b_IP-IC-0,1,,Base - Investissement Prestations Exonérées - Intracommunautaire,
+lu_tax_code_template_b_IP-IC-12,lu_tct_m433,b_IP-IC-12,1,,Base - Investissement Prestations 12% - Intracommunautaire (+),
+lu_tax_code_template_b_IP-IC-14,lu_tct_m743,b_IP-IC-14,1,,Base - Investissement Prestations 14% - Intracommunautaire (+),
+lu_tax_code_template_b_IP-IC-15,lu_tct_m427,b_IP-IC-15,1,,Base - Investissement Prestations 15% - Intracommunautaire (+),
+lu_tax_code_template_b_IP-IC-17,lu_tct_m741,b_IP-IC-17,1,,Base - Investissement Prestations 17% - Intracommunautaire (+),
+lu_tax_code_template_b_IP-IC-3,lu_tct_m431,b_IP-IC-3,1,,Base - Investissement Prestations 3% - Intracommunautaire (+),
+lu_tax_code_template_b_IP-IC-6,lu_tct_m429,b_IP-IC-6,1,,Base - Investissement Prestations 6% - Intracommunautaire (+),
+lu_tax_code_template_b_IP-IC-8,lu_tct_m745,b_IP-IC-8,1,,Base - Investissement Prestations 8% - Intracommunautaire (+),
+lu_tax_code_template_b_IP-PA-0,lu_tct_mNA,b_IP-PA-0,1,,Base - Investissement Prestations 0% - Pays,
+lu_tax_code_template_b_IP-PA-12,lu_tct_mNA,b_IP-PA-12,1,,Base - Investissement Prestations 12% - Pays,
+lu_tax_code_template_b_IP-PA-14,lu_tct_mNA,b_IP-PA-14,1,,Base - Investissement Prestations 14% - Pays,
+lu_tax_code_template_b_IP-PA-15,lu_tct_mNA,b_IP-PA-15,1,,Base - Investissement Prestations 15% - Pays,
+lu_tax_code_template_b_IP-PA-17,lu_tct_mNA,b_IP-PA-17,1,,Base - Investissement Prestations 17% - Pays,
+lu_tax_code_template_b_IP-PA-3,lu_tct_mNA,b_IP-PA-3,1,,Base - Investissement Prestations 3% - Pays,
+lu_tax_code_template_b_IP-PA-6,lu_tct_mNA,b_IP-PA-6,1,,Base - Investissement Prestations 6% - Pays,
+lu_tax_code_template_b_IP-PA-8,lu_tct_mNA,b_IP-PA-8,1,,Base - Investissement Prestations 8% - Pays,
+lu_tax_code_template_b_V-ART-43_60b,lu_tct_m015,b_V-ART-43_60b,1,,Base - Vente - Autres Exonérations (Article 43 et 60 bis),
+lu_tax_code_template_b_V-ART-44_56q,lu_tct_m016,b_V-ART-44_56q,1,,Base - Vente - Autres Exonérations (Article 44 et 56 quarter),
+lu_tax_code_template_b_VB-EC-0,lu_tct_m014,b_VB-EC-0,1,,Base - Vente Biens - Extracommunautaire,
+lu_tax_code_template_b_VB-EC-Tab,lu_tct_m017,b_VB-EC-Tab,1,,Base - Vente Biens Tabacs - Extracommunautaire,
+lu_tax_code_template_b_VB-IC-0,lu_tct_m457,b_VB-IC-0,1,,Base - Vente Biens - Intracommunautaire,
+lu_tax_code_template_b_VB-IC-Tab,lu_tct_m017,b_VB-IC-Tab,1,,Base - Vente Biens Tabacs - Intracommunautaire,
+lu_tax_code_template_b_VB-PA-0,lu_tct_m033,b_VB-PA-0,1,,Base - Vente Biens 0% - Pays,
+lu_tax_code_template_b_VB-PA-12,lu_tct_m032,b_VB-PA-12,1,,Base - Vente Biens 12% - Pays,
+lu_tax_code_template_b_VB-PA-14,lu_tct_m703,b_VB-PA-14,1,,Base - Vente Biens 14% - Pays,
+lu_tax_code_template_b_VB-PA-15,lu_tct_m029,b_VB-PA-15,1,,Base - Vente Biens 15% - Pays,
+lu_tax_code_template_b_VB-PA-17,lu_tct_m701,b_VB-PA-17,1,,Base - Vente Biens 17% - Pays,
+lu_tax_code_template_b_VB-PA-3,lu_tct_m031,b_VB-PA-3,1,,Base - Vente Biens 3% - Pays,
+lu_tax_code_template_b_VB-PA-6,lu_tct_m030,b_VB-PA-6,1,,Base - Vente Biens 6% - Pays,
+lu_tax_code_template_b_VB-PA-8,lu_tct_m705,b_VB-PA-8,1,,Base - Vente Biens 8% - Pays,
+lu_tax_code_template_b_VB-PA-Tab,lu_tct_m017,b_VB-PA-Tab,1,,Base - Vente Biens Tabacs - Pays,
+lu_tax_code_template_b_VB-TR-0,lu_tct_m018,b_VB-TR-0,1,,Base - Vente Biens – Triangulaire Intracommunautaire,
+lu_tax_code_template_b_VP-EC-0,lu_tct_m019,b_VP-EC-0,1,,Base - Vente Prestations - Extracommunautaire,
+lu_tax_code_template_b_VP-IC-0,lu_tct_m423,b_VP-IC-0,1,,Base - Vente Prestations - Intracommunautaire,
+lu_tax_code_template_b_VP-IC-EX,lu_tct_m424,b_VP-IC-EX,1,,Base - Vente Prestations - Intracommunautaire exonérées dans l'état membre,
+lu_tax_code_template_b_VP-PA-0,lu_tct_m033,b_VP-PA-0,1,,Base - Vente Prestations 0% - Pays,
+lu_tax_code_template_b_VP-PA-12,lu_tct_m032,b_VP-PA-12,1,,Base - Vente Prestations 12% - Pays,
+lu_tax_code_template_b_VP-PA-14,lu_tct_m703,b_VP-PA-14,1,,Base - Vente Prestations 14% - Pays,
+lu_tax_code_template_b_VP-PA-15,lu_tct_m029,b_VP-PA-15,1,,Base - Vente Prestations 15% - Pays,
+lu_tax_code_template_b_VP-PA-17,lu_tct_m701,b_VP-PA-17,1,,Base - Vente Prestations 17% - Pays,
+lu_tax_code_template_b_VP-PA-3,lu_tct_m031,b_VP-PA-3,1,,Base - Vente Prestations 3% - Pays,
+lu_tax_code_template_b_VP-PA-6,lu_tct_m030,b_VP-PA-6,1,,Base - Vente Prestations 6% - Pays,
+lu_tax_code_template_b_VP-PA-8,lu_tct_m705,b_VP-PA-8,1,,Base - Vente Prestations 8% - Pays,
+lu_tax_code_template_t_AB-EC-12,lu_tct_m069,t_AB-EC-12,1,,Taxe - Achat Biens 12% - Extracommunautaire (+),
+lu_tax_code_template_t_AB-EC-12-n,lu_tct_m460,t_AB-EC-12-n,1,,Taxe - Achat Biens 12% - Extracommunautaire (-),
+lu_tax_code_template_t_AB-EC-14,lu_tct_m724,t_AB-EC-14,1,,Taxe - Achat Biens 14% - Extracommunautaire (+),
+lu_tax_code_template_t_AB-EC-14-n,lu_tct_m460,t_AB-EC-14-n,1,,Taxe - Achat Biens 14% - Extracommunautaire (-),
+lu_tax_code_template_t_AB-EC-15,lu_tct_m066,t_AB-EC-15,1,,Taxe - Achat Biens 15% - Extracommunautaire (+),
+lu_tax_code_template_t_AB-EC-15-n,lu_tct_m460,t_AB-EC-15-n,1,,Taxe - Achat Biens 15% - Extracommunautaire (-),
+lu_tax_code_template_t_AB-EC-17,lu_tct_m722,t_AB-EC-17,1,,Taxe - Achat Biens 17% - Extracommunautaire (+),
+lu_tax_code_template_t_AB-EC-17-n,lu_tct_m460,t_AB-EC-17-n,1,,Taxe - Achat Biens 17% - Extracommunautaire (-),
+lu_tax_code_template_t_AB-EC-3,lu_tct_m068,t_AB-EC-3,1,,Taxe - Achat Biens 3% - Extracommunautaire (+),
+lu_tax_code_template_t_AB-EC-3-n,lu_tct_m460,t_AB-EC-3-n,1,,Taxe - Achat Biens 3% - Extracommunautaire (-),
+lu_tax_code_template_t_AB-EC-6,lu_tct_m067,t_AB-EC-6,1,,Taxe - Achat Biens 6% - Extracommunautaire (+),
+lu_tax_code_template_t_AB-EC-6-n,lu_tct_m460,t_AB-EC-6-n,1,,Taxe - Achat Biens 6% - Extracommunautaire (-),
+lu_tax_code_template_t_AB-EC-8,lu_tct_m726,t_AB-EC-8,1,,Taxe - Achat Biens 8% - Extracommunautaire (+),
+lu_tax_code_template_t_AB-EC-8-n,lu_tct_m460,t_AB-EC-8-n,1,,Taxe - Achat Biens 8% - Extracommunautaire (-),
+lu_tax_code_template_t_AB-ECP-12,lu_tct_m074,t_AB-ECP-12,1,,Taxe - Achat Biens 12% - Extracommunautaire fin privées (+),
+lu_tax_code_template_t_AB-ECP-12-n,lu_tct_m460,t_AB-ECP-12-n,1,,Taxe - Achat Biens 12% - Extracommunautaire fin privées (-),
+lu_tax_code_template_t_AB-ECP-14,lu_tct_m734,t_AB-ECP-14,1,,Taxe - Achat Biens 14% - Extracommunautaire fin privées (+),
+lu_tax_code_template_t_AB-ECP-14-n,lu_tct_m460,t_AB-ECP-14-n,1,,Taxe - Achat Biens 14% - Extracommunautaire fin privées (-),
+lu_tax_code_template_t_AB-ECP-15,lu_tct_m071,t_AB-ECP-15,1,,Taxe - Achat Biens 15% - Extracommunautaire fin privées (+),
+lu_tax_code_template_t_AB-ECP-15-n,lu_tct_m460,t_AB-ECP-15-n,1,,Taxe - Achat Biens 15% - Extracommunautaire fin privées (-),
+lu_tax_code_template_t_AB-ECP-17,lu_tct_m732,t_AB-ECP-17,1,,Taxe - Achat Biens 17% - Extracommunautaire fin privées (+),
+lu_tax_code_template_t_AB-ECP-17-n,lu_tct_m460,t_AB-ECP-17-n,1,,Taxe - Achat Biens 17% - Extracommunautaire fin privées (-),
+lu_tax_code_template_t_AB-ECP-3,lu_tct_m073,t_AB-ECP-3,1,,Taxe - Achat Biens 3% - Extracommunautaire fin privées (+),
+lu_tax_code_template_t_AB-ECP-3-n,lu_tct_m460,t_AB-ECP-3-n,1,,Taxe - Achat Biens 3% - Extracommunautaire fin privées (-),
+lu_tax_code_template_t_AB-ECP-6,lu_tct_m072,t_AB-ECP-6,1,,Taxe - Achat Biens 6% - Extracommunautaire fin privées (+),
+lu_tax_code_template_t_AB-ECP-6-n,lu_tct_m460,t_AB-ECP-6-n,1,,Taxe - Achat Biens 6% - Extracommunautaire fin privées (-),
+lu_tax_code_template_t_AB-ECP-8,lu_tct_m736,t_AB-ECP-8,1,,Taxe - Achat Biens 8% - Extracommunautaire fin privées (+),
+lu_tax_code_template_t_AB-ECP-8-n,lu_tct_m460,t_AB-ECP-8-n,1,,Taxe - Achat Biens 8% - Extracommunautaire fin privées (-),
+lu_tax_code_template_t_AB-IC-12,lu_tct_m055,t_AB-IC-12,1,,Taxe - Achat Biens 12% - Intracommunautaire (+),
+lu_tax_code_template_t_AB-IC-12-n,lu_tct_m459,t_AB-IC-12-n,1,,Taxe - Achat Biens 12% - Intracommunautaire (-),
+lu_tax_code_template_t_AB-IC-14,lu_tct_m714,t_AB-IC-14,1,,Taxe - Achat Biens 14% - Intracommunautaire (+),
+lu_tax_code_template_t_AB-IC-14-n,lu_tct_m459,t_AB-IC-14-n,1,,Taxe - Achat Biens 14% - Intracommunautaire (-),
+lu_tax_code_template_t_AB-IC-15,lu_tct_m052,t_AB-IC-15,1,,Taxe - Achat Biens 15% - Intracommunautaire (+),
+lu_tax_code_template_t_AB-IC-15-n,lu_tct_m459,t_AB-IC-15-n,1,,Taxe - Achat Biens 15% - Intracommunautaire (-),
+lu_tax_code_template_t_AB-IC-17,lu_tct_m712,t_AB-IC-17,1,,Taxe - Achat Biens 17% - Intracommunautaire (+),
+lu_tax_code_template_t_AB-IC-17-n,lu_tct_m459,t_AB-IC-17-n,1,,Taxe - Achat Biens 17% - Intracommunautaire (-),
+lu_tax_code_template_t_AB-IC-3,lu_tct_m054,t_AB-IC-3,1,,Taxe - Achat Biens 3% - Intracommunautaire (+),
+lu_tax_code_template_t_AB-IC-3-n,lu_tct_m459,t_AB-IC-3-n,1,,Taxe - Achat Biens 3% - Intracommunautaire (-),
+lu_tax_code_template_t_AB-IC-6,lu_tct_m053,t_AB-IC-6,1,,Taxe - Achat Biens 6% - Intracommunautaire (+),
+lu_tax_code_template_t_AB-IC-6-n,lu_tct_m459,t_AB-IC-6-n,1,,Taxe - Achat Biens 6% - Intracommunautaire (-),
+lu_tax_code_template_t_AB-IC-8,lu_tct_m716,t_AB-IC-8,1,,Taxe - Achat Biens 8% - Intracommunautaire (+),
+lu_tax_code_template_t_AB-IC-8-n,lu_tct_m459,t_AB-IC-8-n,1,,Taxe - Achat Biens 8% - Intracommunautaire (-),
+lu_tax_code_template_t_AB-PA-12,lu_tct_m458,t_AB-PA-12,1,,Taxe - Achat Biens 12% - Pays,
+lu_tax_code_template_t_AB-PA-14,lu_tct_m458,t_AB-PA-14,1,,Taxe - Achat Biens 14% - Pays,
+lu_tax_code_template_t_AB-PA-15,lu_tct_m458,t_AB-PA-15,1,,Taxe - Achat Biens 15% - Pays,
+lu_tax_code_template_t_AB-PA-17,lu_tct_m458,t_AB-PA-17,1,,Taxe - Achat Biens 17% - Pays,
+lu_tax_code_template_t_AB-PA-3,lu_tct_m458,t_AB-PA-3,1,,Taxe - Achat Biens 3% - Pays,
+lu_tax_code_template_t_AB-PA-6,lu_tct_m458,t_AB-PA-6,1,,Taxe - Achat Biens 6% - Pays,
+lu_tax_code_template_t_AB-PA-8,lu_tct_m458,t_AB-PA-8,1,,Taxe - Achat Biens 8% - Pays,
+lu_tax_code_template_t_AP-EC-12,lu_tct_m444,t_AP-EC-12,1,,Taxe - Achat Prestations 12% - Extracommunautaire (+),
+lu_tax_code_template_t_AP-EC-12-n,lu_tct_m461,t_AP-EC-12-n,1,,Taxe - Achat Prestations 12% - Extracommunautaire (-),
+lu_tax_code_template_t_AP-EC-14,lu_tct_m754,t_AP-EC-14,1,,Taxe - Achat Prestations 14% - Extracommunautaire (+),
+lu_tax_code_template_t_AP-EC-14-n,lu_tct_m461,t_AP-EC-14-n,1,,Taxe - Achat Prestations 14% - Extracommunautaire (-),
+lu_tax_code_template_t_AP-EC-15,lu_tct_m438,t_AP-EC-15,1,,Taxe - Achat Prestations 15% - Extracommunautaire (+),
+lu_tax_code_template_t_AP-EC-15-n,lu_tct_m461,t_AP-EC-15-n,1,,Taxe - Achat Prestations 15% - Extracommunautaire (-),
+lu_tax_code_template_t_AP-EC-17,lu_tct_m752,t_AP-EC-17,1,,Taxe - Achat Prestations 17% - Extracommunautaire (+),
+lu_tax_code_template_t_AP-EC-17-n,lu_tct_m461,t_AP-EC-17-n,1,,Taxe - Achat Prestations 17% - Extracommunautaire (-),
+lu_tax_code_template_t_AP-EC-3,lu_tct_m442,t_AP-EC-3,1,,Taxe - Achat Prestations 3% - Extracommunautaire (+),
+lu_tax_code_template_t_AP-EC-3-n,lu_tct_m461,t_AP-EC-3-n,1,,Taxe - Achat Prestations 3% - Extracommunautaire (-),
+lu_tax_code_template_t_AP-EC-6,lu_tct_m440,t_AP-EC-6,1,,Taxe - Achat Prestations 6% - Extracommunautaire (+),
+lu_tax_code_template_t_AP-EC-6-n,lu_tct_m461,t_AP-EC-6-n,1,,Taxe - Achat Prestations 6% - Extracommunautaire (-),
+lu_tax_code_template_t_AP-EC-8,lu_tct_m756,t_AP-EC-8,1,,Taxe - Achat Prestations 8% - Extracommunautaire (+),
+lu_tax_code_template_t_AP-EC-8-n,lu_tct_m461,t_AP-EC-8-n,1,,Taxe - Achat Prestations 8% - Extracommunautaire (-),
+lu_tax_code_template_t_AP-IC-12,lu_tct_m434,t_AP-IC-12,1,,Taxe - Achat Prestations 12% - Intracommunautaire (+),
+lu_tax_code_template_t_AP-IC-12-n,lu_tct_m461,t_AP-IC-12-n,1,,Taxe - Achat Prestations 12% - Intracommunautaire (-),
+lu_tax_code_template_t_AP-IC-14,lu_tct_m744,t_AP-IC-14,1,,Taxe - Achat Prestations 14% - Intracommunautaire (+),
+lu_tax_code_template_t_AP-IC-14-n,lu_tct_m461,t_AP-IC-14-n,1,,Taxe - Achat Prestations 14% - Intracommunautaire (-),
+lu_tax_code_template_t_AP-IC-15,lu_tct_m428,t_AP-IC-15,1,,Taxe - Achat Prestations 15% - Intracommunautaire (+),
+lu_tax_code_template_t_AP-IC-15-n,lu_tct_m461,t_AP-IC-15-n,1,,Taxe - Achat Prestations 15% - Intracommunautaire (-),
+lu_tax_code_template_t_AP-IC-17,lu_tct_m742,t_AP-IC-17,1,,Taxe - Achat Prestations 17% - Intracommunautaire (+),
+lu_tax_code_template_t_AP-IC-17-n,lu_tct_m461,t_AP-IC-17-n,1,,Taxe - Achat Prestations 17% - Intracommunautaire (-),
+lu_tax_code_template_t_AP-IC-3,lu_tct_m432,t_AP-IC-3,1,,Taxe - Achat Prestations 3% - Intracommunautaire (+),
+lu_tax_code_template_t_AP-IC-3-n,lu_tct_m461,t_AP-IC-3-n,1,,Taxe - Achat Prestations 3% - Intracommunautaire (-),
+lu_tax_code_template_t_AP-IC-6,lu_tct_m430,t_AP-IC-6,1,,Taxe - Achat Prestations 6% - Intracommunautaire (+),
+lu_tax_code_template_t_AP-IC-6-n,lu_tct_m461,t_AP-IC-6-n,1,,Taxe - Achat Prestations 6% - Intracommunautaire (-),
+lu_tax_code_template_t_AP-IC-8,lu_tct_m746,t_AP-IC-8,1,,Taxe - Achat Prestations 8% - Intracommunautaire (+),
+lu_tax_code_template_t_AP-IC-8-n,lu_tct_m461,t_AP-IC-8-n,1,,Taxe - Achat Prestations 8% - Intracommunautaire (-),
+lu_tax_code_template_t_AP-PA-12,lu_tct_m458,t_AP-PA-12,1,,Taxe - Achat Prestations 12% - Pays,
+lu_tax_code_template_t_AP-PA-14,lu_tct_m458,t_AP-PA-14,1,,Taxe - Achat Prestations 14% - Pays,
+lu_tax_code_template_t_AP-PA-15,lu_tct_m458,t_AP-PA-15,1,,Taxe - Achat Prestations 15% - Pays,
+lu_tax_code_template_t_AP-PA-17,lu_tct_m458,t_AP-PA-17,1,,Taxe - Achat Prestations 17% - Pays,
+lu_tax_code_template_t_AP-PA-3,lu_tct_m458,t_AP-PA-3,1,,Taxe - Achat Prestations 3% - Pays,
+lu_tax_code_template_t_AP-PA-6,lu_tct_m458,t_AP-PA-6,1,,Taxe - Achat Prestations 6% - Pays,
+lu_tax_code_template_t_AP-PA-8,lu_tct_m458,t_AP-PA-8,1,,Taxe - Achat Prestations 8% - Pays,
+lu_tax_code_template_t_FB-EC-12,lu_tct_m069,t_FB-EC-12,1,,Taxe - Frais Biens 12% - Extracommunautaire (+),
+lu_tax_code_template_t_FB-EC-12-n,lu_tct_m460,t_FB-EC-12-n,1,,Taxe - Frais Biens 12% - Extracommunautaire (-),
+lu_tax_code_template_t_FB-EC-14,lu_tct_m724,t_FB-EC-14,1,,Taxe - Frais Biens 14% - Extracommunautaire (+),
+lu_tax_code_template_t_FB-EC-14-n,lu_tct_m460,t_FB-EC-14-n,1,,Taxe - Frais Biens 14% - Extracommunautaire (-),
+lu_tax_code_template_t_FB-EC-15,lu_tct_m066,t_FB-EC-15,1,,Taxe - Frais Biens 15% - Extracommunautaire (+),
+lu_tax_code_template_t_FB-EC-15-n,lu_tct_m460,t_FB-EC-15-n,1,,Taxe - Frais Biens 15% - Extracommunautaire (-),
+lu_tax_code_template_t_FB-EC-17,lu_tct_m722,t_FB-EC-17,1,,Taxe - Frais Biens 17% - Extracommunautaire (+),
+lu_tax_code_template_t_FB-EC-17-n,lu_tct_m460,t_FB-EC-17-n,1,,Taxe - Frais Biens 17% - Extracommunautaire (-),
+lu_tax_code_template_t_FB-EC-3,lu_tct_m068,t_FB-EC-3,1,,Taxe - Frais Biens 3% - Extracommunautaire (+),
+lu_tax_code_template_t_FB-EC-3-n,lu_tct_m460,t_FB-EC-3-n,1,,Taxe - Frais Biens 3% - Extracommunautaire (-),
+lu_tax_code_template_t_FB-EC-6,lu_tct_m067,t_FB-EC-6,1,,Taxe - Frais Biens 6% - Extracommunautaire (+),
+lu_tax_code_template_t_FB-EC-6-n,lu_tct_m460,t_FB-EC-6-n,1,,Taxe - Frais Biens 6% - Extracommunautaire (-),
+lu_tax_code_template_t_FB-EC-8,lu_tct_m726,t_FB-EC-8,1,,Taxe - Frais Biens 8% - Extracommunautaire (+),
+lu_tax_code_template_t_FB-EC-8-n,lu_tct_m460,t_FB-EC-8-n,1,,Taxe - Frais Biens 8% - Extracommunautaire (-),
+lu_tax_code_template_t_FB-ECP-12,lu_tct_m074,t_FB-ECP-12,1,,Taxe - Frais Biens 12% - Extracommunautaire fin privées (+),
+lu_tax_code_template_t_FB-ECP-12-n,lu_tct_m460,t_FB-ECP-12-n,1,,Taxe - Frais Biens 12% - Extracommunautaire fin privées (-),
+lu_tax_code_template_t_FB-ECP-14,lu_tct_m734,t_FB-ECP-14,1,,Taxe - Frais Biens 14% - Extracommunautaire fin privées (+),
+lu_tax_code_template_t_FB-ECP-14-n,lu_tct_m460,t_FB-ECP-14-n,1,,Taxe - Frais Biens 14% - Extracommunautaire fin privées (-),
+lu_tax_code_template_t_FB-ECP-15,lu_tct_m071,t_FB-ECP-15,1,,Taxe - Frais Biens 15% - Extracommunautaire fin privées (+),
+lu_tax_code_template_t_FB-ECP-15-n,lu_tct_m460,t_FB-ECP-15-n,1,,Taxe - Frais Biens 15% - Extracommunautaire fin privées (-),
+lu_tax_code_template_t_FB-ECP-17,lu_tct_m732,t_FB-ECP-17,1,,Taxe - Frais Biens 17% - Extracommunautaire fin privées (+),
+lu_tax_code_template_t_FB-ECP-17-n,lu_tct_m460,t_FB-ECP-17-n,1,,Taxe - Frais Biens 17% - Extracommunautaire fin privées (-),
+lu_tax_code_template_t_FB-ECP-3,lu_tct_m073,t_FB-ECP-3,1,,Taxe - Frais Biens 3% - Extracommunautaire fin privées (+),
+lu_tax_code_template_t_FB-ECP-3-n,lu_tct_m460,t_FB-ECP-3-n,1,,Taxe - Frais Biens 3% - Extracommunautaire fin privées (-),
+lu_tax_code_template_t_FB-ECP-6,lu_tct_m072,t_FB-ECP-6,1,,Taxe - Frais Biens 6% - Extracommunautaire fin privées (+),
+lu_tax_code_template_t_FB-ECP-6-n,lu_tct_m460,t_FB-ECP-6-n,1,,Taxe - Frais Biens 6% - Extracommunautaire fin privées (-),
+lu_tax_code_template_t_FB-ECP-8,lu_tct_m736,t_FB-ECP-8,1,,Taxe - Frais Biens 8% - Extracommunautaire fin privées (+),
+lu_tax_code_template_t_FB-ECP-8-n,lu_tct_m460,t_FB-ECP-8-n,1,,Taxe - Frais Biens 8% - Extracommunautaire fin privées (-),
+lu_tax_code_template_t_FB-IC-12,lu_tct_m055,t_FB-IC-12,1,,Taxe - Frais Biens 12% - Intracommunautaire (+),
+lu_tax_code_template_t_FB-IC-12-n,lu_tct_m459,t_FB-IC-12-n,1,,Taxe - Frais Biens 12% - Intracommunautaire (-),
+lu_tax_code_template_t_FB-IC-14,lu_tct_m714,t_FB-IC-14,1,,Taxe - Frais Biens 14% - Intracommunautaire (+),
+lu_tax_code_template_t_FB-IC-14-n,lu_tct_m459,t_FB-IC-14-n,1,,Taxe - Frais Biens 14% - Intracommunautaire (-),
+lu_tax_code_template_t_FB-IC-15,lu_tct_m052,t_FB-IC-15,1,,Taxe - Frais Biens 15% - Intracommunautaire (+),
+lu_tax_code_template_t_FB-IC-15-n,lu_tct_m459,t_FB-IC-15-n,1,,Taxe - Frais Biens 15% - Intracommunautaire (-),
+lu_tax_code_template_t_FB-IC-17,lu_tct_m712,t_FB-IC-17,1,,Taxe - Frais Biens 17% - Intracommunautaire (+),
+lu_tax_code_template_t_FB-IC-17-n,lu_tct_m459,t_FB-IC-17-n,1,,Taxe - Frais Biens 17% - Intracommunautaire (-),
+lu_tax_code_template_t_FB-IC-3,lu_tct_m054,t_FB-IC-3,1,,Taxe - Frais Biens 3% - Intracommunautaire (+),
+lu_tax_code_template_t_FB-IC-3-n,lu_tct_m459,t_FB-IC-3-n,1,,Taxe - Frais Biens 3% - Intracommunautaire (-),
+lu_tax_code_template_t_FB-IC-6,lu_tct_m053,t_FB-IC-6,1,,Taxe - Frais Biens 6% - Intracommunautaire (+),
+lu_tax_code_template_t_FB-IC-6-n,lu_tct_m459,t_FB-IC-6-n,1,,Taxe - Frais Biens 6% - Intracommunautaire (-),
+lu_tax_code_template_t_FB-IC-8,lu_tct_m716,t_FB-IC-8,1,,Taxe - Frais Biens 8% - Intracommunautaire (+),
+lu_tax_code_template_t_FB-IC-8-n,lu_tct_m459,t_FB-IC-8-n,1,,Taxe - Frais Biens 8% - Intracommunautaire (-),
+lu_tax_code_template_t_FB-PA-12,lu_tct_m458,t_FB-PA-12,1,,Taxe - Frais Biens 12% - Pays,
+lu_tax_code_template_t_FB-PA-14,lu_tct_m458,t_FB-PA-14,1,,Taxe - Frais Biens 14% - Pays,
+lu_tax_code_template_t_FB-PA-15,lu_tct_m458,t_FB-PA-15,1,,Taxe - Frais Biens 15% - Pays,
+lu_tax_code_template_t_FB-PA-17,lu_tct_m458,t_FB-PA-17,1,,Taxe - Frais Biens 17% - Pays,
+lu_tax_code_template_t_FB-PA-3,lu_tct_m458,t_FB-PA-3,1,,Taxe - Frais Biens 3% - Pays,
+lu_tax_code_template_t_FB-PA-6,lu_tct_m458,t_FB-PA-6,1,,Taxe - Frais Biens 6% - Pays,
+lu_tax_code_template_t_FB-PA-8,lu_tct_m458,t_FB-PA-8,1,,Taxe - Frais Biens 8% - Pays,
+lu_tax_code_template_t_FP-EC-12,lu_tct_m444,t_FP-EC-12,1,,Taxe - Frais Prestations 12% - Extracommunautaire (+),
+lu_tax_code_template_t_FP-EC-12-n,lu_tct_m461,t_FP-EC-12-n,1,,Taxe - Frais Prestations 12% - Extracommunautaire (-),
+lu_tax_code_template_t_FP-EC-14,lu_tct_m754,t_FP-EC-14,1,,Taxe - Frais Prestations 14% - Extracommunautaire (+),
+lu_tax_code_template_t_FP-EC-14-n,lu_tct_m461,t_FP-EC-14-n,1,,Taxe - Frais Prestations 14% - Extracommunautaire (-),
+lu_tax_code_template_t_FP-EC-15,lu_tct_m438,t_FP-EC-15,1,,Taxe - Frais Prestations 15% - Extracommunautaire (+),
+lu_tax_code_template_t_FP-EC-15-n,lu_tct_m461,t_FP-EC-15-n,1,,Taxe - Frais Prestations 15% - Extracommunautaire (-),
+lu_tax_code_template_t_FP-EC-17,lu_tct_m752,t_FP-EC-17,1,,Taxe - Frais Prestations 17% - Extracommunautaire (+),
+lu_tax_code_template_t_FP-EC-17-n,lu_tct_m461,t_FP-EC-17-n,1,,Taxe - Frais Prestations 17% - Extracommunautaire (-),
+lu_tax_code_template_t_FP-EC-3,lu_tct_m442,t_FP-EC-3,1,,Taxe - Frais Prestations 3% - Extracommunautaire (+),
+lu_tax_code_template_t_FP-EC-3-n,lu_tct_m461,t_FP-EC-3-n,1,,Taxe - Frais Prestations 3% - Extracommunautaire (-),
+lu_tax_code_template_t_FP-EC-6,lu_tct_m440,t_FP-EC-6,1,,Taxe - Frais Prestations 6% - Extracommunautaire (+),
+lu_tax_code_template_t_FP-EC-6-n,lu_tct_m461,t_FP-EC-6-n,1,,Taxe - Frais Prestations 6% - Extracommunautaire (-),
+lu_tax_code_template_t_FP-EC-8,lu_tct_m756,t_FP-EC-8,1,,Taxe - Frais Prestations 8% - Extracommunautaire (+),
+lu_tax_code_template_t_FP-EC-8-n,lu_tct_m461,t_FP-EC-8-n,1,,Taxe - Frais Prestations 8% - Extracommunautaire (-),
+lu_tax_code_template_t_FP-IC-12,lu_tct_m434,t_FP-IC-12,1,,Taxe - Frais Prestations 12% - Intracommunautaire (+),
+lu_tax_code_template_t_FP-IC-12-n,lu_tct_m461,t_FP-IC-12-n,1,,Taxe - Frais Prestations 12% - Intracommunautaire (-),
+lu_tax_code_template_t_FP-IC-14,lu_tct_m744,t_FP-IC-14,1,,Taxe - Frais Prestations 14% - Intracommunautaire (+),
+lu_tax_code_template_t_FP-IC-14-n,lu_tct_m461,t_FP-IC-14-n,1,,Taxe - Frais Prestations 14% - Intracommunautaire (-),
+lu_tax_code_template_t_FP-IC-15,lu_tct_m428,t_FP-IC-15,1,,Taxe - Frais Prestations 15% - Intracommunautaire (+),
+lu_tax_code_template_t_FP-IC-15-n,lu_tct_m461,t_FP-IC-15-n,1,,Taxe - Frais Prestations 15% - Intracommunautaire (-),
+lu_tax_code_template_t_FP-IC-17,lu_tct_m742,t_FP-IC-17,1,,Taxe - Frais Prestations 17% - Intracommunautaire (+),
+lu_tax_code_template_t_FP-IC-17-n,lu_tct_m461,t_FP-IC-17-n,1,,Taxe - Frais Prestations 17% - Intracommunautaire (-),
+lu_tax_code_template_t_FP-IC-3,lu_tct_m432,t_FP-IC-3,1,,Taxe - Frais Prestations 3% - Intracommunautaire (+),
+lu_tax_code_template_t_FP-IC-3-n,lu_tct_m461,t_FP-IC-3-n,1,,Taxe - Frais Prestations 3% - Intracommunautaire (-),
+lu_tax_code_template_t_FP-IC-6,lu_tct_m430,t_FP-IC-6,1,,Taxe - Frais Prestations 6% - Intracommunautaire (+),
+lu_tax_code_template_t_FP-IC-6-n,lu_tct_m461,t_FP-IC-6-n,1,,Taxe - Frais Prestations 6% - Intracommunautaire (-),
+lu_tax_code_template_t_FP-IC-8,lu_tct_m746,t_FP-IC-8,1,,Taxe - Frais Prestations 8% - Intracommunautaire (+),
+lu_tax_code_template_t_FP-IC-8-n,lu_tct_m461,t_FP-IC-8-n,1,,Taxe - Frais Prestations 8% - Intracommunautaire (-),
+lu_tax_code_template_t_FP-PA-12,lu_tct_m458,t_FP-PA-12,1,,Taxe - Frais Prestations 12% - Pays,
+lu_tax_code_template_t_FP-PA-14,lu_tct_m458,t_FP-PA-14,1,,Taxe - Frais Prestations 14% - Pays,
+lu_tax_code_template_t_FP-PA-15,lu_tct_m458,t_FP-PA-15,1,,Taxe - Frais Prestations 15% - Pays,
+lu_tax_code_template_t_FP-PA-17,lu_tct_m458,t_FP-PA-17,1,,Taxe - Frais Prestations 17% - Pays,
+lu_tax_code_template_t_FP-PA-3,lu_tct_m458,t_FP-PA-3,1,,Taxe - Frais Prestations 3% - Pays,
+lu_tax_code_template_t_FP-PA-6,lu_tct_m458,t_FP-PA-6,1,,Taxe - Frais Prestations 6% - Pays,
+lu_tax_code_template_t_FP-PA-8,lu_tct_m458,t_FP-PA-8,1,,Taxe - Frais Prestations 8% - Pays,
+lu_tax_code_template_t_IB-EC-12,lu_tct_m069,t_IB-EC-12,1,,Taxe - Investissement Biens 12% - Extracommunautaire (+),
+lu_tax_code_template_t_IB-EC-12-n,lu_tct_m460,t_IB-EC-12-n,1,,Taxe - Investissement Biens 12% - Extracommunautaire (-),
+lu_tax_code_template_t_IB-EC-14,lu_tct_m724,t_IB-EC-14,1,,Taxe - Investissement Biens 14% - Extracommunautaire (+),
+lu_tax_code_template_t_IB-EC-14-n,lu_tct_m460,t_IB-EC-14-n,1,,Taxe - Investissement Biens 14% - Extracommunautaire (-),
+lu_tax_code_template_t_IB-EC-15,lu_tct_m066,t_IB-EC-15,1,,Taxe - Investissement Biens 15% - Extracommunautaire (+),
+lu_tax_code_template_t_IB-EC-15-n,lu_tct_m460,t_IB-EC-15-n,1,,Taxe - Investissement Biens 15% - Extracommunautaire (-),
+lu_tax_code_template_t_IB-EC-17,lu_tct_m722,t_IB-EC-17,1,,Taxe - Investissement Biens 17% - Extracommunautaire (+),
+lu_tax_code_template_t_IB-EC-17-n,lu_tct_m460,t_IB-EC-17-n,1,,Taxe - Investissement Biens 17% - Extracommunautaire (-),
+lu_tax_code_template_t_IB-EC-3,lu_tct_m068,t_IB-EC-3,1,,Taxe - Investissement Biens 3% - Extracommunautaire (+),
+lu_tax_code_template_t_IB-EC-3-n,lu_tct_m460,t_IB-EC-3-n,1,,Taxe - Investissement Biens 3% - Extracommunautaire (-),
+lu_tax_code_template_t_IB-EC-6,lu_tct_m067,t_IB-EC-6,1,,Taxe - Investissement Biens 6% - Extracommunautaire (+),
+lu_tax_code_template_t_IB-EC-6-n,lu_tct_m460,t_IB-EC-6-n,1,,Taxe - Investissement Biens 6% - Extracommunautaire (-),
+lu_tax_code_template_t_IB-EC-8,lu_tct_m726,t_IB-EC-8,1,,Taxe - Investissement Biens 8% - Extracommunautaire (+),
+lu_tax_code_template_t_IB-EC-8-n,lu_tct_m460,t_IB-EC-8-n,1,,Taxe - Investissement Biens 8% - Extracommunautaire (-),
+lu_tax_code_template_t_IB-ECP-12,lu_tct_m074,t_IB-ECP-12,1,,Taxe - Investissement Biens 12% - Extracommunautaire fin privées (+),
+lu_tax_code_template_t_IB-ECP-12-n,lu_tct_m460,t_IB-ECP-12-n,1,,Taxe - Investissement Biens 12% - Extracommunautaire fin privées (-),
+lu_tax_code_template_t_IB-ECP-14,lu_tct_m734,t_IB-ECP-14,1,,Taxe - Investissement Biens 14% - Extracommunautaire fin privées (+),
+lu_tax_code_template_t_IB-ECP-14-n,lu_tct_m460,t_IB-ECP-14-n,1,,Taxe - Investissement Biens 14% - Extracommunautaire fin privées (-),
+lu_tax_code_template_t_IB-ECP-15,lu_tct_m071,t_IB-ECP-15,1,,Taxe - Investissement Biens 15% - Extracommunautaire fin privées (+),
+lu_tax_code_template_t_IB-ECP-15-n,lu_tct_m460,t_IB-ECP-15-n,1,,Taxe - Investissement Biens 15% - Extracommunautaire fin privées (-),
+lu_tax_code_template_t_IB-ECP-17,lu_tct_m732,t_IB-ECP-17,1,,Taxe - Investissement Biens 17% - Extracommunautaire fin privées (+),
+lu_tax_code_template_t_IB-ECP-17-n,lu_tct_m460,t_IB-ECP-17-n,1,,Taxe - Investissement Biens 17% - Extracommunautaire fin privées (-),
+lu_tax_code_template_t_IB-ECP-3,lu_tct_m073,t_IB-ECP-3,1,,Taxe - Investissement Biens 3% - Extracommunautaire fin privées (+),
+lu_tax_code_template_t_IB-ECP-3-n,lu_tct_m460,t_IB-ECP-3-n,1,,Taxe - Investissement Biens 3% - Extracommunautaire fin privées (-),
+lu_tax_code_template_t_IB-ECP-6,lu_tct_m072,t_IB-ECP-6,1,,Taxe - Investissement Biens 6% - Extracommunautaire fin privées (+),
+lu_tax_code_template_t_IB-ECP-6-n,lu_tct_m460,t_IB-ECP-6-n,1,,Taxe - Investissement Biens 6% - Extracommunautaire fin privées (-),
+lu_tax_code_template_t_IB-ECP-8,lu_tct_m736,t_IB-ECP-8,1,,Taxe - Investissement Biens 8% - Extracommunautaire fin privées (+),
+lu_tax_code_template_t_IB-ECP-8-n,lu_tct_m460,t_IB-ECP-8-n,1,,Taxe - Investissement Biens 8% - Extracommunautaire fin privées (-),
+lu_tax_code_template_t_IB-IC-12,lu_tct_m055,t_IB-IC-12,1,,Taxe - Investissement Biens 12% - Intracommunautaire (+),
+lu_tax_code_template_t_IB-IC-12-n,lu_tct_m459,t_IB-IC-12-n,1,,Taxe - Investissement Biens 12% - Intracommunautaire (-),
+lu_tax_code_template_t_IB-IC-14,lu_tct_m714,t_IB-IC-14,1,,Taxe - Investissement Biens 14% - Intracommunautaire (+),
+lu_tax_code_template_t_IB-IC-14-n,lu_tct_m459,t_IB-IC-14-n,1,,Taxe - Investissement Biens 14% - Intracommunautaire (-),
+lu_tax_code_template_t_IB-IC-15,lu_tct_m052,t_IB-IC-15,1,,Taxe - Investissement Biens 15% - Intracommunautaire (+),
+lu_tax_code_template_t_IB-IC-15-n,lu_tct_m459,t_IB-IC-15-n,1,,Taxe - Investissement Biens 15% - Intracommunautaire (-),
+lu_tax_code_template_t_IB-IC-17,lu_tct_m712,t_IB-IC-17,1,,Taxe - Investissement Biens 17% - Intracommunautaire (+),
+lu_tax_code_template_t_IB-IC-17-n,lu_tct_m459,t_IB-IC-17-n,1,,Taxe - Investissement Biens 17% - Intracommunautaire (-),
+lu_tax_code_template_t_IB-IC-3,lu_tct_m054,t_IB-IC-3,1,,Taxe - Investissement Biens 3% - Intracommunautaire (+),
+lu_tax_code_template_t_IB-IC-3-n,lu_tct_m459,t_IB-IC-3-n,1,,Taxe - Investissement Biens 3% - Intracommunautaire (-),
+lu_tax_code_template_t_IB-IC-6,lu_tct_m053,t_IB-IC-6,1,,Taxe - Investissement Biens 6% - Intracommunautaire (+),
+lu_tax_code_template_t_IB-IC-6-n,lu_tct_m459,t_IB-IC-6-n,1,,Taxe - Investissement Biens 6% - Intracommunautaire (-),
+lu_tax_code_template_t_IB-IC-8,lu_tct_m716,t_IB-IC-8,1,,Taxe - Investissement Biens 8% - Intracommunautaire (+),
+lu_tax_code_template_t_IB-IC-8-n,lu_tct_m459,t_IB-IC-8-n,1,,Taxe - Investissement Biens 8% - Intracommunautaire (-),
+lu_tax_code_template_t_IB-PA-12,lu_tct_m458,t_IB-PA-12,1,,Taxe - Investissement Biens 12% - Pays,
+lu_tax_code_template_t_IB-PA-14,lu_tct_m458,t_IB-PA-14,1,,Taxe - Investissement Biens 14% - Pays,
+lu_tax_code_template_t_IB-PA-15,lu_tct_m458,t_IB-PA-15,1,,Taxe - Investissement Biens 15% - Pays,
+lu_tax_code_template_t_IB-PA-17,lu_tct_m458,t_IB-PA-17,1,,Taxe - Investissement Biens 17% - Pays,
+lu_tax_code_template_t_IB-PA-3,lu_tct_m458,t_IB-PA-3,1,,Taxe - Investissement Biens 3% - Pays,
+lu_tax_code_template_t_IB-PA-6,lu_tct_m458,t_IB-PA-6,1,,Taxe - Investissement Biens 6% - Pays,
+lu_tax_code_template_t_IB-PA-8,lu_tct_m458,t_IB-PA-8,1,,Taxe - Investissement Biens 8% - Pays,
+lu_tax_code_template_t_IP-EC-12,lu_tct_m444,t_IP-EC-12,1,,Taxe - Investissement Prestations 12% - Extracommunautaire (+),
+lu_tax_code_template_t_IP-EC-12-n,lu_tct_m461,t_IP-EC-12-n,1,,Taxe - Investissement Prestations 12% - Extracommunautaire (-),
+lu_tax_code_template_t_IP-EC-14,lu_tct_m754,t_IP-EC-14,1,,Taxe - Investissement Prestations 14% - Extracommunautaire (+),
+lu_tax_code_template_t_IP-EC-14-n,lu_tct_m461,t_IP-EC-14-n,1,,Taxe - Investissement Prestations 14% - Extracommunautaire (-),
+lu_tax_code_template_t_IP-EC-15,lu_tct_m438,t_IP-EC-15,1,,Taxe - Investissement Prestations 15% - Extracommunautaire (+),
+lu_tax_code_template_t_IP-EC-15-n,lu_tct_m461,t_IP-EC-15-n,1,,Taxe - Investissement Prestations 15% - Extracommunautaire (-),
+lu_tax_code_template_t_IP-EC-17,lu_tct_m752,t_IP-EC-17,1,,Taxe - Investissement Prestations 17% - Extracommunautaire (+),
+lu_tax_code_template_t_IP-EC-17-n,lu_tct_m461,t_IP-EC-17-n,1,,Taxe - Investissement Prestations 17% - Extracommunautaire (-),
+lu_tax_code_template_t_IP-EC-3,lu_tct_m442,t_IP-EC-3,1,,Taxe - Investissement Prestations 3% - Extracommunautaire (+),
+lu_tax_code_template_t_IP-EC-3-n,lu_tct_m461,t_IP-EC-3-n,1,,Taxe - Investissement Prestations 3% - Extracommunautaire (-),
+lu_tax_code_template_t_IP-EC-6,lu_tct_m440,t_IP-EC-6,1,,Taxe - Investissement Prestations 6% - Extracommunautaire (+),
+lu_tax_code_template_t_IP-EC-6-n,lu_tct_m461,t_IP-EC-6-n,1,,Taxe - Investissement Prestations 6% - Extracommunautaire (-),
+lu_tax_code_template_t_IP-EC-8,lu_tct_m756,t_IP-EC-8,1,,Taxe - Investissement Prestations 8% - Extracommunautaire (+),
+lu_tax_code_template_t_IP-EC-8-n,lu_tct_m461,t_IP-EC-8-n,1,,Taxe - Investissement Prestations 8% - Extracommunautaire (-),
+lu_tax_code_template_t_IP-IC-12,lu_tct_m434,t_IP-IC-12,1,,Taxe - Investissement Prestations 12% - Intracommunautaire (+),
+lu_tax_code_template_t_IP-IC-12-n,lu_tct_m461,t_IP-IC-12-n,1,,Taxe - Investissement Prestations 12% - Intracommunautaire (-),
+lu_tax_code_template_t_IP-IC-14,lu_tct_m744,t_IP-IC-14,1,,Taxe - Investissement Prestations 14% - Intracommunautaire (+),
+lu_tax_code_template_t_IP-IC-14-n,lu_tct_m461,t_IP-IC-14-n,1,,Taxe - Investissement Prestations 14% - Intracommunautaire (-),
+lu_tax_code_template_t_IP-IC-15,lu_tct_m428,t_IP-IC-15,1,,Taxe - Investissement Prestations 15% - Intracommunautaire (+),
+lu_tax_code_template_t_IP-IC-15-n,lu_tct_m461,t_IP-IC-15-n,1,,Taxe - Investissement Prestations 15% - Intracommunautaire (-),
+lu_tax_code_template_t_IP-IC-17,lu_tct_m742,t_IP-IC-17,1,,Taxe - Investissement Prestations 17% - Intracommunautaire (+),
+lu_tax_code_template_t_IP-IC-17-n,lu_tct_m461,t_IP-IC-17-n,1,,Taxe - Investissement Prestations 17% - Intracommunautaire (-),
+lu_tax_code_template_t_IP-IC-3,lu_tct_m432,t_IP-IC-3,1,,Taxe - Investissement Prestations 3% - Intracommunautaire (+),
+lu_tax_code_template_t_IP-IC-3-n,lu_tct_m461,t_IP-IC-3-n,1,,Taxe - Investissement Prestations 3% - Intracommunautaire (-),
+lu_tax_code_template_t_IP-IC-6,lu_tct_m430,t_IP-IC-6,1,,Taxe - Investissement Prestations 6% - Intracommunautaire (+),
+lu_tax_code_template_t_IP-IC-6-n,lu_tct_m461,t_IP-IC-6-n,1,,Taxe - Investissement Prestations 6% - Intracommunautaire (-),
+lu_tax_code_template_t_IP-IC-8,lu_tct_m746,t_IP-IC-8,1,,Taxe - Investissement Prestations 8% - Intracommunautaire (+),
+lu_tax_code_template_t_IP-IC-8-n,lu_tct_m461,t_IP-IC-8-n,1,,Taxe - Investissement Prestations 8% - Intracommunautaire (-),
+lu_tax_code_template_t_IP-PA-12,lu_tct_m458,t_IP-PA-12,1,,Taxe - Investissement Prestations 12% - Pays,
+lu_tax_code_template_t_IP-PA-14,lu_tct_m458,t_IP-PA-14,1,,Taxe - Investissement Prestations 14% - Pays,
+lu_tax_code_template_t_IP-PA-15,lu_tct_m458,t_IP-PA-15,1,,Taxe - Investissement Prestations 15% - Pays,
+lu_tax_code_template_t_IP-PA-17,lu_tct_m458,t_IP-PA-17,1,,Taxe - Investissement Prestations 17% - Pays,
+lu_tax_code_template_t_IP-PA-3,lu_tct_m458,t_IP-PA-3,1,,Taxe - Investissement Prestations 3% - Pays,
+lu_tax_code_template_t_IP-PA-6,lu_tct_m458,t_IP-PA-6,1,,Taxe - Investissement Prestations 6% - Pays,
+lu_tax_code_template_t_IP-PA-8,lu_tct_m458,t_IP-PA-8,1,,Taxe - Investissement Prestations 8% - Pays,
+lu_tax_code_template_t_VB-PA-12,lu_tct_m041,t_VB-PA-12,1,,Taxe - Vente Biens 12% - Pays,
+lu_tax_code_template_t_VB-PA-14,lu_tct_m704,t_VB-PA-14,1,,Taxe - Vente Biens 14% - Pays,
+lu_tax_code_template_t_VB-PA-15,lu_tct_m038,t_VB-PA-15,1,,Taxe - Vente Biens 15% - Pays,
+lu_tax_code_template_t_VB-PA-17,lu_tct_m702,t_VB-PA-17,1,,Taxe - Vente Biens 17% - Pays,
+lu_tax_code_template_t_VB-PA-3,lu_tct_m040,t_VB-PA-3,1,,Taxe - Vente Biens 3% - Pays,
+lu_tax_code_template_t_VB-PA-6,lu_tct_m039,t_VB-PA-6,1,,Taxe - Vente Biens 6% - Pays,
+lu_tax_code_template_t_VB-PA-8,lu_tct_m706,t_VB-PA-8,1,,Taxe - Vente Biens 8% - Pays,
+lu_tax_code_template_t_VP-PA-12,lu_tct_m041,t_VP-PA-12,1,,Taxe - Vente Prestations 12% - Pays,
+lu_tax_code_template_t_VP-PA-14,lu_tct_m704,t_VP-PA-14,1,,Taxe - Vente Prestations 14% - Pays,
+lu_tax_code_template_t_VP-PA-15,lu_tct_m038,t_VP-PA-15,1,,Taxe - Vente Prestations 15% - Pays,
+lu_tax_code_template_t_VP-PA-17,lu_tct_m702,t_VP-PA-17,1,,Taxe - Vente Prestations 17% - Pays,
+lu_tax_code_template_t_VP-PA-3,lu_tct_m040,t_VP-PA-3,1,,Taxe - Vente Prestations 3% - Pays,
+lu_tax_code_template_t_VP-PA-6,lu_tct_m039,t_VP-PA-6,1,,Taxe - Vente Prestations 6% - Pays,
+lu_tax_code_template_t_VP-PA-8,lu_tct_m706,t_VP-PA-8,1,,Taxe - Vente Prestations 8% - Pays,
diff --git a/addons/l10n_lu/account.tax.template-2011.csv b/addons/l10n_lu/account.tax.template-2011.csv
deleted file mode 100644
index 6efa55b3168..00000000000
--- a/addons/l10n_lu/account.tax.template-2011.csv
+++ /dev/null
@@ -1,310 +0,0 @@
-id,name,description,type_tax_use,amount_type,amount,sequence,chart_template_id:id
-lu_2011_tax_VB-PA-15,Vente Biens 15% - Pays,VB-PA-15,sale,percent,0.15,101,lu_2011_chart_1
-lu_2011_tax_VB-PA-12,Vente Biens 12% - Pays,VB-PA-12,sale,percent,0.12,102,lu_2011_chart_1
-lu_2011_tax_VB-PA-6,Vente Biens 6% - Pays,VB-PA-6,sale,percent,0.06,103,lu_2011_chart_1
-lu_2011_tax_VB-PA-3,Vente Biens 3% - Pays,VB-PA-3,sale,percent,0.03,104,lu_2011_chart_1
-lu_2011_tax_VB-PA-0,Vente Biens 0% - Pays,VB-PA-0,sale,percent,0,105,lu_2011_chart_1
-lu_2011_tax_VB-PA-Tab,Vente Biens Tabacs - Pays,VB-PA-Tab,sale,percent,0,106,lu_2011_chart_1
-lu_2011_tax_VB-IC-15,Vente Biens 15% - Intracommunautaire,VB-IC-15,sale,percent,1,201,lu_2011_chart_1
-lu_2011_tax_VB-IC-15-p,Vente Biens 15% - Intracommunautaire (+),VB-IC-15-p,sale,percent,0.15,1000,lu_2011_chart_1
-lu_2011_tax_VB-IC-15-n,Vente Biens 15% - Intracommunautaire (-),VB-IC-15-n,sale,percent,-0.15,2000,lu_2011_chart_1
-lu_2011_tax_VB-IC-12,Vente Biens 12% - Intracommunautaire,VB-IC-12,sale,percent,1,202,lu_2011_chart_1
-lu_2011_tax_VB-IC-12-p,Vente Biens 12% - Intracommunautaire (+),VB-IC-12-p,sale,percent,0.12,1000,lu_2011_chart_1
-lu_2011_tax_VB-IC-12-n,Vente Biens 12% - Intracommunautaire (-),VB-IC-12-n,sale,percent,-0.12,2000,lu_2011_chart_1
-lu_2011_tax_VB-IC-6,Vente Biens 6% - Intracommunautaire,VB-IC-6,sale,percent,1,203,lu_2011_chart_1
-lu_2011_tax_VB-IC-6-p,Vente Biens 6% - Intracommunautaire (+),VB-IC-6-p,sale,percent,0.06,1000,lu_2011_chart_1
-lu_2011_tax_VB-IC-6-n,Vente Biens 6% - Intracommunautaire (-),VB-IC-6-n,sale,percent,-0.06,2000,lu_2011_chart_1
-lu_2011_tax_VB-IC-3,Vente Biens 3% - Intracommunautaire,VB-IC-3,sale,percent,1,204,lu_2011_chart_1
-lu_2011_tax_VB-IC-3-p,Vente Biens 3% - Intracommunautaire (+),VB-IC-3-p,sale,percent,0.03,1000,lu_2011_chart_1
-lu_2011_tax_VB-IC-3-n,Vente Biens 3% - Intracommunautaire (-),VB-IC-3-n,sale,percent,-0.03,2000,lu_2011_chart_1
-lu_2011_tax_VB-IC-0,Vente Biens 0% - Intracommunautaire,VB-IC-0,sale,percent,0,205,lu_2011_chart_1
-lu_2011_tax_VB-IC-Tab,Vente Biens Tabacs - Intracommunautaire,VB-IC-Tab,sale,percent,0,206,lu_2011_chart_1
-lu_2011_tax_VB-EC-15,Vente Biens 15% - Extracommunautaire,VB-EC-15,sale,percent,1,301,lu_2011_chart_1
-lu_2011_tax_VB-EC-15-p,Vente Biens 15% - Extracommunautaire (+),VB-EC-15-p,sale,percent,0.15,1000,lu_2011_chart_1
-lu_2011_tax_VB-EC-15-n,Vente Biens 15% - Extracommunautaire (-),VB-EC-15-n,sale,percent,-0.15,2000,lu_2011_chart_1
-lu_2011_tax_VB-EC-12,Vente Biens 12% - Extracommunautaire,VB-EC-12,sale,percent,1,302,lu_2011_chart_1
-lu_2011_tax_VB-EC-12-p,Vente Biens 12% - Extracommunautaire (+),VB-EC-12-p,sale,percent,0.12,1000,lu_2011_chart_1
-lu_2011_tax_VB-EC-12-n,Vente Biens 12% - Extracommunautaire (-),VB-EC-12-n,sale,percent,-0.12,2000,lu_2011_chart_1
-lu_2011_tax_VB-EC-6,Vente Biens 6% - Extracommunautaire,VB-EC-6,sale,percent,1,303,lu_2011_chart_1
-lu_2011_tax_VB-EC-6-p,Vente Biens 6% - Extracommunautaire (+),VB-EC-6-p,sale,percent,0.06,1000,lu_2011_chart_1
-lu_2011_tax_VB-EC-6-n,Vente Biens 6% - Extracommunautaire (-),VB-EC-6-n,sale,percent,-0.06,2000,lu_2011_chart_1
-lu_2011_tax_VB-EC-3,Vente Biens 3% - Extracommunautaire,VB-EC-3,sale,percent,1,304,lu_2011_chart_1
-lu_2011_tax_VB-EC-3-p,Vente Biens 3% - Extracommunautaire (+),VB-EC-3-p,sale,percent,0.03,1000,lu_2011_chart_1
-lu_2011_tax_VB-EC-3-n,Vente Biens 3% - Extracommunautaire (-),VB-EC-3-n,sale,percent,-0.03,2000,lu_2011_chart_1
-lu_2011_tax_VB-EC-0,Vente Biens 0% - Extracommunautaire,VB-EC-0,sale,percent,0,305,lu_2011_chart_1
-lu_2011_tax_VB-EC-Tab,Vente Biens Tabacs - Extracommunautaire,VB-EC-Tab,sale,percent,0,306,lu_2011_chart_1
-lu_2011_tax_VB-TR-15,Vente Biens 15% - Triangulaire,VB-TR-15,sale,percent,1,401,lu_2011_chart_1
-lu_2011_tax_VB-TR-15-p,Vente Biens 15% - Triangulaire (+),VB-TR-15-p,sale,percent,0.15,1000,lu_2011_chart_1
-lu_2011_tax_VB-TR-15-n,Vente Biens 15% - Triangulaire (-),VB-TR-15-n,sale,percent,-0.15,2000,lu_2011_chart_1
-lu_2011_tax_VB-TR-12,Vente Biens 12% - Triangulaire,VB-TR-12,sale,percent,1,402,lu_2011_chart_1
-lu_2011_tax_VB-TR-12-p,Vente Biens 12% - Triangulaire (+),VB-TR-12-p,sale,percent,0.12,1000,lu_2011_chart_1
-lu_2011_tax_VB-TR-12-n,Vente Biens 12% - Triangulaire (-),VB-TR-12-n,sale,percent,-0.12,2000,lu_2011_chart_1
-lu_2011_tax_VB-TR-6,Vente Biens 6% - Triangulaire,VB-TR-6,sale,percent,1,403,lu_2011_chart_1
-lu_2011_tax_VB-TR-6-p,Vente Biens 6% - Triangulaire (+),VB-TR-6-p,sale,percent,0.06,1000,lu_2011_chart_1
-lu_2011_tax_VB-TR-6-n,Vente Biens 6% - Triangulaire (-),VB-TR-6-n,sale,percent,-0.06,2000,lu_2011_chart_1
-lu_2011_tax_VB-TR-3,Vente Biens 3% - Triangulaire,VB-TR-3,sale,percent,1,404,lu_2011_chart_1
-lu_2011_tax_VB-TR-3-p,Vente Biens 3% - Triangulaire (+),VB-TR-3-p,sale,percent,0.03,1000,lu_2011_chart_1
-lu_2011_tax_VB-TR-3-n,Vente Biens 3% - Triangulaire (-),VB-TR-3-n,sale,percent,-0.03,2000,lu_2011_chart_1
-lu_2011_tax_VP-PA-15,Vente Prestations 15% - Pays,VP-PA-15,sale,percent,0.15,111,lu_2011_chart_1
-lu_2011_tax_VP-PA-12,Vente Prestations 12% - Pays,VP-PA-12,sale,percent,0.12,112,lu_2011_chart_1
-lu_2011_tax_VP-PA-6,Vente Prestations 6% - Pays,VP-PA-6,sale,percent,0.06,113,lu_2011_chart_1
-lu_2011_tax_VP-PA-3,Vente Prestations 3% - Pays,VP-PA-3,sale,percent,0.03,114,lu_2011_chart_1
-lu_2011_tax_VP-PA-0,Vente Prestations 0% - Pays,VP-PA-0,sale,percent,0,115,lu_2011_chart_1
-lu_2011_tax_VP-IC-15,Vente Prestations 15% - Intracommunautaire,VP-IC-15,sale,percent,1,211,lu_2011_chart_1
-lu_2011_tax_VP-IC-15-p,Vente Prestations 15% - Intracommunautaire (+),VP-IC-15-p,sale,percent,0.15,1000,lu_2011_chart_1
-lu_2011_tax_VP-IC-15-n,Vente Prestations 15% - Intracommunautaire (-),VP-IC-15-n,sale,percent,-0.15,2000,lu_2011_chart_1
-lu_2011_tax_VP-IC-12,Vente Prestations 12% - Intracommunautaire,VP-IC-12,sale,percent,1,212,lu_2011_chart_1
-lu_2011_tax_VP-IC-12-p,Vente Prestations 12% - Intracommunautaire (+),VP-IC-12-p,sale,percent,0.12,1000,lu_2011_chart_1
-lu_2011_tax_VP-IC-12-n,Vente Prestations 12% - Intracommunautaire (-),VP-IC-12-n,sale,percent,-0.12,2000,lu_2011_chart_1
-lu_2011_tax_VP-IC-6,Vente Prestations 6% - Intracommunautaire,VP-IC-6,sale,percent,1,213,lu_2011_chart_1
-lu_2011_tax_VP-IC-6-p,Vente Prestations 6% - Intracommunautaire (+),VP-IC-6-p,sale,percent,0.06,1000,lu_2011_chart_1
-lu_2011_tax_VP-IC-6-n,Vente Prestations 6% - Intracommunautaire (-),VP-IC-6-n,sale,percent,-0.06,2000,lu_2011_chart_1
-lu_2011_tax_VP-IC-3,Vente Prestations 3% - Intracommunautaire,VP-IC-3,sale,percent,1,214,lu_2011_chart_1
-lu_2011_tax_VP-IC-3-p,Vente Prestations 3% - Intracommunautaire (+),VP-IC-3-p,sale,percent,0.03,1000,lu_2011_chart_1
-lu_2011_tax_VP-IC-3-n,Vente Prestations 3% - Intracommunautaire (-),VP-IC-3-n,sale,percent,-0.03,2000,lu_2011_chart_1
-lu_2011_tax_VP-IC-0,Vente Prestations 0% - Intracommunautaire,VP-IC-0,sale,percent,0,215,lu_2011_chart_1
-lu_2011_tax_VP-IC-EX,Vente Prestations - Intracommunautaire exonérées dans l'état membre,VP-IC-EX,sale,percent,0,501,lu_2011_chart_1
-lu_2011_tax_VP-EC-15,Vente Prestations 15% - Extracommunautaire,VP-EC-15,sale,percent,1,311,lu_2011_chart_1
-lu_2011_tax_VP-EC-15-p,Vente Prestations 15% - Extracommunautaire (+),VP-EC-15-p,sale,percent,0.15,1000,lu_2011_chart_1
-lu_2011_tax_VP-EC-15-n,Vente Prestations 15% - Extracommunautaire (-),VP-EC-15-n,sale,percent,-0.15,2000,lu_2011_chart_1
-lu_2011_tax_VP-EC-12,Vente Prestations 12% - Extracommunautaire,VP-EC-12,sale,percent,1,312,lu_2011_chart_1
-lu_2011_tax_VP-EC-12-p,Vente Prestations 12% - Extracommunautaire (+),VP-EC-12-p,sale,percent,0.12,1000,lu_2011_chart_1
-lu_2011_tax_VP-EC-12-n,Vente Prestations 12% - Extracommunautaire (-),VP-EC-12-n,sale,percent,-0.12,2000,lu_2011_chart_1
-lu_2011_tax_VP-EC-6,Vente Prestations 6% - Extracommunautaire,VP-EC-6,sale,percent,1,313,lu_2011_chart_1
-lu_2011_tax_VP-EC-6-p,Vente Prestations 6% - Extracommunautaire (+),VP-EC-6-p,sale,percent,0.06,1000,lu_2011_chart_1
-lu_2011_tax_VP-EC-6-n,Vente Prestations 6% - Extracommunautaire (-),VP-EC-6-n,sale,percent,-0.06,2000,lu_2011_chart_1
-lu_2011_tax_VP-EC-3,Vente Prestations 3% - Extracommunautaire,VP-EC-3,sale,percent,1,314,lu_2011_chart_1
-lu_2011_tax_VP-EC-3-p,Vente Prestations 3% - Extracommunautaire (+),VP-EC-3-p,sale,percent,0.03,1000,lu_2011_chart_1
-lu_2011_tax_VP-EC-3-n,Vente Prestations 3% - Extracommunautaire (-),VP-EC-3-n,sale,percent,-0.03,2000,lu_2011_chart_1
-lu_2011_tax_VP-EC-0,Vente Prestations 0% - Extracommunautaire,VP-EC-0,sale,percent,0,315,lu_2011_chart_1
-lu_2011_tax_VP-TR-15,Vente Prestations 15% - Triangulaire,VP-TR-15,sale,percent,1,411,lu_2011_chart_1
-lu_2011_tax_VP-TR-15-p,Vente Prestations 15% - Triangulaire (+),VP-TR-15-p,sale,percent,0.15,1000,lu_2011_chart_1
-lu_2011_tax_VP-TR-15-n,Vente Prestations 15% - Triangulaire (-),VP-TR-15-n,sale,percent,-0.15,2000,lu_2011_chart_1
-lu_2011_tax_VP-TR-12,Vente Prestations 12% - Triangulaire,VP-TR-12,sale,percent,1,412,lu_2011_chart_1
-lu_2011_tax_VP-TR-12-p,Vente Prestations 12% - Triangulaire (+),VP-TR-12-p,sale,percent,0.12,1000,lu_2011_chart_1
-lu_2011_tax_VP-TR-12-n,Vente Prestations 12% - Triangulaire (-),VP-TR-12-n,sale,percent,-0.12,2000,lu_2011_chart_1
-lu_2011_tax_VP-TR-6,Vente Prestations 6% - Triangulaire,VP-TR-6,sale,percent,1,413,lu_2011_chart_1
-lu_2011_tax_VP-TR-6-p,Vente Prestations 6% - Triangulaire (+),VP-TR-6-p,sale,percent,0.06,1000,lu_2011_chart_1
-lu_2011_tax_VP-TR-6-n,Vente Prestations 6% - Triangulaire (-),VP-TR-6-n,sale,percent,-0.06,2000,lu_2011_chart_1
-lu_2011_tax_VP-TR-3,Vente Prestations 3% - Triangulaire,VP-TR-3,sale,percent,1,414,lu_2011_chart_1
-lu_2011_tax_VP-TR-3-p,Vente Prestations 3% - Triangulaire (+),VP-TR-3-p,sale,percent,0.03,1000,lu_2011_chart_1
-lu_2011_tax_VP-TR-3-n,Vente Prestations 3% - Triangulaire (-),VP-TR-3-n,sale,percent,-0.03,2000,lu_2011_chart_1
-lu_2011_tax_V-ART-43,Vente - Autres Exonérations (Article 43),V-ART-43,sale,percent,0,502,lu_2011_chart_1
-lu_2011_tax_V-ART-44_58q,Vente - Autres Exonérations (Article 44 et 58 quater),V-ART-44_58q,sale,percent,0,503,lu_2011_chart_1
-lu_2011_tax_VP-OPER,Vente Prestations - Opérations réalisées à l'étranger ,VP-OPER,sale,percent,0,504,lu_2011_chart_1
-lu_2011_tax_FB-PA-15,Frais Biens 15% - Pays,FB-PA-15,purchase,percent,0.15,121,lu_2011_chart_1
-lu_2011_tax_FB-PA-12,Frais Biens 12% - Pays,FB-PA-12,purchase,percent,0.12,122,lu_2011_chart_1
-lu_2011_tax_FB-PA-6,Frais Biens 6% - Pays,FB-PA-6,purchase,percent,0.06,123,lu_2011_chart_1
-lu_2011_tax_FB-PA-3,Frais Biens 3% - Pays,FB-PA-3,purchase,percent,0.03,124,lu_2011_chart_1
-lu_2011_tax_FB-PA-0,Frais Biens 0% - Pays,FB-PA-0,purchase,percent,0,125,lu_2011_chart_1
-lu_2011_tax_FB-IC-15,Frais Biens 15% - Intracommunautaire,FB-IC-15,purchase,percent,1,221,lu_2011_chart_1
-lu_2011_tax_FB-IC-15-p,Frais Biens 15% - Intracommunautaire (+),FB-IC-15-p,purchase,percent,0.15,1000,lu_2011_chart_1
-lu_2011_tax_FB-IC-15-n,Frais Biens 15% - Intracommunautaire (-),FB-IC-15-n,purchase,percent,-0.15,2000,lu_2011_chart_1
-lu_2011_tax_FB-IC-12,Frais Biens 12% - Intracommunautaire,FB-IC-12,purchase,percent,1,222,lu_2011_chart_1
-lu_2011_tax_FB-IC-12-p,Frais Biens 12% - Intracommunautaire (+),FB-IC-12-p,purchase,percent,0.12,1000,lu_2011_chart_1
-lu_2011_tax_FB-IC-12-n,Frais Biens 12% - Intracommunautaire (-),FB-IC-12-n,purchase,percent,-0.12,2000,lu_2011_chart_1
-lu_2011_tax_FB-IC-6,Frais Biens 6% - Intracommunautaire,FB-IC-6,purchase,percent,1,223,lu_2011_chart_1
-lu_2011_tax_FB-IC-6-p,Frais Biens 6% - Intracommunautaire (+),FB-IC-6-p,purchase,percent,0.06,1000,lu_2011_chart_1
-lu_2011_tax_FB-IC-6-n,Frais Biens 6% - Intracommunautaire (-),FB-IC-6-n,purchase,percent,-0.06,2000,lu_2011_chart_1
-lu_2011_tax_FB-IC-3,Frais Biens 3% - Intracommunautaire,FB-IC-3,purchase,percent,1,224,lu_2011_chart_1
-lu_2011_tax_FB-IC-3-p,Frais Biens 3% - Intracommunautaire (+),FB-IC-3-p,purchase,percent,0.03,1000,lu_2011_chart_1
-lu_2011_tax_FB-IC-3-n,Frais Biens 3% - Intracommunautaire (-),FB-IC-3-n,purchase,percent,-0.03,2000,lu_2011_chart_1
-lu_2011_tax_FB-IC-0,Frais Biens 0% - Intracommunautaire,FB-IC-0,purchase,percent,0,225,lu_2011_chart_1
-lu_2011_tax_FB-EC-15,Frais Biens 15% - Extracommunautaire,FB-EC-15,purchase,percent,1,321,lu_2011_chart_1
-lu_2011_tax_FB-EC-15-p,Frais Biens 15% - Extracommunautaire (+),FB-EC-15-p,purchase,percent,0.15,1000,lu_2011_chart_1
-lu_2011_tax_FB-EC-15-n,Frais Biens 15% - Extracommunautaire (-),FB-EC-15-n,purchase,percent,-0.15,2000,lu_2011_chart_1
-lu_2011_tax_FB-EC-12,Frais Biens 12% - Extracommunautaire,FB-EC-12,purchase,percent,1,322,lu_2011_chart_1
-lu_2011_tax_FB-EC-12-p,Frais Biens 12% - Extracommunautaire (+),FB-EC-12-p,purchase,percent,0.12,1000,lu_2011_chart_1
-lu_2011_tax_FB-EC-12-n,Frais Biens 12% - Extracommunautaire (-),FB-EC-12-n,purchase,percent,-0.12,2000,lu_2011_chart_1
-lu_2011_tax_FB-EC-6,Frais Biens 6% - Extracommunautaire,FB-EC-6,purchase,percent,1,323,lu_2011_chart_1
-lu_2011_tax_FB-EC-6-p,Frais Biens 6% - Extracommunautaire (+),FB-EC-6-p,purchase,percent,0.06,1000,lu_2011_chart_1
-lu_2011_tax_FB-EC-6-n,Frais Biens 6% - Extracommunautaire (-),FB-EC-6-n,purchase,percent,-0.06,2000,lu_2011_chart_1
-lu_2011_tax_FB-EC-3,Frais Biens 3% - Extracommunautaire,FB-EC-3,purchase,percent,1,324,lu_2011_chart_1
-lu_2011_tax_FB-EC-3-p,Frais Biens 3% - Extracommunautaire (+),FB-EC-3-p,purchase,percent,0.03,1000,lu_2011_chart_1
-lu_2011_tax_FB-EC-3-n,Frais Biens 3% - Extracommunautaire (-),FB-EC-3-n,purchase,percent,-0.03,2000,lu_2011_chart_1
-lu_2011_tax_FB-EC-0,Frais Biens 0% - Extracommunautaire,FB-EC-0,purchase,percent,0,325,lu_2011_chart_1
-lu_2011_tax_FP-PA-15,Frais Prestations 15% - Pays,FP-PA-15,purchase,percent,0.15,131,lu_2011_chart_1
-lu_2011_tax_FP-PA-12,Frais Prestations 12% - Pays,FP-PA-12,purchase,percent,0.12,132,lu_2011_chart_1
-lu_2011_tax_FP-PA-6,Frais Prestations 6% - Pays,FP-PA-6,purchase,percent,0.06,133,lu_2011_chart_1
-lu_2011_tax_FP-PA-3,Frais Prestations 3% - Pays,FP-PA-3,purchase,percent,0.03,134,lu_2011_chart_1
-lu_2011_tax_FP-PA-0,Frais Prestations 0% - Pays,FP-PA-0,purchase,percent,0,135,lu_2011_chart_1
-lu_2011_tax_FP-IC-15,Frais Prestations 15% - Intracommunautaire,FP-IC-15,purchase,percent,1,231,lu_2011_chart_1
-lu_2011_tax_FP-IC-15-p,Frais Prestations 15% - Intracommunautaire (+),FP-IC-15-p,purchase,percent,0.15,1000,lu_2011_chart_1
-lu_2011_tax_FP-IC-15-n,Frais Prestations 15% - Intracommunautaire (-),FP-IC-15-n,purchase,percent,-0.15,2000,lu_2011_chart_1
-lu_2011_tax_FP-IC-12,Frais Prestations 12% - Intracommunautaire,FP-IC-12,purchase,percent,1,232,lu_2011_chart_1
-lu_2011_tax_FP-IC-12-p,Frais Prestations 12% - Intracommunautaire (+),FP-IC-12-p,purchase,percent,0.12,1000,lu_2011_chart_1
-lu_2011_tax_FP-IC-12-n,Frais Prestations 12% - Intracommunautaire (-),FP-IC-12-n,purchase,percent,-0.12,2000,lu_2011_chart_1
-lu_2011_tax_FP-IC-6,Frais Prestations 6% - Intracommunautaire,FP-IC-6,purchase,percent,1,233,lu_2011_chart_1
-lu_2011_tax_FP-IC-6-p,Frais Prestations 6% - Intracommunautaire (+),FP-IC-6-p,purchase,percent,0.06,1000,lu_2011_chart_1
-lu_2011_tax_FP-IC-6-n,Frais Prestations 6% - Intracommunautaire (-),FP-IC-6-n,purchase,percent,-0.06,2000,lu_2011_chart_1
-lu_2011_tax_FP-IC-3,Frais Prestations 3% - Intracommunautaire,FP-IC-3,purchase,percent,1,234,lu_2011_chart_1
-lu_2011_tax_FP-IC-3-p,Frais Prestations 3% - Intracommunautaire (+),FP-IC-3-p,purchase,percent,0.03,1000,lu_2011_chart_1
-lu_2011_tax_FP-IC-3-n,Frais Prestations 3% - Intracommunautaire (-),FP-IC-3-n,purchase,percent,-0.03,2000,lu_2011_chart_1
-lu_2011_tax_FP-IC-0,Frais Prestations 0% - Intracommunautaire,FP-IC-0,purchase,percent,0,235,lu_2011_chart_1
-lu_2011_tax_FP-EC-15,Frais Prestations 15% - Extracommunautaire,FP-EC-15,purchase,percent,1,331,lu_2011_chart_1
-lu_2011_tax_FP-EC-15-p,Frais Prestations 15% - Extracommunautaire (+),FP-EC-15-p,purchase,percent,0.15,1000,lu_2011_chart_1
-lu_2011_tax_FP-EC-15-n,Frais Prestations 15% - Extracommunautaire (-),FP-EC-15-n,purchase,percent,-0.15,2000,lu_2011_chart_1
-lu_2011_tax_FP-EC-12,Frais Prestations 12% - Extracommunautaire,FP-EC-12,purchase,percent,1,332,lu_2011_chart_1
-lu_2011_tax_FP-EC-12-p,Frais Prestations 12% - Extracommunautaire (+),FP-EC-12-p,purchase,percent,0.12,1000,lu_2011_chart_1
-lu_2011_tax_FP-EC-12-n,Frais Prestations 12% - Extracommunautaire (-),FP-EC-12-n,purchase,percent,-0.12,2000,lu_2011_chart_1
-lu_2011_tax_FP-EC-6,Frais Prestations 6% - Extracommunautaire,FP-EC-6,purchase,percent,1,333,lu_2011_chart_1
-lu_2011_tax_FP-EC-6-p,Frais Prestations 6% - Extracommunautaire (+),FP-EC-6-p,purchase,percent,0.06,1000,lu_2011_chart_1
-lu_2011_tax_FP-EC-6-n,Frais Prestations 6% - Extracommunautaire (-),FP-EC-6-n,purchase,percent,-0.06,2000,lu_2011_chart_1
-lu_2011_tax_FP-EC-3,Frais Prestations 3% - Extracommunautaire,FP-EC-3,purchase,percent,1,334,lu_2011_chart_1
-lu_2011_tax_FP-EC-3-p,Frais Prestations 3% - Extracommunautaire (+),FP-EC-3-p,purchase,percent,0.03,1000,lu_2011_chart_1
-lu_2011_tax_FP-EC-3-n,Frais Prestations 3% - Extracommunautaire (-),FP-EC-3-n,purchase,percent,-0.03,2000,lu_2011_chart_1
-lu_2011_tax_FP-EC-0,Frais Prestations 0% - Extracommunautaire,FP-EC-0,purchase,percent,0,335,lu_2011_chart_1
-lu_2011_tax_IB-PA-15,Investissement Biens 15% - Pays,IB-PA-15,purchase,percent,0.15,141,lu_2011_chart_1
-lu_2011_tax_IB-PA-12,Investissement Biens 12% - Pays,IB-PA-12,purchase,percent,0.12,142,lu_2011_chart_1
-lu_2011_tax_IB-PA-6,Investissement Biens 6% - Pays,IB-PA-6,purchase,percent,0.06,143,lu_2011_chart_1
-lu_2011_tax_IB-PA-3,Investissement Biens 3% - Pays,IB-PA-3,purchase,percent,0.03,144,lu_2011_chart_1
-lu_2011_tax_IB-PA-0,Investissement Biens 0% - Pays,IB-PA-0,purchase,percent,0,145,lu_2011_chart_1
-lu_2011_tax_IB-IC-15,Investissement Biens 15% - Intracommunautaire,IB-IC-15,purchase,percent,1,241,lu_2011_chart_1
-lu_2011_tax_IB-IC-15-p,Investissement Biens 15% - Intracommunautaire (+),IB-IC-15-p,purchase,percent,0.15,1000,lu_2011_chart_1
-lu_2011_tax_IB-IC-15-n,Investissement Biens 15% - Intracommunautaire (-),IB-IC-15-n,purchase,percent,-0.15,2000,lu_2011_chart_1
-lu_2011_tax_IB-IC-12,Investissement Biens 12% - Intracommunautaire,IB-IC-12,purchase,percent,1,242,lu_2011_chart_1
-lu_2011_tax_IB-IC-12-p,Investissement Biens 12% - Intracommunautaire (+),IB-IC-12-p,purchase,percent,0.12,1000,lu_2011_chart_1
-lu_2011_tax_IB-IC-12-n,Investissement Biens 12% - Intracommunautaire (-),IB-IC-12-n,purchase,percent,-0.12,2000,lu_2011_chart_1
-lu_2011_tax_IB-IC-6,Investissement Biens 6% - Intracommunautaire,IB-IC-6,purchase,percent,1,243,lu_2011_chart_1
-lu_2011_tax_IB-IC-6-p,Investissement Biens 6% - Intracommunautaire (+),IB-IC-6-p,purchase,percent,0.06,1000,lu_2011_chart_1
-lu_2011_tax_IB-IC-6-n,Investissement Biens 6% - Intracommunautaire (-),IB-IC-6-n,purchase,percent,-0.06,2000,lu_2011_chart_1
-lu_2011_tax_IB-IC-3,Investissement Biens 3% - Intracommunautaire,IB-IC-3,purchase,percent,1,244,lu_2011_chart_1
-lu_2011_tax_IB-IC-3-p,Investissement Biens 3% - Intracommunautaire (+),IB-IC-3-p,purchase,percent,0.03,1000,lu_2011_chart_1
-lu_2011_tax_IB-IC-3-n,Investissement Biens 3% - Intracommunautaire (-),IB-IC-3-n,purchase,percent,-0.03,2000,lu_2011_chart_1
-lu_2011_tax_IB-IC-0,Investissement Biens 0% - Intracommunautaire,IB-IC-0,purchase,percent,0,245,lu_2011_chart_1
-lu_2011_tax_IB-EC-15,Investissement Biens 15% - Extracommunautaire,IB-EC-15,purchase,percent,1,341,lu_2011_chart_1
-lu_2011_tax_IB-EC-15-p,Investissement Biens 15% - Extracommunautaire (+),IB-EC-15-p,purchase,percent,0.15,1000,lu_2011_chart_1
-lu_2011_tax_IB-EC-15-n,Investissement Biens 15% - Extracommunautaire (-),IB-EC-15-n,purchase,percent,-0.15,2000,lu_2011_chart_1
-lu_2011_tax_IB-EC-12,Investissement Biens 12% - Extracommunautaire,IB-EC-12,purchase,percent,1,342,lu_2011_chart_1
-lu_2011_tax_IB-EC-12-p,Investissement Biens 12% - Extracommunautaire (+),IB-EC-12-p,purchase,percent,0.12,1000,lu_2011_chart_1
-lu_2011_tax_IB-EC-12-n,Investissement Biens 12% - Extracommunautaire (-),IB-EC-12-n,purchase,percent,-0.12,2000,lu_2011_chart_1
-lu_2011_tax_IB-EC-6,Investissement Biens 6% - Extracommunautaire,IB-EC-6,purchase,percent,1,343,lu_2011_chart_1
-lu_2011_tax_IB-EC-6-p,Investissement Biens 6% - Extracommunautaire (+),IB-EC-6-p,purchase,percent,0.06,1000,lu_2011_chart_1
-lu_2011_tax_IB-EC-6-n,Investissement Biens 6% - Extracommunautaire (-),IB-EC-6-n,purchase,percent,-0.06,2000,lu_2011_chart_1
-lu_2011_tax_IB-EC-3,Investissement Biens 3% - Extracommunautaire,IB-EC-3,purchase,percent,1,344,lu_2011_chart_1
-lu_2011_tax_IB-EC-3-p,Investissement Biens 3% - Extracommunautaire (+),IB-EC-3-p,purchase,percent,0.03,1000,lu_2011_chart_1
-lu_2011_tax_IB-EC-3-n,Investissement Biens 3% - Extracommunautaire (-),IB-EC-3-n,purchase,percent,-0.03,2000,lu_2011_chart_1
-lu_2011_tax_IB-EC-0,Investissement Biens 0% - Extracommunautaire,IB-EC-0,purchase,percent,0,345,lu_2011_chart_1
-lu_2011_tax_IP-PA-15,Investissement Prestations 15% - Pays,IP-PA-15,purchase,percent,0.15,151,lu_2011_chart_1
-lu_2011_tax_IP-PA-12,Investissement Prestations 12% - Pays,IP-PA-12,purchase,percent,0.12,152,lu_2011_chart_1
-lu_2011_tax_IP-PA-6,Investissement Prestations 6% - Pays,IP-PA-6,purchase,percent,0.06,153,lu_2011_chart_1
-lu_2011_tax_IP-PA-3,Investissement Prestations 3% - Pays,IP-PA-3,purchase,percent,0.03,154,lu_2011_chart_1
-lu_2011_tax_IP-PA-0,Investissement Prestations 0% - Pays,IP-PA-0,purchase,percent,0,155,lu_2011_chart_1
-lu_2011_tax_IP-IC-15,Investissement Prestations 15% - Intracommunautaire,IP-IC-15,purchase,percent,1,251,lu_2011_chart_1
-lu_2011_tax_IP-IC-15-p,Investissement Prestations 15% - Intracommunautaire (+),IP-IC-15-p,purchase,percent,0.15,1000,lu_2011_chart_1
-lu_2011_tax_IP-IC-15-n,Investissement Prestations 15% - Intracommunautaire (-),IP-IC-15-n,purchase,percent,-0.15,2000,lu_2011_chart_1
-lu_2011_tax_IP-IC-12,Investissement Prestations 12% - Intracommunautaire,IP-IC-12,purchase,percent,1,252,lu_2011_chart_1
-lu_2011_tax_IP-IC-12-p,Investissement Prestations 12% - Intracommunautaire (+),IP-IC-12-p,purchase,percent,0.12,1000,lu_2011_chart_1
-lu_2011_tax_IP-IC-12-n,Investissement Prestations 12% - Intracommunautaire (-),IP-IC-12-n,purchase,percent,-0.12,2000,lu_2011_chart_1
-lu_2011_tax_IP-IC-6,Investissement Prestations 6% - Intracommunautaire,IP-IC-6,purchase,percent,1,253,lu_2011_chart_1
-lu_2011_tax_IP-IC-6-p,Investissement Prestations 6% - Intracommunautaire (+),IP-IC-6-p,purchase,percent,0.06,1000,lu_2011_chart_1
-lu_2011_tax_IP-IC-6-n,Investissement Prestations 6% - Intracommunautaire (-),IP-IC-6-n,purchase,percent,-0.06,2000,lu_2011_chart_1
-lu_2011_tax_IP-IC-3,Investissement Prestations 3% - Intracommunautaire,IP-IC-3,purchase,percent,1,254,lu_2011_chart_1
-lu_2011_tax_IP-IC-3-p,Investissement Prestations 3% - Intracommunautaire (+),IP-IC-3-p,purchase,percent,0.03,1000,lu_2011_chart_1
-lu_2011_tax_IP-IC-3-n,Investissement Prestations 3% - Intracommunautaire (-),IP-IC-3-n,purchase,percent,-0.03,2000,lu_2011_chart_1
-lu_2011_tax_IP-IC-0,Investissement Prestations 0% - Intracommunautaire,IP-IC-0,purchase,percent,0,255,lu_2011_chart_1
-lu_2011_tax_IP-EC-15,Investissement Prestations 15% - Extracommunautaire,IP-EC-15,purchase,percent,1,351,lu_2011_chart_1
-lu_2011_tax_IP-EC-15-p,Investissement Prestations 15% - Extracommunautaire (+),IP-EC-15-p,purchase,percent,0.15,1000,lu_2011_chart_1
-lu_2011_tax_IP-EC-15-n,Investissement Prestations 15% - Extracommunautaire (-),IP-EC-15-n,purchase,percent,-0.15,2000,lu_2011_chart_1
-lu_2011_tax_IP-EC-12,Investissement Prestations 12% - Extracommunautaire,IP-EC-12,purchase,percent,1,352,lu_2011_chart_1
-lu_2011_tax_IP-EC-12-p,Investissement Prestations 12% - Extracommunautaire (+),IP-EC-12-p,purchase,percent,0.12,1000,lu_2011_chart_1
-lu_2011_tax_IP-EC-12-n,Investissement Prestations 12% - Extracommunautaire (-),IP-EC-12-n,purchase,percent,-0.12,2000,lu_2011_chart_1
-lu_2011_tax_IP-EC-6,Investissement Prestations 6% - Extracommunautaire,IP-EC-6,purchase,percent,1,353,lu_2011_chart_1
-lu_2011_tax_IP-EC-6-p,Investissement Prestations 6% - Extracommunautaire (+),IP-EC-6-p,purchase,percent,0.06,1000,lu_2011_chart_1
-lu_2011_tax_IP-EC-6-n,Investissement Prestations 6% - Extracommunautaire (-),IP-EC-6-n,purchase,percent,-0.06,2000,lu_2011_chart_1
-lu_2011_tax_IP-EC-3,Investissement Prestations 3% - Extracommunautaire,IP-EC-3,purchase,percent,1,354,lu_2011_chart_1
-lu_2011_tax_IP-EC-3-p,Investissement Prestations 3% - Extracommunautaire (+),IP-EC-3-p,purchase,percent,0.03,1000,lu_2011_chart_1
-lu_2011_tax_IP-EC-3-n,Investissement Prestations 3% - Extracommunautaire (-),IP-EC-3-n,purchase,percent,-0.03,2000,lu_2011_chart_1
-lu_2011_tax_IP-EC-0,Investissement Prestations 0% - Extracommunautaire,IP-EC-0,purchase,percent,0,355,lu_2011_chart_1
-lu_2011_tax_AB-PA-15,Achat Biens 15% - Pays,AB-PA-15,purchase,percent,0.15,161,lu_2011_chart_1
-lu_2011_tax_AB-PA-12,Achat Biens 12% - Pays,AB-PA-12,purchase,percent,0.12,162,lu_2011_chart_1
-lu_2011_tax_AB-PA-9,Achat Biens 9% - Pays,AB-PA-9,purchase,percent,0.09,163,lu_2011_chart_1
-lu_2011_tax_AB-PA-6,Achat Biens 6% - Pays,AB-PA-6,purchase,percent,0.06,164,lu_2011_chart_1
-lu_2011_tax_AB-PA-3,Achat Biens 3% - Pays,AB-PA-3,purchase,percent,0.03,165,lu_2011_chart_1
-lu_2011_tax_AB-PA-0,Achat Biens 0% - Pays,AB-PA-0,purchase,percent,0,166,lu_2011_chart_1
-lu_2011_tax_AB-PA-Tab,Achat Biens Tabacs - Pays,AB-PA-Tab,purchase,percent,0,167,lu_2011_chart_1
-lu_2011_tax_AB-IC-15,Achat Biens 15% - Intracommunautaire,AB-IC-15,purchase,percent,1,261,lu_2011_chart_1
-lu_2011_tax_AB-IC-15-p,Achat Biens 15% - Intracommunautaire (+),AB-IC-15-p,purchase,percent,0.15,1000,lu_2011_chart_1
-lu_2011_tax_AB-IC-15-n,Achat Biens 15% - Intracommunautaire (-),AB-IC-15-n,purchase,percent,-0.15,2000,lu_2011_chart_1
-lu_2011_tax_AB-IC-12,Achat Biens 12% - Intracommunautaire,AB-IC-12,purchase,percent,1,262,lu_2011_chart_1
-lu_2011_tax_AB-IC-12-p,Achat Biens 12% - Intracommunautaire (+),AB-IC-12-p,purchase,percent,0.12,1000,lu_2011_chart_1
-lu_2011_tax_AB-IC-12-n,Achat Biens 12% - Intracommunautaire (-),AB-IC-12-n,purchase,percent,-0.12,2000,lu_2011_chart_1
-lu_2011_tax_AB-IC-9,Achat Biens 9% - Intracommunautaire,AB-IC-9,purchase,percent,1,263,lu_2011_chart_1
-lu_2011_tax_AB-IC-9-p,Achat Biens 9% - Intracommunautaire (+),AB-IC-9-p,purchase,percent,0.09,1000,lu_2011_chart_1
-lu_2011_tax_AB-IC-9-n,Achat Biens 9% - Intracommunautaire (-),AB-IC-9-n,purchase,percent,-0.09,2000,lu_2011_chart_1
-lu_2011_tax_AB-IC-6,Achat Biens 6% - Intracommunautaire,AB-IC-6,purchase,percent,1,264,lu_2011_chart_1
-lu_2011_tax_AB-IC-6-p,Achat Biens 6% - Intracommunautaire (+),AB-IC-6-p,purchase,percent,0.06,1000,lu_2011_chart_1
-lu_2011_tax_AB-IC-6-n,Achat Biens 6% - Intracommunautaire (-),AB-IC-6-n,purchase,percent,-0.06,2000,lu_2011_chart_1
-lu_2011_tax_AB-IC-3,Achat Biens 3% - Intracommunautaire,AB-IC-3,purchase,percent,1,265,lu_2011_chart_1
-lu_2011_tax_AB-IC-3-p,Achat Biens 3% - Intracommunautaire (+),AB-IC-3-p,purchase,percent,0.03,1000,lu_2011_chart_1
-lu_2011_tax_AB-IC-3-n,Achat Biens 3% - Intracommunautaire (-),AB-IC-3-n,purchase,percent,-0.03,2000,lu_2011_chart_1
-lu_2011_tax_AB-IC-0,Achat Biens 0% - Intracommunautaire,AB-IC-0,purchase,percent,0,266,lu_2011_chart_1
-lu_2011_tax_AB-EC-15,Achat Biens 15% - Extracommunautaire,AB-EC-15,purchase,percent,1,361,lu_2011_chart_1
-lu_2011_tax_AB-EC-15-p,Achat Biens 15% - Extracommunautaire (+),AB-EC-15-p,purchase,percent,0.15,1000,lu_2011_chart_1
-lu_2011_tax_AB-EC-15-n,Achat Biens 15% - Extracommunautaire (-),AB-EC-15-n,purchase,percent,-0.15,2000,lu_2011_chart_1
-lu_2011_tax_AB-EC-12,Achat Biens 12% - Extracommunautaire,AB-EC-12,purchase,percent,1,362,lu_2011_chart_1
-lu_2011_tax_AB-EC-12-p,Achat Biens 12% - Extracommunautaire (+),AB-EC-12-p,purchase,percent,0.12,1000,lu_2011_chart_1
-lu_2011_tax_AB-EC-12-n,Achat Biens 12% - Extracommunautaire (-),AB-EC-12-n,purchase,percent,-0.12,2000,lu_2011_chart_1
-lu_2011_tax_AB-EC-6,Achat Biens 6% - Extracommunautaire,AB-EC-6,purchase,percent,1,363,lu_2011_chart_1
-lu_2011_tax_AB-EC-6-p,Achat Biens 6% - Extracommunautaire (+),AB-EC-6-p,purchase,percent,0.06,1000,lu_2011_chart_1
-lu_2011_tax_AB-EC-6-n,Achat Biens 6% - Extracommunautaire (-),AB-EC-6-n,purchase,percent,-0.06,2000,lu_2011_chart_1
-lu_2011_tax_AB-EC-3,Achat Biens 3% - Extracommunautaire,AB-EC-3,purchase,percent,1,364,lu_2011_chart_1
-lu_2011_tax_AB-EC-3-p,Achat Biens 3% - Extracommunautaire (+),AB-EC-3-p,purchase,percent,0.03,1000,lu_2011_chart_1
-lu_2011_tax_AB-EC-3-n,Achat Biens 3% - Extracommunautaire (-),AB-EC-3-n,purchase,percent,-0.03,2000,lu_2011_chart_1
-lu_2011_tax_AB-EC-0,Achat Biens 0% - Extracommunautaire,AB-EC-0,purchase,percent,0,365,lu_2011_chart_1
-lu_2011_tax_AB-TR-15,Achat Biens 15% - Triangulaire,AB-TR-15,purchase,percent,1,461,lu_2011_chart_1
-lu_2011_tax_AB-TR-15-p,Achat Biens 15% - Triangulaire (+),AB-TR-15-p,purchase,percent,0.15,1000,lu_2011_chart_1
-lu_2011_tax_AB-TR-15-n,Achat Biens 15% - Triangulaire (-),AB-TR-15-n,purchase,percent,-0.15,2000,lu_2011_chart_1
-lu_2011_tax_AB-TR-12,Achat Biens 12% - Triangulaire,AB-TR-12,purchase,percent,1,462,lu_2011_chart_1
-lu_2011_tax_AB-TR-12-p,Achat Biens 12% - Triangulaire (+),AB-TR-12-p,purchase,percent,0.12,1000,lu_2011_chart_1
-lu_2011_tax_AB-TR-12-n,Achat Biens 12% - Triangulaire (-),AB-TR-12-n,purchase,percent,-0.12,2000,lu_2011_chart_1
-lu_2011_tax_AB-TR-6,Achat Biens 6% - Triangulaire,AB-TR-6,purchase,percent,1,463,lu_2011_chart_1
-lu_2011_tax_AB-TR-6-p,Achat Biens 6% - Triangulaire (+),AB-TR-6-p,purchase,percent,0.06,1000,lu_2011_chart_1
-lu_2011_tax_AB-TR-6-n,Achat Biens 6% - Triangulaire (-),AB-TR-6-n,purchase,percent,-0.06,2000,lu_2011_chart_1
-lu_2011_tax_AB-TR-3,Achat Biens 3% - Triangulaire,AB-TR-3,purchase,percent,1,464,lu_2011_chart_1
-lu_2011_tax_AB-TR-3-p,Achat Biens 3% - Triangulaire (+),AB-TR-3-p,purchase,percent,0.03,1000,lu_2011_chart_1
-lu_2011_tax_AB-TR-3-n,Achat Biens 3% - Triangulaire (-),AB-TR-3-n,purchase,percent,-0.03,2000,lu_2011_chart_1
-lu_2011_tax_AP-PA-15,Achat Prestations 15% - Pays,AP-PA-15,purchase,percent,0.15,171,lu_2011_chart_1
-lu_2011_tax_AP-PA-12,Achat Prestations 12% - Pays,AP-PA-12,purchase,percent,0.12,172,lu_2011_chart_1
-lu_2011_tax_AP-PA-9,Achat Prestations 9% - Pays,AP-PA-9,purchase,percent,0.09,173,lu_2011_chart_1
-lu_2011_tax_AP-PA-6,Achat Prestations 6% - Pays,AP-PA-6,purchase,percent,0.06,174,lu_2011_chart_1
-lu_2011_tax_AP-PA-3,Achat Prestations 3% - Pays,AP-PA-3,purchase,percent,0.03,175,lu_2011_chart_1
-lu_2011_tax_AP-PA-0,Achat Prestations 0% - Pays,AP-PA-0,purchase,percent,0,176,lu_2011_chart_1
-lu_2011_tax_AP-IC-15,Achat Prestations 15% - Intracommunautaire,AP-IC-15,purchase,percent,1,271,lu_2011_chart_1
-lu_2011_tax_AP-IC-15-p,Achat Prestations 15% - Intracommunautaire (+),AP-IC-15-p,purchase,percent,0.15,1000,lu_2011_chart_1
-lu_2011_tax_AP-IC-15-n,Achat Prestations 15% - Intracommunautaire (-),AP-IC-15-n,purchase,percent,-0.15,2000,lu_2011_chart_1
-lu_2011_tax_AP-IC-12,Achat Prestations 12% - Intracommunautaire,AP-IC-12,purchase,percent,1,272,lu_2011_chart_1
-lu_2011_tax_AP-IC-12-p,Achat Prestations 12% - Intracommunautaire (+),AP-IC-12-p,purchase,percent,0.12,1000,lu_2011_chart_1
-lu_2011_tax_AP-IC-12-n,Achat Prestations 12% - Intracommunautaire (-),AP-IC-12-n,purchase,percent,-0.12,2000,lu_2011_chart_1
-lu_2011_tax_AP-IC-6,Achat Prestations 6% - Intracommunautaire,AP-IC-6,purchase,percent,1,273,lu_2011_chart_1
-lu_2011_tax_AP-IC-6-p,Achat Prestations 6% - Intracommunautaire (+),AP-IC-6-p,purchase,percent,0.06,1000,lu_2011_chart_1
-lu_2011_tax_AP-IC-6-n,Achat Prestations 6% - Intracommunautaire (-),AP-IC-6-n,purchase,percent,-0.06,2000,lu_2011_chart_1
-lu_2011_tax_AP-IC-3,Achat Prestations 3% - Intracommunautaire,AP-IC-3,purchase,percent,1,274,lu_2011_chart_1
-lu_2011_tax_AP-IC-3-p,Achat Prestations 3% - Intracommunautaire (+),AP-IC-3-p,purchase,percent,0.03,1000,lu_2011_chart_1
-lu_2011_tax_AP-IC-3-n,Achat Prestations 3% - Intracommunautaire (-),AP-IC-3-n,purchase,percent,-0.03,2000,lu_2011_chart_1
-lu_2011_tax_AP-IC-0,Achat Prestations 0% - Intracommunautaire,AP-IC-0,purchase,percent,0,275,lu_2011_chart_1
-lu_2011_tax_AP-EC-15,Achat Prestations 15% - Extracommunautaire,AP-EC-15,purchase,percent,1,371,lu_2011_chart_1
-lu_2011_tax_AP-EC-15-p,Achat Prestations 15% - Extracommunautaire (+),AP-EC-15-p,purchase,percent,0.15,1000,lu_2011_chart_1
-lu_2011_tax_AP-EC-15-n,Achat Prestations 15% - Extracommunautaire (-),AP-EC-15-n,purchase,percent,-0.15,2000,lu_2011_chart_1
-lu_2011_tax_AP-EC-12,Achat Prestations 12% - Extracommunautaire,AP-EC-12,purchase,percent,1,372,lu_2011_chart_1
-lu_2011_tax_AP-EC-12-p,Achat Prestations 12% - Extracommunautaire (+),AP-EC-12-p,purchase,percent,0.12,1000,lu_2011_chart_1
-lu_2011_tax_AP-EC-12-n,Achat Prestations 12% - Extracommunautaire (-),AP-EC-12-n,purchase,percent,-0.12,2000,lu_2011_chart_1
-lu_2011_tax_AP-EC-6,Achat Prestations 6% - Extracommunautaire,AP-EC-6,purchase,percent,1,373,lu_2011_chart_1
-lu_2011_tax_AP-EC-6-p,Achat Prestations 6% - Extracommunautaire (+),AP-EC-6-p,purchase,percent,0.06,1000,lu_2011_chart_1
-lu_2011_tax_AP-EC-6-n,Achat Prestations 6% - Extracommunautaire (-),AP-EC-6-n,purchase,percent,-0.06,2000,lu_2011_chart_1
-lu_2011_tax_AP-EC-3,Achat Prestations 3% - Extracommunautaire,AP-EC-3,purchase,percent,1,374,lu_2011_chart_1
-lu_2011_tax_AP-EC-3-p,Achat Prestations 3% - Extracommunautaire (+),AP-EC-3-p,purchase,percent,0.03,1000,lu_2011_chart_1
-lu_2011_tax_AP-EC-3-n,Achat Prestations 3% - Extracommunautaire (-),AP-EC-3-n,purchase,percent,-0.03,2000,lu_2011_chart_1
-lu_2011_tax_AP-EC-0,Achat Prestations 0% - Extracommunautaire,AP-EC-0,purchase,percent,0,375,lu_2011_chart_1
-lu_2011_tax_AP-TR-15,Achat Prestations 15% - Triangulaires,AP-TR-15,purchase,percent,1,471,lu_2011_chart_1
-lu_2011_tax_AP-TR-15,Achat Prestations 15% - Triangulaires (+),AP-TR-15,purchase,percent,0.15,1000,lu_2011_chart_1
-lu_2011_tax_AP-TR-15,Achat Prestations 15% - Triangulaires (-),AP-TR-15,purchase,percent,-0.15,2000,lu_2011_chart_1
-lu_2011_tax_AP-TR-12,Achat Prestations 12% - Triangulaires,AP-TR-12,purchase,percent,1,472,lu_2011_chart_1
-lu_2011_tax_AP-TR-12,Achat Prestations 12% - Triangulaires (+),AP-TR-12,purchase,percent,0.12,1000,lu_2011_chart_1
-lu_2011_tax_AP-TR-12,Achat Prestations 12% - Triangulaires (-),AP-TR-12,purchase,percent,-0.12,2000,lu_2011_chart_1
-lu_2011_tax_AP-TR-6,Achat Prestations 6% - Triangulaires,AP-TR-6,purchase,percent,1,473,lu_2011_chart_1
-lu_2011_tax_AP-TR-6,Achat Prestations 6% - Triangulaires (+),AP-TR-6,purchase,percent,0.06,1000,lu_2011_chart_1
-lu_2011_tax_AP-TR-6,Achat Prestations 6% - Triangulaires (-),AP-TR-6,purchase,percent,-0.06,2000,lu_2011_chart_1
-lu_2011_tax_AP-TR-3,Achat Prestations 3% - Triangulaires,AP-TR-3,purchase,percent,1,475,lu_2011_chart_1
-lu_2011_tax_AP-TR-3,Achat Prestations 3% - Triangulaires (+),AP-TR-3,purchase,percent,0.03,1000,lu_2011_chart_1
-lu_2011_tax_AP-TR-3,Achat Prestations 3% - Triangulaires (-),AP-TR-3,purchase,percent,-0.03,2000,lu_2011_chart_1
diff --git a/addons/l10n_lu/account.tax.template-2015.csv b/addons/l10n_lu/account.tax.template-2015.csv
new file mode 100644
index 00000000000..11980e37762
--- /dev/null
+++ b/addons/l10n_lu/account.tax.template-2015.csv
@@ -0,0 +1,406 @@
+id,name,description,type_tax_use,type,amount,child_depend,parent_id:id,account_collected_id:id,account_paid_id:id,base_sign,tax_sign,base_code_id:id,tax_code_id:id,ref_base_sign,ref_tax_sign,ref_base_code_id:id,ref_tax_code_id:id,chart_template_id:id,sequence
+lu_2011_tax_AB-EC-0,Achat Biens Exonéré - Extracommunautaire,AB-EC-0,purchase,percent,0.0,0,,,,1.0,1.0,lu_tax_code_template_b_AB-EC-0,,-1.0,-1.0,lu_tax_code_template_b_AB-EC-0,,lu_2011_chart_1,101
+lu_2011_tax_AB-EC-12,Achat Biens 12% - Extracommunautaire,AB-EC-12,purchase,percent,1.0,1,,,,1.0,1.0,,,-1.0,-1.0,,,lu_2011_chart_1,102
+lu_2011_tax_AB-EC-12-n,Achat Biens 12% - Extracommunautaire (-),AB-EC-12-n,purchase,percent,-0.12,0,lu_2011_tax_AB-EC-12,lu_2011_account_4614113,lu_2011_account_4614113,-1.0,-1.0,,lu_tax_code_template_t_AB-EC-12-n,1.0,1.0,,lu_tax_code_template_t_AB-EC-12-n,lu_2011_chart_1,1103
+lu_2011_tax_AB-EC-12-p,Achat Biens 12% - Extracommunautaire (+),AB-EC-12-p,purchase,percent,0.12,0,lu_2011_tax_AB-EC-12,lu_2011_account_4216113,lu_2011_account_4216113,1.0,1.0,lu_tax_code_template_b_AB-EC-12,lu_tax_code_template_t_AB-EC-12,-1.0,-1.0,lu_tax_code_template_b_AB-EC-12,lu_tax_code_template_t_AB-EC-12,lu_2011_chart_1,1104
+lu_2015_tax_AB-EC-14,Achat Biens 14% - Extracommunautaire,AB-EC-14,purchase,percent,1.0,1,,,,1.0,1.0,,,-1.0,-1.0,,,lu_2011_chart_1,105
+lu_2015_tax_AB-EC-14-n,Achat Biens 14% - Extracommunautaire (-),AB-EC-14-n,purchase,percent,-0.14,0,lu_2015_tax_AB-EC-14,lu_2011_account_4614113,lu_2011_account_4614113,-1.0,-1.0,,lu_tax_code_template_t_AB-EC-14-n,1.0,1.0,,lu_tax_code_template_t_AB-EC-14-n,lu_2011_chart_1,1106
+lu_2015_tax_AB-EC-14-p,Achat Biens 14% - Extracommunautaire (+),AB-EC-14-p,purchase,percent,0.14,0,lu_2015_tax_AB-EC-14,lu_2011_account_4216113,lu_2011_account_4216113,1.0,1.0,lu_tax_code_template_b_AB-EC-14,lu_tax_code_template_t_AB-EC-14,-1.0,-1.0,lu_tax_code_template_b_AB-EC-14,lu_tax_code_template_t_AB-EC-14,lu_2011_chart_1,1107
+lu_2011_tax_AB-EC-15,Achat Biens 15% - Extracommunautaire,AB-EC-15,purchase,percent,1.0,1,,,,1.0,1.0,,,-1.0,-1.0,,,lu_2011_chart_1,108
+lu_2011_tax_AB-EC-15-n,Achat Biens 15% - Extracommunautaire (-),AB-EC-15-n,purchase,percent,-0.15,0,lu_2011_tax_AB-EC-15,lu_2011_account_4614113,lu_2011_account_4614113,-1.0,-1.0,,lu_tax_code_template_t_AB-EC-15-n,1.0,1.0,,lu_tax_code_template_t_AB-EC-15-n,lu_2011_chart_1,1109
+lu_2011_tax_AB-EC-15-p,Achat Biens 15% - Extracommunautaire (+),AB-EC-15-p,purchase,percent,0.15,0,lu_2011_tax_AB-EC-15,lu_2011_account_4216113,lu_2011_account_4216113,1.0,1.0,lu_tax_code_template_b_AB-EC-15,lu_tax_code_template_t_AB-EC-15,-1.0,-1.0,lu_tax_code_template_b_AB-EC-15,lu_tax_code_template_t_AB-EC-15,lu_2011_chart_1,1110
+lu_2015_tax_AB-EC-17,Achat Biens 17% - Extracommunautaire,AB-EC-17,purchase,percent,1.0,1,,,,1.0,1.0,,,-1.0,-1.0,,,lu_2011_chart_1,111
+lu_2015_tax_AB-EC-17-n,Achat Biens 17% - Extracommunautaire (-),AB-EC-17-n,purchase,percent,-0.17,0,lu_2015_tax_AB-EC-17,lu_2011_account_4614113,lu_2011_account_4614113,-1.0,-1.0,,lu_tax_code_template_t_AB-EC-17-n,1.0,1.0,,lu_tax_code_template_t_AB-EC-17-n,lu_2011_chart_1,1112
+lu_2015_tax_AB-EC-17-p,Achat Biens 17% - Extracommunautaire (+),AB-EC-17-p,purchase,percent,0.17,0,lu_2015_tax_AB-EC-17,lu_2011_account_4216113,lu_2011_account_4216113,1.0,1.0,lu_tax_code_template_b_AB-EC-17,lu_tax_code_template_t_AB-EC-17,-1.0,-1.0,lu_tax_code_template_b_AB-EC-17,lu_tax_code_template_t_AB-EC-17,lu_2011_chart_1,1113
+lu_2011_tax_AB-EC-3,Achat Biens 3% - Extracommunautaire,AB-EC-3,purchase,percent,1.0,1,,,,1.0,1.0,,,-1.0,-1.0,,,lu_2011_chart_1,114
+lu_2011_tax_AB-EC-3-n,Achat Biens 3% - Extracommunautaire (-),AB-EC-3-n,purchase,percent,-0.03,0,lu_2011_tax_AB-EC-3,lu_2011_account_4614113,lu_2011_account_4614113,-1.0,-1.0,,lu_tax_code_template_t_AB-EC-3-n,1.0,1.0,,lu_tax_code_template_t_AB-EC-3-n,lu_2011_chart_1,1115
+lu_2011_tax_AB-EC-3-p,Achat Biens 3% - Extracommunautaire (+),AB-EC-3-p,purchase,percent,0.03,0,lu_2011_tax_AB-EC-3,lu_2011_account_4216113,lu_2011_account_4216113,1.0,1.0,lu_tax_code_template_b_AB-EC-3,lu_tax_code_template_t_AB-EC-3,-1.0,-1.0,lu_tax_code_template_b_AB-EC-3,lu_tax_code_template_t_AB-EC-3,lu_2011_chart_1,1116
+lu_2011_tax_AB-EC-6,Achat Biens 6% - Extracommunautaire,AB-EC-6,purchase,percent,1.0,1,,,,1.0,1.0,,,-1.0,-1.0,,,lu_2011_chart_1,117
+lu_2011_tax_AB-EC-6-n,Achat Biens 6% - Extracommunautaire (-),AB-EC-6-n,purchase,percent,-0.06,0,lu_2011_tax_AB-EC-6,lu_2011_account_4614113,lu_2011_account_4614113,-1.0,-1.0,,lu_tax_code_template_t_AB-EC-6-n,1.0,1.0,,lu_tax_code_template_t_AB-EC-6-n,lu_2011_chart_1,1118
+lu_2011_tax_AB-EC-6-p,Achat Biens 6% - Extracommunautaire (+),AB-EC-6-p,purchase,percent,0.06,0,lu_2011_tax_AB-EC-6,lu_2011_account_4216113,lu_2011_account_4216113,1.0,1.0,lu_tax_code_template_b_AB-EC-6,lu_tax_code_template_t_AB-EC-6,-1.0,-1.0,lu_tax_code_template_b_AB-EC-6,lu_tax_code_template_t_AB-EC-6,lu_2011_chart_1,1119
+lu_2015_tax_AB-EC-8,Achat Biens 8% - Extracommunautaire,AB-EC-8,purchase,percent,1.0,1,,,,1.0,1.0,,,-1.0,-1.0,,,lu_2011_chart_1,120
+lu_2015_tax_AB-EC-8-n,Achat Biens 8% - Extracommunautaire (-),AB-EC-8-n,purchase,percent,-0.08,0,lu_2015_tax_AB-EC-8,lu_2011_account_4614113,lu_2011_account_4614113,-1.0,-1.0,,lu_tax_code_template_t_AB-EC-8-n,1.0,1.0,,lu_tax_code_template_t_AB-EC-8-n,lu_2011_chart_1,1121
+lu_2015_tax_AB-EC-8-p,Achat Biens 8% - Extracommunautaire (+),AB-EC-8-p,purchase,percent,0.08,0,lu_2015_tax_AB-EC-8,lu_2011_account_4216113,lu_2011_account_4216113,1.0,1.0,lu_tax_code_template_b_AB-EC-8,lu_tax_code_template_t_AB-EC-8,-1.0,-1.0,lu_tax_code_template_b_AB-EC-8,lu_tax_code_template_t_AB-EC-8,lu_2011_chart_1,1122
+lu_2015_tax_AB-ECP-0,Achat Biens Exonéré - Extracommunautaire fin privées,AB-ECP-0,purchase,percent,0.0,0,,,,1.0,1.0,lu_tax_code_template_b_AB-ECP-0,,-1.0,-1.0,lu_tax_code_template_b_AB-ECP-0,,lu_2011_chart_1,123
+lu_2015_tax_AB-ECP-12,Achat Biens 12% - Extracommunautaire fin privées,AB-ECP-12,purchase,percent,1.0,1,,,,1.0,1.0,,,-1.0,-1.0,,,lu_2011_chart_1,124
+lu_2015_tax_AB-ECP-12-n,Achat Biens 12% - Extracommunautaire fin privées (-),AB-ECP-12-n,purchase,percent,-0.12,0,lu_2015_tax_AB-ECP-12,lu_2011_account_4614113,lu_2011_account_4614113,-1.0,-1.0,,lu_tax_code_template_t_AB-ECP-12-n,1.0,1.0,,lu_tax_code_template_t_AB-ECP-12-n,lu_2011_chart_1,1125
+lu_2015_tax_AB-ECP-12-p,Achat Biens 12% - Extracommunautaire fin privées (+),AB-ECP-12-p,purchase,percent,0.12,0,lu_2015_tax_AB-ECP-12,lu_2011_account_4216113,lu_2011_account_4216113,1.0,1.0,lu_tax_code_template_b_AB-ECP-12,lu_tax_code_template_t_AB-ECP-12,-1.0,-1.0,lu_tax_code_template_b_AB-ECP-12,lu_tax_code_template_t_AB-ECP-12,lu_2011_chart_1,1126
+lu_2015_tax_AB-ECP-14,Achat Biens 14% - Extracommunautaire fin privées,AB-ECP-14,purchase,percent,1.0,1,,,,1.0,1.0,,,-1.0,-1.0,,,lu_2011_chart_1,127
+lu_2015_tax_AB-ECP-14-n,Achat Biens 14% - Extracommunautaire fin privées (-),AB-ECP-14-n,purchase,percent,-0.14,0,lu_2015_tax_AB-ECP-14,lu_2011_account_4614113,lu_2011_account_4614113,-1.0,-1.0,,lu_tax_code_template_t_AB-ECP-14-n,1.0,1.0,,lu_tax_code_template_t_AB-ECP-14-n,lu_2011_chart_1,1128
+lu_2015_tax_AB-ECP-14-p,Achat Biens 14% - Extracommunautaire fin privées (+),AB-ECP-14-p,purchase,percent,0.14,0,lu_2015_tax_AB-ECP-14,lu_2011_account_4216113,lu_2011_account_4216113,1.0,1.0,lu_tax_code_template_b_AB-ECP-14,lu_tax_code_template_t_AB-ECP-14,-1.0,-1.0,lu_tax_code_template_b_AB-ECP-14,lu_tax_code_template_t_AB-ECP-14,lu_2011_chart_1,1129
+lu_2015_tax_AB-ECP-15,Achat Biens 15% - Extracommunautaire fin privées,AB-ECP-15,purchase,percent,1.0,1,,,,1.0,1.0,,,-1.0,-1.0,,,lu_2011_chart_1,130
+lu_2015_tax_AB-ECP-15-n,Achat Biens 15% - Extracommunautaire fin privées (-),AB-ECP-15-n,purchase,percent,-0.15,0,lu_2015_tax_AB-ECP-15,lu_2011_account_4614113,lu_2011_account_4614113,-1.0,-1.0,,lu_tax_code_template_t_AB-ECP-15-n,1.0,1.0,,lu_tax_code_template_t_AB-ECP-15-n,lu_2011_chart_1,1131
+lu_2015_tax_AB-ECP-15-p,Achat Biens 15% - Extracommunautaire fin privées (+),AB-ECP-15-p,purchase,percent,0.15,0,lu_2015_tax_AB-ECP-15,lu_2011_account_4216113,lu_2011_account_4216113,1.0,1.0,lu_tax_code_template_b_AB-ECP-15,lu_tax_code_template_t_AB-ECP-15,-1.0,-1.0,lu_tax_code_template_b_AB-ECP-15,lu_tax_code_template_t_AB-ECP-15,lu_2011_chart_1,1132
+lu_2015_tax_AB-ECP-17,Achat Biens 17% - Extracommunautaire fin privées,AB-ECP-17,purchase,percent,1.0,1,,,,1.0,1.0,,,-1.0,-1.0,,,lu_2011_chart_1,133
+lu_2015_tax_AB-ECP-17-n,Achat Biens 17% - Extracommunautaire fin privées (-),AB-ECP-17-n,purchase,percent,-0.17,0,lu_2015_tax_AB-ECP-17,lu_2011_account_4614113,lu_2011_account_4614113,-1.0,-1.0,,lu_tax_code_template_t_AB-ECP-17-n,1.0,1.0,,lu_tax_code_template_t_AB-ECP-17-n,lu_2011_chart_1,1134
+lu_2015_tax_AB-ECP-17-p,Achat Biens 17% - Extracommunautaire fin privées (+),AB-ECP-17-p,purchase,percent,0.17,0,lu_2015_tax_AB-ECP-17,lu_2011_account_4216113,lu_2011_account_4216113,1.0,1.0,lu_tax_code_template_b_AB-ECP-17,lu_tax_code_template_t_AB-ECP-17,-1.0,-1.0,lu_tax_code_template_b_AB-ECP-17,lu_tax_code_template_t_AB-ECP-17,lu_2011_chart_1,1135
+lu_2015_tax_AB-ECP-3,Achat Biens 3% - Extracommunautaire fin privées,AB-ECP-3,purchase,percent,1.0,1,,,,1.0,1.0,,,-1.0,-1.0,,,lu_2011_chart_1,136
+lu_2015_tax_AB-ECP-3-n,Achat Biens 3% - Extracommunautaire fin privées (-),AB-ECP-3-n,purchase,percent,-0.03,0,lu_2015_tax_AB-ECP-3,lu_2011_account_4614113,lu_2011_account_4614113,-1.0,-1.0,,lu_tax_code_template_t_AB-ECP-3-n,1.0,1.0,,lu_tax_code_template_t_AB-ECP-3-n,lu_2011_chart_1,1137
+lu_2015_tax_AB-ECP-3-p,Achat Biens 3% - Extracommunautaire fin privées (+),AB-ECP-3-p,purchase,percent,0.03,0,lu_2015_tax_AB-ECP-3,lu_2011_account_4216113,lu_2011_account_4216113,1.0,1.0,lu_tax_code_template_b_AB-ECP-3,lu_tax_code_template_t_AB-ECP-3,-1.0,-1.0,lu_tax_code_template_b_AB-ECP-3,lu_tax_code_template_t_AB-ECP-3,lu_2011_chart_1,1138
+lu_2015_tax_AB-ECP-6,Achat Biens 6% - Extracommunautaire fin privées,AB-ECP-6,purchase,percent,1.0,1,,,,1.0,1.0,,,-1.0,-1.0,,,lu_2011_chart_1,139
+lu_2015_tax_AB-ECP-6-n,Achat Biens 6% - Extracommunautaire fin privées (-),AB-ECP-6-n,purchase,percent,-0.06,0,lu_2015_tax_AB-ECP-6,lu_2011_account_4614113,lu_2011_account_4614113,-1.0,-1.0,,lu_tax_code_template_t_AB-ECP-6-n,1.0,1.0,,lu_tax_code_template_t_AB-ECP-6-n,lu_2011_chart_1,1140
+lu_2015_tax_AB-ECP-6-p,Achat Biens 6% - Extracommunautaire fin privées (+),AB-ECP-6-p,purchase,percent,0.06,0,lu_2015_tax_AB-ECP-6,lu_2011_account_4216113,lu_2011_account_4216113,1.0,1.0,lu_tax_code_template_b_AB-ECP-6,lu_tax_code_template_t_AB-ECP-6,-1.0,-1.0,lu_tax_code_template_b_AB-ECP-6,lu_tax_code_template_t_AB-ECP-6,lu_2011_chart_1,1141
+lu_2015_tax_AB-ECP-8,Achat Biens 8% - Extracommunautaire fin privées,AB-ECP-8,purchase,percent,1.0,1,,,,1.0,1.0,,,-1.0,-1.0,,,lu_2011_chart_1,142
+lu_2015_tax_AB-ECP-8-n,Achat Biens 8% - Extracommunautaire fin privées (-),AB-ECP-8-n,purchase,percent,-0.08,0,lu_2015_tax_AB-ECP-8,lu_2011_account_4614113,lu_2011_account_4614113,-1.0,-1.0,,lu_tax_code_template_t_AB-ECP-8-n,1.0,1.0,,lu_tax_code_template_t_AB-ECP-8-n,lu_2011_chart_1,1143
+lu_2015_tax_AB-ECP-8-p,Achat Biens 8% - Extracommunautaire fin privées (+),AB-ECP-8-p,purchase,percent,0.08,0,lu_2015_tax_AB-ECP-8,lu_2011_account_4216113,lu_2011_account_4216113,1.0,1.0,lu_tax_code_template_b_AB-ECP-8,lu_tax_code_template_t_AB-ECP-8,-1.0,-1.0,lu_tax_code_template_b_AB-ECP-8,lu_tax_code_template_t_AB-ECP-8,lu_2011_chart_1,1144
+lu_2011_tax_AB-IC-0,Achat Biens Exonéré - Intracommunautaire,AB-IC-0,purchase,percent,0.0,0,,,,1.0,1.0,lu_tax_code_template_b_AB-IC-0,,-1.0,-1.0,lu_tax_code_template_b_AB-IC-0,,lu_2011_chart_1,145
+lu_2011_tax_AB-IC-12,Achat Biens 12% - Intracommunautaire,AB-IC-12,purchase,percent,1.0,1,,,,1.0,1.0,,,-1.0,-1.0,,,lu_2011_chart_1,146
+lu_2011_tax_AB-IC-12-n,Achat Biens 12% - Intracommunautaire (-),AB-IC-12-n,purchase,percent,-0.12,0,lu_2011_tax_AB-IC-12,lu_2011_account_4614112,lu_2011_account_4614112,-1.0,-1.0,,lu_tax_code_template_t_AB-IC-12-n,1.0,1.0,,lu_tax_code_template_t_AB-IC-12-n,lu_2011_chart_1,1147
+lu_2011_tax_AB-IC-12-p,Achat Biens 12% - Intracommunautaire (+),AB-IC-12-p,purchase,percent,0.12,0,lu_2011_tax_AB-IC-12,lu_2011_account_4216112,lu_2011_account_4216112,1.0,1.0,lu_tax_code_template_b_AB-IC-12,lu_tax_code_template_t_AB-IC-12,-1.0,-1.0,lu_tax_code_template_b_AB-IC-12,lu_tax_code_template_t_AB-IC-12,lu_2011_chart_1,1148
+lu_2015_tax_AB-IC-14,Achat Biens 14% - Intracommunautaire,AB-IC-14,purchase,percent,1.0,1,,,,1.0,1.0,,,-1.0,-1.0,,,lu_2011_chart_1,149
+lu_2015_tax_AB-IC-14-n,Achat Biens 14% - Intracommunautaire (-),AB-IC-14-n,purchase,percent,-0.14,0,lu_2015_tax_AB-IC-14,lu_2011_account_4614112,lu_2011_account_4614112,-1.0,-1.0,,lu_tax_code_template_t_AB-IC-14-n,1.0,1.0,,lu_tax_code_template_t_AB-IC-14-n,lu_2011_chart_1,1150
+lu_2015_tax_AB-IC-14-p,Achat Biens 14% - Intracommunautaire (+),AB-IC-14-p,purchase,percent,0.14,0,lu_2015_tax_AB-IC-14,lu_2011_account_4216112,lu_2011_account_4216112,1.0,1.0,lu_tax_code_template_b_AB-IC-14,lu_tax_code_template_t_AB-IC-14,-1.0,-1.0,lu_tax_code_template_b_AB-IC-14,lu_tax_code_template_t_AB-IC-14,lu_2011_chart_1,1151
+lu_2011_tax_AB-IC-15,Achat Biens 15% - Intracommunautaire,AB-IC-15,purchase,percent,1.0,1,,,,1.0,1.0,,,-1.0,-1.0,,,lu_2011_chart_1,152
+lu_2011_tax_AB-IC-15-n,Achat Biens 15% - Intracommunautaire (-),AB-IC-15-n,purchase,percent,-0.15,0,lu_2011_tax_AB-IC-15,lu_2011_account_4614112,lu_2011_account_4614112,-1.0,-1.0,,lu_tax_code_template_t_AB-IC-15-n,1.0,1.0,,lu_tax_code_template_t_AB-IC-15-n,lu_2011_chart_1,1153
+lu_2011_tax_AB-IC-15-p,Achat Biens 15% - Intracommunautaire (+),AB-IC-15-p,purchase,percent,0.15,0,lu_2011_tax_AB-IC-15,lu_2011_account_4216112,lu_2011_account_4216112,1.0,1.0,lu_tax_code_template_b_AB-IC-15,lu_tax_code_template_t_AB-IC-15,-1.0,-1.0,lu_tax_code_template_b_AB-IC-15,lu_tax_code_template_t_AB-IC-15,lu_2011_chart_1,1154
+lu_2015_tax_AB-IC-17,Achat Biens 17% - Intracommunautaire,AB-IC-17,purchase,percent,1.0,1,,,,1.0,1.0,,,-1.0,-1.0,,,lu_2011_chart_1,155
+lu_2015_tax_AB-IC-17-n,Achat Biens 17% - Intracommunautaire (-),AB-IC-17-n,purchase,percent,-0.17,0,lu_2015_tax_AB-IC-17,lu_2011_account_4614112,lu_2011_account_4614112,-1.0,-1.0,,lu_tax_code_template_t_AB-IC-17-n,1.0,1.0,,lu_tax_code_template_t_AB-IC-17-n,lu_2011_chart_1,1156
+lu_2015_tax_AB-IC-17-p,Achat Biens 17% - Intracommunautaire (+),AB-IC-17-p,purchase,percent,0.17,0,lu_2015_tax_AB-IC-17,lu_2011_account_4216112,lu_2011_account_4216112,1.0,1.0,lu_tax_code_template_b_AB-IC-17,lu_tax_code_template_t_AB-IC-17,-1.0,-1.0,lu_tax_code_template_b_AB-IC-17,lu_tax_code_template_t_AB-IC-17,lu_2011_chart_1,1157
+lu_2011_tax_AB-IC-3,Achat Biens 3% - Intracommunautaire,AB-IC-3,purchase,percent,1.0,1,,,,1.0,1.0,,,-1.0,-1.0,,,lu_2011_chart_1,158
+lu_2011_tax_AB-IC-3-n,Achat Biens 3% - Intracommunautaire (-),AB-IC-3-n,purchase,percent,-0.03,0,lu_2011_tax_AB-IC-3,lu_2011_account_4614112,lu_2011_account_4614112,-1.0,-1.0,,lu_tax_code_template_t_AB-IC-3-n,1.0,1.0,,lu_tax_code_template_t_AB-IC-3-n,lu_2011_chart_1,1159
+lu_2011_tax_AB-IC-3-p,Achat Biens 3% - Intracommunautaire (+),AB-IC-3-p,purchase,percent,0.03,0,lu_2011_tax_AB-IC-3,lu_2011_account_4216112,lu_2011_account_4216112,1.0,1.0,lu_tax_code_template_b_AB-IC-3,lu_tax_code_template_t_AB-IC-3,-1.0,-1.0,lu_tax_code_template_b_AB-IC-3,lu_tax_code_template_t_AB-IC-3,lu_2011_chart_1,1160
+lu_2011_tax_AB-IC-6,Achat Biens 6% - Intracommunautaire,AB-IC-6,purchase,percent,1.0,1,,,,1.0,1.0,,,-1.0,-1.0,,,lu_2011_chart_1,161
+lu_2011_tax_AB-IC-6-n,Achat Biens 6% - Intracommunautaire (-),AB-IC-6-n,purchase,percent,-0.06,0,lu_2011_tax_AB-IC-6,lu_2011_account_4614112,lu_2011_account_4614112,-1.0,-1.0,,lu_tax_code_template_t_AB-IC-6-n,1.0,1.0,,lu_tax_code_template_t_AB-IC-6-n,lu_2011_chart_1,1162
+lu_2011_tax_AB-IC-6-p,Achat Biens 6% - Intracommunautaire (+),AB-IC-6-p,purchase,percent,0.06,0,lu_2011_tax_AB-IC-6,lu_2011_account_4216112,lu_2011_account_4216112,1.0,1.0,lu_tax_code_template_b_AB-IC-6,lu_tax_code_template_t_AB-IC-6,-1.0,-1.0,lu_tax_code_template_b_AB-IC-6,lu_tax_code_template_t_AB-IC-6,lu_2011_chart_1,1163
+lu_2015_tax_AB-IC-8,Achat Biens 8% - Intracommunautaire,AB-IC-8,purchase,percent,1.0,1,,,,1.0,1.0,,,-1.0,-1.0,,,lu_2011_chart_1,164
+lu_2015_tax_AB-IC-8-n,Achat Biens 8% - Intracommunautaire (-),AB-IC-8-n,purchase,percent,-0.08,0,lu_2015_tax_AB-IC-8,lu_2011_account_4614112,lu_2011_account_4614112,-1.0,-1.0,,lu_tax_code_template_t_AB-IC-8-n,1.0,1.0,,lu_tax_code_template_t_AB-IC-8-n,lu_2011_chart_1,1165
+lu_2015_tax_AB-IC-8-p,Achat Biens 8% - Intracommunautaire (+),AB-IC-8-p,purchase,percent,0.08,0,lu_2015_tax_AB-IC-8,lu_2011_account_4216112,lu_2011_account_4216112,1.0,1.0,lu_tax_code_template_b_AB-IC-8,lu_tax_code_template_t_AB-IC-8,-1.0,-1.0,lu_tax_code_template_b_AB-IC-8,lu_tax_code_template_t_AB-IC-8,lu_2011_chart_1,1166
+lu_2011_tax_AB-PA-0,Achat Biens 0% - Pays,AB-PA-0,purchase,percent,0.0,0,,,,1.0,1.0,lu_tax_code_template_b_AB-PA-0,,-1.0,-1.0,lu_tax_code_template_b_AB-PA-0,,lu_2011_chart_1,167
+lu_2011_tax_AB-PA-12,Achat Biens 12% - Pays,AB-PA-12,purchase,percent,0.12,0,,lu_2011_account_4216111,lu_2011_account_4216111,1.0,1.0,lu_tax_code_template_b_AB-PA-12,lu_tax_code_template_t_AB-PA-12,-1.0,-1.0,lu_tax_code_template_b_AB-PA-12,lu_tax_code_template_t_AB-PA-12,lu_2011_chart_1,168
+lu_2015_tax_AB-PA-14,Achat Biens 14% - Pays,AB-PA-14,purchase,percent,0.14,0,,lu_2011_account_4216111,lu_2011_account_4216111,1.0,1.0,lu_tax_code_template_b_AB-PA-14,lu_tax_code_template_t_AB-PA-14,-1.0,-1.0,lu_tax_code_template_b_AB-PA-14,lu_tax_code_template_t_AB-PA-14,lu_2011_chart_1,169
+lu_2011_tax_AB-PA-15,Achat Biens 15% - Pays,AB-PA-15,purchase,percent,0.15,0,,lu_2011_account_4216111,lu_2011_account_4216111,1.0,1.0,lu_tax_code_template_b_AB-PA-15,lu_tax_code_template_t_AB-PA-15,-1.0,-1.0,lu_tax_code_template_b_AB-PA-15,lu_tax_code_template_t_AB-PA-15,lu_2011_chart_1,170
+lu_2015_tax_AB-PA-17,Achat Biens 17% - Pays,AB-PA-17,purchase,percent,0.17,0,,lu_2011_account_4216111,lu_2011_account_4216111,1.0,1.0,lu_tax_code_template_b_AB-PA-17,lu_tax_code_template_t_AB-PA-17,-1.0,-1.0,lu_tax_code_template_b_AB-PA-17,lu_tax_code_template_t_AB-PA-17,lu_2011_chart_1,171
+lu_2011_tax_AB-PA-3,Achat Biens 3% - Pays,AB-PA-3,purchase,percent,0.03,0,,lu_2011_account_4216111,lu_2011_account_4216111,1.0,1.0,lu_tax_code_template_b_AB-PA-3,lu_tax_code_template_t_AB-PA-3,-1.0,-1.0,lu_tax_code_template_b_AB-PA-3,lu_tax_code_template_t_AB-PA-3,lu_2011_chart_1,172
+lu_2011_tax_AB-PA-6,Achat Biens 6% - Pays,AB-PA-6,purchase,percent,0.06,0,,lu_2011_account_4216111,lu_2011_account_4216111,1.0,1.0,lu_tax_code_template_b_AB-PA-6,lu_tax_code_template_t_AB-PA-6,-1.0,-1.0,lu_tax_code_template_b_AB-PA-6,lu_tax_code_template_t_AB-PA-6,lu_2011_chart_1,173
+lu_2015_tax_AB-PA-8,Achat Biens 8% - Pays,AB-PA-8,purchase,percent,0.08,0,,lu_2011_account_4216111,lu_2011_account_4216111,1.0,1.0,lu_tax_code_template_b_AB-PA-8,lu_tax_code_template_t_AB-PA-8,-1.0,-1.0,lu_tax_code_template_b_AB-PA-8,lu_tax_code_template_t_AB-PA-8,lu_2011_chart_1,174
+lu_2011_tax_AP-EC-0,Achat Prestations Exonérées - Extracommunautaire,AP-EC-0,purchase,percent,0.0,0,,,,1.0,1.0,lu_tax_code_template_b_AP-EC-0,,-1.0,-1.0,lu_tax_code_template_b_AP-EC-0,,lu_2011_chart_1,175
+lu_2011_tax_AP-EC-12,Achat Prestations 12% - Extracommunautaire,AP-EC-12,purchase,percent,1.0,1,,,,1.0,1.0,,,-1.0,-1.0,,,lu_2011_chart_1,176
+lu_2011_tax_AP-EC-12-n,Achat Prestations 12% - Extracommunautaire (-),AP-EC-12-n,purchase,percent,-0.12,0,lu_2011_tax_AP-EC-12,lu_2011_account_4614113,lu_2011_account_4614113,-1.0,-1.0,,lu_tax_code_template_t_AP-EC-12-n,1.0,1.0,,lu_tax_code_template_t_AP-EC-12-n,lu_2011_chart_1,1177
+lu_2011_tax_AP-EC-12-p,Achat Prestations 12% - Extracommunautaire (+),AP-EC-12-p,purchase,percent,0.12,0,lu_2011_tax_AP-EC-12,lu_2011_account_4216113,lu_2011_account_4216113,1.0,1.0,lu_tax_code_template_b_AP-EC-12,lu_tax_code_template_t_AP-EC-12,-1.0,-1.0,lu_tax_code_template_b_AP-EC-12,lu_tax_code_template_t_AP-EC-12,lu_2011_chart_1,1178
+lu_2015_tax_AP-EC-14,Achat Prestations 14% - Extracommunautaire,AP-EC-14,purchase,percent,1.0,1,,,,1.0,1.0,,,-1.0,-1.0,,,lu_2011_chart_1,179
+lu_2015_tax_AP-EC-14-n,Achat Prestations 14% - Extracommunautaire (-),AP-EC-14-n,purchase,percent,-0.14,0,lu_2015_tax_AP-EC-14,lu_2011_account_4614113,lu_2011_account_4614113,-1.0,-1.0,,lu_tax_code_template_t_AP-EC-14-n,1.0,1.0,,lu_tax_code_template_t_AP-EC-14-n,lu_2011_chart_1,1180
+lu_2015_tax_AP-EC-14-p,Achat Prestations 14% - Extracommunautaire (+),AP-EC-14-p,purchase,percent,0.14,0,lu_2015_tax_AP-EC-14,lu_2011_account_4216113,lu_2011_account_4216113,1.0,1.0,lu_tax_code_template_b_AP-EC-14,lu_tax_code_template_t_AP-EC-14,-1.0,-1.0,lu_tax_code_template_b_AP-EC-14,lu_tax_code_template_t_AP-EC-14,lu_2011_chart_1,1181
+lu_2011_tax_AP-EC-15,Achat Prestations 15% - Extracommunautaire,AP-EC-15,purchase,percent,1.0,1,,,,1.0,1.0,,,-1.0,-1.0,,,lu_2011_chart_1,182
+lu_2011_tax_AP-EC-15-n,Achat Prestations 15% - Extracommunautaire (-),AP-EC-15-n,purchase,percent,-0.15,0,lu_2011_tax_AP-EC-15,lu_2011_account_4614113,lu_2011_account_4614113,-1.0,-1.0,,lu_tax_code_template_t_AP-EC-15-n,1.0,1.0,,lu_tax_code_template_t_AP-EC-15-n,lu_2011_chart_1,1183
+lu_2011_tax_AP-EC-15-p,Achat Prestations 15% - Extracommunautaire (+),AP-EC-15-p,purchase,percent,0.15,0,lu_2011_tax_AP-EC-15,lu_2011_account_4216113,lu_2011_account_4216113,1.0,1.0,lu_tax_code_template_b_AP-EC-15,lu_tax_code_template_t_AP-EC-15,-1.0,-1.0,lu_tax_code_template_b_AP-EC-15,lu_tax_code_template_t_AP-EC-15,lu_2011_chart_1,1184
+lu_2015_tax_AP-EC-17,Achat Prestations 17% - Extracommunautaire,AP-EC-17,purchase,percent,1.0,1,,,,1.0,1.0,,,-1.0,-1.0,,,lu_2011_chart_1,185
+lu_2015_tax_AP-EC-17-n,Achat Prestations 17% - Extracommunautaire (-),AP-EC-17-n,purchase,percent,-0.17,0,lu_2015_tax_AP-EC-17,lu_2011_account_4614113,lu_2011_account_4614113,-1.0,-1.0,,lu_tax_code_template_t_AP-EC-17-n,1.0,1.0,,lu_tax_code_template_t_AP-EC-17-n,lu_2011_chart_1,1186
+lu_2015_tax_AP-EC-17-p,Achat Prestations 17% - Extracommunautaire (+),AP-EC-17-p,purchase,percent,0.17,0,lu_2015_tax_AP-EC-17,lu_2011_account_4216113,lu_2011_account_4216113,1.0,1.0,lu_tax_code_template_b_AP-EC-17,lu_tax_code_template_t_AP-EC-17,-1.0,-1.0,lu_tax_code_template_b_AP-EC-17,lu_tax_code_template_t_AP-EC-17,lu_2011_chart_1,1187
+lu_2011_tax_AP-EC-3,Achat Prestations 3% - Extracommunautaire,AP-EC-3,purchase,percent,1.0,1,,,,1.0,1.0,,,-1.0,-1.0,,,lu_2011_chart_1,188
+lu_2011_tax_AP-EC-3-n,Achat Prestations 3% - Extracommunautaire (-),AP-EC-3-n,purchase,percent,-0.03,0,lu_2011_tax_AP-EC-3,lu_2011_account_4614113,lu_2011_account_4614113,-1.0,-1.0,,lu_tax_code_template_t_AP-EC-3-n,1.0,1.0,,lu_tax_code_template_t_AP-EC-3-n,lu_2011_chart_1,1189
+lu_2011_tax_AP-EC-3-p,Achat Prestations 3% - Extracommunautaire (+),AP-EC-3-p,purchase,percent,0.03,0,lu_2011_tax_AP-EC-3,lu_2011_account_4216113,lu_2011_account_4216113,1.0,1.0,lu_tax_code_template_b_AP-EC-3,lu_tax_code_template_t_AP-EC-3,-1.0,-1.0,lu_tax_code_template_b_AP-EC-3,lu_tax_code_template_t_AP-EC-3,lu_2011_chart_1,1190
+lu_2011_tax_AP-EC-6,Achat Prestations 6% - Extracommunautaire,AP-EC-6,purchase,percent,1.0,1,,,,1.0,1.0,,,-1.0,-1.0,,,lu_2011_chart_1,191
+lu_2011_tax_AP-EC-6-n,Achat Prestations 6% - Extracommunautaire (-),AP-EC-6-n,purchase,percent,-0.06,0,lu_2011_tax_AP-EC-6,lu_2011_account_4614113,lu_2011_account_4614113,-1.0,-1.0,,lu_tax_code_template_t_AP-EC-6-n,1.0,1.0,,lu_tax_code_template_t_AP-EC-6-n,lu_2011_chart_1,1192
+lu_2011_tax_AP-EC-6-p,Achat Prestations 6% - Extracommunautaire (+),AP-EC-6-p,purchase,percent,0.06,0,lu_2011_tax_AP-EC-6,lu_2011_account_4216113,lu_2011_account_4216113,1.0,1.0,lu_tax_code_template_b_AP-EC-6,lu_tax_code_template_t_AP-EC-6,-1.0,-1.0,lu_tax_code_template_b_AP-EC-6,lu_tax_code_template_t_AP-EC-6,lu_2011_chart_1,1193
+lu_2015_tax_AP-EC-8,Achat Prestations 8% - Extracommunautaire,AP-EC-8,purchase,percent,1.0,1,,,,1.0,1.0,,,-1.0,-1.0,,,lu_2011_chart_1,194
+lu_2015_tax_AP-EC-8-n,Achat Prestations 8% - Extracommunautaire (-),AP-EC-8-n,purchase,percent,-0.08,0,lu_2015_tax_AP-EC-8,lu_2011_account_4614113,lu_2011_account_4614113,-1.0,-1.0,,lu_tax_code_template_t_AP-EC-8-n,1.0,1.0,,lu_tax_code_template_t_AP-EC-8-n,lu_2011_chart_1,1195
+lu_2015_tax_AP-EC-8-p,Achat Prestations 8% - Extracommunautaire (+),AP-EC-8-p,purchase,percent,0.08,0,lu_2015_tax_AP-EC-8,lu_2011_account_4216113,lu_2011_account_4216113,1.0,1.0,lu_tax_code_template_b_AP-EC-8,lu_tax_code_template_t_AP-EC-8,-1.0,-1.0,lu_tax_code_template_b_AP-EC-8,lu_tax_code_template_t_AP-EC-8,lu_2011_chart_1,1196
+lu_2011_tax_AP-IC-0,Achat Prestations Exonérées - Intracommunautaire,AP-IC-0,purchase,percent,0.0,0,,,,1.0,1.0,lu_tax_code_template_b_AP-IC-0,,-1.0,-1.0,lu_tax_code_template_b_AP-IC-0,,lu_2011_chart_1,197
+lu_2011_tax_AP-IC-12,Achat Prestations 12% - Intracommunautaire,AP-IC-12,purchase,percent,1.0,1,,,,1.0,1.0,,,-1.0,-1.0,,,lu_2011_chart_1,198
+lu_2011_tax_AP-IC-12-n,Achat Prestations 12% - Intracommunautaire (-),AP-IC-12-n,purchase,percent,-0.12,0,lu_2011_tax_AP-IC-12,lu_2011_account_4614112,lu_2011_account_4614112,-1.0,-1.0,,lu_tax_code_template_t_AP-IC-12-n,1.0,1.0,,lu_tax_code_template_t_AP-IC-12-n,lu_2011_chart_1,1199
+lu_2011_tax_AP-IC-12-p,Achat Prestations 12% - Intracommunautaire (+),AP-IC-12-p,purchase,percent,0.12,0,lu_2011_tax_AP-IC-12,lu_2011_account_4216112,lu_2011_account_4216112,1.0,1.0,lu_tax_code_template_b_AP-IC-12,lu_tax_code_template_t_AP-IC-12,-1.0,-1.0,lu_tax_code_template_b_AP-IC-12,lu_tax_code_template_t_AP-IC-12,lu_2011_chart_1,1200
+lu_2015_tax_AP-IC-14,Achat Prestations 14% - Intracommunautaire,AP-IC-14,purchase,percent,1.0,1,,,,1.0,1.0,,,-1.0,-1.0,,,lu_2011_chart_1,201
+lu_2015_tax_AP-IC-14-n,Achat Prestations 14% - Intracommunautaire (-),AP-IC-14-n,purchase,percent,-0.14,0,lu_2015_tax_AP-IC-14,lu_2011_account_4614112,lu_2011_account_4614112,-1.0,-1.0,,lu_tax_code_template_t_AP-IC-14-n,1.0,1.0,,lu_tax_code_template_t_AP-IC-14-n,lu_2011_chart_1,1202
+lu_2015_tax_AP-IC-14-p,Achat Prestations 14% - Intracommunautaire (+),AP-IC-14-p,purchase,percent,0.14,0,lu_2015_tax_AP-IC-14,lu_2011_account_4216112,lu_2011_account_4216112,1.0,1.0,lu_tax_code_template_b_AP-IC-14,lu_tax_code_template_t_AP-IC-14,-1.0,-1.0,lu_tax_code_template_b_AP-IC-14,lu_tax_code_template_t_AP-IC-14,lu_2011_chart_1,1203
+lu_2011_tax_AP-IC-15,Achat Prestations 15% - Intracommunautaire,AP-IC-15,purchase,percent,1.0,1,,,,1.0,1.0,,,-1.0,-1.0,,,lu_2011_chart_1,204
+lu_2011_tax_AP-IC-15-n,Achat Prestations 15% - Intracommunautaire (-),AP-IC-15-n,purchase,percent,-0.15,0,lu_2011_tax_AP-IC-15,lu_2011_account_4614112,lu_2011_account_4614112,-1.0,-1.0,,lu_tax_code_template_t_AP-IC-15-n,1.0,1.0,,lu_tax_code_template_t_AP-IC-15-n,lu_2011_chart_1,1205
+lu_2011_tax_AP-IC-15-p,Achat Prestations 15% - Intracommunautaire (+),AP-IC-15-p,purchase,percent,0.15,0,lu_2011_tax_AP-IC-15,lu_2011_account_4216112,lu_2011_account_4216112,1.0,1.0,lu_tax_code_template_b_AP-IC-15,lu_tax_code_template_t_AP-IC-15,-1.0,-1.0,lu_tax_code_template_b_AP-IC-15,lu_tax_code_template_t_AP-IC-15,lu_2011_chart_1,1206
+lu_2015_tax_AP-IC-17,Achat Prestations 17% - Intracommunautaire,AP-IC-17,purchase,percent,1.0,1,,,,1.0,1.0,,,-1.0,-1.0,,,lu_2011_chart_1,207
+lu_2015_tax_AP-IC-17-n,Achat Prestations 17% - Intracommunautaire (-),AP-IC-17-n,purchase,percent,-0.17,0,lu_2015_tax_AP-IC-17,lu_2011_account_4614112,lu_2011_account_4614112,-1.0,-1.0,,lu_tax_code_template_t_AP-IC-17-n,1.0,1.0,,lu_tax_code_template_t_AP-IC-17-n,lu_2011_chart_1,1208
+lu_2015_tax_AP-IC-17-p,Achat Prestations 17% - Intracommunautaire (+),AP-IC-17-p,purchase,percent,0.17,0,lu_2015_tax_AP-IC-17,lu_2011_account_4216112,lu_2011_account_4216112,1.0,1.0,lu_tax_code_template_b_AP-IC-17,lu_tax_code_template_t_AP-IC-17,-1.0,-1.0,lu_tax_code_template_b_AP-IC-17,lu_tax_code_template_t_AP-IC-17,lu_2011_chart_1,1209
+lu_2011_tax_AP-IC-3,Achat Prestations 3% - Intracommunautaire,AP-IC-3,purchase,percent,1.0,1,,,,1.0,1.0,,,-1.0,-1.0,,,lu_2011_chart_1,210
+lu_2011_tax_AP-IC-3-n,Achat Prestations 3% - Intracommunautaire (-),AP-IC-3-n,purchase,percent,-0.03,0,lu_2011_tax_AP-IC-3,lu_2011_account_4614112,lu_2011_account_4614112,-1.0,-1.0,,lu_tax_code_template_t_AP-IC-3-n,1.0,1.0,,lu_tax_code_template_t_AP-IC-3-n,lu_2011_chart_1,1211
+lu_2011_tax_AP-IC-3-p,Achat Prestations 3% - Intracommunautaire (+),AP-IC-3-p,purchase,percent,0.03,0,lu_2011_tax_AP-IC-3,lu_2011_account_4216112,lu_2011_account_4216112,1.0,1.0,lu_tax_code_template_b_AP-IC-3,lu_tax_code_template_t_AP-IC-3,-1.0,-1.0,lu_tax_code_template_b_AP-IC-3,lu_tax_code_template_t_AP-IC-3,lu_2011_chart_1,1212
+lu_2011_tax_AP-IC-6,Achat Prestations 6% - Intracommunautaire,AP-IC-6,purchase,percent,1.0,1,,,,1.0,1.0,,,-1.0,-1.0,,,lu_2011_chart_1,213
+lu_2011_tax_AP-IC-6-n,Achat Prestations 6% - Intracommunautaire (-),AP-IC-6-n,purchase,percent,-0.06,0,lu_2011_tax_AP-IC-6,lu_2011_account_4614112,lu_2011_account_4614112,-1.0,-1.0,,lu_tax_code_template_t_AP-IC-6-n,1.0,1.0,,lu_tax_code_template_t_AP-IC-6-n,lu_2011_chart_1,1214
+lu_2011_tax_AP-IC-6-p,Achat Prestations 6% - Intracommunautaire (+),AP-IC-6-p,purchase,percent,0.06,0,lu_2011_tax_AP-IC-6,lu_2011_account_4216112,lu_2011_account_4216112,1.0,1.0,lu_tax_code_template_b_AP-IC-6,lu_tax_code_template_t_AP-IC-6,-1.0,-1.0,lu_tax_code_template_b_AP-IC-6,lu_tax_code_template_t_AP-IC-6,lu_2011_chart_1,1215
+lu_2015_tax_AP-IC-8,Achat Prestations 8% - Intracommunautaire,AP-IC-8,purchase,percent,1.0,1,,,,1.0,1.0,,,-1.0,-1.0,,,lu_2011_chart_1,216
+lu_2015_tax_AP-IC-8-n,Achat Prestations 8% - Intracommunautaire (-),AP-IC-8-n,purchase,percent,-0.08,0,lu_2015_tax_AP-IC-8,lu_2011_account_4614112,lu_2011_account_4614112,-1.0,-1.0,,lu_tax_code_template_t_AP-IC-8-n,1.0,1.0,,lu_tax_code_template_t_AP-IC-8-n,lu_2011_chart_1,1217
+lu_2015_tax_AP-IC-8-p,Achat Prestations 8% - Intracommunautaire (+),AP-IC-8-p,purchase,percent,0.08,0,lu_2015_tax_AP-IC-8,lu_2011_account_4216112,lu_2011_account_4216112,1.0,1.0,lu_tax_code_template_b_AP-IC-8,lu_tax_code_template_t_AP-IC-8,-1.0,-1.0,lu_tax_code_template_b_AP-IC-8,lu_tax_code_template_t_AP-IC-8,lu_2011_chart_1,1218
+lu_2011_tax_AP-PA-0,Achat Prestations 0% - Pays,AP-PA-0,purchase,percent,0.0,0,,,,1.0,1.0,lu_tax_code_template_b_AP-PA-0,,-1.0,-1.0,lu_tax_code_template_b_AP-PA-0,,lu_2011_chart_1,219
+lu_2011_tax_AP-PA-12,Achat Prestations 12% - Pays,AP-PA-12,purchase,percent,0.12,0,,lu_2011_account_4216111,lu_2011_account_4216111,1.0,1.0,lu_tax_code_template_b_AP-PA-12,lu_tax_code_template_t_AP-PA-12,-1.0,-1.0,lu_tax_code_template_b_AP-PA-12,lu_tax_code_template_t_AP-PA-12,lu_2011_chart_1,220
+lu_2015_tax_AP-PA-14,Achat Prestations 14% - Pays,AP-PA-14,purchase,percent,0.14,0,,lu_2011_account_4216111,lu_2011_account_4216111,1.0,1.0,lu_tax_code_template_b_AP-PA-14,lu_tax_code_template_t_AP-PA-14,-1.0,-1.0,lu_tax_code_template_b_AP-PA-14,lu_tax_code_template_t_AP-PA-14,lu_2011_chart_1,221
+lu_2011_tax_AP-PA-15,Achat Prestations 15% - Pays,AP-PA-15,purchase,percent,0.15,0,,lu_2011_account_4216111,lu_2011_account_4216111,1.0,1.0,lu_tax_code_template_b_AP-PA-15,lu_tax_code_template_t_AP-PA-15,-1.0,-1.0,lu_tax_code_template_b_AP-PA-15,lu_tax_code_template_t_AP-PA-15,lu_2011_chart_1,222
+lu_2015_tax_AP-PA-17,Achat Prestations 17% - Pays,AP-PA-17,purchase,percent,0.17,0,,lu_2011_account_4216111,lu_2011_account_4216111,1.0,1.0,lu_tax_code_template_b_AP-PA-17,lu_tax_code_template_t_AP-PA-17,-1.0,-1.0,lu_tax_code_template_b_AP-PA-17,lu_tax_code_template_t_AP-PA-17,lu_2011_chart_1,223
+lu_2011_tax_AP-PA-3,Achat Prestations 3% - Pays,AP-PA-3,purchase,percent,0.03,0,,lu_2011_account_4216111,lu_2011_account_4216111,1.0,1.0,lu_tax_code_template_b_AP-PA-3,lu_tax_code_template_t_AP-PA-3,-1.0,-1.0,lu_tax_code_template_b_AP-PA-3,lu_tax_code_template_t_AP-PA-3,lu_2011_chart_1,224
+lu_2011_tax_AP-PA-6,Achat Prestations 6% - Pays,AP-PA-6,purchase,percent,0.06,0,,lu_2011_account_4216111,lu_2011_account_4216111,1.0,1.0,lu_tax_code_template_b_AP-PA-6,lu_tax_code_template_t_AP-PA-6,-1.0,-1.0,lu_tax_code_template_b_AP-PA-6,lu_tax_code_template_t_AP-PA-6,lu_2011_chart_1,225
+lu_2015_tax_AP-PA-8,Achat Prestations 8% - Pays,AP-PA-8,purchase,percent,0.08,0,,lu_2011_account_4216111,lu_2011_account_4216111,1.0,1.0,lu_tax_code_template_b_AP-PA-8,lu_tax_code_template_t_AP-PA-8,-1.0,-1.0,lu_tax_code_template_b_AP-PA-8,lu_tax_code_template_t_AP-PA-8,lu_2011_chart_1,226
+lu_2011_tax_FB-EC-0,Frais Biens Exonéré - Extracommunautaire,FB-EC-0,purchase,percent,0.0,0,,,,1.0,1.0,lu_tax_code_template_b_FB-EC-0,,-1.0,-1.0,lu_tax_code_template_b_FB-EC-0,,lu_2011_chart_1,227
+lu_2011_tax_FB-EC-12,Frais Biens 12% - Extracommunautaire,FB-EC-12,purchase,percent,1.0,1,,,,1.0,1.0,,,-1.0,-1.0,,,lu_2011_chart_1,228
+lu_2011_tax_FB-EC-12-n,Frais Biens 12% - Extracommunautaire (-),FB-EC-12-n,purchase,percent,-0.12,0,lu_2011_tax_FB-EC-12,lu_2011_account_4614113,lu_2011_account_4614113,-1.0,-1.0,,lu_tax_code_template_t_FB-EC-12-n,1.0,1.0,,lu_tax_code_template_t_FB-EC-12-n,lu_2011_chart_1,1229
+lu_2011_tax_FB-EC-12-p,Frais Biens 12% - Extracommunautaire (+),FB-EC-12-p,purchase,percent,0.12,0,lu_2011_tax_FB-EC-12,lu_2011_account_4216113,lu_2011_account_4216113,1.0,1.0,lu_tax_code_template_b_FB-EC-12,lu_tax_code_template_t_FB-EC-12,-1.0,-1.0,lu_tax_code_template_b_FB-EC-12,lu_tax_code_template_t_FB-EC-12,lu_2011_chart_1,1230
+lu_2015_tax_FB-EC-14,Frais Biens 14% - Extracommunautaire,FB-EC-14,purchase,percent,1.0,1,,,,1.0,1.0,,,-1.0,-1.0,,,lu_2011_chart_1,231
+lu_2015_tax_FB-EC-14-n,Frais Biens 14% - Extracommunautaire (-),FB-EC-14-n,purchase,percent,-0.14,0,lu_2015_tax_FB-EC-14,lu_2011_account_4614113,lu_2011_account_4614113,-1.0,-1.0,,lu_tax_code_template_t_FB-EC-14-n,1.0,1.0,,lu_tax_code_template_t_FB-EC-14-n,lu_2011_chart_1,1232
+lu_2015_tax_FB-EC-14-p,Frais Biens 14% - Extracommunautaire (+),FB-EC-14-p,purchase,percent,0.14,0,lu_2015_tax_FB-EC-14,lu_2011_account_4216113,lu_2011_account_4216113,1.0,1.0,lu_tax_code_template_b_FB-EC-14,lu_tax_code_template_t_FB-EC-14,-1.0,-1.0,lu_tax_code_template_b_FB-EC-14,lu_tax_code_template_t_FB-EC-14,lu_2011_chart_1,1233
+lu_2011_tax_FB-EC-15,Frais Biens 15% - Extracommunautaire,FB-EC-15,purchase,percent,1.0,1,,,,1.0,1.0,,,-1.0,-1.0,,,lu_2011_chart_1,234
+lu_2011_tax_FB-EC-15-n,Frais Biens 15% - Extracommunautaire (-),FB-EC-15-n,purchase,percent,-0.15,0,lu_2011_tax_FB-EC-15,lu_2011_account_4614113,lu_2011_account_4614113,-1.0,-1.0,,lu_tax_code_template_t_FB-EC-15-n,1.0,1.0,,lu_tax_code_template_t_FB-EC-15-n,lu_2011_chart_1,1235
+lu_2011_tax_FB-EC-15-p,Frais Biens 15% - Extracommunautaire (+),FB-EC-15-p,purchase,percent,0.15,0,lu_2011_tax_FB-EC-15,lu_2011_account_4216113,lu_2011_account_4216113,1.0,1.0,lu_tax_code_template_b_FB-EC-15,lu_tax_code_template_t_FB-EC-15,-1.0,-1.0,lu_tax_code_template_b_FB-EC-15,lu_tax_code_template_t_FB-EC-15,lu_2011_chart_1,1236
+lu_2015_tax_FB-EC-17,Frais Biens 17% - Extracommunautaire,FB-EC-17,purchase,percent,1.0,1,,,,1.0,1.0,,,-1.0,-1.0,,,lu_2011_chart_1,237
+lu_2015_tax_FB-EC-17-n,Frais Biens 17% - Extracommunautaire (-),FB-EC-17-n,purchase,percent,-0.17,0,lu_2015_tax_FB-EC-17,lu_2011_account_4614113,lu_2011_account_4614113,-1.0,-1.0,,lu_tax_code_template_t_FB-EC-17-n,1.0,1.0,,lu_tax_code_template_t_FB-EC-17-n,lu_2011_chart_1,1238
+lu_2015_tax_FB-EC-17-p,Frais Biens 17% - Extracommunautaire (+),FB-EC-17-p,purchase,percent,0.17,0,lu_2015_tax_FB-EC-17,lu_2011_account_4216113,lu_2011_account_4216113,1.0,1.0,lu_tax_code_template_b_FB-EC-17,lu_tax_code_template_t_FB-EC-17,-1.0,-1.0,lu_tax_code_template_b_FB-EC-17,lu_tax_code_template_t_FB-EC-17,lu_2011_chart_1,1239
+lu_2011_tax_FB-EC-3,Frais Biens 3% - Extracommunautaire,FB-EC-3,purchase,percent,1.0,1,,,,1.0,1.0,,,-1.0,-1.0,,,lu_2011_chart_1,240
+lu_2011_tax_FB-EC-3-n,Frais Biens 3% - Extracommunautaire (-),FB-EC-3-n,purchase,percent,-0.03,0,lu_2011_tax_FB-EC-3,lu_2011_account_4614113,lu_2011_account_4614113,-1.0,-1.0,,lu_tax_code_template_t_FB-EC-3-n,1.0,1.0,,lu_tax_code_template_t_FB-EC-3-n,lu_2011_chart_1,1241
+lu_2011_tax_FB-EC-3-p,Frais Biens 3% - Extracommunautaire (+),FB-EC-3-p,purchase,percent,0.03,0,lu_2011_tax_FB-EC-3,lu_2011_account_4216113,lu_2011_account_4216113,1.0,1.0,lu_tax_code_template_b_FB-EC-3,lu_tax_code_template_t_FB-EC-3,-1.0,-1.0,lu_tax_code_template_b_FB-EC-3,lu_tax_code_template_t_FB-EC-3,lu_2011_chart_1,1242
+lu_2011_tax_FB-EC-6,Frais Biens 6% - Extracommunautaire,FB-EC-6,purchase,percent,1.0,1,,,,1.0,1.0,,,-1.0,-1.0,,,lu_2011_chart_1,243
+lu_2011_tax_FB-EC-6-n,Frais Biens 6% - Extracommunautaire (-),FB-EC-6-n,purchase,percent,-0.06,0,lu_2011_tax_FB-EC-6,lu_2011_account_4614113,lu_2011_account_4614113,-1.0,-1.0,,lu_tax_code_template_t_FB-EC-6-n,1.0,1.0,,lu_tax_code_template_t_FB-EC-6-n,lu_2011_chart_1,1244
+lu_2011_tax_FB-EC-6-p,Frais Biens 6% - Extracommunautaire (+),FB-EC-6-p,purchase,percent,0.06,0,lu_2011_tax_FB-EC-6,lu_2011_account_4216113,lu_2011_account_4216113,1.0,1.0,lu_tax_code_template_b_FB-EC-6,lu_tax_code_template_t_FB-EC-6,-1.0,-1.0,lu_tax_code_template_b_FB-EC-6,lu_tax_code_template_t_FB-EC-6,lu_2011_chart_1,1245
+lu_2015_tax_FB-EC-8,Frais Biens 8% - Extracommunautaire,FB-EC-8,purchase,percent,1.0,1,,,,1.0,1.0,,,-1.0,-1.0,,,lu_2011_chart_1,246
+lu_2015_tax_FB-EC-8-n,Frais Biens 8% - Extracommunautaire (-),FB-EC-8-n,purchase,percent,-0.08,0,lu_2015_tax_FB-EC-8,lu_2011_account_4614113,lu_2011_account_4614113,-1.0,-1.0,,lu_tax_code_template_t_FB-EC-8-n,1.0,1.0,,lu_tax_code_template_t_FB-EC-8-n,lu_2011_chart_1,1247
+lu_2015_tax_FB-EC-8-p,Frais Biens 8% - Extracommunautaire (+),FB-EC-8-p,purchase,percent,0.08,0,lu_2015_tax_FB-EC-8,lu_2011_account_4216113,lu_2011_account_4216113,1.0,1.0,lu_tax_code_template_b_FB-EC-8,lu_tax_code_template_t_FB-EC-8,-1.0,-1.0,lu_tax_code_template_b_FB-EC-8,lu_tax_code_template_t_FB-EC-8,lu_2011_chart_1,1248
+lu_2015_tax_FB-ECP-0,Frais Biens Exonéré - Extracommunautaire fin privées,FB-ECP-0,purchase,percent,0.0,0,,,,1.0,1.0,lu_tax_code_template_b_FB-ECP-0,,-1.0,-1.0,lu_tax_code_template_b_FB-ECP-0,,lu_2011_chart_1,249
+lu_2015_tax_FB-ECP-12,Frais Biens 12% - Extracommunautaire fin privées,FB-ECP-12,purchase,percent,1.0,1,,,,1.0,1.0,,,-1.0,-1.0,,,lu_2011_chart_1,250
+lu_2015_tax_FB-ECP-12-n,Frais Biens 12% - Extracommunautaire fin privées (-),FB-ECP-12-n,purchase,percent,-0.12,0,lu_2015_tax_FB-ECP-12,lu_2011_account_4614113,lu_2011_account_4614113,-1.0,-1.0,,lu_tax_code_template_t_FB-ECP-12-n,1.0,1.0,,lu_tax_code_template_t_FB-ECP-12-n,lu_2011_chart_1,1251
+lu_2015_tax_FB-ECP-12-p,Frais Biens 12% - Extracommunautaire fin privées (+),FB-ECP-12-p,purchase,percent,0.12,0,lu_2015_tax_FB-ECP-12,lu_2011_account_4216113,lu_2011_account_4216113,1.0,1.0,lu_tax_code_template_b_FB-ECP-12,lu_tax_code_template_t_FB-ECP-12,-1.0,-1.0,lu_tax_code_template_b_FB-ECP-12,lu_tax_code_template_t_FB-ECP-12,lu_2011_chart_1,1252
+lu_2015_tax_FB-ECP-14,Frais Biens 14% - Extracommunautaire fin privées,FB-ECP-14,purchase,percent,1.0,1,,,,1.0,1.0,,,-1.0,-1.0,,,lu_2011_chart_1,253
+lu_2015_tax_FB-ECP-14-n,Frais Biens 14% - Extracommunautaire fin privées (-),FB-ECP-14-n,purchase,percent,-0.14,0,lu_2015_tax_FB-ECP-14,lu_2011_account_4614113,lu_2011_account_4614113,-1.0,-1.0,,lu_tax_code_template_t_FB-ECP-14-n,1.0,1.0,,lu_tax_code_template_t_FB-ECP-14-n,lu_2011_chart_1,1254
+lu_2015_tax_FB-ECP-14-p,Frais Biens 14% - Extracommunautaire fin privées (+),FB-ECP-14-p,purchase,percent,0.14,0,lu_2015_tax_FB-ECP-14,lu_2011_account_4216113,lu_2011_account_4216113,1.0,1.0,lu_tax_code_template_b_FB-ECP-14,lu_tax_code_template_t_FB-ECP-14,-1.0,-1.0,lu_tax_code_template_b_FB-ECP-14,lu_tax_code_template_t_FB-ECP-14,lu_2011_chart_1,1255
+lu_2015_tax_FB-ECP-15,Frais Biens 15% - Extracommunautaire fin privées,FB-ECP-15,purchase,percent,1.0,1,,,,1.0,1.0,,,-1.0,-1.0,,,lu_2011_chart_1,256
+lu_2015_tax_FB-ECP-15-n,Frais Biens 15% - Extracommunautaire fin privées (-),FB-ECP-15-n,purchase,percent,-0.15,0,lu_2015_tax_FB-ECP-15,lu_2011_account_4614113,lu_2011_account_4614113,-1.0,-1.0,,lu_tax_code_template_t_FB-ECP-15-n,1.0,1.0,,lu_tax_code_template_t_FB-ECP-15-n,lu_2011_chart_1,1257
+lu_2015_tax_FB-ECP-15-p,Frais Biens 15% - Extracommunautaire fin privées (+),FB-ECP-15-p,purchase,percent,0.15,0,lu_2015_tax_FB-ECP-15,lu_2011_account_4216113,lu_2011_account_4216113,1.0,1.0,lu_tax_code_template_b_FB-ECP-15,lu_tax_code_template_t_FB-ECP-15,-1.0,-1.0,lu_tax_code_template_b_FB-ECP-15,lu_tax_code_template_t_FB-ECP-15,lu_2011_chart_1,1258
+lu_2015_tax_FB-ECP-17,Frais Biens 17% - Extracommunautaire fin privées,FB-ECP-17,purchase,percent,1.0,1,,,,1.0,1.0,,,-1.0,-1.0,,,lu_2011_chart_1,259
+lu_2015_tax_FB-ECP-17-n,Frais Biens 17% - Extracommunautaire fin privées (-),FB-ECP-17-n,purchase,percent,-0.17,0,lu_2015_tax_FB-ECP-17,lu_2011_account_4614113,lu_2011_account_4614113,-1.0,-1.0,,lu_tax_code_template_t_FB-ECP-17-n,1.0,1.0,,lu_tax_code_template_t_FB-ECP-17-n,lu_2011_chart_1,1260
+lu_2015_tax_FB-ECP-17-p,Frais Biens 17% - Extracommunautaire fin privées (+),FB-ECP-17-p,purchase,percent,0.17,0,lu_2015_tax_FB-ECP-17,lu_2011_account_4216113,lu_2011_account_4216113,1.0,1.0,lu_tax_code_template_b_FB-ECP-17,lu_tax_code_template_t_FB-ECP-17,-1.0,-1.0,lu_tax_code_template_b_FB-ECP-17,lu_tax_code_template_t_FB-ECP-17,lu_2011_chart_1,1261
+lu_2015_tax_FB-ECP-3,Frais Biens 3% - Extracommunautaire fin privées,FB-ECP-3,purchase,percent,1.0,1,,,,1.0,1.0,,,-1.0,-1.0,,,lu_2011_chart_1,262
+lu_2015_tax_FB-ECP-3-n,Frais Biens 3% - Extracommunautaire fin privées (-),FB-ECP-3-n,purchase,percent,-0.03,0,lu_2015_tax_FB-ECP-3,lu_2011_account_4614113,lu_2011_account_4614113,-1.0,-1.0,,lu_tax_code_template_t_FB-ECP-3-n,1.0,1.0,,lu_tax_code_template_t_FB-ECP-3-n,lu_2011_chart_1,1263
+lu_2015_tax_FB-ECP-3-p,Frais Biens 3% - Extracommunautaire fin privées (+),FB-ECP-3-p,purchase,percent,0.03,0,lu_2015_tax_FB-ECP-3,lu_2011_account_4216113,lu_2011_account_4216113,1.0,1.0,lu_tax_code_template_b_FB-ECP-3,lu_tax_code_template_t_FB-ECP-3,-1.0,-1.0,lu_tax_code_template_b_FB-ECP-3,lu_tax_code_template_t_FB-ECP-3,lu_2011_chart_1,1264
+lu_2015_tax_FB-ECP-6,Frais Biens 6% - Extracommunautaire fin privées,FB-ECP-6,purchase,percent,1.0,1,,,,1.0,1.0,,,-1.0,-1.0,,,lu_2011_chart_1,265
+lu_2015_tax_FB-ECP-6-n,Frais Biens 6% - Extracommunautaire fin privées (-),FB-ECP-6-n,purchase,percent,-0.06,0,lu_2015_tax_FB-ECP-6,lu_2011_account_4614113,lu_2011_account_4614113,-1.0,-1.0,,lu_tax_code_template_t_FB-ECP-6-n,1.0,1.0,,lu_tax_code_template_t_FB-ECP-6-n,lu_2011_chart_1,1266
+lu_2015_tax_FB-ECP-6-p,Frais Biens 6% - Extracommunautaire fin privées (+),FB-ECP-6-p,purchase,percent,0.06,0,lu_2015_tax_FB-ECP-6,lu_2011_account_4216113,lu_2011_account_4216113,1.0,1.0,lu_tax_code_template_b_FB-ECP-6,lu_tax_code_template_t_FB-ECP-6,-1.0,-1.0,lu_tax_code_template_b_FB-ECP-6,lu_tax_code_template_t_FB-ECP-6,lu_2011_chart_1,1267
+lu_2015_tax_FB-ECP-8,Frais Biens 8% - Extracommunautaire fin privées,FB-ECP-8,purchase,percent,1.0,1,,,,1.0,1.0,,,-1.0,-1.0,,,lu_2011_chart_1,268
+lu_2015_tax_FB-ECP-8-n,Frais Biens 8% - Extracommunautaire fin privées (-),FB-ECP-8-n,purchase,percent,-0.08,0,lu_2015_tax_FB-ECP-8,lu_2011_account_4614113,lu_2011_account_4614113,-1.0,-1.0,,lu_tax_code_template_t_FB-ECP-8-n,1.0,1.0,,lu_tax_code_template_t_FB-ECP-8-n,lu_2011_chart_1,1269
+lu_2015_tax_FB-ECP-8-p,Frais Biens 8% - Extracommunautaire fin privées (+),FB-ECP-8-p,purchase,percent,0.08,0,lu_2015_tax_FB-ECP-8,lu_2011_account_4216113,lu_2011_account_4216113,1.0,1.0,lu_tax_code_template_b_FB-ECP-8,lu_tax_code_template_t_FB-ECP-8,-1.0,-1.0,lu_tax_code_template_b_FB-ECP-8,lu_tax_code_template_t_FB-ECP-8,lu_2011_chart_1,1270
+lu_2011_tax_FB-IC-0,Frais Biens Exonéré - Intracommunautaire,FB-IC-0,purchase,percent,0.0,0,,,,1.0,1.0,lu_tax_code_template_b_FB-IC-0,,-1.0,-1.0,lu_tax_code_template_b_FB-IC-0,,lu_2011_chart_1,271
+lu_2011_tax_FB-IC-12,Frais Biens 12% - Intracommunautaire,FB-IC-12,purchase,percent,1.0,1,,,,1.0,1.0,,,-1.0,-1.0,,,lu_2011_chart_1,272
+lu_2011_tax_FB-IC-12-n,Frais Biens 12% - Intracommunautaire (-),FB-IC-12-n,purchase,percent,-0.12,0,lu_2011_tax_FB-IC-12,lu_2011_account_4614112,lu_2011_account_4614112,-1.0,-1.0,,lu_tax_code_template_t_FB-IC-12-n,1.0,1.0,,lu_tax_code_template_t_FB-IC-12-n,lu_2011_chart_1,1273
+lu_2011_tax_FB-IC-12-p,Frais Biens 12% - Intracommunautaire (+),FB-IC-12-p,purchase,percent,0.12,0,lu_2011_tax_FB-IC-12,lu_2011_account_4216112,lu_2011_account_4216112,1.0,1.0,lu_tax_code_template_b_FB-IC-12,lu_tax_code_template_t_FB-IC-12,-1.0,-1.0,lu_tax_code_template_b_FB-IC-12,lu_tax_code_template_t_FB-IC-12,lu_2011_chart_1,1274
+lu_2015_tax_FB-IC-14,Frais Biens 14% - Intracommunautaire,FB-IC-14,purchase,percent,1.0,1,,,,1.0,1.0,,,-1.0,-1.0,,,lu_2011_chart_1,275
+lu_2015_tax_FB-IC-14-n,Frais Biens 14% - Intracommunautaire (-),FB-IC-14-n,purchase,percent,-0.14,0,lu_2015_tax_FB-IC-14,lu_2011_account_4614112,lu_2011_account_4614112,-1.0,-1.0,,lu_tax_code_template_t_FB-IC-14-n,1.0,1.0,,lu_tax_code_template_t_FB-IC-14-n,lu_2011_chart_1,1276
+lu_2015_tax_FB-IC-14-p,Frais Biens 14% - Intracommunautaire (+),FB-IC-14-p,purchase,percent,0.14,0,lu_2015_tax_FB-IC-14,lu_2011_account_4216112,lu_2011_account_4216112,1.0,1.0,lu_tax_code_template_b_FB-IC-14,lu_tax_code_template_t_FB-IC-14,-1.0,-1.0,lu_tax_code_template_b_FB-IC-14,lu_tax_code_template_t_FB-IC-14,lu_2011_chart_1,1277
+lu_2011_tax_FB-IC-15,Frais Biens 15% - Intracommunautaire,FB-IC-15,purchase,percent,1.0,1,,,,1.0,1.0,,,-1.0,-1.0,,,lu_2011_chart_1,278
+lu_2011_tax_FB-IC-15-n,Frais Biens 15% - Intracommunautaire (-),FB-IC-15-n,purchase,percent,-0.15,0,lu_2011_tax_FB-IC-15,lu_2011_account_4614112,lu_2011_account_4614112,-1.0,-1.0,,lu_tax_code_template_t_FB-IC-15-n,1.0,1.0,,lu_tax_code_template_t_FB-IC-15-n,lu_2011_chart_1,1279
+lu_2011_tax_FB-IC-15-p,Frais Biens 15% - Intracommunautaire (+),FB-IC-15-p,purchase,percent,0.15,0,lu_2011_tax_FB-IC-15,lu_2011_account_4216112,lu_2011_account_4216112,1.0,1.0,lu_tax_code_template_b_FB-IC-15,lu_tax_code_template_t_FB-IC-15,-1.0,-1.0,lu_tax_code_template_b_FB-IC-15,lu_tax_code_template_t_FB-IC-15,lu_2011_chart_1,1280
+lu_2015_tax_FB-IC-17,Frais Biens 17% - Intracommunautaire,FB-IC-17,purchase,percent,1.0,1,,,,1.0,1.0,,,-1.0,-1.0,,,lu_2011_chart_1,281
+lu_2015_tax_FB-IC-17-n,Frais Biens 17% - Intracommunautaire (-),FB-IC-17-n,purchase,percent,-0.17,0,lu_2015_tax_FB-IC-17,lu_2011_account_4614112,lu_2011_account_4614112,-1.0,-1.0,,lu_tax_code_template_t_FB-IC-17-n,1.0,1.0,,lu_tax_code_template_t_FB-IC-17-n,lu_2011_chart_1,1282
+lu_2015_tax_FB-IC-17-p,Frais Biens 17% - Intracommunautaire (+),FB-IC-17-p,purchase,percent,0.17,0,lu_2015_tax_FB-IC-17,lu_2011_account_4216112,lu_2011_account_4216112,1.0,1.0,lu_tax_code_template_b_FB-IC-17,lu_tax_code_template_t_FB-IC-17,-1.0,-1.0,lu_tax_code_template_b_FB-IC-17,lu_tax_code_template_t_FB-IC-17,lu_2011_chart_1,1283
+lu_2011_tax_FB-IC-3,Frais Biens 3% - Intracommunautaire,FB-IC-3,purchase,percent,1.0,1,,,,1.0,1.0,,,-1.0,-1.0,,,lu_2011_chart_1,284
+lu_2011_tax_FB-IC-3-n,Frais Biens 3% - Intracommunautaire (-),FB-IC-3-n,purchase,percent,-0.03,0,lu_2011_tax_FB-IC-3,lu_2011_account_4614112,lu_2011_account_4614112,-1.0,-1.0,,lu_tax_code_template_t_FB-IC-3-n,1.0,1.0,,lu_tax_code_template_t_FB-IC-3-n,lu_2011_chart_1,1285
+lu_2011_tax_FB-IC-3-p,Frais Biens 3% - Intracommunautaire (+),FB-IC-3-p,purchase,percent,0.03,0,lu_2011_tax_FB-IC-3,lu_2011_account_4216112,lu_2011_account_4216112,1.0,1.0,lu_tax_code_template_b_FB-IC-3,lu_tax_code_template_t_FB-IC-3,-1.0,-1.0,lu_tax_code_template_b_FB-IC-3,lu_tax_code_template_t_FB-IC-3,lu_2011_chart_1,1286
+lu_2011_tax_FB-IC-6,Frais Biens 6% - Intracommunautaire,FB-IC-6,purchase,percent,1.0,1,,,,1.0,1.0,,,-1.0,-1.0,,,lu_2011_chart_1,287
+lu_2011_tax_FB-IC-6-n,Frais Biens 6% - Intracommunautaire (-),FB-IC-6-n,purchase,percent,-0.06,0,lu_2011_tax_FB-IC-6,lu_2011_account_4614112,lu_2011_account_4614112,-1.0,-1.0,,lu_tax_code_template_t_FB-IC-6-n,1.0,1.0,,lu_tax_code_template_t_FB-IC-6-n,lu_2011_chart_1,1288
+lu_2011_tax_FB-IC-6-p,Frais Biens 6% - Intracommunautaire (+),FB-IC-6-p,purchase,percent,0.06,0,lu_2011_tax_FB-IC-6,lu_2011_account_4216112,lu_2011_account_4216112,1.0,1.0,lu_tax_code_template_b_FB-IC-6,lu_tax_code_template_t_FB-IC-6,-1.0,-1.0,lu_tax_code_template_b_FB-IC-6,lu_tax_code_template_t_FB-IC-6,lu_2011_chart_1,1289
+lu_2015_tax_FB-IC-8,Frais Biens 8% - Intracommunautaire,FB-IC-8,purchase,percent,1.0,1,,,,1.0,1.0,,,-1.0,-1.0,,,lu_2011_chart_1,290
+lu_2015_tax_FB-IC-8-n,Frais Biens 8% - Intracommunautaire (-),FB-IC-8-n,purchase,percent,-0.08,0,lu_2015_tax_FB-IC-8,lu_2011_account_4614112,lu_2011_account_4614112,-1.0,-1.0,,lu_tax_code_template_t_FB-IC-8-n,1.0,1.0,,lu_tax_code_template_t_FB-IC-8-n,lu_2011_chart_1,1291
+lu_2015_tax_FB-IC-8-p,Frais Biens 8% - Intracommunautaire (+),FB-IC-8-p,purchase,percent,0.08,0,lu_2015_tax_FB-IC-8,lu_2011_account_4216112,lu_2011_account_4216112,1.0,1.0,lu_tax_code_template_b_FB-IC-8,lu_tax_code_template_t_FB-IC-8,-1.0,-1.0,lu_tax_code_template_b_FB-IC-8,lu_tax_code_template_t_FB-IC-8,lu_2011_chart_1,1292
+lu_2011_tax_FB-PA-0,Frais Biens 0% - Pays,FB-PA-0,purchase,percent,0.0,0,,,,1.0,1.0,lu_tax_code_template_b_FB-PA-0,,-1.0,-1.0,lu_tax_code_template_b_FB-PA-0,,lu_2011_chart_1,293
+lu_2011_tax_FB-PA-12,Frais Biens 12% - Pays,FB-PA-12,purchase,percent,0.12,0,,lu_2011_account_4216111,lu_2011_account_4216111,1.0,1.0,lu_tax_code_template_b_FB-PA-12,lu_tax_code_template_t_FB-PA-12,-1.0,-1.0,lu_tax_code_template_b_FB-PA-12,lu_tax_code_template_t_FB-PA-12,lu_2011_chart_1,294
+lu_2015_tax_FB-PA-14,Frais Biens 14% - Pays,FB-PA-14,purchase,percent,0.14,0,,lu_2011_account_4216111,lu_2011_account_4216111,1.0,1.0,lu_tax_code_template_b_FB-PA-14,lu_tax_code_template_t_FB-PA-14,-1.0,-1.0,lu_tax_code_template_b_FB-PA-14,lu_tax_code_template_t_FB-PA-14,lu_2011_chart_1,295
+lu_2011_tax_FB-PA-15,Frais Biens 15% - Pays,FB-PA-15,purchase,percent,0.15,0,,lu_2011_account_4216111,lu_2011_account_4216111,1.0,1.0,lu_tax_code_template_b_FB-PA-15,lu_tax_code_template_t_FB-PA-15,-1.0,-1.0,lu_tax_code_template_b_FB-PA-15,lu_tax_code_template_t_FB-PA-15,lu_2011_chart_1,296
+lu_2015_tax_FB-PA-17,Frais Biens 17% - Pays,FB-PA-17,purchase,percent,0.17,0,,lu_2011_account_4216111,lu_2011_account_4216111,1.0,1.0,lu_tax_code_template_b_FB-PA-17,lu_tax_code_template_t_FB-PA-17,-1.0,-1.0,lu_tax_code_template_b_FB-PA-17,lu_tax_code_template_t_FB-PA-17,lu_2011_chart_1,297
+lu_2011_tax_FB-PA-3,Frais Biens 3% - Pays,FB-PA-3,purchase,percent,0.03,0,,lu_2011_account_4216111,lu_2011_account_4216111,1.0,1.0,lu_tax_code_template_b_FB-PA-3,lu_tax_code_template_t_FB-PA-3,-1.0,-1.0,lu_tax_code_template_b_FB-PA-3,lu_tax_code_template_t_FB-PA-3,lu_2011_chart_1,298
+lu_2011_tax_FB-PA-6,Frais Biens 6% - Pays,FB-PA-6,purchase,percent,0.06,0,,lu_2011_account_4216111,lu_2011_account_4216111,1.0,1.0,lu_tax_code_template_b_FB-PA-6,lu_tax_code_template_t_FB-PA-6,-1.0,-1.0,lu_tax_code_template_b_FB-PA-6,lu_tax_code_template_t_FB-PA-6,lu_2011_chart_1,299
+lu_2015_tax_FB-PA-8,Frais Biens 8% - Pays,FB-PA-8,purchase,percent,0.08,0,,lu_2011_account_4216111,lu_2011_account_4216111,1.0,1.0,lu_tax_code_template_b_FB-PA-8,lu_tax_code_template_t_FB-PA-8,-1.0,-1.0,lu_tax_code_template_b_FB-PA-8,lu_tax_code_template_t_FB-PA-8,lu_2011_chart_1,300
+lu_2011_tax_FP-EC-0,Frais Prestations Exonérées - Extracommunautaire,FP-EC-0,purchase,percent,0.0,0,,,,1.0,1.0,lu_tax_code_template_b_FP-EC-0,,-1.0,-1.0,lu_tax_code_template_b_FP-EC-0,,lu_2011_chart_1,301
+lu_2011_tax_FP-EC-12,Frais Prestations 12% - Extracommunautaire,FP-EC-12,purchase,percent,1.0,1,,,,1.0,1.0,,,-1.0,-1.0,,,lu_2011_chart_1,302
+lu_2011_tax_FP-EC-12-n,Frais Prestations 12% - Extracommunautaire (-),FP-EC-12-n,purchase,percent,-0.12,0,lu_2011_tax_FP-EC-12,lu_2011_account_4614113,lu_2011_account_4614113,-1.0,-1.0,,lu_tax_code_template_t_FP-EC-12-n,1.0,1.0,,lu_tax_code_template_t_FP-EC-12-n,lu_2011_chart_1,1303
+lu_2011_tax_FP-EC-12-p,Frais Prestations 12% - Extracommunautaire (+),FP-EC-12-p,purchase,percent,0.12,0,lu_2011_tax_FP-EC-12,lu_2011_account_4216113,lu_2011_account_4216113,1.0,1.0,lu_tax_code_template_b_FP-EC-12,lu_tax_code_template_t_FP-EC-12,-1.0,-1.0,lu_tax_code_template_b_FP-EC-12,lu_tax_code_template_t_FP-EC-12,lu_2011_chart_1,1304
+lu_2015_tax_FP-EC-14,Frais Prestations 14% - Extracommunautaire,FP-EC-14,purchase,percent,1.0,1,,,,1.0,1.0,,,-1.0,-1.0,,,lu_2011_chart_1,305
+lu_2015_tax_FP-EC-14-n,Frais Prestations 14% - Extracommunautaire (-),FP-EC-14-n,purchase,percent,-0.14,0,lu_2015_tax_FP-EC-14,lu_2011_account_4614113,lu_2011_account_4614113,-1.0,-1.0,,lu_tax_code_template_t_FP-EC-14-n,1.0,1.0,,lu_tax_code_template_t_FP-EC-14-n,lu_2011_chart_1,1306
+lu_2015_tax_FP-EC-14-p,Frais Prestations 14% - Extracommunautaire (+),FP-EC-14-p,purchase,percent,0.14,0,lu_2015_tax_FP-EC-14,lu_2011_account_4216113,lu_2011_account_4216113,1.0,1.0,lu_tax_code_template_b_FP-EC-14,lu_tax_code_template_t_FP-EC-14,-1.0,-1.0,lu_tax_code_template_b_FP-EC-14,lu_tax_code_template_t_FP-EC-14,lu_2011_chart_1,1307
+lu_2011_tax_FP-EC-15,Frais Prestations 15% - Extracommunautaire,FP-EC-15,purchase,percent,1.0,1,,,,1.0,1.0,,,-1.0,-1.0,,,lu_2011_chart_1,308
+lu_2011_tax_FP-EC-15-n,Frais Prestations 15% - Extracommunautaire (-),FP-EC-15-n,purchase,percent,-0.15,0,lu_2011_tax_FP-EC-15,lu_2011_account_4614113,lu_2011_account_4614113,-1.0,-1.0,,lu_tax_code_template_t_FP-EC-15-n,1.0,1.0,,lu_tax_code_template_t_FP-EC-15-n,lu_2011_chart_1,1309
+lu_2011_tax_FP-EC-15-p,Frais Prestations 15% - Extracommunautaire (+),FP-EC-15-p,purchase,percent,0.15,0,lu_2011_tax_FP-EC-15,lu_2011_account_4216113,lu_2011_account_4216113,1.0,1.0,lu_tax_code_template_b_FP-EC-15,lu_tax_code_template_t_FP-EC-15,-1.0,-1.0,lu_tax_code_template_b_FP-EC-15,lu_tax_code_template_t_FP-EC-15,lu_2011_chart_1,1310
+lu_2015_tax_FP-EC-17,Frais Prestations 17% - Extracommunautaire,FP-EC-17,purchase,percent,1.0,1,,,,1.0,1.0,,,-1.0,-1.0,,,lu_2011_chart_1,311
+lu_2015_tax_FP-EC-17-n,Frais Prestations 17% - Extracommunautaire (-),FP-EC-17-n,purchase,percent,-0.17,0,lu_2015_tax_FP-EC-17,lu_2011_account_4614113,lu_2011_account_4614113,-1.0,-1.0,,lu_tax_code_template_t_FP-EC-17-n,1.0,1.0,,lu_tax_code_template_t_FP-EC-17-n,lu_2011_chart_1,1312
+lu_2015_tax_FP-EC-17-p,Frais Prestations 17% - Extracommunautaire (+),FP-EC-17-p,purchase,percent,0.17,0,lu_2015_tax_FP-EC-17,lu_2011_account_4216113,lu_2011_account_4216113,1.0,1.0,lu_tax_code_template_b_FP-EC-17,lu_tax_code_template_t_FP-EC-17,-1.0,-1.0,lu_tax_code_template_b_FP-EC-17,lu_tax_code_template_t_FP-EC-17,lu_2011_chart_1,1313
+lu_2011_tax_FP-EC-3,Frais Prestations 3% - Extracommunautaire,FP-EC-3,purchase,percent,1.0,1,,,,1.0,1.0,,,-1.0,-1.0,,,lu_2011_chart_1,314
+lu_2011_tax_FP-EC-3-n,Frais Prestations 3% - Extracommunautaire (-),FP-EC-3-n,purchase,percent,-0.03,0,lu_2011_tax_FP-EC-3,lu_2011_account_4614113,lu_2011_account_4614113,-1.0,-1.0,,lu_tax_code_template_t_FP-EC-3-n,1.0,1.0,,lu_tax_code_template_t_FP-EC-3-n,lu_2011_chart_1,1315
+lu_2011_tax_FP-EC-3-p,Frais Prestations 3% - Extracommunautaire (+),FP-EC-3-p,purchase,percent,0.03,0,lu_2011_tax_FP-EC-3,lu_2011_account_4216113,lu_2011_account_4216113,1.0,1.0,lu_tax_code_template_b_FP-EC-3,lu_tax_code_template_t_FP-EC-3,-1.0,-1.0,lu_tax_code_template_b_FP-EC-3,lu_tax_code_template_t_FP-EC-3,lu_2011_chart_1,1316
+lu_2011_tax_FP-EC-6,Frais Prestations 6% - Extracommunautaire,FP-EC-6,purchase,percent,1.0,1,,,,1.0,1.0,,,-1.0,-1.0,,,lu_2011_chart_1,317
+lu_2011_tax_FP-EC-6-n,Frais Prestations 6% - Extracommunautaire (-),FP-EC-6-n,purchase,percent,-0.06,0,lu_2011_tax_FP-EC-6,lu_2011_account_4614113,lu_2011_account_4614113,-1.0,-1.0,,lu_tax_code_template_t_FP-EC-6-n,1.0,1.0,,lu_tax_code_template_t_FP-EC-6-n,lu_2011_chart_1,1318
+lu_2011_tax_FP-EC-6-p,Frais Prestations 6% - Extracommunautaire (+),FP-EC-6-p,purchase,percent,0.06,0,lu_2011_tax_FP-EC-6,lu_2011_account_4216113,lu_2011_account_4216113,1.0,1.0,lu_tax_code_template_b_FP-EC-6,lu_tax_code_template_t_FP-EC-6,-1.0,-1.0,lu_tax_code_template_b_FP-EC-6,lu_tax_code_template_t_FP-EC-6,lu_2011_chart_1,1319
+lu_2015_tax_FP-EC-8,Frais Prestations 8% - Extracommunautaire,FP-EC-8,purchase,percent,1.0,1,,,,1.0,1.0,,,-1.0,-1.0,,,lu_2011_chart_1,320
+lu_2015_tax_FP-EC-8-n,Frais Prestations 8% - Extracommunautaire (-),FP-EC-8-n,purchase,percent,-0.08,0,lu_2015_tax_FP-EC-8,lu_2011_account_4614113,lu_2011_account_4614113,-1.0,-1.0,,lu_tax_code_template_t_FP-EC-8-n,1.0,1.0,,lu_tax_code_template_t_FP-EC-8-n,lu_2011_chart_1,1321
+lu_2015_tax_FP-EC-8-p,Frais Prestations 8% - Extracommunautaire (+),FP-EC-8-p,purchase,percent,0.08,0,lu_2015_tax_FP-EC-8,lu_2011_account_4216113,lu_2011_account_4216113,1.0,1.0,lu_tax_code_template_b_FP-EC-8,lu_tax_code_template_t_FP-EC-8,-1.0,-1.0,lu_tax_code_template_b_FP-EC-8,lu_tax_code_template_t_FP-EC-8,lu_2011_chart_1,1322
+lu_2011_tax_FP-IC-0,Frais Prestations Exonérées - Intracommunautaire,FP-IC-0,purchase,percent,0.0,0,,,,1.0,1.0,lu_tax_code_template_b_FP-IC-0,,-1.0,-1.0,lu_tax_code_template_b_FP-IC-0,,lu_2011_chart_1,323
+lu_2011_tax_FP-IC-12,Frais Prestations 12% - Intracommunautaire,FP-IC-12,purchase,percent,1.0,1,,,,1.0,1.0,,,-1.0,-1.0,,,lu_2011_chart_1,324
+lu_2011_tax_FP-IC-12-n,Frais Prestations 12% - Intracommunautaire (-),FP-IC-12-n,purchase,percent,-0.12,0,lu_2011_tax_FP-IC-12,lu_2011_account_4614112,lu_2011_account_4614112,-1.0,-1.0,,lu_tax_code_template_t_FP-IC-12-n,1.0,1.0,,lu_tax_code_template_t_FP-IC-12-n,lu_2011_chart_1,1325
+lu_2011_tax_FP-IC-12-p,Frais Prestations 12% - Intracommunautaire (+),FP-IC-12-p,purchase,percent,0.12,0,lu_2011_tax_FP-IC-12,lu_2011_account_4216112,lu_2011_account_4216112,1.0,1.0,lu_tax_code_template_b_FP-IC-12,lu_tax_code_template_t_FP-IC-12,-1.0,-1.0,lu_tax_code_template_b_FP-IC-12,lu_tax_code_template_t_FP-IC-12,lu_2011_chart_1,1326
+lu_2015_tax_FP-IC-14,Frais Prestations 14% - Intracommunautaire,FP-IC-14,purchase,percent,1.0,1,,,,1.0,1.0,,,-1.0,-1.0,,,lu_2011_chart_1,327
+lu_2015_tax_FP-IC-14-n,Frais Prestations 14% - Intracommunautaire (-),FP-IC-14-n,purchase,percent,-0.14,0,lu_2015_tax_FP-IC-14,lu_2011_account_4614112,lu_2011_account_4614112,-1.0,-1.0,,lu_tax_code_template_t_FP-IC-14-n,1.0,1.0,,lu_tax_code_template_t_FP-IC-14-n,lu_2011_chart_1,1328
+lu_2015_tax_FP-IC-14-p,Frais Prestations 14% - Intracommunautaire (+),FP-IC-14-p,purchase,percent,0.14,0,lu_2015_tax_FP-IC-14,lu_2011_account_4216112,lu_2011_account_4216112,1.0,1.0,lu_tax_code_template_b_FP-IC-14,lu_tax_code_template_t_FP-IC-14,-1.0,-1.0,lu_tax_code_template_b_FP-IC-14,lu_tax_code_template_t_FP-IC-14,lu_2011_chart_1,1329
+lu_2011_tax_FP-IC-15,Frais Prestations 15% - Intracommunautaire,FP-IC-15,purchase,percent,1.0,1,,,,1.0,1.0,,,-1.0,-1.0,,,lu_2011_chart_1,330
+lu_2011_tax_FP-IC-15-n,Frais Prestations 15% - Intracommunautaire (-),FP-IC-15-n,purchase,percent,-0.15,0,lu_2011_tax_FP-IC-15,lu_2011_account_4614112,lu_2011_account_4614112,-1.0,-1.0,,lu_tax_code_template_t_FP-IC-15-n,1.0,1.0,,lu_tax_code_template_t_FP-IC-15-n,lu_2011_chart_1,1331
+lu_2011_tax_FP-IC-15-p,Frais Prestations 15% - Intracommunautaire (+),FP-IC-15-p,purchase,percent,0.15,0,lu_2011_tax_FP-IC-15,lu_2011_account_4216112,lu_2011_account_4216112,1.0,1.0,lu_tax_code_template_b_FP-IC-15,lu_tax_code_template_t_FP-IC-15,-1.0,-1.0,lu_tax_code_template_b_FP-IC-15,lu_tax_code_template_t_FP-IC-15,lu_2011_chart_1,1332
+lu_2015_tax_FP-IC-17,Frais Prestations 17% - Intracommunautaire,FP-IC-17,purchase,percent,1.0,1,,,,1.0,1.0,,,-1.0,-1.0,,,lu_2011_chart_1,333
+lu_2015_tax_FP-IC-17-n,Frais Prestations 17% - Intracommunautaire (-),FP-IC-17-n,purchase,percent,-0.17,0,lu_2015_tax_FP-IC-17,lu_2011_account_4614112,lu_2011_account_4614112,-1.0,-1.0,,lu_tax_code_template_t_FP-IC-17-n,1.0,1.0,,lu_tax_code_template_t_FP-IC-17-n,lu_2011_chart_1,1334
+lu_2015_tax_FP-IC-17-p,Frais Prestations 17% - Intracommunautaire (+),FP-IC-17-p,purchase,percent,0.17,0,lu_2015_tax_FP-IC-17,lu_2011_account_4216112,lu_2011_account_4216112,1.0,1.0,lu_tax_code_template_b_FP-IC-17,lu_tax_code_template_t_FP-IC-17,-1.0,-1.0,lu_tax_code_template_b_FP-IC-17,lu_tax_code_template_t_FP-IC-17,lu_2011_chart_1,1335
+lu_2011_tax_FP-IC-3,Frais Prestations 3% - Intracommunautaire,FP-IC-3,purchase,percent,1.0,1,,,,1.0,1.0,,,-1.0,-1.0,,,lu_2011_chart_1,336
+lu_2011_tax_FP-IC-3-n,Frais Prestations 3% - Intracommunautaire (-),FP-IC-3-n,purchase,percent,-0.03,0,lu_2011_tax_FP-IC-3,lu_2011_account_4614112,lu_2011_account_4614112,-1.0,-1.0,,lu_tax_code_template_t_FP-IC-3-n,1.0,1.0,,lu_tax_code_template_t_FP-IC-3-n,lu_2011_chart_1,1337
+lu_2011_tax_FP-IC-3-p,Frais Prestations 3% - Intracommunautaire (+),FP-IC-3-p,purchase,percent,0.03,0,lu_2011_tax_FP-IC-3,lu_2011_account_4216112,lu_2011_account_4216112,1.0,1.0,lu_tax_code_template_b_FP-IC-3,lu_tax_code_template_t_FP-IC-3,-1.0,-1.0,lu_tax_code_template_b_FP-IC-3,lu_tax_code_template_t_FP-IC-3,lu_2011_chart_1,1338
+lu_2011_tax_FP-IC-6,Frais Prestations 6% - Intracommunautaire,FP-IC-6,purchase,percent,1.0,1,,,,1.0,1.0,,,-1.0,-1.0,,,lu_2011_chart_1,339
+lu_2011_tax_FP-IC-6-n,Frais Prestations 6% - Intracommunautaire (-),FP-IC-6-n,purchase,percent,-0.06,0,lu_2011_tax_FP-IC-6,lu_2011_account_4614112,lu_2011_account_4614112,-1.0,-1.0,,lu_tax_code_template_t_FP-IC-6-n,1.0,1.0,,lu_tax_code_template_t_FP-IC-6-n,lu_2011_chart_1,1340
+lu_2011_tax_FP-IC-6-p,Frais Prestations 6% - Intracommunautaire (+),FP-IC-6-p,purchase,percent,0.06,0,lu_2011_tax_FP-IC-6,lu_2011_account_4216112,lu_2011_account_4216112,1.0,1.0,lu_tax_code_template_b_FP-IC-6,lu_tax_code_template_t_FP-IC-6,-1.0,-1.0,lu_tax_code_template_b_FP-IC-6,lu_tax_code_template_t_FP-IC-6,lu_2011_chart_1,1341
+lu_2015_tax_FP-IC-8,Frais Prestations 8% - Intracommunautaire,FP-IC-8,purchase,percent,1.0,1,,,,1.0,1.0,,,-1.0,-1.0,,,lu_2011_chart_1,342
+lu_2015_tax_FP-IC-8-n,Frais Prestations 8% - Intracommunautaire (-),FP-IC-8-n,purchase,percent,-0.08,0,lu_2015_tax_FP-IC-8,lu_2011_account_4614112,lu_2011_account_4614112,-1.0,-1.0,,lu_tax_code_template_t_FP-IC-8-n,1.0,1.0,,lu_tax_code_template_t_FP-IC-8-n,lu_2011_chart_1,1343
+lu_2015_tax_FP-IC-8-p,Frais Prestations 8% - Intracommunautaire (+),FP-IC-8-p,purchase,percent,0.08,0,lu_2015_tax_FP-IC-8,lu_2011_account_4216112,lu_2011_account_4216112,1.0,1.0,lu_tax_code_template_b_FP-IC-8,lu_tax_code_template_t_FP-IC-8,-1.0,-1.0,lu_tax_code_template_b_FP-IC-8,lu_tax_code_template_t_FP-IC-8,lu_2011_chart_1,1344
+lu_2011_tax_FP-PA-0,Frais Prestations 0% - Pays,FP-PA-0,purchase,percent,0.0,0,,,,1.0,1.0,lu_tax_code_template_b_FP-PA-0,,-1.0,-1.0,lu_tax_code_template_b_FP-PA-0,,lu_2011_chart_1,345
+lu_2011_tax_FP-PA-12,Frais Prestations 12% - Pays,FP-PA-12,purchase,percent,0.12,0,,lu_2011_account_4216111,lu_2011_account_4216111,1.0,1.0,lu_tax_code_template_b_FP-PA-12,lu_tax_code_template_t_FP-PA-12,-1.0,-1.0,lu_tax_code_template_b_FP-PA-12,lu_tax_code_template_t_FP-PA-12,lu_2011_chart_1,346
+lu_2015_tax_FP-PA-14,Frais Prestations 14% - Pays,FP-PA-14,purchase,percent,0.14,0,,lu_2011_account_4216111,lu_2011_account_4216111,1.0,1.0,lu_tax_code_template_b_FP-PA-14,lu_tax_code_template_t_FP-PA-14,-1.0,-1.0,lu_tax_code_template_b_FP-PA-14,lu_tax_code_template_t_FP-PA-14,lu_2011_chart_1,347
+lu_2011_tax_FP-PA-15,Frais Prestations 15% - Pays,FP-PA-15,purchase,percent,0.15,0,,lu_2011_account_4216111,lu_2011_account_4216111,1.0,1.0,lu_tax_code_template_b_FP-PA-15,lu_tax_code_template_t_FP-PA-15,-1.0,-1.0,lu_tax_code_template_b_FP-PA-15,lu_tax_code_template_t_FP-PA-15,lu_2011_chart_1,348
+lu_2015_tax_FP-PA-17,Frais Prestations 17% - Pays,FP-PA-17,purchase,percent,0.17,0,,lu_2011_account_4216111,lu_2011_account_4216111,1.0,1.0,lu_tax_code_template_b_FP-PA-17,lu_tax_code_template_t_FP-PA-17,-1.0,-1.0,lu_tax_code_template_b_FP-PA-17,lu_tax_code_template_t_FP-PA-17,lu_2011_chart_1,349
+lu_2011_tax_FP-PA-3,Frais Prestations 3% - Pays,FP-PA-3,purchase,percent,0.03,0,,lu_2011_account_4216111,lu_2011_account_4216111,1.0,1.0,lu_tax_code_template_b_FP-PA-3,lu_tax_code_template_t_FP-PA-3,-1.0,-1.0,lu_tax_code_template_b_FP-PA-3,lu_tax_code_template_t_FP-PA-3,lu_2011_chart_1,350
+lu_2011_tax_FP-PA-6,Frais Prestations 6% - Pays,FP-PA-6,purchase,percent,0.06,0,,lu_2011_account_4216111,lu_2011_account_4216111,1.0,1.0,lu_tax_code_template_b_FP-PA-6,lu_tax_code_template_t_FP-PA-6,-1.0,-1.0,lu_tax_code_template_b_FP-PA-6,lu_tax_code_template_t_FP-PA-6,lu_2011_chart_1,351
+lu_2015_tax_FP-PA-8,Frais Prestations 8% - Pays,FP-PA-8,purchase,percent,0.08,0,,lu_2011_account_4216111,lu_2011_account_4216111,1.0,1.0,lu_tax_code_template_b_FP-PA-8,lu_tax_code_template_t_FP-PA-8,-1.0,-1.0,lu_tax_code_template_b_FP-PA-8,lu_tax_code_template_t_FP-PA-8,lu_2011_chart_1,352
+lu_2011_tax_IB-EC-0,Investissement Biens Exonéré - Extracommunautaire,IB-EC-0,purchase,percent,0.0,0,,,,1.0,1.0,lu_tax_code_template_b_IB-EC-0,,-1.0,-1.0,lu_tax_code_template_b_IB-EC-0,,lu_2011_chart_1,353
+lu_2011_tax_IB-EC-12,Investissement Biens 12% - Extracommunautaire,IB-EC-12,purchase,percent,1.0,1,,,,1.0,1.0,,,-1.0,-1.0,,,lu_2011_chart_1,354
+lu_2011_tax_IB-EC-12-n,Investissement Biens 12% - Extracommunautaire (-),IB-EC-12-n,purchase,percent,-0.12,0,lu_2011_tax_IB-EC-12,lu_2011_account_4614113,lu_2011_account_4614113,-1.0,-1.0,,lu_tax_code_template_t_IB-EC-12-n,1.0,1.0,,lu_tax_code_template_t_IB-EC-12-n,lu_2011_chart_1,1355
+lu_2011_tax_IB-EC-12-p,Investissement Biens 12% - Extracommunautaire (+),IB-EC-12-p,purchase,percent,0.12,0,lu_2011_tax_IB-EC-12,lu_2011_account_4216113,lu_2011_account_4216113,1.0,1.0,lu_tax_code_template_b_IB-EC-12,lu_tax_code_template_t_IB-EC-12,-1.0,-1.0,lu_tax_code_template_b_IB-EC-12,lu_tax_code_template_t_IB-EC-12,lu_2011_chart_1,1356
+lu_2015_tax_IB-EC-14,Investissement Biens 14% - Extracommunautaire,IB-EC-14,purchase,percent,1.0,1,,,,1.0,1.0,,,-1.0,-1.0,,,lu_2011_chart_1,357
+lu_2015_tax_IB-EC-14-n,Investissement Biens 14% - Extracommunautaire (-),IB-EC-14-n,purchase,percent,-0.14,0,lu_2015_tax_IB-EC-14,lu_2011_account_4614113,lu_2011_account_4614113,-1.0,-1.0,,lu_tax_code_template_t_IB-EC-14-n,1.0,1.0,,lu_tax_code_template_t_IB-EC-14-n,lu_2011_chart_1,1358
+lu_2015_tax_IB-EC-14-p,Investissement Biens 14% - Extracommunautaire (+),IB-EC-14-p,purchase,percent,0.14,0,lu_2015_tax_IB-EC-14,lu_2011_account_4216113,lu_2011_account_4216113,1.0,1.0,lu_tax_code_template_b_IB-EC-14,lu_tax_code_template_t_IB-EC-14,-1.0,-1.0,lu_tax_code_template_b_IB-EC-14,lu_tax_code_template_t_IB-EC-14,lu_2011_chart_1,1359
+lu_2011_tax_IB-EC-15,Investissement Biens 15% - Extracommunautaire,IB-EC-15,purchase,percent,1.0,1,,,,1.0,1.0,,,-1.0,-1.0,,,lu_2011_chart_1,360
+lu_2011_tax_IB-EC-15-n,Investissement Biens 15% - Extracommunautaire (-),IB-EC-15-n,purchase,percent,-0.15,0,lu_2011_tax_IB-EC-15,lu_2011_account_4614113,lu_2011_account_4614113,-1.0,-1.0,,lu_tax_code_template_t_IB-EC-15-n,1.0,1.0,,lu_tax_code_template_t_IB-EC-15-n,lu_2011_chart_1,1361
+lu_2011_tax_IB-EC-15-p,Investissement Biens 15% - Extracommunautaire (+),IB-EC-15-p,purchase,percent,0.15,0,lu_2011_tax_IB-EC-15,lu_2011_account_4216113,lu_2011_account_4216113,1.0,1.0,lu_tax_code_template_b_IB-EC-15,lu_tax_code_template_t_IB-EC-15,-1.0,-1.0,lu_tax_code_template_b_IB-EC-15,lu_tax_code_template_t_IB-EC-15,lu_2011_chart_1,1362
+lu_2015_tax_IB-EC-17,Investissement Biens 17% - Extracommunautaire,IB-EC-17,purchase,percent,1.0,1,,,,1.0,1.0,,,-1.0,-1.0,,,lu_2011_chart_1,363
+lu_2015_tax_IB-EC-17-n,Investissement Biens 17% - Extracommunautaire (-),IB-EC-17-n,purchase,percent,-0.17,0,lu_2015_tax_IB-EC-17,lu_2011_account_4614113,lu_2011_account_4614113,-1.0,-1.0,,lu_tax_code_template_t_IB-EC-17-n,1.0,1.0,,lu_tax_code_template_t_IB-EC-17-n,lu_2011_chart_1,1364
+lu_2015_tax_IB-EC-17-p,Investissement Biens 17% - Extracommunautaire (+),IB-EC-17-p,purchase,percent,0.17,0,lu_2015_tax_IB-EC-17,lu_2011_account_4216113,lu_2011_account_4216113,1.0,1.0,lu_tax_code_template_b_IB-EC-17,lu_tax_code_template_t_IB-EC-17,-1.0,-1.0,lu_tax_code_template_b_IB-EC-17,lu_tax_code_template_t_IB-EC-17,lu_2011_chart_1,1365
+lu_2011_tax_IB-EC-3,Investissement Biens 3% - Extracommunautaire,IB-EC-3,purchase,percent,1.0,1,,,,1.0,1.0,,,-1.0,-1.0,,,lu_2011_chart_1,366
+lu_2011_tax_IB-EC-3-n,Investissement Biens 3% - Extracommunautaire (-),IB-EC-3-n,purchase,percent,-0.03,0,lu_2011_tax_IB-EC-3,lu_2011_account_4614113,lu_2011_account_4614113,-1.0,-1.0,,lu_tax_code_template_t_IB-EC-3-n,1.0,1.0,,lu_tax_code_template_t_IB-EC-3-n,lu_2011_chart_1,1367
+lu_2011_tax_IB-EC-3-p,Investissement Biens 3% - Extracommunautaire (+),IB-EC-3-p,purchase,percent,0.03,0,lu_2011_tax_IB-EC-3,lu_2011_account_4216113,lu_2011_account_4216113,1.0,1.0,lu_tax_code_template_b_IB-EC-3,lu_tax_code_template_t_IB-EC-3,-1.0,-1.0,lu_tax_code_template_b_IB-EC-3,lu_tax_code_template_t_IB-EC-3,lu_2011_chart_1,1368
+lu_2011_tax_IB-EC-6,Investissement Biens 6% - Extracommunautaire,IB-EC-6,purchase,percent,1.0,1,,,,1.0,1.0,,,-1.0,-1.0,,,lu_2011_chart_1,369
+lu_2011_tax_IB-EC-6-n,Investissement Biens 6% - Extracommunautaire (-),IB-EC-6-n,purchase,percent,-0.06,0,lu_2011_tax_IB-EC-6,lu_2011_account_4614113,lu_2011_account_4614113,-1.0,-1.0,,lu_tax_code_template_t_IB-EC-6-n,1.0,1.0,,lu_tax_code_template_t_IB-EC-6-n,lu_2011_chart_1,1370
+lu_2011_tax_IB-EC-6-p,Investissement Biens 6% - Extracommunautaire (+),IB-EC-6-p,purchase,percent,0.06,0,lu_2011_tax_IB-EC-6,lu_2011_account_4216113,lu_2011_account_4216113,1.0,1.0,lu_tax_code_template_b_IB-EC-6,lu_tax_code_template_t_IB-EC-6,-1.0,-1.0,lu_tax_code_template_b_IB-EC-6,lu_tax_code_template_t_IB-EC-6,lu_2011_chart_1,1371
+lu_2015_tax_IB-EC-8,Investissement Biens 8% - Extracommunautaire,IB-EC-8,purchase,percent,1.0,1,,,,1.0,1.0,,,-1.0,-1.0,,,lu_2011_chart_1,372
+lu_2015_tax_IB-EC-8-n,Investissement Biens 8% - Extracommunautaire (-),IB-EC-8-n,purchase,percent,-0.08,0,lu_2015_tax_IB-EC-8,lu_2011_account_4614113,lu_2011_account_4614113,-1.0,-1.0,,lu_tax_code_template_t_IB-EC-8-n,1.0,1.0,,lu_tax_code_template_t_IB-EC-8-n,lu_2011_chart_1,1373
+lu_2015_tax_IB-EC-8-p,Investissement Biens 8% - Extracommunautaire (+),IB-EC-8-p,purchase,percent,0.08,0,lu_2015_tax_IB-EC-8,lu_2011_account_4216113,lu_2011_account_4216113,1.0,1.0,lu_tax_code_template_b_IB-EC-8,lu_tax_code_template_t_IB-EC-8,-1.0,-1.0,lu_tax_code_template_b_IB-EC-8,lu_tax_code_template_t_IB-EC-8,lu_2011_chart_1,1374
+lu_2015_tax_IB-ECP-0,Investissement Biens Exonéré - Extracommunautaire fin privées,IB-ECP-0,purchase,percent,0.0,0,,,,1.0,1.0,lu_tax_code_template_b_IB-ECP-0,,-1.0,-1.0,lu_tax_code_template_b_IB-ECP-0,,lu_2011_chart_1,375
+lu_2015_tax_IB-ECP-12,Investissement Biens 12% - Extracommunautaire fin privées,IB-ECP-12,purchase,percent,1.0,1,,,,1.0,1.0,,,-1.0,-1.0,,,lu_2011_chart_1,376
+lu_2015_tax_IB-ECP-12-n,Investissement Biens 12% - Extracommunautaire fin privées (-),IB-ECP-12-n,purchase,percent,-0.12,0,lu_2015_tax_IB-ECP-12,lu_2011_account_4614113,lu_2011_account_4614113,-1.0,-1.0,,lu_tax_code_template_t_IB-ECP-12-n,1.0,1.0,,lu_tax_code_template_t_IB-ECP-12-n,lu_2011_chart_1,1377
+lu_2015_tax_IB-ECP-12-p,Investissement Biens 12% - Extracommunautaire fin privées (+),IB-ECP-12-p,purchase,percent,0.12,0,lu_2015_tax_IB-ECP-12,lu_2011_account_4216113,lu_2011_account_4216113,1.0,1.0,lu_tax_code_template_b_IB-ECP-12,lu_tax_code_template_t_IB-ECP-12,-1.0,-1.0,lu_tax_code_template_b_IB-ECP-12,lu_tax_code_template_t_IB-ECP-12,lu_2011_chart_1,1378
+lu_2015_tax_IB-ECP-14,Investissement Biens 14% - Extracommunautaire fin privées,IB-ECP-14,purchase,percent,1.0,1,,,,1.0,1.0,,,-1.0,-1.0,,,lu_2011_chart_1,379
+lu_2015_tax_IB-ECP-14-n,Investissement Biens 14% - Extracommunautaire fin privées (-),IB-ECP-14-n,purchase,percent,-0.14,0,lu_2015_tax_IB-ECP-14,lu_2011_account_4614113,lu_2011_account_4614113,-1.0,-1.0,,lu_tax_code_template_t_IB-ECP-14-n,1.0,1.0,,lu_tax_code_template_t_IB-ECP-14-n,lu_2011_chart_1,1380
+lu_2015_tax_IB-ECP-14-p,Investissement Biens 14% - Extracommunautaire fin privées (+),IB-ECP-14-p,purchase,percent,0.14,0,lu_2015_tax_IB-ECP-14,lu_2011_account_4216113,lu_2011_account_4216113,1.0,1.0,lu_tax_code_template_b_IB-ECP-14,lu_tax_code_template_t_IB-ECP-14,-1.0,-1.0,lu_tax_code_template_b_IB-ECP-14,lu_tax_code_template_t_IB-ECP-14,lu_2011_chart_1,1381
+lu_2015_tax_IB-ECP-15,Investissement Biens 15% - Extracommunautaire fin privées,IB-ECP-15,purchase,percent,1.0,1,,,,1.0,1.0,,,-1.0,-1.0,,,lu_2011_chart_1,382
+lu_2015_tax_IB-ECP-15-n,Investissement Biens 15% - Extracommunautaire fin privées (-),IB-ECP-15-n,purchase,percent,-0.15,0,lu_2015_tax_IB-ECP-15,lu_2011_account_4614113,lu_2011_account_4614113,-1.0,-1.0,,lu_tax_code_template_t_IB-ECP-15-n,1.0,1.0,,lu_tax_code_template_t_IB-ECP-15-n,lu_2011_chart_1,1383
+lu_2015_tax_IB-ECP-15-p,Investissement Biens 15% - Extracommunautaire fin privées (+),IB-ECP-15-p,purchase,percent,0.15,0,lu_2015_tax_IB-ECP-15,lu_2011_account_4216113,lu_2011_account_4216113,1.0,1.0,lu_tax_code_template_b_IB-ECP-15,lu_tax_code_template_t_IB-ECP-15,-1.0,-1.0,lu_tax_code_template_b_IB-ECP-15,lu_tax_code_template_t_IB-ECP-15,lu_2011_chart_1,1384
+lu_2015_tax_IB-ECP-17,Investissement Biens 17% - Extracommunautaire fin privées,IB-ECP-17,purchase,percent,1.0,1,,,,1.0,1.0,,,-1.0,-1.0,,,lu_2011_chart_1,385
+lu_2015_tax_IB-ECP-17-n,Investissement Biens 17% - Extracommunautaire fin privées (-),IB-ECP-17-n,purchase,percent,-0.17,0,lu_2015_tax_IB-ECP-17,lu_2011_account_4614113,lu_2011_account_4614113,-1.0,-1.0,,lu_tax_code_template_t_IB-ECP-17-n,1.0,1.0,,lu_tax_code_template_t_IB-ECP-17-n,lu_2011_chart_1,1386
+lu_2015_tax_IB-ECP-17-p,Investissement Biens 17% - Extracommunautaire fin privées (+),IB-ECP-17-p,purchase,percent,0.17,0,lu_2015_tax_IB-ECP-17,lu_2011_account_4216113,lu_2011_account_4216113,1.0,1.0,lu_tax_code_template_b_IB-ECP-17,lu_tax_code_template_t_IB-ECP-17,-1.0,-1.0,lu_tax_code_template_b_IB-ECP-17,lu_tax_code_template_t_IB-ECP-17,lu_2011_chart_1,1387
+lu_2015_tax_IB-ECP-3,Investissement Biens 3% - Extracommunautaire fin privées,IB-ECP-3,purchase,percent,1.0,1,,,,1.0,1.0,,,-1.0,-1.0,,,lu_2011_chart_1,388
+lu_2015_tax_IB-ECP-3-n,Investissement Biens 3% - Extracommunautaire fin privées (-),IB-ECP-3-n,purchase,percent,-0.03,0,lu_2015_tax_IB-ECP-3,lu_2011_account_4614113,lu_2011_account_4614113,-1.0,-1.0,,lu_tax_code_template_t_IB-ECP-3-n,1.0,1.0,,lu_tax_code_template_t_IB-ECP-3-n,lu_2011_chart_1,1389
+lu_2015_tax_IB-ECP-3-p,Investissement Biens 3% - Extracommunautaire fin privées (+),IB-ECP-3-p,purchase,percent,0.03,0,lu_2015_tax_IB-ECP-3,lu_2011_account_4216113,lu_2011_account_4216113,1.0,1.0,lu_tax_code_template_b_IB-ECP-3,lu_tax_code_template_t_IB-ECP-3,-1.0,-1.0,lu_tax_code_template_b_IB-ECP-3,lu_tax_code_template_t_IB-ECP-3,lu_2011_chart_1,1390
+lu_2015_tax_IB-ECP-6,Investissement Biens 6% - Extracommunautaire fin privées,IB-ECP-6,purchase,percent,1.0,1,,,,1.0,1.0,,,-1.0,-1.0,,,lu_2011_chart_1,391
+lu_2015_tax_IB-ECP-6-n,Investissement Biens 6% - Extracommunautaire fin privées (-),IB-ECP-6-n,purchase,percent,-0.06,0,lu_2015_tax_IB-ECP-6,lu_2011_account_4614113,lu_2011_account_4614113,-1.0,-1.0,,lu_tax_code_template_t_IB-ECP-6-n,1.0,1.0,,lu_tax_code_template_t_IB-ECP-6-n,lu_2011_chart_1,1392
+lu_2015_tax_IB-ECP-6-p,Investissement Biens 6% - Extracommunautaire fin privées (+),IB-ECP-6-p,purchase,percent,0.06,0,lu_2015_tax_IB-ECP-6,lu_2011_account_4216113,lu_2011_account_4216113,1.0,1.0,lu_tax_code_template_b_IB-ECP-6,lu_tax_code_template_t_IB-ECP-6,-1.0,-1.0,lu_tax_code_template_b_IB-ECP-6,lu_tax_code_template_t_IB-ECP-6,lu_2011_chart_1,1393
+lu_2015_tax_IB-ECP-8,Investissement Biens 8% - Extracommunautaire fin privées,IB-ECP-8,purchase,percent,1.0,1,,,,1.0,1.0,,,-1.0,-1.0,,,lu_2011_chart_1,394
+lu_2015_tax_IB-ECP-8-n,Investissement Biens 8% - Extracommunautaire fin privées (-),IB-ECP-8-n,purchase,percent,-0.08,0,lu_2015_tax_IB-ECP-8,lu_2011_account_4614113,lu_2011_account_4614113,-1.0,-1.0,,lu_tax_code_template_t_IB-ECP-8-n,1.0,1.0,,lu_tax_code_template_t_IB-ECP-8-n,lu_2011_chart_1,1395
+lu_2015_tax_IB-ECP-8-p,Investissement Biens 8% - Extracommunautaire fin privées (+),IB-ECP-8-p,purchase,percent,0.08,0,lu_2015_tax_IB-ECP-8,lu_2011_account_4216113,lu_2011_account_4216113,1.0,1.0,lu_tax_code_template_b_IB-ECP-8,lu_tax_code_template_t_IB-ECP-8,-1.0,-1.0,lu_tax_code_template_b_IB-ECP-8,lu_tax_code_template_t_IB-ECP-8,lu_2011_chart_1,1396
+lu_2011_tax_IB-IC-0,Investissement Biens Exonéré - Intracommunautaire,IB-IC-0,purchase,percent,0.0,0,,,,1.0,1.0,lu_tax_code_template_b_IB-IC-0,,-1.0,-1.0,lu_tax_code_template_b_IB-IC-0,,lu_2011_chart_1,397
+lu_2011_tax_IB-IC-12,Investissement Biens 12% - Intracommunautaire,IB-IC-12,purchase,percent,1.0,1,,,,1.0,1.0,,,-1.0,-1.0,,,lu_2011_chart_1,398
+lu_2011_tax_IB-IC-12-n,Investissement Biens 12% - Intracommunautaire (-),IB-IC-12-n,purchase,percent,-0.12,0,lu_2011_tax_IB-IC-12,lu_2011_account_4614112,lu_2011_account_4614112,-1.0,-1.0,,lu_tax_code_template_t_IB-IC-12-n,1.0,1.0,,lu_tax_code_template_t_IB-IC-12-n,lu_2011_chart_1,1399
+lu_2011_tax_IB-IC-12-p,Investissement Biens 12% - Intracommunautaire (+),IB-IC-12-p,purchase,percent,0.12,0,lu_2011_tax_IB-IC-12,lu_2011_account_4216112,lu_2011_account_4216112,1.0,1.0,lu_tax_code_template_b_IB-IC-12,lu_tax_code_template_t_IB-IC-12,-1.0,-1.0,lu_tax_code_template_b_IB-IC-12,lu_tax_code_template_t_IB-IC-12,lu_2011_chart_1,1400
+lu_2015_tax_IB-IC-14,Investissement Biens 14% - Intracommunautaire,IB-IC-14,purchase,percent,1.0,1,,,,1.0,1.0,,,-1.0,-1.0,,,lu_2011_chart_1,401
+lu_2015_tax_IB-IC-14-n,Investissement Biens 14% - Intracommunautaire (-),IB-IC-14-n,purchase,percent,-0.14,0,lu_2015_tax_IB-IC-14,lu_2011_account_4614112,lu_2011_account_4614112,-1.0,-1.0,,lu_tax_code_template_t_IB-IC-14-n,1.0,1.0,,lu_tax_code_template_t_IB-IC-14-n,lu_2011_chart_1,1402
+lu_2015_tax_IB-IC-14-p,Investissement Biens 14% - Intracommunautaire (+),IB-IC-14-p,purchase,percent,0.14,0,lu_2015_tax_IB-IC-14,lu_2011_account_4216112,lu_2011_account_4216112,1.0,1.0,lu_tax_code_template_b_IB-IC-14,lu_tax_code_template_t_IB-IC-14,-1.0,-1.0,lu_tax_code_template_b_IB-IC-14,lu_tax_code_template_t_IB-IC-14,lu_2011_chart_1,1403
+lu_2011_tax_IB-IC-15,Investissement Biens 15% - Intracommunautaire,IB-IC-15,purchase,percent,1.0,1,,,,1.0,1.0,,,-1.0,-1.0,,,lu_2011_chart_1,404
+lu_2011_tax_IB-IC-15-n,Investissement Biens 15% - Intracommunautaire (-),IB-IC-15-n,purchase,percent,-0.15,0,lu_2011_tax_IB-IC-15,lu_2011_account_4614112,lu_2011_account_4614112,-1.0,-1.0,,lu_tax_code_template_t_IB-IC-15-n,1.0,1.0,,lu_tax_code_template_t_IB-IC-15-n,lu_2011_chart_1,1405
+lu_2011_tax_IB-IC-15-p,Investissement Biens 15% - Intracommunautaire (+),IB-IC-15-p,purchase,percent,0.15,0,lu_2011_tax_IB-IC-15,lu_2011_account_4216112,lu_2011_account_4216112,1.0,1.0,lu_tax_code_template_b_IB-IC-15,lu_tax_code_template_t_IB-IC-15,-1.0,-1.0,lu_tax_code_template_b_IB-IC-15,lu_tax_code_template_t_IB-IC-15,lu_2011_chart_1,1406
+lu_2015_tax_IB-IC-17,Investissement Biens 17% - Intracommunautaire,IB-IC-17,purchase,percent,1.0,1,,,,1.0,1.0,,,-1.0,-1.0,,,lu_2011_chart_1,407
+lu_2015_tax_IB-IC-17-n,Investissement Biens 17% - Intracommunautaire (-),IB-IC-17-n,purchase,percent,-0.17,0,lu_2015_tax_IB-IC-17,lu_2011_account_4614112,lu_2011_account_4614112,-1.0,-1.0,,lu_tax_code_template_t_IB-IC-17-n,1.0,1.0,,lu_tax_code_template_t_IB-IC-17-n,lu_2011_chart_1,1408
+lu_2015_tax_IB-IC-17-p,Investissement Biens 17% - Intracommunautaire (+),IB-IC-17-p,purchase,percent,0.17,0,lu_2015_tax_IB-IC-17,lu_2011_account_4216112,lu_2011_account_4216112,1.0,1.0,lu_tax_code_template_b_IB-IC-17,lu_tax_code_template_t_IB-IC-17,-1.0,-1.0,lu_tax_code_template_b_IB-IC-17,lu_tax_code_template_t_IB-IC-17,lu_2011_chart_1,1409
+lu_2011_tax_IB-IC-3,Investissement Biens 3% - Intracommunautaire,IB-IC-3,purchase,percent,1.0,1,,,,1.0,1.0,,,-1.0,-1.0,,,lu_2011_chart_1,410
+lu_2011_tax_IB-IC-3-n,Investissement Biens 3% - Intracommunautaire (-),IB-IC-3-n,purchase,percent,-0.03,0,lu_2011_tax_IB-IC-3,lu_2011_account_4614112,lu_2011_account_4614112,-1.0,-1.0,,lu_tax_code_template_t_IB-IC-3-n,1.0,1.0,,lu_tax_code_template_t_IB-IC-3-n,lu_2011_chart_1,1411
+lu_2011_tax_IB-IC-3-p,Investissement Biens 3% - Intracommunautaire (+),IB-IC-3-p,purchase,percent,0.03,0,lu_2011_tax_IB-IC-3,lu_2011_account_4216112,lu_2011_account_4216112,1.0,1.0,lu_tax_code_template_b_IB-IC-3,lu_tax_code_template_t_IB-IC-3,-1.0,-1.0,lu_tax_code_template_b_IB-IC-3,lu_tax_code_template_t_IB-IC-3,lu_2011_chart_1,1412
+lu_2011_tax_IB-IC-6,Investissement Biens 6% - Intracommunautaire,IB-IC-6,purchase,percent,1.0,1,,,,1.0,1.0,,,-1.0,-1.0,,,lu_2011_chart_1,413
+lu_2011_tax_IB-IC-6-n,Investissement Biens 6% - Intracommunautaire (-),IB-IC-6-n,purchase,percent,-0.06,0,lu_2011_tax_IB-IC-6,lu_2011_account_4614112,lu_2011_account_4614112,-1.0,-1.0,,lu_tax_code_template_t_IB-IC-6-n,1.0,1.0,,lu_tax_code_template_t_IB-IC-6-n,lu_2011_chart_1,1414
+lu_2011_tax_IB-IC-6-p,Investissement Biens 6% - Intracommunautaire (+),IB-IC-6-p,purchase,percent,0.06,0,lu_2011_tax_IB-IC-6,lu_2011_account_4216112,lu_2011_account_4216112,1.0,1.0,lu_tax_code_template_b_IB-IC-6,lu_tax_code_template_t_IB-IC-6,-1.0,-1.0,lu_tax_code_template_b_IB-IC-6,lu_tax_code_template_t_IB-IC-6,lu_2011_chart_1,1415
+lu_2015_tax_IB-IC-8,Investissement Biens 8% - Intracommunautaire,IB-IC-8,purchase,percent,1.0,1,,,,1.0,1.0,,,-1.0,-1.0,,,lu_2011_chart_1,416
+lu_2015_tax_IB-IC-8-n,Investissement Biens 8% - Intracommunautaire (-),IB-IC-8-n,purchase,percent,-0.08,0,lu_2015_tax_IB-IC-8,lu_2011_account_4614112,lu_2011_account_4614112,-1.0,-1.0,,lu_tax_code_template_t_IB-IC-8-n,1.0,1.0,,lu_tax_code_template_t_IB-IC-8-n,lu_2011_chart_1,1417
+lu_2015_tax_IB-IC-8-p,Investissement Biens 8% - Intracommunautaire (+),IB-IC-8-p,purchase,percent,0.08,0,lu_2015_tax_IB-IC-8,lu_2011_account_4216112,lu_2011_account_4216112,1.0,1.0,lu_tax_code_template_b_IB-IC-8,lu_tax_code_template_t_IB-IC-8,-1.0,-1.0,lu_tax_code_template_b_IB-IC-8,lu_tax_code_template_t_IB-IC-8,lu_2011_chart_1,1418
+lu_2011_tax_IB-PA-0,Investissement Biens 0% - Pays,IB-PA-0,purchase,percent,0.0,0,,,,1.0,1.0,lu_tax_code_template_b_IB-PA-0,,-1.0,-1.0,lu_tax_code_template_b_IB-PA-0,,lu_2011_chart_1,419
+lu_2011_tax_IB-PA-12,Investissement Biens 12% - Pays,IB-PA-12,purchase,percent,0.12,0,,lu_2011_account_4216111,lu_2011_account_4216111,1.0,1.0,lu_tax_code_template_b_IB-PA-12,lu_tax_code_template_t_IB-PA-12,-1.0,-1.0,lu_tax_code_template_b_IB-PA-12,lu_tax_code_template_t_IB-PA-12,lu_2011_chart_1,420
+lu_2015_tax_IB-PA-14,Investissement Biens 14% - Pays,IB-PA-14,purchase,percent,0.14,0,,lu_2011_account_4216111,lu_2011_account_4216111,1.0,1.0,lu_tax_code_template_b_IB-PA-14,lu_tax_code_template_t_IB-PA-14,-1.0,-1.0,lu_tax_code_template_b_IB-PA-14,lu_tax_code_template_t_IB-PA-14,lu_2011_chart_1,421
+lu_2011_tax_IB-PA-15,Investissement Biens 15% - Pays,IB-PA-15,purchase,percent,0.15,0,,lu_2011_account_4216111,lu_2011_account_4216111,1.0,1.0,lu_tax_code_template_b_IB-PA-15,lu_tax_code_template_t_IB-PA-15,-1.0,-1.0,lu_tax_code_template_b_IB-PA-15,lu_tax_code_template_t_IB-PA-15,lu_2011_chart_1,422
+lu_2015_tax_IB-PA-17,Investissement Biens 17% - Pays,IB-PA-17,purchase,percent,0.17,0,,lu_2011_account_4216111,lu_2011_account_4216111,1.0,1.0,lu_tax_code_template_b_IB-PA-17,lu_tax_code_template_t_IB-PA-17,-1.0,-1.0,lu_tax_code_template_b_IB-PA-17,lu_tax_code_template_t_IB-PA-17,lu_2011_chart_1,423
+lu_2011_tax_IB-PA-3,Investissement Biens 3% - Pays,IB-PA-3,purchase,percent,0.03,0,,lu_2011_account_4216111,lu_2011_account_4216111,1.0,1.0,lu_tax_code_template_b_IB-PA-3,lu_tax_code_template_t_IB-PA-3,-1.0,-1.0,lu_tax_code_template_b_IB-PA-3,lu_tax_code_template_t_IB-PA-3,lu_2011_chart_1,424
+lu_2011_tax_IB-PA-6,Investissement Biens 6% - Pays,IB-PA-6,purchase,percent,0.06,0,,lu_2011_account_4216111,lu_2011_account_4216111,1.0,1.0,lu_tax_code_template_b_IB-PA-6,lu_tax_code_template_t_IB-PA-6,-1.0,-1.0,lu_tax_code_template_b_IB-PA-6,lu_tax_code_template_t_IB-PA-6,lu_2011_chart_1,425
+lu_2015_tax_IB-PA-8,Investissement Biens 8% - Pays,IB-PA-8,purchase,percent,0.08,0,,lu_2011_account_4216111,lu_2011_account_4216111,1.0,1.0,lu_tax_code_template_b_IB-PA-8,lu_tax_code_template_t_IB-PA-8,-1.0,-1.0,lu_tax_code_template_b_IB-PA-8,lu_tax_code_template_t_IB-PA-8,lu_2011_chart_1,426
+lu_2011_tax_IP-EC-0,Investissement Prestations Exonérées - Extracommunautaire,IP-EC-0,purchase,percent,0.0,0,,,,1.0,1.0,lu_tax_code_template_b_IP-EC-0,,-1.0,-1.0,lu_tax_code_template_b_IP-EC-0,,lu_2011_chart_1,427
+lu_2011_tax_IP-EC-12,Investissement Prestations 12% - Extracommunautaire,IP-EC-12,purchase,percent,1.0,1,,,,1.0,1.0,,,-1.0,-1.0,,,lu_2011_chart_1,428
+lu_2011_tax_IP-EC-12-n,Investissement Prestations 12% - Extracommunautaire (-),IP-EC-12-n,purchase,percent,-0.12,0,lu_2011_tax_IP-EC-12,lu_2011_account_4614113,lu_2011_account_4614113,-1.0,-1.0,,lu_tax_code_template_t_IP-EC-12-n,1.0,1.0,,lu_tax_code_template_t_IP-EC-12-n,lu_2011_chart_1,1429
+lu_2011_tax_IP-EC-12-p,Investissement Prestations 12% - Extracommunautaire (+),IP-EC-12-p,purchase,percent,0.12,0,lu_2011_tax_IP-EC-12,lu_2011_account_4216113,lu_2011_account_4216113,1.0,1.0,lu_tax_code_template_b_IP-EC-12,lu_tax_code_template_t_IP-EC-12,-1.0,-1.0,lu_tax_code_template_b_IP-EC-12,lu_tax_code_template_t_IP-EC-12,lu_2011_chart_1,1430
+lu_2015_tax_IP-EC-14,Investissement Prestations 14% - Extracommunautaire,IP-EC-14,purchase,percent,1.0,1,,,,1.0,1.0,,,-1.0,-1.0,,,lu_2011_chart_1,431
+lu_2015_tax_IP-EC-14-n,Investissement Prestations 14% - Extracommunautaire (-),IP-EC-14-n,purchase,percent,-0.14,0,lu_2015_tax_IP-EC-14,lu_2011_account_4614113,lu_2011_account_4614113,-1.0,-1.0,,lu_tax_code_template_t_IP-EC-14-n,1.0,1.0,,lu_tax_code_template_t_IP-EC-14-n,lu_2011_chart_1,1432
+lu_2015_tax_IP-EC-14-p,Investissement Prestations 14% - Extracommunautaire (+),IP-EC-14-p,purchase,percent,0.14,0,lu_2015_tax_IP-EC-14,lu_2011_account_4216113,lu_2011_account_4216113,1.0,1.0,lu_tax_code_template_b_IP-EC-14,lu_tax_code_template_t_IP-EC-14,-1.0,-1.0,lu_tax_code_template_b_IP-EC-14,lu_tax_code_template_t_IP-EC-14,lu_2011_chart_1,1433
+lu_2011_tax_IP-EC-15,Investissement Prestations 15% - Extracommunautaire,IP-EC-15,purchase,percent,1.0,1,,,,1.0,1.0,,,-1.0,-1.0,,,lu_2011_chart_1,434
+lu_2011_tax_IP-EC-15-n,Investissement Prestations 15% - Extracommunautaire (-),IP-EC-15-n,purchase,percent,-0.15,0,lu_2011_tax_IP-EC-15,lu_2011_account_4614113,lu_2011_account_4614113,-1.0,-1.0,,lu_tax_code_template_t_IP-EC-15-n,1.0,1.0,,lu_tax_code_template_t_IP-EC-15-n,lu_2011_chart_1,1435
+lu_2011_tax_IP-EC-15-p,Investissement Prestations 15% - Extracommunautaire (+),IP-EC-15-p,purchase,percent,0.15,0,lu_2011_tax_IP-EC-15,lu_2011_account_4216113,lu_2011_account_4216113,1.0,1.0,lu_tax_code_template_b_IP-EC-15,lu_tax_code_template_t_IP-EC-15,-1.0,-1.0,lu_tax_code_template_b_IP-EC-15,lu_tax_code_template_t_IP-EC-15,lu_2011_chart_1,1436
+lu_2015_tax_IP-EC-17,Investissement Prestations 17% - Extracommunautaire,IP-EC-17,purchase,percent,1.0,1,,,,1.0,1.0,,,-1.0,-1.0,,,lu_2011_chart_1,437
+lu_2015_tax_IP-EC-17-n,Investissement Prestations 17% - Extracommunautaire (-),IP-EC-17-n,purchase,percent,-0.17,0,lu_2015_tax_IP-EC-17,lu_2011_account_4614113,lu_2011_account_4614113,-1.0,-1.0,,lu_tax_code_template_t_IP-EC-17-n,1.0,1.0,,lu_tax_code_template_t_IP-EC-17-n,lu_2011_chart_1,1438
+lu_2015_tax_IP-EC-17-p,Investissement Prestations 17% - Extracommunautaire (+),IP-EC-17-p,purchase,percent,0.17,0,lu_2015_tax_IP-EC-17,lu_2011_account_4216113,lu_2011_account_4216113,1.0,1.0,lu_tax_code_template_b_IP-EC-17,lu_tax_code_template_t_IP-EC-17,-1.0,-1.0,lu_tax_code_template_b_IP-EC-17,lu_tax_code_template_t_IP-EC-17,lu_2011_chart_1,1439
+lu_2011_tax_IP-EC-3,Investissement Prestations 3% - Extracommunautaire,IP-EC-3,purchase,percent,1.0,1,,,,1.0,1.0,,,-1.0,-1.0,,,lu_2011_chart_1,440
+lu_2011_tax_IP-EC-3-n,Investissement Prestations 3% - Extracommunautaire (-),IP-EC-3-n,purchase,percent,-0.03,0,lu_2011_tax_IP-EC-3,lu_2011_account_4614113,lu_2011_account_4614113,-1.0,-1.0,,lu_tax_code_template_t_IP-EC-3-n,1.0,1.0,,lu_tax_code_template_t_IP-EC-3-n,lu_2011_chart_1,1441
+lu_2011_tax_IP-EC-3-p,Investissement Prestations 3% - Extracommunautaire (+),IP-EC-3-p,purchase,percent,0.03,0,lu_2011_tax_IP-EC-3,lu_2011_account_4216113,lu_2011_account_4216113,1.0,1.0,lu_tax_code_template_b_IP-EC-3,lu_tax_code_template_t_IP-EC-3,-1.0,-1.0,lu_tax_code_template_b_IP-EC-3,lu_tax_code_template_t_IP-EC-3,lu_2011_chart_1,1442
+lu_2011_tax_IP-EC-6,Investissement Prestations 6% - Extracommunautaire,IP-EC-6,purchase,percent,1.0,1,,,,1.0,1.0,,,-1.0,-1.0,,,lu_2011_chart_1,443
+lu_2011_tax_IP-EC-6-n,Investissement Prestations 6% - Extracommunautaire (-),IP-EC-6-n,purchase,percent,-0.06,0,lu_2011_tax_IP-EC-6,lu_2011_account_4614113,lu_2011_account_4614113,-1.0,-1.0,,lu_tax_code_template_t_IP-EC-6-n,1.0,1.0,,lu_tax_code_template_t_IP-EC-6-n,lu_2011_chart_1,1444
+lu_2011_tax_IP-EC-6-p,Investissement Prestations 6% - Extracommunautaire (+),IP-EC-6-p,purchase,percent,0.06,0,lu_2011_tax_IP-EC-6,lu_2011_account_4216113,lu_2011_account_4216113,1.0,1.0,lu_tax_code_template_b_IP-EC-6,lu_tax_code_template_t_IP-EC-6,-1.0,-1.0,lu_tax_code_template_b_IP-EC-6,lu_tax_code_template_t_IP-EC-6,lu_2011_chart_1,1445
+lu_2015_tax_IP-EC-8,Investissement Prestations 8% - Extracommunautaire,IP-EC-8,purchase,percent,1.0,1,,,,1.0,1.0,,,-1.0,-1.0,,,lu_2011_chart_1,446
+lu_2015_tax_IP-EC-8-n,Investissement Prestations 8% - Extracommunautaire (-),IP-EC-8-n,purchase,percent,-0.08,0,lu_2015_tax_IP-EC-8,lu_2011_account_4614113,lu_2011_account_4614113,-1.0,-1.0,,lu_tax_code_template_t_IP-EC-8-n,1.0,1.0,,lu_tax_code_template_t_IP-EC-8-n,lu_2011_chart_1,1447
+lu_2015_tax_IP-EC-8-p,Investissement Prestations 8% - Extracommunautaire (+),IP-EC-8-p,purchase,percent,0.08,0,lu_2015_tax_IP-EC-8,lu_2011_account_4216113,lu_2011_account_4216113,1.0,1.0,lu_tax_code_template_b_IP-EC-8,lu_tax_code_template_t_IP-EC-8,-1.0,-1.0,lu_tax_code_template_b_IP-EC-8,lu_tax_code_template_t_IP-EC-8,lu_2011_chart_1,1448
+lu_2011_tax_IP-IC-0,Investissement Prestations Exonérées - Intracommunautaire,IP-IC-0,purchase,percent,0.0,0,,,,1.0,1.0,lu_tax_code_template_b_IP-IC-0,,-1.0,-1.0,lu_tax_code_template_b_IP-IC-0,,lu_2011_chart_1,449
+lu_2011_tax_IP-IC-12,Investissement Prestations 12% - Intracommunautaire,IP-IC-12,purchase,percent,1.0,1,,,,1.0,1.0,,,-1.0,-1.0,,,lu_2011_chart_1,450
+lu_2011_tax_IP-IC-12-n,Investissement Prestations 12% - Intracommunautaire (-),IP-IC-12-n,purchase,percent,-0.12,0,lu_2011_tax_IP-IC-12,lu_2011_account_4614112,lu_2011_account_4614112,-1.0,-1.0,,lu_tax_code_template_t_IP-IC-12-n,1.0,1.0,,lu_tax_code_template_t_IP-IC-12-n,lu_2011_chart_1,1451
+lu_2011_tax_IP-IC-12-p,Investissement Prestations 12% - Intracommunautaire (+),IP-IC-12-p,purchase,percent,0.12,0,lu_2011_tax_IP-IC-12,lu_2011_account_4216112,lu_2011_account_4216112,1.0,1.0,lu_tax_code_template_b_IP-IC-12,lu_tax_code_template_t_IP-IC-12,-1.0,-1.0,lu_tax_code_template_b_IP-IC-12,lu_tax_code_template_t_IP-IC-12,lu_2011_chart_1,1452
+lu_2015_tax_IP-IC-14,Investissement Prestations 14% - Intracommunautaire,IP-IC-14,purchase,percent,1.0,1,,,,1.0,1.0,,,-1.0,-1.0,,,lu_2011_chart_1,453
+lu_2015_tax_IP-IC-14-n,Investissement Prestations 14% - Intracommunautaire (-),IP-IC-14-n,purchase,percent,-0.14,0,lu_2015_tax_IP-IC-14,lu_2011_account_4614112,lu_2011_account_4614112,-1.0,-1.0,,lu_tax_code_template_t_IP-IC-14-n,1.0,1.0,,lu_tax_code_template_t_IP-IC-14-n,lu_2011_chart_1,1454
+lu_2015_tax_IP-IC-14-p,Investissement Prestations 14% - Intracommunautaire (+),IP-IC-14-p,purchase,percent,0.14,0,lu_2015_tax_IP-IC-14,lu_2011_account_4216112,lu_2011_account_4216112,1.0,1.0,lu_tax_code_template_b_IP-IC-14,lu_tax_code_template_t_IP-IC-14,-1.0,-1.0,lu_tax_code_template_b_IP-IC-14,lu_tax_code_template_t_IP-IC-14,lu_2011_chart_1,1455
+lu_2011_tax_IP-IC-15,Investissement Prestations 15% - Intracommunautaire,IP-IC-15,purchase,percent,1.0,1,,,,1.0,1.0,,,-1.0,-1.0,,,lu_2011_chart_1,456
+lu_2011_tax_IP-IC-15-n,Investissement Prestations 15% - Intracommunautaire (-),IP-IC-15-n,purchase,percent,-0.15,0,lu_2011_tax_IP-IC-15,lu_2011_account_4614112,lu_2011_account_4614112,-1.0,-1.0,,lu_tax_code_template_t_IP-IC-15-n,1.0,1.0,,lu_tax_code_template_t_IP-IC-15-n,lu_2011_chart_1,1457
+lu_2011_tax_IP-IC-15-p,Investissement Prestations 15% - Intracommunautaire (+),IP-IC-15-p,purchase,percent,0.15,0,lu_2011_tax_IP-IC-15,lu_2011_account_4216112,lu_2011_account_4216112,1.0,1.0,lu_tax_code_template_b_IP-IC-15,lu_tax_code_template_t_IP-IC-15,-1.0,-1.0,lu_tax_code_template_b_IP-IC-15,lu_tax_code_template_t_IP-IC-15,lu_2011_chart_1,1458
+lu_2015_tax_IP-IC-17,Investissement Prestations 17% - Intracommunautaire,IP-IC-17,purchase,percent,1.0,1,,,,1.0,1.0,,,-1.0,-1.0,,,lu_2011_chart_1,459
+lu_2015_tax_IP-IC-17-n,Investissement Prestations 17% - Intracommunautaire (-),IP-IC-17-n,purchase,percent,-0.17,0,lu_2015_tax_IP-IC-17,lu_2011_account_4614112,lu_2011_account_4614112,-1.0,-1.0,,lu_tax_code_template_t_IP-IC-17-n,1.0,1.0,,lu_tax_code_template_t_IP-IC-17-n,lu_2011_chart_1,1460
+lu_2015_tax_IP-IC-17-p,Investissement Prestations 17% - Intracommunautaire (+),IP-IC-17-p,purchase,percent,0.17,0,lu_2015_tax_IP-IC-17,lu_2011_account_4216112,lu_2011_account_4216112,1.0,1.0,lu_tax_code_template_b_IP-IC-17,lu_tax_code_template_t_IP-IC-17,-1.0,-1.0,lu_tax_code_template_b_IP-IC-17,lu_tax_code_template_t_IP-IC-17,lu_2011_chart_1,1461
+lu_2011_tax_IP-IC-3,Investissement Prestations 3% - Intracommunautaire,IP-IC-3,purchase,percent,1.0,1,,,,1.0,1.0,,,-1.0,-1.0,,,lu_2011_chart_1,462
+lu_2011_tax_IP-IC-3-n,Investissement Prestations 3% - Intracommunautaire (-),IP-IC-3-n,purchase,percent,-0.03,0,lu_2011_tax_IP-IC-3,lu_2011_account_4614112,lu_2011_account_4614112,-1.0,-1.0,,lu_tax_code_template_t_IP-IC-3-n,1.0,1.0,,lu_tax_code_template_t_IP-IC-3-n,lu_2011_chart_1,1463
+lu_2011_tax_IP-IC-3-p,Investissement Prestations 3% - Intracommunautaire (+),IP-IC-3-p,purchase,percent,0.03,0,lu_2011_tax_IP-IC-3,lu_2011_account_4216112,lu_2011_account_4216112,1.0,1.0,lu_tax_code_template_b_IP-IC-3,lu_tax_code_template_t_IP-IC-3,-1.0,-1.0,lu_tax_code_template_b_IP-IC-3,lu_tax_code_template_t_IP-IC-3,lu_2011_chart_1,1464
+lu_2011_tax_IP-IC-6,Investissement Prestations 6% - Intracommunautaire,IP-IC-6,purchase,percent,1.0,1,,,,1.0,1.0,,,-1.0,-1.0,,,lu_2011_chart_1,465
+lu_2011_tax_IP-IC-6-n,Investissement Prestations 6% - Intracommunautaire (-),IP-IC-6-n,purchase,percent,-0.06,0,lu_2011_tax_IP-IC-6,lu_2011_account_4614112,lu_2011_account_4614112,-1.0,-1.0,,lu_tax_code_template_t_IP-IC-6-n,1.0,1.0,,lu_tax_code_template_t_IP-IC-6-n,lu_2011_chart_1,1466
+lu_2011_tax_IP-IC-6-p,Investissement Prestations 6% - Intracommunautaire (+),IP-IC-6-p,purchase,percent,0.06,0,lu_2011_tax_IP-IC-6,lu_2011_account_4216112,lu_2011_account_4216112,1.0,1.0,lu_tax_code_template_b_IP-IC-6,lu_tax_code_template_t_IP-IC-6,-1.0,-1.0,lu_tax_code_template_b_IP-IC-6,lu_tax_code_template_t_IP-IC-6,lu_2011_chart_1,1467
+lu_2015_tax_IP-IC-8,Investissement Prestations 8% - Intracommunautaire,IP-IC-8,purchase,percent,1.0,1,,,,1.0,1.0,,,-1.0,-1.0,,,lu_2011_chart_1,468
+lu_2015_tax_IP-IC-8-n,Investissement Prestations 8% - Intracommunautaire (-),IP-IC-8-n,purchase,percent,-0.08,0,lu_2015_tax_IP-IC-8,lu_2011_account_4614112,lu_2011_account_4614112,-1.0,-1.0,,lu_tax_code_template_t_IP-IC-8-n,1.0,1.0,,lu_tax_code_template_t_IP-IC-8-n,lu_2011_chart_1,1469
+lu_2015_tax_IP-IC-8-p,Investissement Prestations 8% - Intracommunautaire (+),IP-IC-8-p,purchase,percent,0.08,0,lu_2015_tax_IP-IC-8,lu_2011_account_4216112,lu_2011_account_4216112,1.0,1.0,lu_tax_code_template_b_IP-IC-8,lu_tax_code_template_t_IP-IC-8,-1.0,-1.0,lu_tax_code_template_b_IP-IC-8,lu_tax_code_template_t_IP-IC-8,lu_2011_chart_1,1470
+lu_2011_tax_IP-PA-0,Investissement Prestations 0% - Pays,IP-PA-0,purchase,percent,0.0,0,,,,1.0,1.0,lu_tax_code_template_b_IP-PA-0,,-1.0,-1.0,lu_tax_code_template_b_IP-PA-0,,lu_2011_chart_1,471
+lu_2011_tax_IP-PA-12,Investissement Prestations 12% - Pays,IP-PA-12,purchase,percent,0.12,0,,lu_2011_account_4216111,lu_2011_account_4216111,1.0,1.0,lu_tax_code_template_b_IP-PA-12,lu_tax_code_template_t_IP-PA-12,-1.0,-1.0,lu_tax_code_template_b_IP-PA-12,lu_tax_code_template_t_IP-PA-12,lu_2011_chart_1,472
+lu_2015_tax_IP-PA-14,Investissement Prestations 14% - Pays,IP-PA-14,purchase,percent,0.14,0,,lu_2011_account_4216111,lu_2011_account_4216111,1.0,1.0,lu_tax_code_template_b_IP-PA-14,lu_tax_code_template_t_IP-PA-14,-1.0,-1.0,lu_tax_code_template_b_IP-PA-14,lu_tax_code_template_t_IP-PA-14,lu_2011_chart_1,473
+lu_2011_tax_IP-PA-15,Investissement Prestations 15% - Pays,IP-PA-15,purchase,percent,0.15,0,,lu_2011_account_4216111,lu_2011_account_4216111,1.0,1.0,lu_tax_code_template_b_IP-PA-15,lu_tax_code_template_t_IP-PA-15,-1.0,-1.0,lu_tax_code_template_b_IP-PA-15,lu_tax_code_template_t_IP-PA-15,lu_2011_chart_1,474
+lu_2015_tax_IP-PA-17,Investissement Prestations 17% - Pays,IP-PA-17,purchase,percent,0.17,0,,lu_2011_account_4216111,lu_2011_account_4216111,1.0,1.0,lu_tax_code_template_b_IP-PA-17,lu_tax_code_template_t_IP-PA-17,-1.0,-1.0,lu_tax_code_template_b_IP-PA-17,lu_tax_code_template_t_IP-PA-17,lu_2011_chart_1,475
+lu_2011_tax_IP-PA-3,Investissement Prestations 3% - Pays,IP-PA-3,purchase,percent,0.03,0,,lu_2011_account_4216111,lu_2011_account_4216111,1.0,1.0,lu_tax_code_template_b_IP-PA-3,lu_tax_code_template_t_IP-PA-3,-1.0,-1.0,lu_tax_code_template_b_IP-PA-3,lu_tax_code_template_t_IP-PA-3,lu_2011_chart_1,476
+lu_2011_tax_IP-PA-6,Investissement Prestations 6% - Pays,IP-PA-6,purchase,percent,0.06,0,,lu_2011_account_4216111,lu_2011_account_4216111,1.0,1.0,lu_tax_code_template_b_IP-PA-6,lu_tax_code_template_t_IP-PA-6,-1.0,-1.0,lu_tax_code_template_b_IP-PA-6,lu_tax_code_template_t_IP-PA-6,lu_2011_chart_1,477
+lu_2015_tax_IP-PA-8,Investissement Prestations 8% - Pays,IP-PA-8,purchase,percent,0.08,0,,lu_2011_account_4216111,lu_2011_account_4216111,1.0,1.0,lu_tax_code_template_b_IP-PA-8,lu_tax_code_template_t_IP-PA-8,-1.0,-1.0,lu_tax_code_template_b_IP-PA-8,lu_tax_code_template_t_IP-PA-8,lu_2011_chart_1,478
+lu_2015_tax_V-ART-43_60b,Vente - Autres Exonérations (Article 43 et 60 bis),V-ART-43_60b,sale,percent,0.0,0.0,,,,1.0,1.0,lu_tax_code_template_b_V-ART-43_60b,,-1.0,-1.0,lu_tax_code_template_b_V-ART-43_60b,,lu_2011_chart_1,479
+lu_2015_tax_V-ART-44_56q,Vente - Autres Exonérations (Article 44 et 56 quarter),V-ART-44_56q,sale,percent,0.0,0.0,,,,1.0,1.0,lu_tax_code_template_b_V-ART-44_56q,,-1.0,-1.0,lu_tax_code_template_b_V-ART-44_56q,,lu_2011_chart_1,480
+lu_2011_tax_VB-EC-0,Vente Biens - Extracommunautaire,VB-EC-0,sale,percent,0.0,0,,,,1.0,1.0,lu_tax_code_template_b_VB-EC-0,,-1.0,-1.0,lu_tax_code_template_b_VB-EC-0,,lu_2011_chart_1,481
+lu_2011_tax_VB-EC-Tab,Vente Biens Tabacs - Extracommunautaire,VB-EC-Tab,sale,percent,0.0,0,,,,1.0,1.0,lu_tax_code_template_b_VB-EC-Tab,,-1.0,-1.0,lu_tax_code_template_b_VB-EC-Tab,,lu_2011_chart_1,482
+lu_2011_tax_VB-IC-0,Vente Biens - Intracommunautaire,VB-IC-0,sale,percent,0.0,0,,,,1.0,1.0,lu_tax_code_template_b_VB-IC-0,,-1.0,-1.0,lu_tax_code_template_b_VB-IC-0,,lu_2011_chart_1,483
+lu_2011_tax_VB-IC-Tab,Vente Biens Tabacs - Intracommunautaire,VB-IC-Tab,sale,percent,0.0,0,,,,1.0,1.0,lu_tax_code_template_b_VB-IC-Tab,,-1.0,-1.0,lu_tax_code_template_b_VB-IC-Tab,,lu_2011_chart_1,484
+lu_2011_tax_VB-PA-0,Vente Biens 0% - Pays,VB-PA-0,sale,percent,0.0,0,,,,1.0,1.0,lu_tax_code_template_b_VB-PA-0,,-1.0,-1.0,lu_tax_code_template_b_VB-PA-0,,lu_2011_chart_1,485
+lu_2011_tax_VB-PA-12,Vente Biens 12% - Pays,VB-PA-12,sale,percent,0.12,0,,lu_2011_account_4614111,lu_2011_account_4614111,1.0,1.0,lu_tax_code_template_b_VB-PA-12,lu_tax_code_template_t_VB-PA-12,-1.0,-1.0,lu_tax_code_template_b_VB-PA-12,lu_tax_code_template_t_VB-PA-12,lu_2011_chart_1,486
+lu_2015_tax_VB-PA-14,Vente Biens 14% - Pays,VB-PA-14,sale,percent,0.14,0,,lu_2011_account_4614111,lu_2011_account_4614111,1.0,1.0,lu_tax_code_template_b_VB-PA-14,lu_tax_code_template_t_VB-PA-14,-1.0,-1.0,lu_tax_code_template_b_VB-PA-14,lu_tax_code_template_t_VB-PA-14,lu_2011_chart_1,487
+lu_2011_tax_VB-PA-15,Vente Biens 15% - Pays,VB-PA-15,sale,percent,0.15,0,,lu_2011_account_4614111,lu_2011_account_4614111,1.0,1.0,lu_tax_code_template_b_VB-PA-15,lu_tax_code_template_t_VB-PA-15,-1.0,-1.0,lu_tax_code_template_b_VB-PA-15,lu_tax_code_template_t_VB-PA-15,lu_2011_chart_1,488
+lu_2015_tax_VB-PA-17,Vente Biens 17% - Pays,VB-PA-17,sale,percent,0.17,0,,lu_2011_account_4614111,lu_2011_account_4614111,1.0,1.0,lu_tax_code_template_b_VB-PA-17,lu_tax_code_template_t_VB-PA-17,-1.0,-1.0,lu_tax_code_template_b_VB-PA-17,lu_tax_code_template_t_VB-PA-17,lu_2011_chart_1,489
+lu_2011_tax_VB-PA-3,Vente Biens 3% - Pays,VB-PA-3,sale,percent,0.03,0,,lu_2011_account_4614111,lu_2011_account_4614111,1.0,1.0,lu_tax_code_template_b_VB-PA-3,lu_tax_code_template_t_VB-PA-3,-1.0,-1.0,lu_tax_code_template_b_VB-PA-3,lu_tax_code_template_t_VB-PA-3,lu_2011_chart_1,490
+lu_2011_tax_VB-PA-6,Vente Biens 6% - Pays,VB-PA-6,sale,percent,0.06,0,,lu_2011_account_4614111,lu_2011_account_4614111,1.0,1.0,lu_tax_code_template_b_VB-PA-6,lu_tax_code_template_t_VB-PA-6,-1.0,-1.0,lu_tax_code_template_b_VB-PA-6,lu_tax_code_template_t_VB-PA-6,lu_2011_chart_1,491
+lu_2015_tax_VB-PA-8,Vente Biens 8% - Pays,VB-PA-8,sale,percent,0.08,0,,lu_2011_account_4614111,lu_2011_account_4614111,1.0,1.0,lu_tax_code_template_b_VB-PA-8,lu_tax_code_template_t_VB-PA-8,-1.0,-1.0,lu_tax_code_template_b_VB-PA-8,lu_tax_code_template_t_VB-PA-8,lu_2011_chart_1,492
+lu_2011_tax_VB-PA-Tab,Vente Biens Tabacs - Pays,VB-PA-Tab,sale,percent,0.0,0,,,,1.0,1.0,lu_tax_code_template_b_VB-PA-Tab,,-1.0,-1.0,lu_tax_code_template_b_VB-PA-Tab,,lu_2011_chart_1,493
+lu_2015_tax_VB-TR-0,Vente Biens – Triangulaire Intracommunautaire,VB-TR-0,sale,percent,0.0,0,,,,1.0,,lu_tax_code_template_b_VB-TR-0,,-1.0,,lu_tax_code_template_b_VB-TR-0,,lu_2011_chart_1,494
+lu_2011_tax_VP-EC-0,Vente Prestations - Extracommunautaire,VP-EC-0,sale,percent,0.0,0,,,,1.0,1.0,lu_tax_code_template_b_VP-EC-0,,-1.0,-1.0,lu_tax_code_template_b_VP-EC-0,,lu_2011_chart_1,495
+lu_2011_tax_VP-IC-0,Vente Prestations - Intracommunautaire,VP-IC-0,sale,percent,0.0,0,,,,1.0,1.0,lu_tax_code_template_b_VP-IC-0,,-1.0,-1.0,lu_tax_code_template_b_VP-IC-0,,lu_2011_chart_1,496
+lu_2011_tax_VP-IC-EX,Vente Prestations - Intracommunautaire exonérées dans l'état membre,VP-IC-EX,sale,percent,0.0,0,,,,-1.0,-1.0,lu_tax_code_template_b_VP-IC-EX,,-1.0,-1.0,lu_tax_code_template_b_VP-IC-EX,,lu_2011_chart_1,497
+lu_2011_tax_VP-PA-0,Vente Prestations 0% - Pays,VP-PA-0,sale,percent,0.0,0,,,,1.0,1.0,lu_tax_code_template_b_VP-PA-0,,-1.0,-1.0,lu_tax_code_template_b_VP-PA-0,,lu_2011_chart_1,498
+lu_2011_tax_VP-PA-12,Vente Prestations 12% - Pays,VP-PA-12,sale,percent,0.12,0,,lu_2011_account_4614111,lu_2011_account_4614111,1.0,1.0,lu_tax_code_template_b_VP-PA-12,lu_tax_code_template_t_VP-PA-12,-1.0,-1.0,lu_tax_code_template_b_VP-PA-12,lu_tax_code_template_t_VP-PA-12,lu_2011_chart_1,499
+lu_2015_tax_VP-PA-14,Vente Prestations 14% - Pays,VP-PA-14,sale,percent,0.14,0,,lu_2011_account_4614111,lu_2011_account_4614111,1.0,1.0,lu_tax_code_template_b_VP-PA-14,lu_tax_code_template_t_VP-PA-14,-1.0,-1.0,lu_tax_code_template_b_VP-PA-14,lu_tax_code_template_t_VP-PA-14,lu_2011_chart_1,500
+lu_2011_tax_VP-PA-15,Vente Prestations 15% - Pays,VP-PA-15,sale,percent,0.15,0,,lu_2011_account_4614111,lu_2011_account_4614111,1.0,1.0,lu_tax_code_template_b_VP-PA-15,lu_tax_code_template_t_VP-PA-15,-1.0,-1.0,lu_tax_code_template_b_VP-PA-15,lu_tax_code_template_t_VP-PA-15,lu_2011_chart_1,501
+lu_2015_tax_VP-PA-17,Vente Prestations 17% - Pays,VP-PA-17,sale,percent,0.17,0,,lu_2011_account_4614111,lu_2011_account_4614111,1.0,1.0,lu_tax_code_template_b_VP-PA-17,lu_tax_code_template_t_VP-PA-17,-1.0,-1.0,lu_tax_code_template_b_VP-PA-17,lu_tax_code_template_t_VP-PA-17,lu_2011_chart_1,502
+lu_2011_tax_VP-PA-3,Vente Prestations 3% - Pays,VP-PA-3,sale,percent,0.03,0,,lu_2011_account_4614111,lu_2011_account_4614111,1.0,1.0,lu_tax_code_template_b_VP-PA-3,lu_tax_code_template_t_VP-PA-3,-1.0,-1.0,lu_tax_code_template_b_VP-PA-3,lu_tax_code_template_t_VP-PA-3,lu_2011_chart_1,503
+lu_2011_tax_VP-PA-6,Vente Prestations 6% - Pays,VP-PA-6,sale,percent,0.06,0,,lu_2011_account_4614111,lu_2011_account_4614111,1.0,1.0,lu_tax_code_template_b_VP-PA-6,lu_tax_code_template_t_VP-PA-6,-1.0,-1.0,lu_tax_code_template_b_VP-PA-6,lu_tax_code_template_t_VP-PA-6,lu_2011_chart_1,504
+lu_2015_tax_VP-PA-8,Vente Prestations 8% - Pays,VP-PA-8,sale,percent,0.08,0,,lu_2011_account_4614111,lu_2011_account_4614111,1.0,1.0,lu_tax_code_template_b_VP-PA-8,lu_tax_code_template_t_VP-PA-8,-1.0,-1.0,lu_tax_code_template_b_VP-PA-8,lu_tax_code_template_t_VP-PA-8,lu_2011_chart_1,505
diff --git a/addons/l10n_lu/scripts/tax.xls b/addons/l10n_lu/scripts/tax.xls
new file mode 100644
index 00000000000..a807833848f
Binary files /dev/null and b/addons/l10n_lu/scripts/tax.xls differ
diff --git a/addons/l10n_lu/scripts/tax2csv.py b/addons/l10n_lu/scripts/tax2csv.py
new file mode 100644
index 00000000000..c6a5bed6e44
--- /dev/null
+++ b/addons/l10n_lu/scripts/tax2csv.py
@@ -0,0 +1,188 @@
+from collections import OrderedDict
+import csv
+
+import xlrd
+
+
+def _e(s):
+ if type(s) is unicode:
+ return s.encode('utf8')
+ elif s is None:
+ return ''
+ else:
+ return str(s)
+
+
+def _is_true(s):
+ return s not in ('F', 'False', 0, '', None, False)
+
+
+class LuxTaxGenerator:
+
+ def __init__(self, filename):
+ self.workbook = xlrd.open_workbook('tax.xls')
+ self.sheet_info = \
+ self.workbook.sheet_by_name('INFO')
+ self.sheet_taxes = \
+ self.workbook.sheet_by_name('TAXES')
+ self.sheet_tax_codes = \
+ self.workbook.sheet_by_name('TAX.CODES')
+ self.sheet_fiscal_pos_map = \
+ self.workbook.sheet_by_name('FISCAL.POSITION.MAPPINGS')
+ self.suffix = self.sheet_info.cell_value(4, 2)
+
+ def iter_tax_codes(self):
+ keys = map(lambda c: c.value, self.sheet_tax_codes.row(0))
+ yield keys
+ for i in range(1, self.sheet_tax_codes.nrows):
+ row = map(lambda c: c.value, self.sheet_tax_codes.row(i))
+ d = OrderedDict(zip(keys, row))
+ d['sign'] = int(d['sign'])
+ d['sequence'] = int(d['sequence'])
+ yield d
+
+ def iter_taxes(self):
+ keys = map(lambda c: c.value, self.sheet_taxes.row(0))
+ yield keys
+ for i in range(1, self.sheet_taxes.nrows):
+ row = map(lambda c: c.value, self.sheet_taxes.row(i))
+ yield OrderedDict(zip(keys, row))
+
+ def iter_fiscal_pos_map(self):
+ keys = map(lambda c: c.value, self.sheet_fiscal_pos_map.row(0))
+ yield keys
+ for i in range(1, self.sheet_fiscal_pos_map.nrows):
+ row = map(lambda c: c.value, self.sheet_fiscal_pos_map.row(i))
+ yield OrderedDict(zip(keys, row))
+
+ def tax_codes_to_csv(self):
+ writer = csv.writer(open('account.tax.code.template-%s.csv' %
+ self.suffix, 'wb'))
+ tax_codes_iterator = self.iter_tax_codes()
+ keys = tax_codes_iterator.next()
+ writer.writerow(keys)
+
+ # write structure tax codes
+ tax_codes = {} # code: id
+ for row in tax_codes_iterator:
+ tax_code = row['code']
+ if tax_code in tax_codes:
+ raise RuntimeError('duplicate tax code %s' % tax_code)
+ tax_codes[tax_code] = row['id']
+ writer.writerow(map(_e, row.values()))
+
+ # read taxes and add leaf tax codes
+ new_tax_codes = {} # id: parent_code
+
+ def add_new_tax_code(tax_code_id, new_name, new_parent_code):
+ if not tax_code_id:
+ return
+ name, parent_code = new_tax_codes.get(tax_code_id, (None, None))
+ if parent_code and parent_code != new_parent_code:
+ raise RuntimeError('tax code "%s" already exist with '
+ 'parent %s while trying to add it with '
+ 'parent %s' %
+ (tax_code_id, parent_code, new_parent_code))
+ else:
+ new_tax_codes[tax_code_id] = (new_name, new_parent_code)
+
+ taxes_iterator = self.iter_taxes()
+ keys = taxes_iterator.next()
+ for row in taxes_iterator:
+ if not _is_true(row['active']):
+ continue
+ if row['child_depend'] and row['amount'] != 1:
+ raise RuntimeError('amount must be one if child_depend '
+ 'for %s' % row['id'])
+ # base parent
+ base_code = row['BASE_CODE']
+ if not base_code or base_code == '/':
+ base_code = 'NA'
+ if base_code not in tax_codes:
+ raise RuntimeError('undefined tax code %s' % base_code)
+ if base_code != 'NA':
+ if row['child_depend']:
+ raise RuntimeError('base code specified '
+ 'with child_depend for %s' % row['id'])
+ if not row['child_depend']:
+ # ... in lux, we have the same code for invoice and refund
+ if base_code != 'NA':
+ assert row['base_code_id:id'], 'missing base_code_id for %s' % row['id']
+ assert row['ref_base_code_id:id'] == row['base_code_id:id']
+ add_new_tax_code(row['base_code_id:id'],
+ 'Base - ' + row['name'],
+ base_code)
+ # tax parent
+ tax_code = row['TAX_CODE']
+ if not tax_code or tax_code == '/':
+ tax_code = 'NA'
+ if tax_code not in tax_codes:
+ raise RuntimeError('undefined tax code %s' % tax_code)
+ if tax_code == 'NA':
+ if row['amount'] and not row['child_depend']:
+ raise RuntimeError('TAX_CODE not specified '
+ 'for non-zero tax %s' % row['id'])
+ if row['tax_code_id:id']:
+ raise RuntimeError('tax_code_id specified '
+ 'for tax %s' % row['id'])
+ else:
+ if row['child_depend']:
+ raise RuntimeError('TAX_CODE specified '
+ 'with child_depend for %s' % row['id'])
+ if not row['amount']:
+ raise RuntimeError('TAX_CODE specified '
+ 'for zero tax %s' % row['id'])
+ if not row['tax_code_id:id']:
+ raise RuntimeError('tax_code_id not specified '
+ 'for tax %s' % row['id'])
+ if not row['child_depend'] and row['amount']:
+ # ... in lux, we have the same code for invoice and refund
+ assert row['tax_code_id:id'], 'missing tax_code_id for %s' % row['id']
+ assert row['ref_tax_code_id:id'] == row['tax_code_id:id']
+ add_new_tax_code(row['tax_code_id:id'],
+ 'Taxe - ' + row['name'],
+ tax_code)
+
+ for tax_code_id in sorted(new_tax_codes):
+ name, parent_code = new_tax_codes[tax_code_id]
+ writer.writerow((tax_code_id,
+ 'lu_tct_m' + parent_code,
+ tax_code_id.replace('lu_tax_code_template_', ''),
+ '1',
+ '',
+ _e(name),
+ ''))
+
+ def taxes_to_csv(self):
+ writer = csv.writer(open('account.tax.template-%s.csv' %
+ self.suffix, 'wb'))
+ taxes_iterator = self.iter_taxes()
+ keys = taxes_iterator.next()
+ writer.writerow(keys[3:] + ['sequence'])
+ seq = 100
+ for row in sorted(taxes_iterator, key=lambda r: r['description']):
+ if not _is_true(row['active']):
+ continue
+ seq += 1
+ if row['parent_id:id']:
+ cur_seq = seq + 1000
+ else:
+ cur_seq = seq
+ writer.writerow(map(_e, row.values()[3:]) + [cur_seq])
+
+ def fiscal_pos_map_to_csv(self):
+ writer = csv.writer(open('account.fiscal.'
+ 'position.tax.template-%s.csv' %
+ self.suffix, 'wb'))
+ fiscal_pos_map_iterator = self.iter_fiscal_pos_map()
+ keys = fiscal_pos_map_iterator.next()
+ writer.writerow(keys)
+ for row in fiscal_pos_map_iterator:
+ writer.writerow(map(_e, row.values()))
+
+
+if __name__ == '__main__':
+ o = LuxTaxGenerator('tax.xls')
+ o.tax_codes_to_csv()
+ o.taxes_to_csv()
+ o.fiscal_pos_map_to_csv()
diff --git a/addons/mail/models/mail_thread.py b/addons/mail/models/mail_thread.py
index 7ae6fd3eb3b..dab6714ca06 100644
--- a/addons/mail/models/mail_thread.py
+++ b/addons/mail/models/mail_thread.py
@@ -205,13 +205,6 @@ class MailThread(models.AbstractModel):
doc_name = self.env['ir.model'].search([('model', '=', self._name)]).read(['name'])[0]['name']
thread.message_post(body=_('%s created') % doc_name)
- # auto_subscribe: take values and defaults into account
- create_values = dict(values)
- for key, val in self._context.iteritems():
- if key.startswith('default_') and key[8:] not in create_values:
- create_values[key[8:]] = val
- thread.message_auto_subscribe(create_values.keys(), values=create_values)
-
# track values
if not self._context.get('mail_notrack'):
if 'lang' not in self._context:
@@ -222,6 +215,14 @@ class MailThread(models.AbstractModel):
if tracked_fields:
initial_values = {thread.id: dict.fromkeys(tracked_fields, False)}
track_thread.message_track(tracked_fields, initial_values)
+
+ # auto_subscribe: take values and defaults into account
+ create_values = dict(values)
+ for key, val in self._context.iteritems():
+ if key.startswith('default_') and key[8:] not in create_values:
+ create_values[key[8:]] = val
+ thread.message_auto_subscribe(create_values.keys(), values=create_values)
+
return thread
@api.multi
@@ -242,14 +243,16 @@ class MailThread(models.AbstractModel):
initial_values = dict((record.id, dict((key, getattr(record, key)) for key in tracked_fields))
for record in track_self)
- # Perform write, update followers
+ # Perform write
result = super(MailThread, self).write(values)
- self.message_auto_subscribe(values.keys(), values=values)
# Perform the tracking
if tracked_fields:
track_self.message_track(tracked_fields, initial_values)
+ # update followers
+ self.message_auto_subscribe(values.keys(), values=values)
+
return result
@api.multi
@@ -867,7 +870,7 @@ class MailThread(models.AbstractModel):
email_from = decode_header(message, 'From')
email_to = decode_header(message, 'To')
references = decode_header(message, 'References')
- in_reply_to = decode_header(message, 'In-Reply-To')
+ in_reply_to = decode_header(message, 'In-Reply-To').strip()
thread_references = references or in_reply_to
# 0. First check if this is a bounce message or not.
diff --git a/addons/mail/tests/common.py b/addons/mail/tests/common.py
index 27f710f2ad9..d4c38bb3bc6 100644
--- a/addons/mail/tests/common.py
+++ b/addons/mail/tests/common.py
@@ -5,11 +5,12 @@ import socket
from openerp.tests import common
-class TestMail(common.TransactionCase):
+class TestMail(common.SavepointCase):
- def _init_mock_build_email(self):
- self._mails_args = []
- self._mails = []
+ @classmethod
+ def _init_mock_build_email(cls):
+ cls._mails_args = []
+ cls._mails = []
def format_and_process(self, template, to='groups@example.com, other@gmail.com', subject='Frogs',
extra='', email_from='Sylvie Lelitre ',
@@ -22,27 +23,32 @@ class TestMail(common.TransactionCase):
def setUp(self):
super(TestMail, self).setUp()
- Test = self
+ self._mails_args[:] = []
+ self._mails[:] = []
+ @classmethod
+ def setUpClass(cls):
+ super(TestMail, cls).setUpClass()
+ cr, uid = cls.cr, cls.uid
def build_email(self, *args, **kwargs):
- Test._mails_args.append(args)
- Test._mails.append(kwargs)
+ cls._mails_args.append(args)
+ cls._mails.append(kwargs)
return build_email.origin(self, *args, **kwargs)
def send_email(self, cr, uid, message, *args, **kwargs):
return message['Message-Id']
- self.env['ir.mail_server']._patch_method('build_email', build_email)
- self.env['ir.mail_server']._patch_method('send_email', send_email)
+ cls.env['ir.mail_server']._patch_method('build_email', build_email)
+ cls.env['ir.mail_server']._patch_method('send_email', send_email)
# User groups
- user_group_employee = self.env.ref('base.group_user')
- user_group_portal = self.env.ref('base.group_portal')
- user_group_public = self.env.ref('base.group_public')
+ user_group_employee = cls.env.ref('base.group_user')
+ user_group_portal = cls.env.ref('base.group_portal')
+ user_group_public = cls.env.ref('base.group_public')
# User Data: employee, noone
- Users = self.env['res.users'].with_context({'no_reset_password': True})
- self.user_employee = Users.create({
+ Users = cls.env['res.users'].with_context({'no_reset_password': True})
+ cls.user_employee = Users.create({
'name': 'Ernest Employee',
'login': 'ernest',
'alias_name': 'ernest',
@@ -50,7 +56,7 @@ class TestMail(common.TransactionCase):
'signature': '--\nErnest',
'notify_email': 'always',
'groups_id': [(6, 0, [user_group_employee.id])]})
- self.user_employee_2 = Users.create({
+ cls.user_employee_2 = Users.create({
'name': 'Raoul Grosbedon',
'login': 'raoul',
'alias_name': 'raoul',
@@ -58,7 +64,7 @@ class TestMail(common.TransactionCase):
'signature': 'SignRaoul',
'notify_email': 'always',
'groups_id': [(6, 0, [user_group_employee.id])]})
- self.user_noone = Users.create({
+ cls.user_noone = Users.create({
'name': 'Noemie NoOne',
'login': 'noemie',
'alias_name': 'noemie',
@@ -66,7 +72,7 @@ class TestMail(common.TransactionCase):
'signature': '--\nNoemie',
'notify_email': 'always',
'groups_id': [(6, 0, [])]})
- self.user_public = Users.create({
+ cls.user_public = Users.create({
'name': 'Bert Tartignole',
'login': 'bert',
'alias_name': 'bert',
@@ -74,7 +80,7 @@ class TestMail(common.TransactionCase):
'signature': 'SignBert',
'notify_email': 'always',
'groups_id': [(6, 0, [user_group_public.id])]})
- self.user_portal = Users.create({
+ cls.user_portal = Users.create({
'name': 'Chell Gladys',
'login': 'chell',
'alias_name': 'chell',
@@ -82,39 +88,39 @@ class TestMail(common.TransactionCase):
'signature': 'SignChell',
'notify_email': 'always',
'groups_id': [(6, 0, [user_group_portal.id])]})
- self.user_admin = self.env.user
+ cls.user_admin = cls.env.user
# Update admin
# Set an email address for the user running the tests, used as Sender for outgoing mails
- self._company_name = 'TestCompany'
- self._admin_name = 'Administrator'
- self._admin_email = 'test@localhost'
- self.user_admin.write({
- 'email': self._admin_email,
- 'name': self._admin_name,
+ cls._company_name = 'TestCompany'
+ cls._admin_name = 'Administrator'
+ cls._admin_email = 'test@localhost'
+ cls.user_admin.write({
+ 'email': cls._admin_email,
+ 'name': cls._admin_name,
'signature': 'SignAdmin',
'notify_email': 'always',
})
- self.user_admin.company_id.write({
- 'name': self._company_name,
+ cls.user_admin.company_id.write({
+ 'name': cls._company_name,
})
# Test Data for Partners
- self.partner_1 = self.env['res.partner'].create({
+ cls.partner_1 = cls.env['res.partner'].create({
'name': 'Valid Lelitre',
'email': 'valid.lelitre@agrolait.com',
'notify_email': 'always'})
- self.partner_2 = self.env['res.partner'].create({
+ cls.partner_2 = cls.env['res.partner'].create({
'name': 'Valid Poilvache',
'email': 'valid.other@gmail.com',
'notify_email': 'always'})
# Create test groups without followers and messages by default
- TestMailGroup = self.env['mail.group'].with_context({
+ TestMailGroup = cls.env['mail.group'].with_context({
'mail_create_nolog': True,
'mail_create_nosubscribe': True
})
# Pigs: base group for tests
- self.group_pigs = TestMailGroup.create({
+ cls.group_pigs = TestMailGroup.create({
'name': 'Pigs',
'description': 'Fans of Pigs, unite !',
'public': 'groups',
@@ -123,7 +129,7 @@ class TestMail(common.TransactionCase):
'alias_contact': 'followers'}
).with_context({'mail_create_nosubscribe': False})
# Jobs: public group
- self.group_public = TestMailGroup.create({
+ cls.group_public = TestMailGroup.create({
'name': 'Jobs',
'description': 'NotFalse',
'public': 'public',
@@ -131,39 +137,40 @@ class TestMail(common.TransactionCase):
'alias_contact': 'everyone'}
).with_context({'mail_create_nosubscribe': False})
# Private: private group
- self.group_private = TestMailGroup.create({
+ cls.group_private = TestMailGroup.create({
'name': 'Private',
'public': 'private'}
).with_context({'mail_create_nosubscribe': False})
# Portal: group-based group using portal group
- self.group_portal = TestMailGroup.create({
+ cls.group_portal = TestMailGroup.create({
'name': 'PigsPortal',
'public': 'groups',
'group_public_id': user_group_portal.id}
).with_context({'mail_create_nosubscribe': False})
# groups@.. will cause the creation of new mail groups
- self.mail_group_model = self.env['ir.model'].search([('model', '=', 'mail.group')], limit=1)
- self.alias = self.env['mail.alias'].create({
+ cls.mail_group_model = cls.env['ir.model'].search([('model', '=', 'mail.group')], limit=1)
+ cls.alias = cls.env['mail.alias'].create({
'alias_name': 'groups',
'alias_user_id': False,
- 'alias_model_id': self.mail_group_model.id,
+ 'alias_model_id': cls.mail_group_model.id,
'alias_contact': 'everyone'})
# Set a first message on public group to test update and hierarchy
- self.fake_email = self.env['mail.message'].create({
+ cls.fake_email = cls.env['mail.message'].create({
'model': 'mail.group',
- 'res_id': self.group_public.id,
+ 'res_id': cls.group_public.id,
'subject': 'Public Discussion',
'message_type': 'email',
- 'author_id': self.partner_1.id,
- 'message_id': '<123456-openerp-%s-mail.group@%s>' % (self.group_public.id, socket.gethostname()),
+ 'author_id': cls.partner_1.id,
+ 'message_id': '<123456-openerp-%s-mail.group@%s>' % (cls.group_public.id, socket.gethostname()),
})
- self._init_mock_build_email()
+ cls._init_mock_build_email()
- def tearDown(self):
+ @classmethod
+ def tearDownClass(cls):
# Remove mocks
- self.env['ir.mail_server']._revert_method('build_email')
- self.env['ir.mail_server']._revert_method('send_email')
- super(TestMail, self).tearDown()
+ cls.env['ir.mail_server']._revert_method('build_email')
+ cls.env['ir.mail_server']._revert_method('send_email')
+ super(TestMail, cls).tearDownClass()
diff --git a/addons/mail/tests/test_invite.py b/addons/mail/tests/test_invite.py
index 364b62e7270..6200c56c860 100644
--- a/addons/mail/tests/test_invite.py
+++ b/addons/mail/tests/test_invite.py
@@ -1,6 +1,6 @@
# -*- coding: utf-8 -*-
-from openerp.addons.mail.tests.common import TestMail
+from .common import TestMail
from openerp.tools import mute_logger
diff --git a/addons/mail/tests/test_mail_features.py b/addons/mail/tests/test_mail_features.py
index 5b9f2bb1116..19f55515dcc 100644
--- a/addons/mail/tests/test_mail_features.py
+++ b/addons/mail/tests/test_mail_features.py
@@ -1,6 +1,6 @@
# -*- coding: utf-8 -*-
-from openerp.addons.mail.tests.common import TestMail
+from .common import TestMail
from openerp.tools import mute_logger
diff --git a/addons/mail/tests/test_mail_gateway.py b/addons/mail/tests/test_mail_gateway.py
index 68bbd3304e3..33c961e58a0 100644
--- a/addons/mail/tests/test_mail_gateway.py
+++ b/addons/mail/tests/test_mail_gateway.py
@@ -1,6 +1,6 @@
# -*- coding: utf-8 -*-
-from openerp.addons.mail.tests.common import TestMail
+from .common import TestMail
from openerp.tools import mute_logger
import socket
@@ -370,7 +370,7 @@ class TestMailgateway(TestMail):
MAIL_TEMPLATE, email_from='valid.other@gmail.com',
msg_id='<1198923581.41972151344608186800.JavaMail.diff1@agrolait.com>',
to='erroneous@example.com>', subject='Re: news',
- extra='In-Reply-To: %s\n' % self.fake_email.message_id)
+ extra='In-Reply-To:\r\n\t%s\n' % self.fake_email.message_id)
self.assertEqual(len(self.group_public.message_ids), 2, 'message_process: group should contain one new message')
self.assertEqual(len(self.fake_email.child_ids), 1, 'message_process: new message should be children of the existing one')
diff --git a/addons/mail/tests/test_mail_group.py b/addons/mail/tests/test_mail_group.py
index 4aed947dbab..cde0f1aded6 100644
--- a/addons/mail/tests/test_mail_group.py
+++ b/addons/mail/tests/test_mail_group.py
@@ -1,6 +1,6 @@
# -*- coding: utf-8 -*-
-from openerp.addons.mail.tests.common import TestMail
+from .common import TestMail
from openerp.exceptions import AccessError
from openerp.exceptions import except_orm
from openerp.tools import mute_logger
diff --git a/addons/mail/tests/test_mail_message.py b/addons/mail/tests/test_mail_message.py
index 5a1ea592b3b..e59131ac15e 100644
--- a/addons/mail/tests/test_mail_message.py
+++ b/addons/mail/tests/test_mail_message.py
@@ -1,6 +1,6 @@
# -*- coding: utf-8 -*-
-from openerp.addons.mail.tests.common import TestMail
+from .common import TestMail
from openerp.exceptions import AccessError
from openerp.exceptions import except_orm
from openerp.tools import mute_logger
diff --git a/addons/mail/tests/test_message_read.py b/addons/mail/tests/test_message_read.py
index f43ef6881f9..53fe72ccbec 100644
--- a/addons/mail/tests/test_message_read.py
+++ b/addons/mail/tests/test_message_read.py
@@ -1,6 +1,6 @@
# -*- coding: utf-8 -*-
-from openerp.addons.mail.tests.common import TestMail
+from .common import TestMail
from openerp.tools import mute_logger
diff --git a/addons/mass_mailing/models/mass_mailing_stats.py b/addons/mass_mailing/models/mass_mailing_stats.py
index 955f5a3d695..7d50e9ab42b 100644
--- a/addons/mass_mailing/models/mass_mailing_stats.py
+++ b/addons/mass_mailing/models/mass_mailing_stats.py
@@ -32,6 +32,20 @@ class MailMailStats(osv.Model):
return res
+ def _compute_recipient(self, cr, uid, ids, field_names, arg, context=None):
+ res = dict.fromkeys(ids, '')
+ for stat in self.browse(cr, uid, ids, context=context):
+ if not self.pool.get(stat.model):
+ continue
+ target = self.pool[stat.model].browse(cr, uid, stat.res_id, context=context)
+ email = ''
+ for email_field in ('email', 'email_from'):
+ if email_field in target and target[email_field]:
+ email = ' <%s>' % target[email_field]
+ break
+ res[stat.id] = '%s%s' % (target.display_name, email)
+ return res
+
__store = {_name: ((lambda s, c, u, i, t: i), ['exception', 'sent', 'opened', 'replied', 'bounced'], 10)}
_columns = {
@@ -76,6 +90,7 @@ class MailMailStats(osv.Model):
'state_update': fields.function(_compute_state, string='State Update', type='datetime',
multi='state', help='Last state update of the mail',
store=__store),
+ 'recipient': fields.function(_compute_recipient, string='Recipient', type='char'),
}
_defaults = {
diff --git a/addons/mass_mailing/views/mass_mailing.xml b/addons/mass_mailing/views/mass_mailing.xml
index 4d1e2a20cd6..c5414ec5026 100644
--- a/addons/mass_mailing/views/mass_mailing.xml
+++ b/addons/mass_mailing/views/mass_mailing.xml
@@ -47,6 +47,7 @@
mail.mail.statistics
+
@@ -65,6 +66,7 @@
]]>
diff --git a/addons/payment_ogone/models/ogone.py b/addons/payment_ogone/models/ogone.py
index 4276d8d3dcd..f6610544113 100644
--- a/addons/payment_ogone/models/ogone.py
+++ b/addons/payment_ogone/models/ogone.py
@@ -1,5 +1,6 @@
# -*- coding: utf-'8' "-*-"
+import datetime
from hashlib import sha1
import logging
from lxml import etree, objectify
@@ -10,12 +11,14 @@ from urllib import urlencode
import urllib2
import urlparse
+from openerp import SUPERUSER_ID
from openerp.addons.payment.models.payment_acquirer import ValidationError
from openerp.addons.payment_ogone.controllers.main import OgoneController
from openerp.addons.payment_ogone.data import ogone
from openerp.osv import osv, fields
-from openerp.tools import float_round
+from openerp.tools import float_round, DEFAULT_SERVER_DATE_FORMAT
from openerp.tools.float_utils import float_compare
+from openerp.tools.safe_eval import safe_eval
_logger = logging.getLogger(__name__)
@@ -48,6 +51,10 @@ class PaymentAcquirerOgone(osv.Model):
'ogone_password': fields.char('API User Password', required_if_provider='ogone'),
'ogone_shakey_in': fields.char('SHA Key IN', size=32, required_if_provider='ogone'),
'ogone_shakey_out': fields.char('SHA Key OUT', size=32, required_if_provider='ogone'),
+ 'ogone_alias_usage': fields.char('Alias Usage', help="""If you want to use Ogone Aliases,
+ this default Alias Usage will be presented to
+ the customer as the reason you want to
+ keep his payment data""")
}
def _ogone_generate_shasign(self, acquirer, inout, values):
@@ -161,6 +168,11 @@ class PaymentAcquirerOgone(osv.Model):
'EXCEPTIONURL': '%s' % urlparse.urljoin(base_url, OgoneController._exception_url),
'CANCELURL': '%s' % urlparse.urljoin(base_url, OgoneController._cancel_url),
}
+ if tx_values.get('type') == 'form_save':
+ temp_ogone_tx_values.update({
+ 'ALIAS': 'ODOO-NEW-ALIAS-%s' % time.time(), # something unique,
+ 'ALIASUSAGE': tx_values.get('alias_usage') or acquirer.ogone_alias_usage,
+ })
if ogone_tx_values.get('return_url'):
temp_ogone_tx_values['PARAMPLUS'] = 'return_url=%s' % ogone_tx_values.pop('return_url')
shasign = self._ogone_generate_shasign(acquirer, 'in', temp_ogone_tx_values)
@@ -172,6 +184,31 @@ class PaymentAcquirerOgone(osv.Model):
acquirer = self.browse(cr, uid, id, context=context)
return self._get_ogone_urls(cr, uid, acquirer.environment, context=context)['ogone_standard_order_url']
+ def ogone_s2s_form_validate(self, cr, uid, id, data, context=None):
+ error = dict()
+ error_message = []
+
+ mandatory_fields = ["cc_number", "cc_cvc", "cc_holder_name", "cc_expiry", "cc_brand"]
+ # Validation
+ for field_name in mandatory_fields:
+ if not data.get(field_name):
+ error[field_name] = 'missing'
+
+ return False if error else True
+
+ def ogone_s2s_form_process(self, cr, uid, data, context=None):
+ values = {
+ 'cc_number': data.get('cc_number'),
+ 'cc_cvc': int(data.get('cc_cvc')),
+ 'cc_holder_name': data.get('cc_holder_name'),
+ 'cc_expiry': data.get('cc_expiry'),
+ 'cc_brand': data.get('cc_brand'),
+ 'acquirer_id': int(data.get('acquirer_id')),
+ 'partner_id': int(data.get('partner_id'))
+ }
+ pm_id = self.pool['payment.method'].create(cr, SUPERUSER_ID, values, context=context)
+ return pm_id
+
class PaymentTxOgone(osv.Model):
_inherit = 'payment.transaction'
@@ -181,21 +218,14 @@ class PaymentTxOgone(osv.Model):
_ogone_pending_tx_status = [46] # 3DS HTML response
_ogone_cancel_tx_status = [1]
- _columns = {
- 'ogone_3ds': fields.boolean('3DS Activated'),
- 'ogone_3ds_html': fields.html('3DS HTML'),
- 'ogone_complus': fields.char('Complus'),
- 'ogone_payid': fields.char('PayID', help='Payment ID, generated by Ogone')
- }
-
# --------------------------------------------------
# FORM RELATED METHODS
# --------------------------------------------------
def _ogone_form_get_tx_from_data(self, cr, uid, data, context=None):
""" Given a data dict coming from ogone, verify it and find the related
- transaction record. """
- reference, pay_id, shasign = data.get('orderID'), data.get('PAYID'), data.get('SHASIGN')
+ transaction record. Create a payment method if an alias is returned."""
+ reference, pay_id, shasign, alias = data.get('orderID'), data.get('PAYID'), data.get('SHASIGN'), data.get('ALIAS')
if not reference or not pay_id or not shasign:
error_msg = _('Ogone: received data with missing reference (%s) or pay_id (%s) or shashign (%s)') % (reference, pay_id, shasign)
_logger.info(error_msg)
@@ -220,6 +250,20 @@ class PaymentTxOgone(osv.Model):
_logger.info(error_msg)
raise ValidationError(error_msg)
+ # alias was created on ogone server, store it
+ if alias:
+ method_obj = self.pool['payment.method']
+ domain = [('acquirer_ref', '=', alias)]
+ cardholder = data.get('CN')
+ if not method_obj.search_count(cr, uid, domain, context=context):
+ _logger.info('Ogone: saving alias %s for partner %s' % (data.get('CARDNO'), tx.partner_id))
+ ref = method_obj.create(cr, uid, {'name': data.get('CARDNO') + (' - ' + cardholder if cardholder else ''),
+ 'partner_id': tx.partner_id.id,
+ 'acquirer_id': tx.acquirer_id.id,
+ 'acquirer_ref': alias
+ })
+ tx.partner_reference = alias
+
return tx
def _ogone_form_get_invalid_parameters(self, cr, uid, tx, data, context=None):
@@ -276,195 +320,189 @@ class PaymentTxOgone(osv.Model):
# --------------------------------------------------
# S2S RELATED METHODS
# --------------------------------------------------
-
- def ogone_s2s_create_alias(self, cr, uid, id, values, context=None):
- """ Create an alias at Ogone via batch.
-
- .. versionadded:: pre-v8 saas-3
- .. warning::
-
- Experimental code. You should not use it before OpenERP v8 official
- release.
- """
+ def ogone_s2s_do_transaction(self, cr, uid, id, context=None, **kwargs):
+ # TODO: create tx with s2s type
tx = self.browse(cr, uid, id, context=context)
- assert tx.type == 'server2server', 'Calling s2s dedicated method for a %s acquirer' % tx.type
- alias = 'OPENERP-%d-%d' % (tx.partner_id.id, tx.id)
+ account = tx.acquirer_id
+ reference = tx.reference or "ODOO-%s-%s" % (datetime.datetime.now().strftime('%y%m%d_%H%M%S'), tx.partner_id.id)
- expiry_date = '%s%s' % (values['expiry_date_mm'], values['expiry_date_yy'][2:])
- line = 'ADDALIAS;%(alias)s;%(holder_name)s;%(number)s;%(expiry_date)s;%(brand)s;%(pspid)s'
- line = line % dict(values, alias=alias, expiry_date=expiry_date, pspid=tx.acquirer_id.ogone_pspid)
-
- tx_data = {
- 'FILE_REFERENCE': 'OPENERP-NEW-ALIAS-%s' % time.time(), # something unique,
- 'TRANSACTION_CODE': 'ATR',
- 'OPERATION': 'SAL',
- 'NB_PAYMENTS': 1, # even if we do not actually have any payment, ogone want it to not be 0
- 'FILE': line,
- 'REPLY_TYPE': 'XML',
- 'PSPID': tx.acquirer_id.ogone_pspid,
- 'USERID': tx.acquirer_id.ogone_userid,
- 'PSWD': tx.acquirer_id.ogone_password,
- 'PROCESS_MODE': 'CHECKANDPROCESS',
- }
-
- # TODO: fix URL computation
- request = urllib2.Request(tx.acquirer_id.ogone_afu_agree_url, urlencode(tx_data))
- result = urllib2.urlopen(request).read()
-
- try:
- tree = objectify.fromstring(result)
- except etree.XMLSyntaxError:
- _logger.exception('Invalid xml response from ogone')
- return None
-
- error_code = error_str = None
- if hasattr(tree, 'PARAMS_ERROR'):
- error_code = tree.NCERROR.text
- error_str = 'PARAMS ERROR: %s' % (tree.PARAMS_ERROR.text or '',)
- else:
- node = tree.FORMAT_CHECK
- error_node = getattr(node, 'FORMAT_CHECK_ERROR', None)
- if error_node is not None:
- error_code = error_node.NCERROR.text
- error_str = 'CHECK ERROR: %s' % (error_node.ERROR.text or '',)
-
- if error_code:
- error_msg = ogone.OGONE_ERROR_MAP.get(error_code)
- error = '%s\n\n%s: %s' % (error_str, error_code, error_msg)
- _logger.info(error)
- raise Exception(error) # TODO specific exception
-
- tx.write({'partner_reference': alias})
- return True
-
- def ogone_s2s_generate_values(self, cr, uid, id, custom_values, context=None):
- """ Generate valid Ogone values for a s2s tx.
-
- .. versionadded:: pre-v8 saas-3
- .. warning::
-
- Experimental code. You should not use it before OpenERP v8 official
- release.
- """
- tx = self.browse(cr, uid, id, context=context)
- tx_data = {
- 'PSPID': tx.acquirer_id.ogone_pspid,
- 'USERID': tx.acquirer_id.ogone_userid,
- 'PSWD': tx.acquirer_id.ogone_password,
- 'OrderID': tx.reference,
- 'amount': '%d' % int(float_round(tx.amount, 2) * 100), # tde check amount or str * 100 ?
+ data = {
+ 'PSPID': account.ogone_pspid,
+ 'USERID': account.ogone_userid,
+ 'PSWD': account.ogone_password,
+ 'ORDERID': reference,
+ 'AMOUNT': long(tx.amount * 100),
'CURRENCY': tx.currency_id.name,
- 'LANGUAGE': tx.partner_lang,
'OPERATION': 'SAL',
'ECI': 2, # Recurring (from MOTO)
'ALIAS': tx.partner_reference,
'RTIMEOUT': 30,
}
- if custom_values.get('ogone_cvc'):
- tx_data['CVC'] = custom_values.get('ogone_cvc')
- if custom_values.pop('ogone_3ds', None):
- tx_data.update({
- 'FLAG3D': 'Y', # YEAH!!
+
+ if kwargs.get('3d_secure'):
+ data.update({
+ 'FLAG3D': 'Y',
+ 'LANGUAGE': tx.partner_id.lang or 'en_US',
})
- if custom_values.get('ogone_complus'):
- tx_data['COMPLUS'] = custom_values.get('ogone_complus')
- if custom_values.get('ogone_accept_url'):
- pass
- shasign = self.pool['payment.acquirer']._ogone_generate_shasign(tx.acquirer_id, 'in', tx_data)
- tx_data['SHASIGN'] = shasign
- return tx_data
+ for url in 'accept decline exception'.split():
+ key = '{0}_url'.format(url)
+ val = kwargs.pop(key, None)
+ if val:
+ key = '{0}URL'.format(url).upper()
+ data[key] = val
- def ogone_s2s_feedback(self, cr, uid, data, context=None):
- """
- .. versionadded:: pre-v8 saas-3
- .. warning::
+ data['SHASIGN'] = self.pool['payment.acquirer']._ogone_generate_shasign(tx.acquirer_id, 'in', data)
- Experimental code. You should not use it before OpenERP v8 official
- release.
- """
- pass
+ direct_order_url = 'https://secure.ogone.com/ncol/%s/orderdirect.asp' % (tx.acquirer_id.environment)
- def ogone_s2s_execute(self, cr, uid, id, values, context=None):
- """
- .. versionadded:: pre-v8 saas-3
- .. warning::
-
- Experimental code. You should not use it before OpenERP v8 official
- release.
- """
- tx = self.browse(cr, uid, id, context=context)
-
- tx_data = self.ogone_s2s_generate_values(cr, uid, id, values, context=context)
- _logger.info('Generated Ogone s2s data %s', pformat(tx_data)) # debug
-
- request = urllib2.Request(tx.acquirer_id.ogone_direct_order_url, urlencode(tx_data))
+ _logger.debug("Ogone data %s", pformat(data))
+ request = urllib2.Request(direct_order_url, urlencode(data))
result = urllib2.urlopen(request).read()
- _logger.info('Contacted Ogone direct order; result %s', result) # debug
+ _logger.debug('Ogone response = %s', result)
- tree = objectify.fromstring(result)
- payid = tree.get('PAYID')
+ try:
+ tree = objectify.fromstring(result)
+ except etree.XMLSyntaxError:
+ # invalid response from ogone
+ _logger.exception('Invalid xml response from ogone')
+ raise
- query_direct_data = dict(
- PSPID=tx.acquirer_id.ogone_pspid,
- USERID=tx.acquirer_id.ogone_userid,
- PSWD=tx.acquirer_id.ogone_password,
- ID=payid,
- )
- query_direct_url = 'https://secure.ogone.com/ncol/%s/querydirect.asp' % (tx.acquirer_id.environment,)
+ return self._ogone_s2s_validate_tree(tx, tree)
+
+ def _ogone_s2s_validate(self, tx):
+ tree = self._ogone_s2s_get_tx_status(tx)
+ return self.ogone_s2s_validate(tx, tree)
+
+ def _ogone_s2s_validate_tree(self, tx, tree, tries=2):
+ if tx.state not in ('draft', 'pending'):
+ return True # already validated
+
+ status = int(tree.get('STATUS', '0'))
+ if status in self._ogone_valid_tx_status:
+ tx.write({
+ 'state': 'done',
+ 'date_validate': datetime.date.today().strftime(DEFAULT_SERVER_DATE_FORMAT),
+ 'acquirer_reference': tree.get('PAYID'),
+ })
+ if tx.s2s_cb_eval:
+ safe_eval(tx.s2s_cb_eval, {'self': tx})
+ return True
+ elif status in self._ogone_cancel_tx_status:
+ tx.write({
+ 'state': 'cancel',
+ 'acquirer_reference': tree.get('PAYID'),
+ })
+ elif status in self._ogone_pending_tx_status:
+ tx.write({
+ 'state': 'pending',
+ 'acquirer_reference': tree.get('PAYID'),
+ 'html_3ds': str(tree.HTML_ANSWER).decode('base64')
+ })
+ elif status in self._ogone_wait_tx_status and tries > 0:
+ time.sleep(1500)
+ tx.write({'acquirer_reference': tree.get('PAYID')})
+ tree = self._ogone_s2s_get_tx_status(tx)
+ return self.ogone_s2s_validate(tx, tree, tries - 1)
+ else:
+ error = 'Ogone: feedback error: %(error_str)s\n\n%(error_code)s: %(error_msg)s' % {
+ 'error_str': tree.get('NCERROR'),
+ 'error_code': tree.get('NCERRORPLUS'),
+ 'error_msg': ogone.OGONE_ERROR_MAP.get(tree.get('NCERRORPLUS')),
+ }
+ _logger.info(error)
+ tx.write({
+ 'state': 'error',
+ 'state_message': error,
+ 'acquirer_reference': tree.get('PAYID'),
+ })
+ return False
+
+ def _ogone_s2s_get_tx_status(self, tx):
+ account = tx.acquirer_id
+ #reference = tx.reference or "ODOO-%s-%s" % (datetime.datetime.now().strftime('%Y%m%d_%H%M%S'), tx.partner_id.id)
+
+ data = {
+ 'PAYID': tx.acquirer_reference,
+ 'PSPID': account.ogone_pspid,
+ 'USERID': account.ogone_userid,
+ 'PSWD': account.ogone_password,
+ }
+
+ query_direct_url = 'https://secure.ogone.com/ncol/%s/querydirect.asp' % (tx.acquirer_id.environment)
+
+ _logger.debug("Ogone data %s", pformat(data))
+ request = urllib2.Request(query_direct_url, urlencode(data))
+ result = urllib2.urlopen(request).read()
+ _logger.debug('Ogone response = %s', result)
+
+ try:
+ tree = objectify.fromstring(result)
+ except etree.XMLSyntaxError:
+ # invalid response from ogone
+ _logger.exception('Invalid xml response from ogone')
+ raise
+
+ return tree
+
+
+class PaymentMethod(osv.Model):
+ _inherit = 'payment.method'
+
+ def ogone_create(self, cr, uid, values, context=None):
+ if values.get('cc_number'):
+ # create a alias via batch
+ values['cc_number'] = values['cc_number'].replace(' ', '')
+ acquirer = self.pool['payment.acquirer'].browse(cr, uid, values['acquirer_id'])
+ alias = 'ODOO-NEW-ALIAS-%s' % time.time()
+
+ expiry = str(values['cc_expiry'][:2]) + str(values['cc_expiry'][-2:])
+ line = 'ADDALIAS;%(alias)s;%(cc_holder_name)s;%(cc_number)s;%(expiry)s;%(cc_brand)s;%(pspid)s'
+ line = line % dict(values, alias=alias, expiry=expiry, pspid=acquirer.ogone_pspid)
+
+ data = {
+ 'FILE_REFERENCE': alias,
+ 'TRANSACTION_CODE': 'ATR',
+ 'OPERATION': 'SAL',
+ 'NB_PAYMENTS': 1, # even if we do not actually have any payment, ogone want it to not be 0
+ 'FILE': line,
+ 'REPLY_TYPE': 'XML',
+ 'PSPID': acquirer.ogone_pspid,
+ 'USERID': acquirer.ogone_userid,
+ 'PSWD': acquirer.ogone_password,
+ 'PROCESS_MODE': 'CHECKANDPROCESS',
+ }
+
+ url = 'https://secure.ogone.com/ncol/%s/AFU_agree.asp' % (acquirer.environment,)
+ request = urllib2.Request(url, urlencode(data))
+
+ result = urllib2.urlopen(request).read()
- tries = 2
- tx_done = False
- tx_status = False
- while not tx_done or tries > 0:
try:
tree = objectify.fromstring(result)
except etree.XMLSyntaxError:
- # invalid response from ogone
_logger.exception('Invalid xml response from ogone')
- raise
+ return None
- # see https://secure.ogone.com/ncol/paymentinfos1.asp
- VALID_TX = [5, 9]
- WAIT_TX = [41, 50, 51, 52, 55, 56, 91, 92, 99]
- PENDING_TX = [46] # 3DS HTML response
- # other status are errors...
-
- status = tree.get('STATUS')
- if status == '':
- status = None
+ error_code = error_str = None
+ if hasattr(tree, 'PARAMS_ERROR'):
+ error_code = tree.NCERROR.text
+ error_str = 'PARAMS ERROR: %s' % (tree.PARAMS_ERROR.text or '',)
else:
- status = int(status)
+ node = tree.FORMAT_CHECK
+ error_node = getattr(node, 'FORMAT_CHECK_ERROR', None)
+ if error_node is not None:
+ error_code = error_node.NCERROR.text
+ error_str = 'CHECK ERROR: %s' % (error_node.ERROR.text or '',)
- if status in VALID_TX:
- tx_status = True
- tx_done = True
+ if error_code:
+ error_msg = tree.get(error_code)
+ error = '%s\n\n%s: %s' % (error_str, error_code, error_msg)
+ _logger.error(error)
+ raise Exception(error)
- elif status in PENDING_TX:
- html = str(tree.HTML_ANSWER)
- tx_data.update(ogone_3ds_html=html.decode('base64'))
- tx_status = False
- tx_done = True
-
- elif status in WAIT_TX:
- time.sleep(1500)
-
- request = urllib2.Request(query_direct_url, urlencode(query_direct_data))
- result = urllib2.urlopen(request).read()
- _logger.debug('Contacted Ogone query direct; result %s', result)
-
- else:
- error_code = tree.get('NCERROR')
- if not ogone.retryable(error_code):
- error_str = tree.get('NCERRORPLUS')
- error_msg = ogone.OGONE_ERROR_MAP.get(error_code)
- error = 'ERROR: %s\n\n%s: %s' % (error_str, error_code, error_msg)
- _logger.info(error)
- raise Exception(error)
-
- tries = tries - 1
-
- if not tx_done and tries == 0:
- raise Exception('Cannot get transaction status...')
-
- return tx_status
+ return {
+ 'acquirer_ref': alias,
+ 'name': 'XXXXXXXXXXXX%s - %s' % (values['cc_number'][-4:], values['cc_holder_name'])
+ }
+ return {}
diff --git a/addons/payment_ogone/views/ogone.xml b/addons/payment_ogone/views/ogone.xml
index 48480da23eb..a6dcd4f5624 100644
--- a/addons/payment_ogone/views/ogone.xml
+++ b/addons/payment_ogone/views/ogone.xml
@@ -1,6 +1,6 @@
-
+
+
+
+
+
diff --git a/addons/payment_ogone/views/payment_acquirer.xml b/addons/payment_ogone/views/payment_acquirer.xml
index f297eb9431a..83eebb91a01 100644
--- a/addons/payment_ogone/views/payment_acquirer.xml
+++ b/addons/payment_ogone/views/payment_acquirer.xml
@@ -14,29 +14,11 @@
+
-
- acquirer.transaction.form.ogone
- payment.transaction
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
diff --git a/addons/point_of_sale/point_of_sale.py b/addons/point_of_sale/point_of_sale.py
index 44821038973..93ec9156783 100644
--- a/addons/point_of_sale/point_of_sale.py
+++ b/addons/point_of_sale/point_of_sale.py
@@ -550,6 +550,16 @@ class pos_order(osv.osv):
_description = "Point of Sale"
_order = "id desc"
+ def _amount_line_tax(self, cr, uid, line, context=None):
+ taxes = line.product_id.taxes_id.filtered(lambda t: t.company_id.id == line.order_id.company_id.id)
+ price = line.price_unit * (1 - (line.discount or 0.0) / 100.0)
+ cur = line.order_id.pricelist_id.currency_id
+ taxes = taxes.compute_all(price, cur, line.qty, product=line.product_id, partner=line.order_id.partner_id or False)['taxes']
+ val = 0.0
+ for c in taxes:
+ val += c.get('amount', 0.0)
+ return val
+
def _order_fields(self, cr, uid, ui_order, context=None):
process_line = partial(self.pool['pos.order.line']._order_line_fields, cr, uid, context=context)
return {
@@ -689,10 +699,10 @@ class pos_order(osv.osv):
res[order.id]['amount_paid'] += payment.amount
res[order.id]['amount_return'] += (payment.amount < 0 and payment.amount or 0)
for line in order.lines:
- val1 += line.price_subtotal_incl
+ val1 += self._amount_line_tax(cr, uid, line, context=context)
val2 += line.price_subtotal
- res[order.id]['amount_tax'] = cur_obj.round(cr, uid, cur, val1-val2)
- res[order.id]['amount_total'] = cur_obj.round(cr, uid, cur, val1)
+ res[order.id]['amount_tax'] = cur_obj.round(cr, uid, cur, val1)
+ res[order.id]['amount_total'] = cur_obj.round(cr, uid, cur, val1+val2)
return res
_columns = {
@@ -1078,7 +1088,7 @@ class pos_order(osv.osv):
order_account = order.partner_id and \
order.partner_id.property_account_receivable_id and \
order.partner_id.property_account_receivable_id.id or \
- account_def and account_def.id or current_company.account_receivable.id
+ account_def and account_def.id
if move_id is None:
# Create an entry for the sale
diff --git a/addons/point_of_sale/point_of_sale_demo.xml b/addons/point_of_sale/point_of_sale_demo.xml
index 64b8cf95290..0a089379b24 100644
--- a/addons/point_of_sale/point_of_sale_demo.xml
+++ b/addons/point_of_sale/point_of_sale_demo.xml
@@ -58,6 +58,10 @@
Partner Services
+
+ Partner Services
+
+
Fruits
@@ -712,6 +716,114 @@
+
+ True
+ 850.00
+ Odoo Start Workshop
+ service
+
+
+
+
+
+ True
+ 999.99
+ Odoo Consulting
+ service
+
+
+
+
+
+ True
+ 999.99
+ Eezee-It
+ service
+
+
+
+
+
+ True
+ 999.99
+ Ekomurz.nl
+ service
+
+
+
+
+
+ True
+ 999.99
+ Acsone.eu
+
+
+
+
+
+ True
+ 999.99
+ Vauxoo.com
+ service
+
+
+
+
+
+ True
+ 999.99
+ Datalp.com
+ service
+
+
+
+
+
+ True
+ 999.99
+ camptocamp.com
+ service
+
+
+
+
+
+ True
+ 999.99
+ EGGS-solutions.fr
+ service
+
+
+
+
+
+ True
+ 3500.00
+ Odoo primary scoping & analysis package (£900, £450, £30)
+ service
+
+
+
+
+
+ True
+ 900.00
+ 3rd party system analysis
+ service
+
+
+
+
+
+ True
+ 30.00
+ Odoo enterprise agreement
+ service
+
+
+
+
+
diff --git a/addons/point_of_sale/static/src/js/gui.js b/addons/point_of_sale/static/src/js/gui.js
index 24e48732ede..cabe2ec1982 100644
--- a/addons/point_of_sale/static/src/js/gui.js
+++ b/addons/point_of_sale/static/src/js/gui.js
@@ -8,6 +8,7 @@ odoo.define('point_of_sale.gui', function (require) {
var core = require('web.core');
var Model = require('web.Model');
+var cordova = require('web.cordova');
var _t = core._t;
@@ -26,6 +27,7 @@ var Gui = core.Class.extend({
this.current_screen = null;
this.chrome.ready.then(function(){
+ cordova.posready();
self.close_other_tabs();
var order = self.pos.get_order();
if (order) {
@@ -333,6 +335,7 @@ var Gui = core.Class.extend({
this.chrome.loading_message(_t('Closing ...'));
this.pos.push_order().then(function(){
+ cordova.poslogout();
return new Model("ir.model.data").get_func("search_read")([['name', '=', 'action_client_pos_menu']], ['res_id'])
.pipe(function(res) {
window.location = '/web#action=' + res[0]['res_id'];
diff --git a/addons/point_of_sale/static/src/js/widget_base.js b/addons/point_of_sale/static/src/js/widget_base.js
index 7cdac2a5c83..e36c4964f6f 100644
--- a/addons/point_of_sale/static/src/js/widget_base.js
+++ b/addons/point_of_sale/static/src/js/widget_base.js
@@ -51,7 +51,7 @@ var PosBaseWidget = Widget.extend({
if (typeof amount === 'number') {
amount = round_di(amount,decimals).toFixed(decimals);
- amount = formats.format_value(parseFloat(amount), { type : 'float' });
+ amount = openerp.instances[this.session.name].web.format_value(round_di(amount, decimals), { type: 'float', digits: [69, decimals]});
}
return amount;
diff --git a/addons/product/pricelist.py b/addons/product/pricelist.py
index bcdcf1f3856..81147ce5a1d 100644
--- a/addons/product/pricelist.py
+++ b/addons/product/pricelist.py
@@ -24,7 +24,8 @@ class price_type(osv.osv):
ids = mf.search(cr, uid, [('model','in', (('product.product'),('product.template'))), ('ttype','=','float')], context=context)
res = []
for field in mf.browse(cr, uid, ids, context=context):
- res.append((field.name, field.field_description))
+ if not (field.name, field.field_description) in res:
+ res.append((field.name, field.field_description))
return res
def _get_field_currency(self, cr, uid, fname, ctx):
@@ -179,6 +180,7 @@ class product_pricelist(osv.osv):
def _price_rule_get_multi(self, cr, uid, pricelist, products_by_qty_by_partner, context=None):
context = context or {}
date = context.get('date') or time.strftime('%Y-%m-%d')
+ date = date[0:10]
products = map(lambda x: x[0], products_by_qty_by_partner)
currency_obj = self.pool.get('res.currency')
diff --git a/addons/product/product.py b/addons/product/product.py
index b4e56f8f325..599ad2b820f 100644
--- a/addons/product/product.py
+++ b/addons/product/product.py
@@ -7,8 +7,7 @@ import time
from _common import ceiling
-from openerp import SUPERUSER_ID
-from openerp import tools
+from openerp import api, tools, SUPERUSER_ID
from openerp.osv import osv, fields, expression
from openerp.tools.translate import _
from openerp.tools import DEFAULT_SERVER_DATETIME_FORMAT
@@ -207,19 +206,17 @@ class product_ul(osv.osv):
#----------------------------------------------------------
class product_category(osv.osv):
- def name_get(self, cr, uid, ids, context=None):
- if isinstance(ids, (list, tuple)) and not len(ids):
- return []
- if isinstance(ids, (long, int)):
- ids = [ids]
- reads = self.read(cr, uid, ids, ['name','parent_id'], context=context)
- res = []
- for record in reads:
- name = record['name']
- if record['parent_id']:
- name = record['parent_id'][1]+' / '+name
- res.append((record['id'], name))
- return res
+ @api.multi
+ def name_get(self):
+ def get_names(cat):
+ """ Return the list [cat.name, cat.parent_id.name, ...] """
+ res = []
+ while cat:
+ res.append(cat.name)
+ cat = cat.parent_id
+ return res
+
+ return [(cat.id, " / ".join(reversed(get_names(cat)))) for cat in self]
def name_search(self, cr, uid, name, args=None, operator='ilike', context=None, limit=100):
if not args:
diff --git a/addons/product/product_view.xml b/addons/product/product_view.xml
index 53a190e991d..68f8cb753ce 100644
--- a/addons/product/product_view.xml
+++ b/addons/product/product_view.xml
@@ -109,8 +109,8 @@
-
-
+
+
diff --git a/addons/product_extended/product_extended.py b/addons/product_extended/product_extended.py
index 6734fe0d1c2..29b660fce6e 100644
--- a/addons/product_extended/product_extended.py
+++ b/addons/product_extended/product_extended.py
@@ -58,8 +58,9 @@ class product_template(osv.osv):
for sbom in bom.bom_line_ids:
my_qty = sbom.product_qty
if not sbom.attribute_value_ids:
+ bom_product = sbom.product_id
# No attribute_value_ids means the bom line is not variant specific
- price += uom_obj._compute_price(cr, uid, sbom.product_id.uom_id.id, sbom.product_id.standard_price, sbom.product_uom.id) * my_qty
+ price += uom_obj._compute_price(cr, uid, bom_product.uom_po_id and bom_product.uom_po_id.id or bom_product.uom_id.id, bom_product.standard_price, sbom.product_uom.id) * my_qty
if bom.routing_id:
for wline in bom.routing_id.workcenter_lines:
diff --git a/addons/project/project_view.xml b/addons/project/project_view.xml
index bdbac030c0e..84166453c53 100644
--- a/addons/project/project_view.xml
+++ b/addons/project/project_view.xml
@@ -190,7 +190,7 @@
-
+
diff --git a/addons/project/report/project_report_view.xml b/addons/project/report/project_report_view.xml
index c6544c3d7d4..6e0eff34a2d 100644
--- a/addons/project/report/project_report_view.xml
+++ b/addons/project/report/project_report_view.xml
@@ -20,7 +20,7 @@
report.project.task.user.graph
report.project.task.user
-
+
diff --git a/addons/project/tests/test_project_base.py b/addons/project/tests/test_project_base.py
index 7274a7741e0..44f6a6c2f9f 100644
--- a/addons/project/tests/test_project_base.py
+++ b/addons/project/tests/test_project_base.py
@@ -5,23 +5,24 @@ from openerp.addons.mail.tests.common import TestMail
class TestProjectBase(TestMail):
- def setUp(self):
- super(TestProjectBase, self).setUp()
+ @classmethod
+ def setUpClass(cls):
+ super(TestProjectBase, cls).setUpClass()
- user_group_employee = self.env.ref('base.group_user')
- user_group_project_user = self.env.ref('project.group_project_user')
- user_group_project_manager = self.env.ref('project.group_project_manager')
+ user_group_employee = cls.env.ref('base.group_user')
+ user_group_project_user = cls.env.ref('project.group_project_user')
+ user_group_project_manager = cls.env.ref('project.group_project_manager')
# Test users to use through the various tests
- Users = self.env['res.users'].with_context({'no_reset_password': True})
- self.user_projectuser = Users.create({
+ Users = cls.env['res.users'].with_context({'no_reset_password': True})
+ cls.user_projectuser = Users.create({
'name': 'Armande ProjectUser',
'login': 'Armande',
'alias_name': 'armande',
'email': 'armande.projectuser@example.com',
'groups_id': [(6, 0, [user_group_employee.id, user_group_project_user.id])]
})
- self.user_projectmanager = Users.create({
+ cls.user_projectmanager = Users.create({
'name': 'Bastien ProjectManager',
'login': 'bastien',
'alias_name': 'bastien',
@@ -29,17 +30,17 @@ class TestProjectBase(TestMail):
'groups_id': [(6, 0, [user_group_employee.id, user_group_project_manager.id])]})
# Test 'Pigs' project
- self.project_pigs = self.env['project.project'].with_context({'mail_create_nolog': True}).create({
+ cls.project_pigs = cls.env['project.project'].with_context({'mail_create_nolog': True}).create({
'name': 'Pigs',
'privacy_visibility': 'public',
'alias_name': 'project+pigs',
- 'partner_id': self.user_employee_2.partner_id.id})
+ 'partner_id': cls.user_employee_2.partner_id.id})
# Already-existing tasks in Pigs
- self.task_1 = self.env['project.task'].with_context({'mail_create_nolog': True}).create({
+ cls.task_1 = cls.env['project.task'].with_context({'mail_create_nolog': True}).create({
'name': 'Pigs UserTask',
- 'user_id': self.user_projectuser.id,
- 'project_id': self.project_pigs.id})
- self.task_2 = self.env['project.task'].with_context({'mail_create_nolog': True}).create({
+ 'user_id': cls.user_projectuser.id,
+ 'project_id': cls.project_pigs.id})
+ cls.task_2 = cls.env['project.task'].with_context({'mail_create_nolog': True}).create({
'name': 'Pigs ManagerTask',
- 'user_id': self.user_projectmanager.id,
- 'project_id': self.project_pigs.id})
+ 'user_id': cls.user_projectmanager.id,
+ 'project_id': cls.project_pigs.id})
diff --git a/addons/project/tests/test_project_flow.py b/addons/project/tests/test_project_flow.py
index c18a4db4edf..e753687e00d 100644
--- a/addons/project/tests/test_project_flow.py
+++ b/addons/project/tests/test_project_flow.py
@@ -1,7 +1,7 @@
# -*- coding: utf-8 -*-
# Part of Odoo. See LICENSE file for full copyright and licensing details.
-from openerp.addons.project.tests.test_project_base import TestProjectBase
+from .test_project_base import TestProjectBase
from openerp.exceptions import AccessError
from openerp.tools import mute_logger
diff --git a/addons/project_timesheet/report/project_report_view.xml b/addons/project_timesheet/report/project_report_view.xml
index 35287e1f14f..d4f6f2fd90e 100644
--- a/addons/project_timesheet/report/project_report_view.xml
+++ b/addons/project_timesheet/report/project_report_view.xml
@@ -6,7 +6,7 @@
report.project.task.user
-
+
@@ -16,4 +16,4 @@
-
\ No newline at end of file
+
diff --git a/addons/purchase/purchase.py b/addons/purchase/purchase.py
index 280bf2b5be6..01a37e73b70 100644
--- a/addons/purchase/purchase.py
+++ b/addons/purchase/purchase.py
@@ -59,6 +59,8 @@ class purchase_order(osv.osv):
if purchase.order_line:
min_date=purchase.order_line[0].date_planned
for line in purchase.order_line:
+ if line.state == 'cancel':
+ continue
if line.date_planned < min_date:
min_date=line.date_planned
res[purchase.id]=min_date
@@ -112,10 +114,16 @@ class purchase_order(osv.osv):
result[line.order_id.id] = True
return result.keys()
+ def _get_purchase_order(self, cr, uid, ids, context=None):
+ result = {}
+ for order in self.browse(cr, uid, ids, context=context):
+ result[order.id] = True
+ return result.keys()
+
def _invoiced(self, cursor, user, ids, name, arg, context=None):
res = {}
for purchase in self.browse(cursor, user, ids, context=context):
- res[purchase.id] = all(line.invoiced for line in purchase.order_line)
+ res[purchase.id] = all(line.invoiced for line in purchase.order_line if line.state != 'cancel')
return res
def _get_journal(self, cr, uid, context=None):
@@ -250,6 +258,7 @@ class purchase_order(osv.osv):
'minimum_planned_date':fields.function(_minimum_planned_date, fnct_inv=_set_minimum_planned_date, string='Expected Date', type='datetime', select=True, help="This is computed as the minimum scheduled date of all purchase order lines' products.",
store = {
'purchase.order.line': (_get_order, ['date_planned'], 10),
+ 'purchase.order': (_get_purchase_order, ['order_line'], 10),
}
),
'amount_untaxed': fields.function(_amount_all, digits=0, string='Untaxed Amount',
@@ -339,7 +348,10 @@ class purchase_order(osv.osv):
order_line_ids = []
proc_obj = self.pool.get('procurement.order')
for order in self.browse(cr, uid, ids, context=context):
- order_line_ids += [po_line.id for po_line in order.order_line]
+ if status in ('draft', 'cancel'):
+ order_line_ids += [po_line.id for po_line in order.order_line]
+ else: # Do not change the status of already cancelled lines
+ order_line_ids += [po_line.id for po_line in order.order_line if po_line.state != 'cancel']
if order_line_ids:
line.write(cr, uid, order_line_ids, {'state': status}, context=context)
if order_line_ids and status == 'cancel':
@@ -429,7 +441,7 @@ class purchase_order(osv.osv):
for po in self.browse(cr, uid, ids, context=context):
if po.invoice_method == 'manual':
if not po.invoice_ids:
- context.update({'active_ids' : [line.id for line in po.order_line]})
+ context.update({'active_ids' : [line.id for line in po.order_line if line.state != 'cancel']})
wizard_obj.makeInvoices(cr, uid, [], context=context)
for po in self.browse(cr, uid, ids, context=context):
@@ -533,9 +545,9 @@ class purchase_order(osv.osv):
def wkf_confirm_order(self, cr, uid, ids, context=None):
todo = []
for po in self.browse(cr, uid, ids, context=context):
- if not po.order_line:
+ if not any(line.state != 'cancel' for line in po.order_line):
raise UserError(_('You cannot confirm a purchase order without any purchase order line.'))
- if po.invoice_method == 'picking' and not any([l.product_id and l.product_id.type in ('product', 'consu') for l in po.order_line]):
+ if po.invoice_method == 'picking' and not any([l.product_id and l.product_id.type in ('product', 'consu') and l.state != 'cancel' for l in po.order_line]):
raise osv.except_osv(
_('Error!'),
_("You cannot confirm a purchase order with Invoice Control Method 'Based on incoming shipments' that doesn't contain any stockable item."))
@@ -661,6 +673,8 @@ class purchase_order(osv.osv):
# generate invoice line correspond to PO line and link that to created invoice (inv_id) and PO line
inv_lines = []
for po_line in order.order_line:
+ if po_line.state == 'cancel':
+ continue
acc_id = self._choose_account_from_po_line(cr, uid, po_line, context=context)
inv_line_data = self._prepare_inv_line(cr, uid, acc_id, po_line, context=context)
inv_line_id = inv_line_obj.create(cr, uid, inv_line_data, context=context)
@@ -683,6 +697,8 @@ class purchase_order(osv.osv):
def has_stockable_product(self, cr, uid, ids, *args):
for order in self.browse(cr, uid, ids):
for order_line in order.order_line:
+ if order_line.state == 'cancel':
+ continue
if order_line.product_id and order_line.product_id.type in ('product', 'consu'):
return True
return False
@@ -790,6 +806,8 @@ class purchase_order(osv.osv):
new_group = self.pool.get("procurement.group").create(cr, uid, {'name': order.name, 'partner_id': order.partner_id.id}, context=context)
for order_line in order_lines:
+ if order_line.state == 'cancel':
+ continue
if not order_line.product_id:
continue
@@ -849,7 +867,7 @@ class purchase_order(osv.osv):
proc_obj = self.pool.get("procurement.order")
po_lines = []
for po in self.browse(cr, uid, ids, context=context):
- po_lines += [x.id for x in po.order_line]
+ po_lines += [x.id for x in po.order_line if x.state != 'cancel']
if po_lines:
procs = proc_obj.search(cr, uid, [('purchase_line_id', 'in', po_lines)], context=context)
if procs:
@@ -931,7 +949,8 @@ class purchase_order(osv.osv):
if porder.origin:
order_infos['origin'] = (order_infos['origin'] or '') + ' ' + porder.origin
- order_lines_to_move[order_key] += [order_line.id for order_line in porder.order_line]
+ order_lines_to_move[order_key] += [order_line.id for order_line in porder.order_line
+ if order_line.state != 'cancel']
allorders = []
orders_info = {}
@@ -1022,7 +1041,9 @@ class purchase_order_line(osv.osv):
procurement_obj = self.pool.get('procurement.order')
procurement_ids_to_except = procurement_obj.search(cr, uid, [('purchase_line_id', 'in', ids)], context=context)
if procurement_ids_to_except:
- self.pool['procurement.order'].write(cr, uid, procurement_ids_to_except, {'state': 'exception'}, context=context)
+ for po_id in procurement_ids_to_except:
+ procurement_obj.message_post(cr, uid, po_id, body=_('Purchase order line deleted.'), context=context)
+ procurement_obj.write(cr, uid, procurement_ids_to_except, {'state': 'exception'}, context=context)
return super(purchase_order_line, self).unlink(cr, uid, ids, context=context)
def onchange_product_uom(self, cr, uid, ids, pricelist_id, product_id, qty, uom_id,
@@ -1234,8 +1255,12 @@ class procurement_order(osv.osv):
return super(procurement_order, self).run(cr, uid, list(set_others), context=context)
def _check(self, cr, uid, procurement, context=None):
- if procurement.purchase_line_id and procurement.purchase_line_id.order_id.shipped: # TOCHECK: does it work for several deliveries?
- return True
+ if procurement.purchase_line_id:
+ if procurement.purchase_line_id.order_id.shipped:
+ return True
+ elif procurement.move_ids:
+ moves = self.pool.get('stock.move').browse(cr, uid, [x.id for x in procurement.move_ids], context=context)
+ return all(move.state == 'done' for move in moves)
return super(procurement_order, self)._check(cr, uid, procurement, context=context)
def _check_supplier_info(self, cr, uid, ids, context=None):
@@ -1330,7 +1355,7 @@ class procurement_order(osv.osv):
pricelist_id = partner.property_product_pricelist_purchase.id
prices_qty = []
for procurement in procurements:
- seller_qty = procurement.product_id.seller_qty
+ seller_qty = procurement.product_id.seller_qty if procurement.location_id.usage != 'customer' else 0.0
uom_id = procurement.product_id.uom_po_id.id
qty = uom_obj._compute_qty(cr, uid, procurement.product_uom.id, procurement.product_qty, uom_id)
if seller_qty:
@@ -1377,12 +1402,15 @@ class procurement_order(osv.osv):
qty = -qty
# Make sure we use the minimum quantity of the partner corresponding to the PO
- if po_line.product_id.seller_id.id == po_line.order_id.partner_id.id:
- supplierinfo_min_qty = po_line.product_id.seller_qty
- else:
- supplierinfo_obj = self.pool.get('product.supplierinfo')
- supplierinfo_ids = supplierinfo_obj.search(cr, uid, [('name', '=', po_line.order_id.partner_id.id), ('product_tmpl_id', '=', po_line.product_id.product_tmpl_id.id)])
- supplierinfo_min_qty = supplierinfo_obj.browse(cr, uid, supplierinfo_ids).min_qty
+ # This does not apply in case of dropshipping
+ supplierinfo_min_qty = 0.0
+ if po_line.order_id.location_id.usage != 'customer':
+ if po_line.product_id.seller_id.id == po_line.order_id.partner_id.id:
+ supplierinfo_min_qty = po_line.product_id.seller_qty
+ else:
+ supplierinfo_obj = self.pool.get('product.supplierinfo')
+ supplierinfo_ids = supplierinfo_obj.search(cr, uid, [('name', '=', po_line.order_id.partner_id.id), ('product_tmpl_id', '=', po_line.product_id.product_tmpl_id.id)])
+ supplierinfo_min_qty = supplierinfo_obj.browse(cr, uid, supplierinfo_ids).min_qty
if supplierinfo_min_qty == 0.0:
qty += po_line.product_qty
diff --git a/addons/purchase/purchase_workflow.xml b/addons/purchase/purchase_workflow.xml
index fe6b5a3f045..771bed2685a 100644
--- a/addons/purchase/purchase_workflow.xml
+++ b/addons/purchase/purchase_workflow.xml
@@ -220,6 +220,12 @@
invoiced
+
+
+
+ purchase_cancel
+ invoice_method<>'order'
+
diff --git a/addons/purchase/report/purchase_report.py b/addons/purchase/report/purchase_report.py
index 7e348e2526a..4e020455eb4 100644
--- a/addons/purchase/report/purchase_report.py
+++ b/addons/purchase/report/purchase_report.py
@@ -55,7 +55,7 @@ class purchase_report(osv.osv):
select
min(l.id) as id,
s.date_order as date,
- s.state,
+ l.state,
s.date_approve,
s.minimum_planned_date as expected_date,
s.dest_address_id,
@@ -111,7 +111,7 @@ class purchase_report(osv.osv):
p.product_tmpl_id,
t.categ_id,
s.date_order,
- s.state,
+ l.state,
spt.warehouse_id,
u.uom_type,
u.category_id,
diff --git a/addons/purchase/stock.py b/addons/purchase/stock.py
index f419a11e2bc..c614f1e8096 100644
--- a/addons/purchase/stock.py
+++ b/addons/purchase/stock.py
@@ -76,10 +76,10 @@ class stock_move(osv.osv):
return invoice_line_id
def _get_master_data(self, cr, uid, move, company, context=None):
- if move.purchase_line_id:
+ if context.get('inv_type') in ('in_invoice', 'in_refund') and move.purchase_line_id:
purchase_order = move.purchase_line_id.order_id
return purchase_order.partner_id, purchase_order.create_uid.id, purchase_order.currency_id.id
- elif move.picking_id:
+ elif context.get('inv_type') in ('in_invoice', 'in_refund') and move.picking_id:
# In case of an extra move, it is better to use the data from the original moves
for purchase_move in move.picking_id.move_lines:
if purchase_move.purchase_line_id:
@@ -96,18 +96,26 @@ class stock_move(osv.osv):
def _get_invoice_line_vals(self, cr, uid, move, partner, inv_type, context=None):
res = super(stock_move, self)._get_invoice_line_vals(cr, uid, move, partner, inv_type, context=context)
- if move.purchase_line_id:
+ if inv_type in ('in_invoice', 'in_refund') and move.purchase_line_id:
purchase_line = move.purchase_line_id
res['invoice_line_tax_ids'] = [(6, 0, [x.id for x in purchase_line.taxes_id])]
res['price_unit'] = purchase_line.price_unit
return res
- def _get_moves_taxes(self, cr, uid, moves, context=None):
- is_extra_move, extra_move_tax = super(stock_move, self)._get_moves_taxes(cr, uid, moves, context=context)
- for move in moves:
- if move.purchase_line_id:
- is_extra_move[move.id] = False
- extra_move_tax[move.picking_id, move.product_id] = [(6, 0, [x.id for x in move.purchase_line_id.taxes_id])]
+ def _get_moves_taxes(self, cr, uid, moves, inv_type, context=None):
+ is_extra_move, extra_move_tax = super(stock_move, self)._get_moves_taxes(cr, uid, moves, inv_type, context=context)
+ if inv_type == 'in_invoice':
+ for move in moves:
+ if move.purchase_line_id:
+ is_extra_move[move.id] = False
+ extra_move_tax[move.picking_id, move.product_id] = [(6, 0, [x.id for x in move.purchase_line_id.taxes_id])]
+ elif move.product_id.product_tmpl_id.supplier_taxes_id:
+ mov_id = self.search(cr, uid, [('purchase_line_id', '!=', False), ('picking_id', '=', move.picking_id.id)], limit=1, context=context)
+ if mov_id:
+ mov = self.browse(cr, uid, mov_id[0], context=context)
+ fp = mov.purchase_line_id.order_id.fiscal_position
+ res = self.pool.get("account.invoice.line").product_id_change(cr, uid, [], move.product_id.id, None, partner_id=move.picking_id.partner_id.id, fposition_id=(fp and fp.id), type='in_invoice', context=context)
+ extra_move_tax[0, move.product_id] = [(6, 0, res['value']['invoice_line_tax_id'])]
return (is_extra_move, extra_move_tax)
diff --git a/addons/purchase_requisition/purchase_requisition.py b/addons/purchase_requisition/purchase_requisition.py
index 7f869e0a849..f4d7d4536dc 100644
--- a/addons/purchase_requisition/purchase_requisition.py
+++ b/addons/purchase_requisition/purchase_requisition.py
@@ -147,7 +147,7 @@ class purchase_requisition(osv.osv):
vals = po_line_obj.onchange_product_id(
cr, uid, [], supplier_pricelist, product.id, qty, default_uom_po_id,
supplier.id, date_order=date_order,
- fiscal_position_id=supplier.property_account_position_id,
+ fiscal_position_id=supplier.property_account_position_id.id,
date_planned=requisition_line.schedule_date,
name=False, price_unit=False, state='draft', context=context)['value']
vals.update({
diff --git a/addons/sale/sale.py b/addons/sale/sale.py
index f50a6cf6731..cc39ce94293 100644
--- a/addons/sale/sale.py
+++ b/addons/sale/sale.py
@@ -248,12 +248,11 @@ class sale_order(osv.osv):
def onchange_delivery_id(self, cr, uid, ids, company_id, partner_id, delivery_id, fiscal_position_id, context=None):
r = {'value': {}}
- if not fiscal_position_id:
- if not company_id:
- company_id = self._get_default_company(cr, uid, context=context)
- fiscal_position = self.pool['account.fiscal.position'].get_fiscal_position(cr, uid, partner_id, delivery_id, context=context)
- if fiscal_position:
- r['value']['fiscal_position_id'] = fiscal_position
+ if not company_id:
+ company_id = self._get_default_company(cr, uid, context=context)
+ fiscal_position = self.pool['account.fiscal.position'].get_fiscal_position(cr, uid, partner_id, delivery_id, context=context)
+ if fiscal_position:
+ r['value']['fiscal_position_id'] = fiscal_position
return r
def onchange_partner_id(self, cr, uid, ids, part, context=None):
@@ -286,7 +285,7 @@ class sale_order(osv.osv):
if context is None:
context = {}
if vals.get('name', '/') == '/':
- vals['name'] = self.pool.get('ir.sequence').next_by_code(cr, uid, 'sale.order') or '/'
+ vals['name'] = self.pool.get('ir.sequence').next_by_code(cr, uid, 'sale.order', context=context) or '/'
if vals.get('partner_id') and any(f not in vals for f in ['partner_invoice_id', 'partner_shipping_id', 'pricelist_id', 'fiscal_position_id']):
defaults = self.onchange_partner_id(cr, uid, [], vals['partner_id'], context=context)['value']
if not vals.get('fiscal_position_id') and vals.get('partner_shipping_id'):
diff --git a/addons/sale/sale_view.xml b/addons/sale/sale_view.xml
index 8e2a77535a3..1aca6e50f45 100644
--- a/addons/sale/sale_view.xml
+++ b/addons/sale/sale_view.xml
@@ -512,6 +512,8 @@
+
+
@@ -585,6 +587,7 @@
Sales Order Lines
sale.order.line
+ {'search_default_confirmed': 1}
product.product.sale.order
diff --git a/addons/sale_stock/sale_stock.py b/addons/sale_stock/sale_stock.py
index 95c8f28e13b..335f9df7b89 100644
--- a/addons/sale_stock/sale_stock.py
+++ b/addons/sale_stock/sale_stock.py
@@ -363,7 +363,7 @@ class stock_move(osv.osv):
def _create_invoice_line_from_vals(self, cr, uid, move, invoice_line_vals, context=None):
invoice_line_id = super(stock_move, self)._create_invoice_line_from_vals(cr, uid, move, invoice_line_vals, context=context)
- if move.procurement_id and move.procurement_id.sale_line_id:
+ if context.get('inv_type') in ('out_invoice', 'out_refund') and move.procurement_id and move.procurement_id.sale_line_id:
sale_line = move.procurement_id.sale_line_id
self.pool.get('sale.order.line').write(cr, uid, [sale_line.id], {
'invoice_lines': [(4, invoice_line_id)]
@@ -381,7 +381,7 @@ class stock_move(osv.osv):
return invoice_line_id
def _get_master_data(self, cr, uid, move, company, context=None):
- if move.procurement_id and move.procurement_id.sale_line_id and move.procurement_id.sale_line_id.order_id.order_policy == 'picking':
+ if context.get('inv_type') in ('out_invoice', 'out_refund') and move.procurement_id and move.procurement_id.sale_line_id and move.procurement_id.sale_line_id.order_id.order_policy == 'picking':
sale_order = move.procurement_id.sale_line_id.order_id
return sale_order.partner_invoice_id, sale_order.user_id.id, sale_order.pricelist_id.currency_id.id
elif move.picking_id.sale_id and context.get('inv_type') in ('out_invoice', 'out_refund'):
@@ -408,12 +408,17 @@ class stock_move(osv.osv):
res['price_unit'] = res['price_unit'] / uos_coeff
return res
- def _get_moves_taxes(self, cr, uid, moves, context=None):
- is_extra_move, extra_move_tax = super(stock_move, self)._get_moves_taxes(cr, uid, moves, context=context)
- for move in moves:
- if move.procurement_id and move.procurement_id.sale_line_id:
- is_extra_move[move.id] = False
- extra_move_tax[move.picking_id, move.product_id] = [(6, 0, [x.id for x in move.procurement_id.sale_line_id.tax_id])]
+ def _get_moves_taxes(self, cr, uid, moves, inv_type, context=None):
+ is_extra_move, extra_move_tax = super(stock_move, self)._get_moves_taxes(cr, uid, moves, inv_type, context=context)
+ if inv_type == 'out_invoice':
+ for move in moves:
+ if move.procurement_id and move.procurement_id.sale_line_id:
+ is_extra_move[move.id] = False
+ extra_move_tax[move.picking_id, move.product_id] = [(6, 0, [x.id for x in move.procurement_id.sale_line_id.tax_id])]
+ elif move.picking_id.sale_id and move.product_id.product_tmpl_id.taxes_id:
+ fp = move.picking_id.sale_id.fiscal_position
+ res = self.pool.get("account.invoice.line").product_id_change(cr, uid, [], move.product_id.id, None, partner_id=move.picking_id.partner_id.id, fposition_id=(fp and fp.id), context=context)
+ extra_move_tax[0, move.product_id] = [(6, 0, res['value']['invoice_line_tax_id'])]
return (is_extra_move, extra_move_tax)
def _get_taxes(self, cr, uid, move, context=None):
diff --git a/addons/stock/procurement.py b/addons/stock/procurement.py
index 0c816bb0501..55ffe10b6ec 100644
--- a/addons/stock/procurement.py
+++ b/addons/stock/procurement.py
@@ -156,11 +156,10 @@ class procurement_order(osv.osv):
if old_proc == proc:
key += (route,)
else:
- if key:
- if key_routes.get(key):
- key_routes[key] += [old_proc]
- else:
- key_routes[key] = [old_proc]
+ if key_routes.get(key):
+ key_routes[key] += [old_proc]
+ else:
+ key_routes[key] = [old_proc]
old_proc = proc
key = (route,)
if proc: #do not forget last one as we passed through it
@@ -537,4 +536,4 @@ class procurement_order(osv.osv):
if use_new_cursor:
cr.commit()
cr.close()
- return {}
\ No newline at end of file
+ return {}
diff --git a/addons/stock/stock.py b/addons/stock/stock.py
index 4f96d0db47c..dd531491c38 100644
--- a/addons/stock/stock.py
+++ b/addons/stock/stock.py
@@ -1071,11 +1071,20 @@ class stock_picking(models.Model):
# If we encounter an UoM that is smaller than the default UoM or the one already chosen, use the new one instead.
product_uom = {} # Determines UoM used in pack operations
+ location_dest_id = None
+ location_id = None
for move in [x for x in picking.move_lines if x.state not in ('done', 'cancel')]:
if not product_uom.get(move.product_id.id):
product_uom[move.product_id.id] = move.product_id.uom_id
if move.product_uom.id != move.product_id.uom_id.id and move.product_uom.factor > product_uom[move.product_id.id].factor:
product_uom[move.product_id.id] = move.product_uom
+ if not move.scrapped:
+ if location_dest_id and move.location_dest_id.id != location_dest_id:
+ raise UserError(_('The destination location must be the same for all the moves of the picking.'))
+ location_dest_id = move.location_dest_id.id
+ if location_id and move.location_id.id != location_id:
+ raise UserError(_('The source location must be the same for all the moves of the picking.'))
+ location_id = move.location_id.id
pack_obj = self.pool.get("stock.quant.package")
quant_obj = self.pool.get("stock.quant")
@@ -1177,7 +1186,7 @@ class stock_picking(models.Model):
picking_quants = []
#Calculate packages, reserved quants, qtys of this picking's moves
for move in picking.move_lines:
- if move.state not in ('assigned', 'confirmed'):
+ if move.state not in ('assigned', 'confirmed', 'waiting'):
continue
move_quants = move.reserved_quant_ids
picking_quants += move_quants
@@ -1349,6 +1358,8 @@ class stock_picking(models.Model):
#HALF-UP rounding as only rounding errors will be because of propagation of error from default UoM
qty = uom_obj._compute_qty_obj(cr, uid, product.uom_id, remaining_qty, op.product_uom_id, rounding_method='HALF-UP')
picking = op.picking_id
+ ref = product.default_code
+ name = '[' + ref + ']' + ' ' + product.name if ref else product.name
res = {
'picking_id': picking.id,
'location_id': picking.location_id.id,
@@ -1356,8 +1367,9 @@ class stock_picking(models.Model):
'product_id': product.id,
'product_uom': uom_id,
'product_uom_qty': qty,
- 'name': _('Extra Move: ') + product.name,
+ 'name': _('Extra Move: ') + name,
'state': 'draft',
+ 'restrict_partner_id': op.owner_id,
}
return res
@@ -1797,6 +1809,13 @@ class stock_move(osv.osv):
def _default_destination_address(self, cr, uid, context=None):
return False
+ def _default_group_id(self, cr, uid, context=None):
+ context = context or {}
+ if context.get('default_picking_id', False):
+ picking = self.pool.get('stock.picking').browse(cr, uid, context['default_picking_id'], context=context)
+ return picking.group_id.id
+ return False
+
_defaults = {
'partner_id': _default_destination_address,
'state': 'draft',
@@ -1810,6 +1829,7 @@ class stock_move(osv.osv):
'procure_method': 'make_to_stock',
'propagate': True,
'partially_available': False,
+ 'group_id': _default_group_id,
}
def _check_uom(self, cr, uid, ids, context=None):
@@ -1841,7 +1861,7 @@ class stock_move(osv.osv):
self.write(cr, uid, [move.id], {'state': 'confirmed'}, context=context)
def _prepare_procurement_from_move(self, cr, uid, move, context=None):
- origin = (move.group_id and (move.group_id.name + ":") or "") + (move.rule_id and move.rule_id.name or move.origin or "/")
+ origin = (move.group_id and (move.group_id.name + ":") or "") + (move.rule_id and move.rule_id.name or move.origin or move.picking_id.name or "/")
group_id = move.group_id and move.group_id.id or False
if move.rule_id:
if move.rule_id.group_propagation_option == 'fixed' and move.rule_id.group_id:
@@ -2044,6 +2064,21 @@ class stock_move(osv.osv):
result['location_dest_id'] = loc_dest_id
return {'value': result}
+ def _prepare_picking_assign(self, cr, uid, move, context=None):
+ """ Prepares a new picking for this move as it could not be assigned to
+ another picking. This method is designed to be inherited.
+ """
+ values = {
+ 'origin': move.origin,
+ 'company_id': move.company_id and move.company_id.id or False,
+ 'move_type': move.group_id and move.group_id.move_type or 'direct',
+ 'partner_id': move.partner_id.id or False,
+ 'picking_type_id': move.picking_type_id and move.picking_type_id.id or False,
+ 'location_id': move.location_id.id,
+ 'location_dest_id': move.location_dest_id.id,
+ }
+ return values
+
@api.cr_uid_ids_context
def _picking_assign(self, cr, uid, move_ids, procurement_group, location_from, location_to, context=None):
"""Assign a picking on the given move_ids, which is a list of move supposed to share the same procurement_group, location_from and location_to
@@ -2059,15 +2094,7 @@ class stock_move(osv.osv):
pick = picks[0]
else:
move = self.browse(cr, uid, move_ids, context=context)[0]
- values = {
- 'origin': move.origin,
- 'company_id': move.company_id and move.company_id.id or False,
- 'move_type': move.group_id and move.group_id.move_type or 'direct',
- 'partner_id': move.partner_id.id or False,
- 'picking_type_id': move.picking_type_id and move.picking_type_id.id or False,
- 'location_id': move.location_id.id,
- 'location_dest_id': move.location_dest_id.id,
- }
+ values = self._prepare_picking_assign(cr, uid, move, context=context)
pick = pick_obj.create(cr, uid, values, context=context)
return self.write(cr, uid, move_ids, {'picking_id': pick}, context=context)
@@ -2427,6 +2454,7 @@ class stock_move(osv.osv):
@param context: context arguments
@return: Scraped lines
"""
+ quant_obj = self.pool.get("stock.quant")
#quantity should be given in MOVE UOM
if quantity <= 0:
raise UserError(_('Please provide a positive quantity to scrap.'))
@@ -2461,6 +2489,18 @@ class stock_move(osv.osv):
message = _("%s %s %s has been moved to scrap.") % (quantity, uom, product.name)
move.picking_id.message_post(body=message)
+ # We "flag" the quant from which we want to scrap the products. To do so:
+ # - we select the quants related to the move we scrap from
+ # - we reserve the quants with the scrapped move
+ # See self.action_done, et particularly how is defined the "prefered_domain" for clarification
+ scrap_move = self.browse(cr, uid, new_move, context=context)
+ if move.state == 'done' and scrap_move.location_id.usage not in ('supplier', 'inventory', 'production'):
+ domain = [('qty', '>', 0), ('history_ids', 'in', [move.id])]
+ # We use scrap_move data since a reservation makes sense for a move not already done
+ quants = quant_obj.quants_get_prefered_domain(cr, uid, scrap_move.location_id,
+ scrap_move.product_id, quantity, domain=domain, prefered_domain_list=[],
+ restrict_lot_id=scrap_move.restrict_lot_id.id, restrict_partner_id=scrap_move.restrict_partner_id.id, context=context)
+ quant_obj.quants_reserve(cr, uid, quants, scrap_move, context=context)
self.action_done(cr, uid, res, context=context)
return res
@@ -2838,11 +2878,13 @@ class stock_inventory_line(osv.osv):
uom_obj = self.pool["product.uom"]
res = {'value': {}}
# If no UoM already put the default UoM of the product
- if product_id and not uom_id:
+ if product_id:
product = self.pool.get('product.product').browse(cr, uid, product_id, context=context)
- res['value']['product_uom_id'] = product.uom_id.id
- res['domain'] = {'product_uom_id': [('category_id','=',product.uom_id.category_id.id)]}
- uom_id = product.uom_id.id
+ uom = self.pool['product.uom'].browse(cr, uid, uom_id, context=context)
+ if product.uom_id.category_id.id != uom.category_id.id:
+ res['value']['product_uom_id'] = product.uom_id.id
+ res['domain'] = {'product_uom_id': [('category_id','=',product.uom_id.category_id.id)]}
+ uom_id = product.uom_id.id
# Calculate theoretical quantity by searching the quants as in quants_get
if product_id and location_id:
product = self.pool.get('product.product').browse(cr, uid, product_id, context=context)
@@ -2855,6 +2897,7 @@ class stock_inventory_line(osv.osv):
if product_id and uom_id and product.uom_id.id != uom_id:
th_qty = uom_obj._compute_qty(cr, uid, product.uom_id.id, th_qty, uom_id)
res['value']['theoretical_qty'] = th_qty
+ res['value']['product_qty'] = th_qty
return res
def _resolve_inventory_line(self, cr, uid, inventory_line, context=None):
@@ -4462,18 +4505,12 @@ class stock_picking_type(osv.osv):
type='integer', multi='_get_picking_count'),
# Barcode nomenclature
- 'barcode_nomenclature_id': fields.many2one('barcode.nomenclature','Barcode Nomenclature', help='A barcode nomenclature', required=True),
+ 'barcode_nomenclature_id': fields.many2one('barcode.nomenclature','Barcode Nomenclature', help='A barcode nomenclature'),
}
- def _get_default_nomenclature(self, cr, uid, context=None):
- nom_obj = self.pool.get('barcode.nomenclature')
- res = nom_obj.search(cr, uid, [], limit=1, context=context)
- return res and res[0] or False
-
_defaults = {
'warehouse_id': _default_warehouse,
'active': True,
- 'barcode_nomenclature_id': _get_default_nomenclature,
}
class barcode_rule(models.Model):
diff --git a/addons/stock/stock_view.xml b/addons/stock/stock_view.xml
index 69c7e84a889..b53f0b9bdd5 100644
--- a/addons/stock/stock_view.xml
+++ b/addons/stock/stock_view.xml
@@ -1185,6 +1185,7 @@
+
diff --git a/addons/stock/wizard/stock_return_picking.py b/addons/stock/wizard/stock_return_picking.py
index 4488358de79..c7cb604e682 100644
--- a/addons/stock/wizard/stock_return_picking.py
+++ b/addons/stock/wizard/stock_return_picking.py
@@ -40,6 +40,9 @@ class stock_return_picking(osv.osv_memory):
result1 = []
if context is None:
context = {}
+ if context and context.get('active_ids', False):
+ if len(context.get('active_ids')) > 1:
+ raise osv.except_osv(_('Warning!'), _("You may only return one picking at a time!"))
res = super(stock_return_picking, self).default_get(cr, uid, fields, context=context)
record_id = context and context.get('active_id', False) or False
uom_obj = self.pool.get('product.uom')
@@ -132,6 +135,8 @@ class stock_return_picking(osv.osv_memory):
'state': 'draft',
'location_id': move.location_dest_id.id,
'location_dest_id': move.location_id.id,
+ 'picking_type_id': pick_type_id,
+ 'warehouse_id': pick.picking_type_id.warehouse_id.id,
'origin_returned_move_id': move.id,
'procure_method': 'make_to_stock',
'restrict_lot_id': data_get.lot_id.id,
diff --git a/addons/stock_account/stock.py b/addons/stock_account/stock.py
index e4355a0e7fa..ec362222fbc 100644
--- a/addons/stock_account/stock.py
+++ b/addons/stock_account/stock.py
@@ -145,7 +145,7 @@ class stock_move(osv.osv):
'move_id': move.id,
}
- def _get_moves_taxes(self, cr, uid, moves, context=None):
+ def _get_moves_taxes(self, cr, uid, moves, inv_type, context=None):
#extra moves with the same picking_id and product_id of a move have the same taxes
extra_move_tax = {}
is_extra_move = {}
@@ -295,7 +295,7 @@ class stock_picking(osv.osv):
invoice_obj = self.pool.get('account.invoice')
move_obj = self.pool.get('stock.move')
invoices = {}
- is_extra_move, extra_move_tax = move_obj._get_moves_taxes(cr, uid, moves, context=context)
+ is_extra_move, extra_move_tax = move_obj._get_moves_taxes(cr, uid, moves, inv_type, context=context)
product_price_unit = {}
for move in moves:
company = move.company_id
@@ -323,11 +323,18 @@ class stock_picking(osv.osv):
invoice_line_vals['invoice_id'] = invoices[key]
invoice_line_vals['origin'] = origin
if not is_extra_move[move.id]:
- product_price_unit[invoice_line_vals['product_id']] = invoice_line_vals['price_unit']
- if is_extra_move[move.id] and invoice_line_vals['product_id'] in product_price_unit:
- invoice_line_vals['price_unit'] = product_price_unit[invoice_line_vals['product_id']]
- if is_extra_move[move.id] and extra_move_tax[move.picking_id, move.product_id]:
- invoice_line_vals['invoice_line_tax_ids'] = extra_move_tax[move.picking_id, move.product_id]
+ product_price_unit[invoice_line_vals['product_id'], invoice_line_vals['uos_id']] = invoice_line_vals['price_unit']
+ if is_extra_move[move.id] and (invoice_line_vals['product_id'], invoice_line_vals['uos_id']) in product_price_unit:
+ invoice_line_vals['price_unit'] = product_price_unit[invoice_line_vals['product_id'], invoice_line_vals['uos_id']]
+ if is_extra_move[move.id]:
+ desc = (inv_type in ('out_invoice', 'out_refund') and move.product_id.product_tmpl_id.description_sale) or \
+ (inv_type in ('in_invoice','in_refund') and move.product_id.product_tmpl_id.description_purchase)
+ invoice_line_vals['name'] += ' ' + desc if desc else ''
+ if extra_move_tax[move.picking_id, move.product_id]:
+ invoice_line_vals['invoice_line_tax_ids'] = extra_move_tax[move.picking_id, move.product_id]
+ #the default product taxes
+ elif (0, move.product_id) in extra_move_tax:
+ invoice_line_vals['invoice_line_tax_ids'] = extra_move_tax[0, move.product_id]
move_obj._create_invoice_line_from_vals(cr, uid, move, invoice_line_vals, context=context)
move_obj.write(cr, uid, move.id, {'invoice_state': 'invoiced'}, context=context)
diff --git a/addons/stock_account/stock_account.py b/addons/stock_account/stock_account.py
index 86c02ef236e..bf6ba6e18a9 100644
--- a/addons/stock_account/stock_account.py
+++ b/addons/stock_account/stock_account.py
@@ -63,7 +63,13 @@ class account_invoice_line(osv.osv):
if not cacc:
cacc = i_line.product_id.categ_id.property_account_expense_categ_id and i_line.product_id.categ_id.property_account_expense_categ_id.id
if dacc and cacc:
- price_unit = i_line.move_id and i_line.move_id.price_unit or i_line.product_id.standard_price
+ if i_line.move_id:
+ price = i_line.move_id.product_id.standard_price
+ from_unit = i_line.move_id.product_tmpl_id.uom_id.id
+ to_unit = i_line.move_id.product_uom.id
+ price_unit = self.pool['product.uom']._compute_price(cr, uid, from_unit, price, to_uom_id=to_unit)
+ else:
+ price_unit = i_line.product_id.standard_pric
return [
{
'type':'src',
diff --git a/addons/stock_account/wizard/stock_invoice_onshipping.py b/addons/stock_account/wizard/stock_invoice_onshipping.py
index 302492008c1..b284755611a 100644
--- a/addons/stock_account/wizard/stock_invoice_onshipping.py
+++ b/addons/stock_account/wizard/stock_invoice_onshipping.py
@@ -5,6 +5,15 @@ from openerp.osv import fields, osv
from openerp.tools.translate import _
from openerp.exceptions import UserError
+INVOICE_TYPE_MAP = {
+ ('outgoing', 'customer'): ['out_invoice'],
+ ('outgoing', 'supplier'): ['in_refund'],
+ ('outgoing', 'transit'): ['out_invoice', 'in_refund'],
+ ('incoming', 'supplier'): ['in_invoice'],
+ ('incoming', 'customer'): ['out_refund'],
+ ('incoming', 'transit'): ['in_invoice', 'out_refund'],
+}
+
class stock_invoice_onshipping(osv.osv_memory):
def _get_journal(self, cr, uid, context=None):
@@ -26,20 +35,10 @@ class stock_invoice_onshipping(osv.osv_memory):
pick = pickings and pickings[0]
if not pick or not pick.move_lines:
return 'out_invoice'
- src_usage = pick.move_lines[0].location_id.usage
- dest_usage = pick.move_lines[0].location_dest_id.usage
type = pick.picking_type_id.code
- if type == 'outgoing' and dest_usage == 'supplier':
- invoice_type = 'in_refund'
- elif type == 'outgoing' and dest_usage == 'customer':
- invoice_type = 'out_invoice'
- elif type == 'incoming' and src_usage == 'supplier':
- invoice_type = 'in_invoice'
- elif type == 'incoming' and src_usage == 'customer':
- invoice_type = 'out_refund'
- else:
- invoice_type = 'out_invoice'
- return invoice_type
+ usage = pick.move_lines[0].location_id.usage if type == 'incoming' else pick.move_lines[0].location_dest_id.usage
+
+ return INVOICE_TYPE_MAP.get((type, usage), ['out_invoice'])[0]
_name = "stock.invoice.onshipping"
_description = "Stock Invoice Onshipping"
@@ -59,6 +58,24 @@ class stock_invoice_onshipping(osv.osv_memory):
'invoice_type': _get_invoice_type,
}
+ def onchange_journal_id(self, cr, uid, ids, journal_id, context=None):
+ if context is None:
+ context = {}
+ domain = {}
+ value = {}
+ active_id = context.get('active_id')
+ if active_id:
+ picking = self.pool['stock.picking'].browse(cr, uid, active_id, context=context)
+ type = picking.picking_type_id.code
+ usage = picking.move_lines[0].location_id.usage if type == 'incoming' else picking.move_lines[0].location_dest_id.usage
+ invoice_types = INVOICE_TYPE_MAP.get((type, usage), ['out_invoice', 'in_invoice', 'out_refund', 'in_refund'])
+ journal_types = ['purchase' if it in ['in_refund', 'in_invoice'] else 'sale' for it in invoice_types]
+ domain['journal_id'] = [('type', 'in', journal_types)]
+ if journal_id:
+ journal = self.pool['account.journal'].browse(cr, uid, journal_id, context=context)
+ value['journal_type'] = journal.type
+ return {'value': value, 'domain': domain}
+
def view_init(self, cr, uid, fields_list, context=None):
if context is None:
context = {}
diff --git a/addons/stock_account/wizard/stock_invoice_onshipping_view.xml b/addons/stock_account/wizard/stock_invoice_onshipping_view.xml
index 71a33b1fb40..a65691880fb 100644
--- a/addons/stock_account/wizard/stock_invoice_onshipping_view.xml
+++ b/addons/stock_account/wizard/stock_invoice_onshipping_view.xml
@@ -10,7 +10,7 @@
-
+
diff --git a/addons/stock_account/wizard/stock_valuation_history.py b/addons/stock_account/wizard/stock_valuation_history.py
index 99aa9511a9d..9190f8981ec 100644
--- a/addons/stock_account/wizard/stock_valuation_history.py
+++ b/addons/stock_account/wizard/stock_valuation_history.py
@@ -46,21 +46,39 @@ class stock_history(osv.osv):
if context is None:
context = {}
date = context.get('history_date')
- prod_dict = {}
if 'inventory_value' in fields:
+ group_lines = {}
+ for line in res:
+ domain = line.get('__domain', [])
+ group_lines.setdefault(str(domain), self.search(cr, uid, domain, context=context))
+ line_ids = set()
+ for ids in group_lines.values():
+ for product_id in ids:
+ line_ids.add(product_id)
+ line_ids = list(line_ids)
+ cr.execute('SELECT id, product_id, price_unit_on_quant, company_id, quantity FROM stock_history WHERE id in %s', (tuple(line_ids),))
+ lines_rec = cr.dictfetchall()
+ lines_dict = dict((line['id'], line) for line in lines_rec)
+ product_ids = list(set(line_rec['product_id'] for line_rec in lines_rec))
+ products_rec = self.pool['product.product'].read(cr, uid, product_ids, ['cost_method', 'product_tmpl_id'], context=context)
+ products_dict = dict((product['id'], product) for product in products_rec)
+ cost_method_product_tmpl_ids = list(set(product['product_tmpl_id'][0] for product in products_rec if product['cost_method'] != 'real'))
+ cr.execute('SELECT DISTINCT ON (product_template_id, company_id) product_template_id, company_id, cost FROM product_price_history WHERE product_template_id in %s AND datetime <= %s ORDER BY product_template_id, company_id, datetime DESC', (tuple(cost_method_product_tmpl_ids), date))
+ histories = cr.dictfetchall()
+ histories_dict = {}
+ for history in histories:
+ histories_dict[(history['product_template_id'], history['company_id'])] = history['cost']
for line in res:
- lines = self.search(cr, uid, line.get('__domain', []), context=context)
inv_value = 0.0
- product_tmpl_obj = self.pool.get("product.template")
- lines_rec = self.browse(cr, uid, lines, context=context)
- for line_rec in lines_rec:
- if line_rec.product_id.cost_method == 'real':
- price = line_rec.price_unit_on_quant
+ lines = group_lines.get(str(line.get('__domain', [])))
+ for line_id in lines:
+ line_rec = lines_dict[line_id]
+ product = products_dict[line_rec['product_id']]
+ if product['cost_method'] == 'real':
+ price = line_rec['price_unit_on_quant']
else:
- if not line_rec.product_id.id in prod_dict:
- prod_dict[line_rec.product_id.id] = product_tmpl_obj.get_history_price(cr, uid, line_rec.product_id.product_tmpl_id.id, line_rec.company_id.id, date=date, context=context)
- price = prod_dict[line_rec.product_id.id]
- inv_value += price * line_rec.quantity
+ price = histories_dict.get((product['product_tmpl_id'][0], line_rec['company_id']), 0.0)
+ inv_value += price * line_rec['quantity']
line['inventory_value'] = inv_value
return res
diff --git a/addons/stock_dropshipping/stock_dropshipping.py b/addons/stock_dropshipping/stock_dropshipping.py
index 2fe37ea8565..09238d37b12 100644
--- a/addons/stock_dropshipping/stock_dropshipping.py
+++ b/addons/stock_dropshipping/stock_dropshipping.py
@@ -1,6 +1,7 @@
# coding: utf-8
-from openerp import models, api
+from openerp import models, api, _
+from openerp.exceptions import UserError
class sale_order_line(models.Model):
@@ -20,3 +21,25 @@ class sale_order_line(models.Model):
res = True
break
return res
+
+
+class purchase_order(models.Model):
+ _inherit = 'purchase.order'
+
+ @api.one
+ def _check_invoice_policy(self):
+ if self.invoice_method == 'picking' and self.location_id.usage == 'customer':
+ for proc in self.order_line.mapped('procurement_ids'):
+ if proc.sale_line_id.order_id.order_policy == 'picking':
+ raise UserError(_('In the case of a dropship route, it is not possible to have an invoicing control set on "Based on incoming shipments" and a sale order with an invoice creation on "On Delivery Order"'))
+
+ @api.multi
+ def wkf_confirm_order(self):
+ """ Raise a warning to forbid to have both purchase and sale invoices
+ policies at delivery in dropshipping. As it is not implemented.
+
+ This check can be disabled setting 'no_invoice_policy_check' in context
+ """
+ if not self.env.context.get('no_invoice_policy_check'):
+ self._check_invoice_policy()
+ super(purchase_order, self).wkf_confirm_order()
diff --git a/addons/stock_landed_costs/stock_landed_costs.py b/addons/stock_landed_costs/stock_landed_costs.py
index 17cd9e16373..3fdb86347d4 100644
--- a/addons/stock_landed_costs/stock_landed_costs.py
+++ b/addons/stock_landed_costs/stock_landed_costs.py
@@ -3,7 +3,7 @@
from openerp.osv import fields, osv
import openerp.addons.decimal_precision as dp
-from openerp.tools import float_compare
+from openerp.tools import float_compare, float_round
from openerp.tools.translate import _
import product
from openerp.exceptions import UserError
@@ -220,6 +220,7 @@ class stock_landed_cost(osv.osv):
line_obj = self.pool.get('stock.valuation.adjustment.lines')
unlink_ids = line_obj.search(cr, uid, [('cost_id', 'in', ids)], context=context)
line_obj.unlink(cr, uid, unlink_ids, context=context)
+ digits = dp.get_precision('Product Price')(cr)
towrite_dict = {}
for cost in self.browse(cr, uid, ids, context=None):
if not cost.picking_ids:
@@ -242,6 +243,7 @@ class stock_landed_cost(osv.osv):
total_line += 1
for line in cost.cost_lines:
+ value_split = 0.0
for valuation in cost.valuation_adjustment_lines:
value = 0.0
if valuation.cost_line_id and valuation.cost_line_id.id == line.id:
@@ -262,6 +264,11 @@ class stock_landed_cost(osv.osv):
else:
value = (line.price_unit / total_line)
+ if digits:
+ value = float_round(value, precision_digits=digits[1], rounding_method='UP')
+ value = min(value, line.price_unit - value_split)
+ value_split += value
+
if valuation.id not in towrite_dict:
towrite_dict[valuation.id] = value
else:
diff --git a/addons/theme_bootswatch/views/theme.xml b/addons/theme_bootswatch/views/theme.xml
index 00f32e3fb8f..11b0066438b 100644
--- a/addons/theme_bootswatch/views/theme.xml
+++ b/addons/theme_bootswatch/views/theme.xml
@@ -2,13 +2,6 @@
-
-
-
- False
-
-
-
@@ -115,87 +108,87 @@
All Default Themes
-->
-
-
+
+
-
-
+
+
-
-
+
+
-
-
+
+
-
-
+
+
-
-
+
+
-
-
+
+
-
-
+
+
-
-
+
+
-
-
+
+
-
-
+
+
diff --git a/addons/theme_default/__init__.py b/addons/theme_default/__init__.py
new file mode 100644
index 00000000000..e69de29bb2d
diff --git a/addons/theme_default/__openerp__.py b/addons/theme_default/__openerp__.py
new file mode 100644
index 00000000000..243f1cb0c25
--- /dev/null
+++ b/addons/theme_default/__openerp__.py
@@ -0,0 +1,13 @@
+{
+ 'name': 'Default Website Theme',
+ 'description': 'Default website theme to showcase customization possibilities.',
+ 'category': 'Theme/Hidden',
+ 'version': '1.0',
+ 'author': 'Odoo S.A.',
+ 'depends': ['website'],
+ 'data': [
+ 'views/templates.xml',
+ ],
+ 'application': False,
+ 'auto_install': True,
+}
diff --git a/addons/theme_default/static/description/icon.png b/addons/theme_default/static/description/icon.png
new file mode 100644
index 00000000000..2ff68dd1789
Binary files /dev/null and b/addons/theme_default/static/description/icon.png differ
diff --git a/addons/website/static/src/img/theme/layout-boxed.gif b/addons/theme_default/static/src/img/theme/layout-boxed.gif
similarity index 100%
rename from addons/website/static/src/img/theme/layout-boxed.gif
rename to addons/theme_default/static/src/img/theme/layout-boxed.gif
diff --git a/addons/website/static/src/img/theme/layout-full.gif b/addons/theme_default/static/src/img/theme/layout-full.gif
similarity index 100%
rename from addons/website/static/src/img/theme/layout-full.gif
rename to addons/theme_default/static/src/img/theme/layout-full.gif
diff --git a/addons/website/static/src/img/theme/variant-amethyst.gif b/addons/theme_default/static/src/img/theme/variant-amethyst.gif
similarity index 100%
rename from addons/website/static/src/img/theme/variant-amethyst.gif
rename to addons/theme_default/static/src/img/theme/variant-amethyst.gif
diff --git a/addons/website/static/src/img/theme/variant-cobalt.gif b/addons/theme_default/static/src/img/theme/variant-cobalt.gif
similarity index 100%
rename from addons/website/static/src/img/theme/variant-cobalt.gif
rename to addons/theme_default/static/src/img/theme/variant-cobalt.gif
diff --git a/addons/website/static/src/img/theme/variant-emerald.gif b/addons/theme_default/static/src/img/theme/variant-emerald.gif
similarity index 100%
rename from addons/website/static/src/img/theme/variant-emerald.gif
rename to addons/theme_default/static/src/img/theme/variant-emerald.gif
diff --git a/addons/website/static/src/img/theme/variant-gold.gif b/addons/theme_default/static/src/img/theme/variant-gold.gif
similarity index 100%
rename from addons/website/static/src/img/theme/variant-gold.gif
rename to addons/theme_default/static/src/img/theme/variant-gold.gif
diff --git a/addons/website/static/src/img/theme/variant-ruby.gif b/addons/theme_default/static/src/img/theme/variant-ruby.gif
similarity index 100%
rename from addons/website/static/src/img/theme/variant-ruby.gif
rename to addons/theme_default/static/src/img/theme/variant-ruby.gif
diff --git a/addons/website/static/src/img/theme/variant-stone.gif b/addons/theme_default/static/src/img/theme/variant-stone.gif
similarity index 100%
rename from addons/website/static/src/img/theme/variant-stone.gif
rename to addons/theme_default/static/src/img/theme/variant-stone.gif
diff --git a/addons/website/static/src/less/colors.less b/addons/theme_default/static/src/less/colors.less
similarity index 100%
rename from addons/website/static/src/less/colors.less
rename to addons/theme_default/static/src/less/colors.less
diff --git a/addons/website/static/src/less/option_color_amethyst.less b/addons/theme_default/static/src/less/option_color_amethyst.less
similarity index 100%
rename from addons/website/static/src/less/option_color_amethyst.less
rename to addons/theme_default/static/src/less/option_color_amethyst.less
diff --git a/addons/website/static/src/less/option_color_cobalt.less b/addons/theme_default/static/src/less/option_color_cobalt.less
similarity index 100%
rename from addons/website/static/src/less/option_color_cobalt.less
rename to addons/theme_default/static/src/less/option_color_cobalt.less
diff --git a/addons/website/static/src/less/option_color_emerald.less b/addons/theme_default/static/src/less/option_color_emerald.less
similarity index 100%
rename from addons/website/static/src/less/option_color_emerald.less
rename to addons/theme_default/static/src/less/option_color_emerald.less
diff --git a/addons/website/static/src/less/option_color_gold.less b/addons/theme_default/static/src/less/option_color_gold.less
similarity index 100%
rename from addons/website/static/src/less/option_color_gold.less
rename to addons/theme_default/static/src/less/option_color_gold.less
diff --git a/addons/website/static/src/less/option_color_ruby.less b/addons/theme_default/static/src/less/option_color_ruby.less
similarity index 100%
rename from addons/website/static/src/less/option_color_ruby.less
rename to addons/theme_default/static/src/less/option_color_ruby.less
diff --git a/addons/website/static/src/less/option_color_stone.less b/addons/theme_default/static/src/less/option_color_stone.less
similarity index 100%
rename from addons/website/static/src/less/option_color_stone.less
rename to addons/theme_default/static/src/less/option_color_stone.less
diff --git a/addons/website/static/src/less/option_font.less b/addons/theme_default/static/src/less/option_font.less
similarity index 100%
rename from addons/website/static/src/less/option_font.less
rename to addons/theme_default/static/src/less/option_font.less
diff --git a/addons/website/static/src/less/option_layout_boxed.less b/addons/theme_default/static/src/less/option_layout_boxed.less
similarity index 100%
rename from addons/website/static/src/less/option_layout_boxed.less
rename to addons/theme_default/static/src/less/option_layout_boxed.less
diff --git a/addons/theme_default/views/templates.xml b/addons/theme_default/views/templates.xml
new file mode 100644
index 00000000000..b1866c81844
--- /dev/null
+++ b/addons/theme_default/views/templates.xml
@@ -0,0 +1,170 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+
LAYOUT
+
+
+
MAIN COLOR
+
+
+
FONTS COMBINATIONS
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/addons/web/controllers/main.py b/addons/web/controllers/main.py
index b01e8ade9ff..894faec7e51 100644
--- a/addons/web/controllers/main.py
+++ b/addons/web/controllers/main.py
@@ -511,7 +511,13 @@ class Home(http.Controller):
return http.redirect_with_hash(redirect)
request.uid = old_uid
values['error'] = "Wrong login/password"
- return request.render('web.login', values)
+ if request.env.ref('web.login', False):
+ return request.render('web.login', values)
+ else:
+ # probably not an odoo compatible database
+ error = 'Unable to login on database %s' % request.session.db
+ return werkzeug.utils.redirect('/web/database/selector?error=%s' % error, 303)
+
@http.route('/login', type='http', auth="none")
def login(self, db, login, key, redirect="/web", **kw):
@@ -684,6 +690,7 @@ class Database(http.Controller):
return env.get_template("database_selector.html").render({
'databases': dbs,
'debug': request.debug,
+ 'error': kw.get('error')
})
@http.route('/web/database/manager', type='http', auth="none")
diff --git a/addons/web/static/lib/datejs/globalization/kab_DZ.js b/addons/web/static/lib/datejs/globalization/kab-DZ.js
similarity index 100%
rename from addons/web/static/lib/datejs/globalization/kab_DZ.js
rename to addons/web/static/lib/datejs/globalization/kab-DZ.js
diff --git a/addons/web/static/src/css/base.css b/addons/web/static/src/css/base.css
index 26d23daf292..e0a46982ae4 100644
--- a/addons/web/static/src/css/base.css
+++ b/addons/web/static/src/css/base.css
@@ -547,6 +547,7 @@
border-radius: 3px;
background: #f0f0fa;
color: #4C4C4C;
+ word-break: break-word;
}
.openerp .oe_tag_dark {
background: #7C7BAD;
@@ -590,7 +591,8 @@
width: 100% !important;
}
.openerp .oe_tags .text-core {
- min-height: 22px;
+ height: initial !important;
+ word-break: break-word;
}
.openerp .oe_tags .text-core .text-wrap .text-dropdown .text-list .text-suggestion em {
font-style: italic;
diff --git a/addons/web/static/src/css/base.sass b/addons/web/static/src/css/base.sass
index c253390870e..179220db575 100644
--- a/addons/web/static/src/css/base.sass
+++ b/addons/web/static/src/css/base.sass
@@ -499,6 +499,7 @@ $sheet-padding: 16px
@include radius(3px)
background: $tag-bg-light
color: #4C4C4C
+ word-break: break-word
.oe_tag_dark
background: $tag-bg-dark
color: #eee
@@ -532,7 +533,8 @@ $sheet-padding: 16px
textarea
width: 100% !important
.text-core
- min-height: 22px
+ height: initial !important
+ word-break: break-word
.text-wrap .text-dropdown .text-list .text-suggestion em
font-style: italic
text-decoration: none
diff --git a/addons/web/static/src/js/action_manager.js b/addons/web/static/src/js/action_manager.js
index 68a81a9dc68..b5415bf25c3 100644
--- a/addons/web/static/src/js/action_manager.js
+++ b/addons/web/static/src/js/action_manager.js
@@ -374,7 +374,7 @@ var ActionManager = Widget.extend({
if (warm) {
this.null_action();
}
- action_loaded = this.do_action(state.action, { additional_context: add_context });
+ action_loaded = this.do_action(state.action, { additional_context: add_context, state: state });
$.when(action_loaded || null).done(function() {
self.webclient.menu.is_bound.done(function() {
if (self.inner_action && self.inner_action.get_action_descr().id) {
@@ -508,7 +508,6 @@ var ActionManager = Widget.extend({
display_title : !popup,
headless: (popup || inline) && form,
search_disable_custom_filters: action.context && action.context.search_disable_custom_filters,
- default_view: action.context && action.context.params && action.context.params.view_type,
});
}
@@ -591,7 +590,7 @@ var ActionManager = Widget.extend({
var self = this;
return this.ir_actions_common({
widget: function () {
- return new ViewManager(self, null, null, null, action);
+ return new ViewManager(self, null, null, null, action, options);
},
action: action,
klass: 'o_act_window',
diff --git a/addons/web/static/src/js/framework/cordova.js b/addons/web/static/src/js/framework/cordova.js
new file mode 100644
index 00000000000..8eb22dd182d
--- /dev/null
+++ b/addons/web/static/src/js/framework/cordova.js
@@ -0,0 +1,83 @@
+odoo.define('web.Cordova', function(require) {
+"use strict";
+
+var core = require('web.core');
+
+// The Android/iPhone App is a JS/HTML app that launches the
+// Odoo webclient in an iframe, using the Cordova framework.
+//
+// This class acts as a link between the webclient and the
+// Odoo Android/iPhone App implemented with cordova.
+
+var Cordova = core.Class.extend({}, core.mixins.PropertiesMixin, {
+ init: function(parent) {
+ var self = this;
+ core.mixins.PropertiesMixin.init.call(this, parent);
+
+ window.addEventListener('message', function(event) {
+ self.receive(event);
+ }, false);
+
+ },
+ // odoo.send('foobar') in cordova will call messages.foobar()
+ messages: {
+ // launch the POS !
+ pos: function() {
+ if (window.location.href.indexOf('/pos/web') < 0) {
+ window.location.href = "/pos/web";
+ }
+ },
+ },
+ // what happens when we receive an event from cordova
+ // -> call messages[event.data]()
+ // -> selfs trigger(event.data)
+ receive: function(event) {
+ if (event.origin !== 'file://') {
+ return;
+ }
+
+ if (typeof event.data === 'string') {
+ this.trigger(event.data);
+ if (this.messages[event.data]) {
+ this.messages[event.data].call(this);
+ }
+ }
+ },
+ // send a message to cordova
+ send: function(message) {
+ function inIframe(){
+ try {
+ return window.self !== window.top;
+ } catch (e) {
+ return true;
+ }
+ }
+ if (inIframe()) {
+ window.parent.postMessage(message,'file://');
+ }
+ },
+
+
+ // notifies cordova that the webclient is ready.
+ ready: function() { this.send('ready'); },
+ // notifies cordova that we want to exit the app.
+ logout: function() { this.send('logout'); },
+ // notifies cordova that the point of sale is ready.
+ posready: function() { this.send('posready'); },
+ // notifies cordova that we want to exit the point of sale.
+ poslogout: function() { this.send('poslogout'); },
+ // asks cordova to emit a beep.
+ beep: function() { this.send('beep'); },
+ // ask cordova to vibrate the phone.
+ vibrate: function() { this.send('vibrate'); },
+});
+
+return Cordova;
+});
+
+// Singleton module
+odoo.define('web.cordova', function(require) {
+"use strict";
+var Cordova = require('web.Cordova');
+return new Cordova();
+});
diff --git a/addons/web/static/src/js/framework/view.js b/addons/web/static/src/js/framework/view.js
index f8791c6bf4f..8eee01d414d 100644
--- a/addons/web/static/src/js/framework/view.js
+++ b/addons/web/static/src/js/framework/view.js
@@ -105,7 +105,7 @@ var View = Widget.extend({
// Wrong group_by values will simply fail and forbid rendering of the destination view
var ncontext = new data.CompoundContext(
_.object(_.reject(_.pairs(dataset.get_context().eval()), function(pair) {
- return pair[0].match('^(?:(?:default_|search_default_).+|.+_view_ref|group_by|group_by_no_leaf|active_id|active_ids)$') !== null;
+ return pair[0].match('^(?:(?:default_|search_default_|show_).+|.+_view_ref|group_by|group_by_no_leaf|active_id|active_ids)$') !== null;
}))
);
ncontext.add(action_data.context || {});
diff --git a/addons/web/static/src/js/view_manager.js b/addons/web/static/src/js/view_manager.js
index 19c645d314d..c29a6b34326 100644
--- a/addons/web/static/src/js/view_manager.js
+++ b/addons/web/static/src/js/view_manager.js
@@ -19,7 +19,7 @@ var ViewManager = Widget.extend(ControlPanelMixin, {
* @param {Array} [views] List of [view_id, view_type]
* @param {Object} [flags] various boolean describing UI state
*/
- init: function(parent, dataset, views, flags, action) {
+ init: function(parent, dataset, views, flags, action, options) {
if (action) {
flags = action.flags || {};
if (!('auto_search' in flags)) {
@@ -64,6 +64,12 @@ var ViewManager = Widget.extend(ControlPanelMixin, {
self.views[view_type] = view_descr;
});
+ if (options && options.state && options.state.view_type) {
+ var view_type = options.state.view_type;
+ var view_descr = this.views[view_type];
+ this.default_view = view_descr && view_descr.multi_record ? view_type : undefined;
+ }
+
// Listen to event 'switch_view' indicating that the VM must now display view wiew_type
this.on('switch_view', this, function(view_type) {
if (view_type === 'form' && this.active_view && this.active_view.type === 'form') {
@@ -109,7 +115,7 @@ var ViewManager = Widget.extend(ControlPanelMixin, {
return $.when(main_view_loaded, this.search_view_loaded);
},
get_default_view: function() {
- return this.flags.default_view || this.view_order[0].type;
+ return this.default_view || this.flags.default_view || this.view_order[0].type;
},
switch_mode: function(view_type, no_store, view_options) {
var self = this;
diff --git a/addons/web/static/src/js/views/form_widgets.js b/addons/web/static/src/js/views/form_widgets.js
index 50e01297822..dcfcc908872 100644
--- a/addons/web/static/src/js/views/form_widgets.js
+++ b/addons/web/static/src/js/views/form_widgets.js
@@ -1302,7 +1302,18 @@ var FieldBinaryFile = FieldBinary.extend({
this._super.apply(this, arguments);
this.$el.find('input').eq(0).val('');
this.set_filename('');
- }
+ },
+ set_value: function(value_){
+ var changed = value_ !== this.get_value();
+ this._super.apply(this, arguments);
+ // Trigger value change if size is the same
+ if (!changed){
+ this.trigger("change:value", this, {
+ oldValue: value_,
+ newValue: value_
+ });
+ }
+ }
});
var FieldBinaryImage = FieldBinary.extend({
diff --git a/addons/web/static/src/js/web_client.js b/addons/web/static/src/js/web_client.js
index c6fd30d6c13..b326a4537fc 100644
--- a/addons/web/static/src/js/web_client.js
+++ b/addons/web/static/src/js/web_client.js
@@ -3,6 +3,7 @@ odoo.define('web.WebClient', function (require) {
var ActionManager = require('web.ActionManager');
var core = require('web.core');
+var cordova = require('web.cordova');
var crash_manager = require('web.crash_manager');
var data = require('web.data');
var Loading = require('web.Loading');
@@ -61,6 +62,10 @@ var WebClient = Widget.extend({
delete(self.client_options.action);
}
core.bus.trigger('web_client_ready');
+ cordova.ready();
+ cordova.on('back', self, function() {
+ self.do_action('history_back');
+ });
});
},
bind_events: function() {
@@ -259,6 +264,7 @@ var WebClient = Widget.extend({
on_logout: function() {
var self = this;
if (!this.has_uncommitted_changes()) {
+ cordova.logout();
self.action_manager.do_action('logout');
}
},
diff --git a/addons/web/views/database_selector.html b/addons/web/views/database_selector.html
index 67c82c6c260..993cc4b3f99 100644
--- a/addons/web/views/database_selector.html
+++ b/addons/web/views/database_selector.html
@@ -24,6 +24,12 @@
+ {% if error %}
+
+ {{ error }}
+
+ {% endif %}
+
Select database
{% if databases %}
diff --git a/addons/web/views/webclient_templates.xml b/addons/web/views/webclient_templates.xml
index 165123c7c1b..d6a965971e0 100644
--- a/addons/web/views/webclient_templates.xml
+++ b/addons/web/views/webclient_templates.xml
@@ -133,6 +133,7 @@
+
diff --git a/addons/web_calendar/static/src/js/widgets.js b/addons/web_calendar/static/src/js/widgets.js
index 09165d4d9dd..7fed5a5fe4e 100644
--- a/addons/web_calendar/static/src/js/widgets.js
+++ b/addons/web_calendar/static/src/js/widgets.js
@@ -94,7 +94,7 @@ var QuickCreate = Dialog.extend({
slow_add: function() {
var val = this.$input.val().trim();
- this.slow_create({'name': val});
+ this.slow_create(_.isEmpty(val) ? {} : {'name': val});
},
/**
diff --git a/addons/website/__openerp__.py b/addons/website/__openerp__.py
index 6f0bafb1557..25e2e689210 100644
--- a/addons/website/__openerp__.py
+++ b/addons/website/__openerp__.py
@@ -22,7 +22,6 @@ OpenERP Website CMS
'views/website.backend.xml',
'views/website_views.xml',
'views/snippets.xml',
- 'views/themes.xml',
'views/res_config.xml',
'views/ir_actions.xml',
'views/website_backend_navbar.xml',
diff --git a/addons/website/models/website.py b/addons/website/models/website.py
index 6fba655157d..6fbb17f9d47 100644
--- a/addons/website/models/website.py
+++ b/addons/website/models/website.py
@@ -969,6 +969,13 @@ class website_published_mixin(osv.AbstractModel):
def _website_url(self, cr, uid, ids, field_name, arg, context=None):
return dict.fromkeys(ids, '#')
+ def website_publish_button(self, cr, uid, ids, context=None):
+ if self.pool['res.users'].has_group(cr, uid, 'base.group_website_publisher'):
+ return self.open_website_url(cr, uid, ids, context)
+ for r in self.browse(cr, uid, ids, context=context):
+ r.write({'website_published': not r.website_published})
+ return True
+
def open_website_url(self, cr, uid, ids, context=None):
return {
'type': 'ir.actions.act_url',
diff --git a/addons/website/security/ir_ui_view.xml b/addons/website/security/ir_ui_view.xml
index 0745028b7d9..c7ea907b780 100644
--- a/addons/website/security/ir_ui_view.xml
+++ b/addons/website/security/ir_ui_view.xml
@@ -21,5 +21,15 @@
+
+ Administration Settings: Manage all views
+
+ [(1, '=', 1)]
+
+
+
+
+
+
\ No newline at end of file
diff --git a/addons/website/static/src/js/website.editor.js b/addons/website/static/src/js/website.editor.js
index efe6d293f79..67e9b3da734 100644
--- a/addons/website/static/src/js/website.editor.js
+++ b/addons/website/static/src/js/website.editor.js
@@ -937,7 +937,6 @@ function change_default_bootstrap_animation_to_edit() {
website.no_editor = !!$(document.documentElement).data('editable-no-editor');
- website.add_template_file('/website/static/src/xml/website.xml');
website.add_template_file('/website/static/src/xml/website.editor.xml');
website.dom_ready.done(function () {
website.ready().then(init_editor);
@@ -966,16 +965,6 @@ website.dom_ready.done(function () {
});
});
- website.error = function(data, url) {
- var $error = $(openerp.qweb.render('website.error_dialog', {
- 'title': data.data ? data.data.arguments[0] : "",
- 'message': data.data ? data.data.arguments[1] : data.statusText,
- 'backend_url': url
- }));
- $error.appendTo("body");
- $error.modal('show');
- };
-
/* ----- TOP EDITOR BAR FOR ADMIN ---- */
var EditorBar = Widget.extend({
@@ -1860,6 +1849,9 @@ var MediaDialog = Dialog.extend({
$(document.body).trigger("media-saved", [self.active.media, self.old_media]);
self.trigger("saved", [self.active.media, self.old_media]);
setTimeout(function () {
+ if (!self.active.media.parentNode) {
+ return;
+ }
range.createFromNode(self.active.media).select();
click_event(self.active.media, "mousedown");
if (!this.only_images) {
@@ -2182,7 +2174,11 @@ function getCssSelectors(filter) {
}
var sheets = document.styleSheets;
for(var i = 0; i < sheets.length; i++) {
- var rules = sheets[i].rules || sheets[i].cssRules;
+ try {
+ var rules = sheets[i].rules || sheets[i].cssRules;
+ } catch(e) {
+ continue;
+ }
if (rules) {
for(var r = 0; r < rules.length; r++) {
var selectorText = rules[r].selectorText;
diff --git a/addons/website/static/src/js/website.js b/addons/website/static/src/js/website.js
index 4f56cee63cc..4972eca41ca 100644
--- a/addons/website/static/src/js/website.js
+++ b/addons/website/static/src/js/website.js
@@ -170,6 +170,16 @@ function prompt(options, qweb) {
return def;
}
+function error(data, url) {
+ var $error = $(openerp.qweb.render('website.error_dialog', {
+ 'title': data.data ? data.data.arguments[0] : "",
+ 'message': data.data ? data.data.arguments[1] : data.statusText,
+ 'backend_url': url
+ }));
+ $error.appendTo("body");
+ $error.modal('show');
+}
+
function form(url, method, params) {
var htmlform = document.createElement('form');
htmlform.setAttribute('action', url);
@@ -261,6 +271,8 @@ function add_template_file(template) {
return def;
}
+add_template_file('/website/static/src/xml/website.xml');
+
var dom_ready = $.Deferred();
$(document).ready(function () {
dom_ready.resolve();
@@ -415,6 +427,7 @@ return {
parseHash: parseHash,
reload: reload,
prompt: prompt,
+ error: error,
form: form,
init_kanban: init_kanban,
add_template_file: add_template_file,
diff --git a/addons/website/static/src/js/website.seo.js b/addons/website/static/src/js/website.seo.js
index 31a8ebd3e92..8ecd8e3fee2 100644
--- a/addons/website/static/src/js/website.seo.js
+++ b/addons/website/static/src/js/website.seo.js
@@ -10,6 +10,10 @@ var website = require('website.website');
website.add_template_file('/website/static/src/xml/website.seo.xml');
+ // This replaces \b, because accents(e.g. à, é) are not seen as word boundaries.
+ // Javascript \b is not unicode aware, and words beginning or ending by accents won't match \b
+ var WORD_SEPARATORS_REGEX = '([\\u2000-\\u206F\\u2E00-\\u2E7F\'!"#\\$%&\\(\\)\\*\\+,\\-\\.\\/:;<=>\\?¿¡@\\[\\]\\^_`\\{\\|\\}~\\s]+|^|$)';
+
function analyzeKeyword(htmlPage, keyword) {
return htmlPage.isInTitle(keyword) ? {
title: 'label label-primary',
@@ -297,13 +301,13 @@ var HtmlPage = Class.extend(mixins.PropertiesMixin, {
return $('body').children().not('.js_seo_configuration').text();
},
isInBody: function (text) {
- return new RegExp("\\b"+text+"\\b", "gi").test(this.bodyText());
+ return new RegExp(WORD_SEPARATORS_REGEX+text+WORD_SEPARATORS_REGEX, "gi").test(this.bodyText());
},
isInTitle: function (text) {
- return new RegExp("\\b"+text+"\\b", "gi").test(this.title());
+ return new RegExp(WORD_SEPARATORS_REGEX+text+WORD_SEPARATORS_REGEX, "gi").test(this.title());
},
isInDescription: function (text) {
- return new RegExp("\\b"+text+"\\b", "gi").test(this.description());
+ return new RegExp(WORD_SEPARATORS_REGEX+text+WORD_SEPARATORS_REGEX, "gi").test(this.description());
},
});
diff --git a/addons/website/static/src/js/website.snippets.editor.js b/addons/website/static/src/js/website.snippets.editor.js
index e322c2c7554..e92c7d6ef0b 100644
--- a/addons/website/static/src/js/website.snippets.editor.js
+++ b/addons/website/static/src/js/website.snippets.editor.js
@@ -646,6 +646,7 @@ var BuildingBlock = Widget.extend({
}
});
}
+ $target.closest(".o_editable").trigger("content_changed");
// end
self.make_active($target);
@@ -1067,7 +1068,7 @@ options.background = Option.extend({
},
background: function(type, value) {
if (value && value.length) {
- this.$bg.css("background-image", 'url(' + value + ')');
+ this.$bg.attr("style", 'background-image: url(' + value + ')' + (this.$bg.attr("style") || '').replace(/background-image:[^;]+/, '') );
this.$bg.addClass("oe_img_bg");
} else {
this.$bg.css("background-image", "");
@@ -1453,6 +1454,7 @@ options.marginAndResize = Option.extend({
self.BuildingBlock.editor_busy = false;
},0);
self.$target.removeClass("resize_editor_busy");
+ self.$target.closest(".o_editable").trigger("content_changed");
};
$body.mousemove(body_mousemove);
$body.mouseup(body_mouseup);
@@ -1461,6 +1463,7 @@ options.marginAndResize = Option.extend({
self.$target.css("height", "");
self.$target.css("overflow", "");
self.BuildingBlock.cover_target(self.$overlay, self.$target);
+ self.$target.closest(".o_editable").trigger("content_changed");
return false;
});
},
diff --git a/addons/website/views/themes.xml b/addons/website/views/themes.xml
deleted file mode 100644
index a23f8c57975..00000000000
--- a/addons/website/views/themes.xml
+++ /dev/null
@@ -1,221 +0,0 @@
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
LAYOUT
-
-
-
MAIN COLOR
-
-
-
FONTS COMBINATIONS
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
diff --git a/addons/website/views/website_templates.xml b/addons/website/views/website_templates.xml
index 3a8ccddc517..78cf2c056fe 100644
--- a/addons/website/views/website_templates.xml
+++ b/addons/website/views/website_templates.xml
@@ -2,12 +2,80 @@
-
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
-
-
-
@@ -28,17 +96,56 @@
+
-
-