diff options
| author | stephanchrst <stephanchrst@gmail.com> | 2022-05-10 21:51:50 +0700 |
|---|---|---|
| committer | stephanchrst <stephanchrst@gmail.com> | 2022-05-10 21:51:50 +0700 |
| commit | 3751379f1e9a4c215fb6eb898b4ccc67659b9ace (patch) | |
| tree | a44932296ef4a9b71d5f010906253d8c53727726 /addons/l10n_in | |
| parent | 0a15094050bfde69a06d6eff798e9a8ddf2b8c21 (diff) | |
initial commit 2
Diffstat (limited to 'addons/l10n_in')
48 files changed, 6329 insertions, 0 deletions
diff --git a/addons/l10n_in/__init__.py b/addons/l10n_in/__init__.py new file mode 100644 index 00000000..2609681a --- /dev/null +++ b/addons/l10n_in/__init__.py @@ -0,0 +1,5 @@ +# -*- coding: utf-8 -*- +# Part of Odoo. See LICENSE file for full copyright and licensing details. + +from . import models +from . import report diff --git a/addons/l10n_in/__manifest__.py b/addons/l10n_in/__manifest__.py new file mode 100644 index 00000000..6ff5d560 --- /dev/null +++ b/addons/l10n_in/__manifest__.py @@ -0,0 +1,57 @@ +# -*- coding: utf-8 -*- +# Part of Odoo. See LICENSE file for full copyright and licensing details. + +{ + 'name': 'Indian - Accounting', + 'version': '2.0', + 'description': """ +Indian Accounting: Chart of Account. +==================================== + +Indian accounting chart and localization. + +Odoo allows to manage Indian Accounting by providing Two Formats Of Chart of Accounts i.e Indian Chart Of Accounts - Standard and Indian Chart Of Accounts - Schedule VI. + +Note: The Schedule VI has been revised by MCA and is applicable for all Balance Sheet made after +31st March, 2011. The Format has done away with earlier two options of format of Balance +Sheet, now only Vertical format has been permitted Which is Supported By Odoo. + """, + 'category': 'Accounting/Localizations/Account Charts', + 'depends': [ + 'account_tax_python', 'base_vat', + ], + 'data': [ + 'security/l10n_in_security.xml', + 'security/ir.model.access.csv', + 'data/account_data.xml', + 'data/l10n_in_chart_data.xml', + 'data/account.account.template.csv', + 'data/l10n_in_chart_post_data.xml', + 'data/account_tax_template_data.xml', + 'data/account_fiscal_position_data.xml', + 'data/l10n_in.port.code.csv', + 'data/res_country_state_data.xml', + 'data/uom_data.xml', + 'views/account_invoice_views.xml', + 'views/account_journal_views.xml', + 'views/res_config_settings_views.xml', + 'views/product_template_view.xml', + 'views/port_code_views.xml', + 'views/report_invoice.xml', + 'views/res_company_view.xml', + 'views/res_country_state_view.xml', + 'views/res_partner_views.xml', + 'views/account_tax_views.xml', + 'views/uom_uom_views.xml', + 'views/report_template.xml', + 'data/account_chart_template_data.xml' + ], + 'demo': [ + 'demo/demo_company.xml', + 'demo/res_partner_demo.xml', + 'demo/product_demo.xml', + 'demo/account_payment_demo.xml', + 'demo/account_invoice_demo.xml', + ], + 'license': 'LGPL-3', +} diff --git a/addons/l10n_in/data/account.account.template.csv b/addons/l10n_in/data/account.account.template.csv new file mode 100644 index 00000000..1f845221 --- /dev/null +++ b/addons/l10n_in/data/account.account.template.csv @@ -0,0 +1,67 @@ +"id","name","code","user_type_id/id","chart_template_id/id","tag_ids/id","reconcile" +"p10031","Inventories","10031","account.data_account_type_current_assets","l10n_in.indian_chart_template_standard","","False" +"p10040","Debtors","10040","account.data_account_type_receivable","l10n_in.indian_chart_template_standard","","True" +"p10041","Debtors (PoS)","10041","account.data_account_type_receivable","l10n_in.indian_chart_template_standard","","True" +"p10051","SGST Receivable","10051","account.data_account_type_current_assets","l10n_in.indian_chart_template_standard","l10n_in.sgst_tag_account","False" +"p10052","CGST Receivable","10052","account.data_account_type_current_assets","l10n_in.indian_chart_template_standard","l10n_in.cgst_tag_account","False" +"p10053","IGST Receivable","10053","account.data_account_type_current_assets","l10n_in.indian_chart_template_standard","l10n_in.igst_tag_account","False" +"p10057","Reverse Charge Tax Receivable","10057","account.data_account_type_current_assets","l10n_in.indian_chart_template_standard","","False" +"p10054","TDS Receivable","10058","account.data_account_type_current_assets","l10n_in.indian_chart_template_standard","","False" +"p10061","Deposit Account","10061","account.data_account_type_current_assets","l10n_in.indian_chart_template_standard","","False" +"p10071","Prepaid Insurance","10071","account.data_account_type_current_assets","l10n_in.indian_chart_template_standard","","False" +"p1011","Buildings","1011","account.data_account_type_fixed_assets","l10n_in.indian_chart_template_standard","","False" +"p1012","Land","1012","account.data_account_type_fixed_assets","l10n_in.indian_chart_template_standard","","False" +"p1013","Equipments","1013","account.data_account_type_fixed_assets","l10n_in.indian_chart_template_standard","","False" +"p1014","Vehicle","1014","account.data_account_type_fixed_assets","l10n_in.indian_chart_template_standard","","False" +"p1015","Computer/Laptops (Assets)","1015","account.data_account_type_fixed_assets","l10n_in.indian_chart_template_standard","","False" +"p1016","Furniture","1016","account.data_account_type_fixed_assets","l10n_in.indian_chart_template_standard","","False" +"p1017","Air Conditionar","1017","account.data_account_type_fixed_assets","l10n_in.indian_chart_template_standard","","False" +"p1018","Misc Assets","1018","account.data_account_type_fixed_assets","l10n_in.indian_chart_template_standard","","False" +"p1111","Capital Account","1111","account.data_account_type_current_liabilities","l10n_in.indian_chart_template_standard","","False" +"p1112","Reserve And Surplus Account","1112","account.data_account_type_current_liabilities","l10n_in.indian_chart_template_standard","","False" +"p11211","Creditors","11211","account.data_account_type_payable","l10n_in.indian_chart_template_standard","","True" +"p11221","Bank OD Account","11221","account.data_account_type_current_liabilities","l10n_in.indian_chart_template_standard","","False" +"p11222","Secured Loan Account","11222","account.data_account_type_current_liabilities","l10n_in.indian_chart_template_standard","","False" +"p11223","Unsecured Loan Account","11223","account.data_account_type_current_liabilities","l10n_in.indian_chart_template_standard","","False" +"p11231","TDS Payable","11231","account.data_account_type_current_liabilities","l10n_in.indian_chart_template_standard","","False" +"p11232","SGST Payable","11232","account.data_account_type_current_liabilities","l10n_in.indian_chart_template_standard","l10n_in.sgst_tag_account","False" +"p11233","CGST Payable","11233","account.data_account_type_current_liabilities","l10n_in.indian_chart_template_standard","l10n_in.cgst_tag_account","False" +"p11234","IGST Payable","11234","account.data_account_type_current_liabilities","l10n_in.indian_chart_template_standard","l10n_in.igst_tag_account","False" +"p11241","Wages Payable","11241","account.data_account_type_current_liabilities","l10n_in.indian_chart_template_standard","","False" +"p11242","Interest Payable","11242","account.data_account_type_current_liabilities","l10n_in.indian_chart_template_standard","","False" +"p11243","Notes Payable","11243","account.data_account_type_current_liabilities","l10n_in.indian_chart_template_standard","","False" +"p20011","Local Sales","20011","account.data_account_type_revenue","l10n_in.indian_chart_template_standard","","False" +"p20012","Retail Sales","20012","account.data_account_type_revenue","l10n_in.indian_chart_template_standard","","False" +"p20013","Export Sales","20013","account.data_account_type_revenue","l10n_in.indian_chart_template_standard","","False" +"p20021","Local Services","20021","account.data_account_type_revenue","l10n_in.indian_chart_template_standard","","False" +"p20022","Export Services","20022","account.data_account_type_revenue","l10n_in.indian_chart_template_standard","","False" +"p2010","Interest Revenues","2010","account.data_account_type_revenue","l10n_in.indian_chart_template_standard","","False" +"p2011","Gain on Sale of Assets","2011","account.data_account_type_revenue","l10n_in.indian_chart_template_standard","","False" +"2012","Write off Income","2012","account.data_account_type_revenue","l10n_in.indian_chart_template_standard","","False" +"p2013","Foreign Exchange Profit","2013","account.data_account_type_other_income","l10n_in.indian_chart_template_standard","","False" +"p2100","Electricity Expense","2100","account.data_account_type_expenses","l10n_in.indian_chart_template_standard","","False" +"p2101","Salary Expense","2101","account.data_account_type_expenses","l10n_in.indian_chart_template_standard","","False" +"p2102","Office Rent","2102","account.data_account_type_expenses","l10n_in.indian_chart_template_standard","","False" +"p2103","House Keeping Expense","2103","account.data_account_type_expenses","l10n_in.indian_chart_template_standard","","False" +"p2104","Postage And Courier Expense","2104","account.data_account_type_expenses","l10n_in.indian_chart_template_standard","","False" +"p2105","Internet Expense","2105","account.data_account_type_expenses","l10n_in.indian_chart_template_standard","","False" +"p2106","Telephone Expense","2106","account.data_account_type_expenses","l10n_in.indian_chart_template_standard","","False" +"p2107","Purchase Expense","2107","account.data_account_type_expenses","l10n_in.indian_chart_template_standard","","False" +"p2108","Computer/Laptop Accessories","2108","account.data_account_type_expenses","l10n_in.indian_chart_template_standard","","False" +"p2109","News Paper And Magazine","2109","account.data_account_type_expenses","l10n_in.indian_chart_template_standard","","False" +"p2110","Business Promotion","2110","account.data_account_type_expenses","l10n_in.indian_chart_template_standard","","False" +"p2111","Entertainment Expense","2111","account.data_account_type_expenses","l10n_in.indian_chart_template_standard","","False" +"p2112","Professional Services","2112","account.data_account_type_expenses","l10n_in.indian_chart_template_standard","","False" +"p2113","Bank Charges","2113","account.data_account_type_liquidity","l10n_in.indian_chart_template_standard","","False" +"p2114","Diwali Bonus/Gift","2114","account.data_account_type_expenses","l10n_in.indian_chart_template_standard","","False" +"p2115","Parts Purchase","2115","account.data_account_type_expenses","l10n_in.indian_chart_template_standard","","False" +"p2116","Repairing Expense","2116","account.data_account_type_expenses","l10n_in.indian_chart_template_standard","","False" +"p2117","Foreign Exchange Loss","2117","account.data_account_type_expenses","l10n_in.indian_chart_template_standard","","False" +"p21181","Sales Commission Expense","21181","account.data_account_type_expenses","l10n_in.indian_chart_template_standard","","False" +"p21182","Stationary Expense","21182","account.data_account_type_expenses","l10n_in.indian_chart_template_standard","","False" +"p21183","Travelling Expense","21183","account.data_account_type_expenses","l10n_in.indian_chart_template_standard","","False" +"p2121","Opening Stock","2121","account.data_account_type_expenses","l10n_in.indian_chart_template_standard","","False" +"p2122","Purchase Stock","2122","account.data_account_type_expenses","l10n_in.indian_chart_template_standard","","False" +"p2123","Closing Stock","2123","account.data_account_type_expenses","l10n_in.indian_chart_template_standard","","False" +"p2131","Loss on Sale of Assets","2131","account.data_account_type_expenses","l10n_in.indian_chart_template_standard","","False" +"p2132","Write Off Expense","2132","account.data_account_type_expenses","l10n_in.indian_chart_template_standard","","False" diff --git a/addons/l10n_in/data/account_chart_template_data.xml b/addons/l10n_in/data/account_chart_template_data.xml new file mode 100644 index 00000000..5a035de6 --- /dev/null +++ b/addons/l10n_in/data/account_chart_template_data.xml @@ -0,0 +1,8 @@ +<?xml version="1.0" encoding="utf-8"?> +<odoo> + <data noupdate="1"> + <function model="account.chart.template" name="try_loading"> + <value eval="[ref('l10n_in.indian_chart_template_standard')]"/> + </function> + </data> +</odoo> diff --git a/addons/l10n_in/data/account_data.xml b/addons/l10n_in/data/account_data.xml new file mode 100644 index 00000000..c20cfa88 --- /dev/null +++ b/addons/l10n_in/data/account_data.xml @@ -0,0 +1,29 @@ +<?xml version="1.0" encoding="utf-8"?> +<odoo> + <data noupdate="1"> + + <!-- Account Tax Group --> + <record id="sgst_group" model="account.tax.group"> + <field name="name">SGST</field> + </record> + <record id="cgst_group" model="account.tax.group"> + <field name="name">CGST</field> + </record> + <record id="igst_group" model="account.tax.group"> + <field name="name">IGST</field> + </record> + <record id="cess_group" model="account.tax.group"> + <field name="name">Cess</field> + </record> + <record id="gst_group" model="account.tax.group"> + <field name="name">GST</field> + </record> + <record id="exempt_group" model="account.tax.group"> + <field name="name">Exempt</field> + </record> + <record id="nil_rated_group" model="account.tax.group"> + <field name="name">Nil Rated</field> + </record> + + </data> +</odoo> diff --git a/addons/l10n_in/data/account_fiscal_position_data.xml b/addons/l10n_in/data/account_fiscal_position_data.xml new file mode 100644 index 00000000..169c309f --- /dev/null +++ b/addons/l10n_in/data/account_fiscal_position_data.xml @@ -0,0 +1,211 @@ +<?xml version="1.0" encoding="utf-8"?> +<odoo> + + <!-- Fiscal Position Templates --> + <record model="account.fiscal.position.template" id="fiscal_position_in_inter_state"> + <field name="chart_template_id" ref="indian_chart_template_standard"/> + <field name="name">Inter State</field> + </record> + + <record model="account.fiscal.position.template" id="fiscal_position_in_export"> + <field name="chart_template_id" ref="indian_chart_template_standard"/> + <field name="name">Export</field> + </record> + + <!-- Fiscal Position Tax Templates --> + <record id="account_fiscal_position_tax_in_sale_1_inter" model="account.fiscal.position.tax.template"> + <field name="position_id" ref="fiscal_position_in_inter_state"/> + <field name="tax_src_id" ref="sgst_sale_1"/> + <field name="tax_dest_id" ref="igst_sale_1"/> + </record> + <record id="account_fiscal_position_tax_in_sale_2_inter" model="account.fiscal.position.tax.template"> + <field name="position_id" ref="fiscal_position_in_inter_state"/> + <field name="tax_src_id" ref="sgst_sale_2"/> + <field name="tax_dest_id" ref="igst_sale_2"/> + </record> + <record id="account_fiscal_position_tax_in_sale_5_inter" model="account.fiscal.position.tax.template"> + <field name="position_id" ref="fiscal_position_in_inter_state"/> + <field name="tax_src_id" ref="sgst_sale_5"/> + <field name="tax_dest_id" ref="igst_sale_5"/> + </record> + <record id="account_fiscal_position_tax_in_sale_12_inter" model="account.fiscal.position.tax.template"> + <field name="position_id" ref="fiscal_position_in_inter_state"/> + <field name="tax_src_id" ref="sgst_sale_12"/> + <field name="tax_dest_id" ref="igst_sale_12"/> + </record> + <record id="account_fiscal_position_tax_in_sale_18_inter" model="account.fiscal.position.tax.template"> + <field name="position_id" ref="fiscal_position_in_inter_state"/> + <field name="tax_src_id" ref="sgst_sale_18"/> + <field name="tax_dest_id" ref="igst_sale_18"/> + </record> + <record id="account_fiscal_position_tax_in_sale_28_inter" model="account.fiscal.position.tax.template"> + <field name="position_id" ref="fiscal_position_in_inter_state"/> + <field name="tax_src_id" ref="sgst_sale_28"/> + <field name="tax_dest_id" ref="igst_sale_28"/> + </record> + + <record id="account_fiscal_position_tax_in_purchase_1_inter" model="account.fiscal.position.tax.template"> + <field name="position_id" ref="fiscal_position_in_inter_state"/> + <field name="tax_src_id" ref="sgst_purchase_1"/> + <field name="tax_dest_id" ref="igst_purchase_1"/> + </record> + <record id="account_fiscal_position_tax_in_purchase_2_inter" model="account.fiscal.position.tax.template"> + <field name="position_id" ref="fiscal_position_in_inter_state"/> + <field name="tax_src_id" ref="sgst_purchase_2"/> + <field name="tax_dest_id" ref="igst_purchase_2"/> + </record> + <record id="account_fiscal_position_tax_in_purchase_5_inter" model="account.fiscal.position.tax.template"> + <field name="position_id" ref="fiscal_position_in_inter_state"/> + <field name="tax_src_id" ref="sgst_purchase_5"/> + <field name="tax_dest_id" ref="igst_purchase_5"/> + </record> + <record id="account_fiscal_position_tax_in_purchase_12_inter" model="account.fiscal.position.tax.template"> + <field name="position_id" ref="fiscal_position_in_inter_state"/> + <field name="tax_src_id" ref="sgst_purchase_12"/> + <field name="tax_dest_id" ref="igst_purchase_12"/> + </record> + <record id="account_fiscal_position_tax_in_purchase_18_inter" model="account.fiscal.position.tax.template"> + <field name="position_id" ref="fiscal_position_in_inter_state"/> + <field name="tax_src_id" ref="sgst_purchase_18"/> + <field name="tax_dest_id" ref="igst_purchase_18"/> + </record> + <record id="account_fiscal_position_tax_in_purchase_28_inter" model="account.fiscal.position.tax.template"> + <field name="position_id" ref="fiscal_position_in_inter_state"/> + <field name="tax_src_id" ref="sgst_purchase_28"/> + <field name="tax_dest_id" ref="igst_purchase_28"/> + </record> + + <record id="account_fiscal_position_tax_in_sale_1_exp" model="account.fiscal.position.tax.template"> + <field name="position_id" ref="fiscal_position_in_export"/> + <field name="tax_src_id" ref="sgst_sale_1"/> + <field name="tax_dest_id" ref="igst_sale_1"/> + </record> + <record id="account_fiscal_position_tax_in_sale_2_exp" model="account.fiscal.position.tax.template"> + <field name="position_id" ref="fiscal_position_in_export"/> + <field name="tax_src_id" ref="sgst_sale_2"/> + <field name="tax_dest_id" ref="igst_sale_2"/> + </record> + <record id="account_fiscal_position_tax_in_sale_5_exp" model="account.fiscal.position.tax.template"> + <field name="position_id" ref="fiscal_position_in_export"/> + <field name="tax_src_id" ref="sgst_sale_5"/> + <field name="tax_dest_id" ref="igst_sale_5"/> + </record> + <record id="account_fiscal_position_tax_in_sale_12_exp" model="account.fiscal.position.tax.template"> + <field name="position_id" ref="fiscal_position_in_export"/> + <field name="tax_src_id" ref="sgst_sale_12"/> + <field name="tax_dest_id" ref="igst_sale_12"/> + </record> + <record id="account_fiscal_position_tax_in_sale_18_exp" model="account.fiscal.position.tax.template"> + <field name="position_id" ref="fiscal_position_in_export"/> + <field name="tax_src_id" ref="sgst_sale_18"/> + <field name="tax_dest_id" ref="igst_sale_18"/> + </record> + <record id="account_fiscal_position_tax_in_sale_28_exp" model="account.fiscal.position.tax.template"> + <field name="position_id" ref="fiscal_position_in_export"/> + <field name="tax_src_id" ref="sgst_sale_28"/> + <field name="tax_dest_id" ref="igst_sale_28"/> + </record> + + <record id="account_fiscal_position_tax_in_purchase_1_exp" model="account.fiscal.position.tax.template"> + <field name="position_id" ref="fiscal_position_in_export"/> + <field name="tax_src_id" ref="sgst_purchase_1"/> + <field name="tax_dest_id" ref="igst_purchase_1"/> + </record> + <record id="account_fiscal_position_tax_in_purchase_2_exp" model="account.fiscal.position.tax.template"> + <field name="position_id" ref="fiscal_position_in_export"/> + <field name="tax_src_id" ref="sgst_purchase_2"/> + <field name="tax_dest_id" ref="igst_purchase_2"/> + </record> + <record id="account_fiscal_position_tax_in_purchase_5_exp" model="account.fiscal.position.tax.template"> + <field name="position_id" ref="fiscal_position_in_export"/> + <field name="tax_src_id" ref="sgst_purchase_5"/> + <field name="tax_dest_id" ref="igst_purchase_5"/> + </record> + <record id="account_fiscal_position_tax_in_purchase_12_exp" model="account.fiscal.position.tax.template"> + <field name="position_id" ref="fiscal_position_in_export"/> + <field name="tax_src_id" ref="sgst_purchase_12"/> + <field name="tax_dest_id" ref="igst_purchase_12"/> + </record> + <record id="account_fiscal_position_tax_in_purchase_18_exp" model="account.fiscal.position.tax.template"> + <field name="position_id" ref="fiscal_position_in_export"/> + <field name="tax_src_id" ref="sgst_purchase_18"/> + <field name="tax_dest_id" ref="igst_purchase_18"/> + </record> + <record id="account_fiscal_position_tax_in_purchase_28_exp" model="account.fiscal.position.tax.template"> + <field name="position_id" ref="fiscal_position_in_export"/> + <field name="tax_src_id" ref="sgst_purchase_28"/> + <field name="tax_dest_id" ref="igst_purchase_28"/> + </record> + + <record model="account.fiscal.position.template" id="fiscal_position_in_reverse_charge_intra"> + <field name="chart_template_id" ref="indian_chart_template_standard"/> + <field name="name">Reverse charge Intra State</field> + </record> + + <record id="account_fiscal_position_tax_in_purchase_1_intra_rc" model="account.fiscal.position.tax.template"> + <field name="position_id" ref="fiscal_position_in_reverse_charge_intra"/> + <field name="tax_src_id" ref="sgst_purchase_1"/> + <field name="tax_dest_id" ref="sgst_purchase_1_rc"/> + </record> + <record id="account_fiscal_position_tax_in_purchase_2_intra_rc" model="account.fiscal.position.tax.template"> + <field name="position_id" ref="fiscal_position_in_reverse_charge_intra"/> + <field name="tax_src_id" ref="sgst_purchase_2"/> + <field name="tax_dest_id" ref="sgst_purchase_2_rc"/> + </record> + <record id="account_fiscal_position_tax_in_purchase_5_intra_rc" model="account.fiscal.position.tax.template"> + <field name="position_id" ref="fiscal_position_in_reverse_charge_intra"/> + <field name="tax_src_id" ref="sgst_purchase_5"/> + <field name="tax_dest_id" ref="sgst_purchase_5_rc"/> + </record> + <record id="account_fiscal_position_tax_in_purchase_12_intra_rc" model="account.fiscal.position.tax.template"> + <field name="position_id" ref="fiscal_position_in_reverse_charge_intra"/> + <field name="tax_src_id" ref="sgst_purchase_12"/> + <field name="tax_dest_id" ref="sgst_purchase_12_rc"/> + </record> + <record id="account_fiscal_position_tax_in_purchase_18_intra_rc" model="account.fiscal.position.tax.template"> + <field name="position_id" ref="fiscal_position_in_reverse_charge_intra"/> + <field name="tax_src_id" ref="sgst_purchase_18"/> + <field name="tax_dest_id" ref="sgst_purchase_18_rc"/> + </record> + <record id="account_fiscal_position_tax_in_purchase_28_intra_rc" model="account.fiscal.position.tax.template"> + <field name="position_id" ref="fiscal_position_in_reverse_charge_intra"/> + <field name="tax_src_id" ref="sgst_purchase_28"/> + <field name="tax_dest_id" ref="sgst_purchase_28_rc"/> + </record> + + <record model="account.fiscal.position.template" id="fiscal_position_in_reverse_charge_inter"> + <field name="chart_template_id" ref="indian_chart_template_standard"/> + <field name="name">Reverse charge Inter State</field> + </record> + + <record id="account_fiscal_position_tax_in_purchase_1_rc_inter_rc" model="account.fiscal.position.tax.template"> + <field name="position_id" ref="fiscal_position_in_reverse_charge_inter"/> + <field name="tax_src_id" ref="sgst_purchase_1"/> + <field name="tax_dest_id" ref="igst_purchase_1_rc"/> + </record> + <record id="account_fiscal_position_tax_in_purchase_2_rc_inter_rc" model="account.fiscal.position.tax.template"> + <field name="position_id" ref="fiscal_position_in_reverse_charge_inter"/> + <field name="tax_src_id" ref="sgst_purchase_2"/> + <field name="tax_dest_id" ref="igst_purchase_2_rc"/> + </record> + <record id="account_fiscal_position_tax_in_purchase_5_rc_inter_rc" model="account.fiscal.position.tax.template"> + <field name="position_id" ref="fiscal_position_in_reverse_charge_inter"/> + <field name="tax_src_id" ref="sgst_purchase_5"/> + <field name="tax_dest_id" ref="igst_purchase_5_rc"/> + </record> + <record id="account_fiscal_position_tax_in_purchase_12_rc_inter_rc" model="account.fiscal.position.tax.template"> + <field name="position_id" ref="fiscal_position_in_reverse_charge_inter"/> + <field name="tax_src_id" ref="sgst_purchase_12"/> + <field name="tax_dest_id" ref="igst_purchase_12_rc"/> + </record> + <record id="account_fiscal_position_tax_in_purchase_18_rc_inter_rc" model="account.fiscal.position.tax.template"> + <field name="position_id" ref="fiscal_position_in_reverse_charge_inter"/> + <field name="tax_src_id" ref="sgst_purchase_18"/> + <field name="tax_dest_id" ref="igst_purchase_18_rc"/> + </record> + <record id="account_fiscal_position_tax_in_purchase_28_rc_inter_rc" model="account.fiscal.position.tax.template"> + <field name="position_id" ref="fiscal_position_in_reverse_charge_inter"/> + <field name="tax_src_id" ref="sgst_purchase_28"/> + <field name="tax_dest_id" ref="igst_purchase_28_rc"/> + </record> +</odoo> diff --git a/addons/l10n_in/data/account_tax_template_data.xml b/addons/l10n_in/data/account_tax_template_data.xml new file mode 100644 index 00000000..30113e77 --- /dev/null +++ b/addons/l10n_in/data/account_tax_template_data.xml @@ -0,0 +1,3050 @@ +<?xml version="1.0" encoding="utf-8"?> +<odoo> + + <record id="tax_report" model="account.tax.report"> + <field name="name">Tax Report</field> + <field name="country_id" ref="base.in"/> + </record> + + <record id="tax_report_line_gst" model="account.tax.report.line"> + <field name="name">GST</field> + <field name="sequence">1</field> + <field name="report_id" ref="tax_report"/> + </record> + <record id="tax_report_line_igst_root" model="account.tax.report.line"> + <field name="name">IGST</field> + <field name="sequence">2</field> + <field name="report_id" ref="tax_report"/> + </record> + <record id="tax_report_line_gst_others" model="account.tax.report.line"> + <field name="name">Others</field> + <field name="sequence">3</field> + <field name="report_id" ref="tax_report"/> + </record> + + <record id="tax_report_line_sgst" model="account.tax.report.line"> + <field name="name">SGST</field> + <field name="tag_name">SGST</field> + <field name="parent_id" ref="tax_report_line_gst"/> + <field name="sequence">1</field> + <field name="report_id" ref="tax_report"/> + </record> + <record id="tax_report_line_cgst" model="account.tax.report.line"> + <field name="name">CGST</field> + <field name="tag_name">CGST</field> + <field name="parent_id" ref="tax_report_line_gst"/> + <field name="sequence">2</field> + <field name="report_id" ref="tax_report"/> + </record> + + <record id="tax_report_line_igst" model="account.tax.report.line"> + <field name="name">IGST</field> + <field name="tag_name">IGST</field> + <field name="parent_id" ref="tax_report_line_igst_root"/> + <field name="sequence">3</field> + <field name="report_id" ref="tax_report"/> + </record> + <record id="tax_report_line_cess" model="account.tax.report.line"> + <field name="name">CESS</field> + <field name="tag_name">CESS</field> + <field name="parent_id" ref="tax_report_line_gst_others"/> + <field name="sequence">4</field> + <field name="report_id" ref="tax_report"/> + </record> + + <record id="tax_report_line_sgst_rc" model="account.tax.report.line"> + <field name="name">SGST Reverse Charge</field> + <field name="tag_name">SGST (RC)</field> + <field name="parent_id" ref="tax_report_line_gst"/> + <field name="report_id" ref="tax_report"/> + <field name="sequence">3</field> + </record> + <record id="tax_report_line_cgst_rc" model="account.tax.report.line"> + <field name="name">CGST Reverse Charge</field> + <field name="tag_name">CGST (RC)</field> + <field name="parent_id" ref="tax_report_line_gst"/> + <field name="report_id" ref="tax_report"/> + <field name="sequence">4</field> + </record> + + <record id="tax_report_line_igst_rc" model="account.tax.report.line"> + <field name="name">IGST Reverse Charge</field> + <field name="tag_name">IGST (RC)</field> + <field name="parent_id" ref="tax_report_line_igst_root"/> + <field name="report_id" ref="tax_report"/> + <field name="sequence">4</field> + </record> + <record id="tax_report_line_cess_rc" model="account.tax.report.line"> + <field name="name">CESS Reverse Charge</field> + <field name="tag_name">CESS (RC)</field> + <field name="parent_id" ref="tax_report_line_gst_others"/> + <field name="report_id" ref="tax_report"/> + <field name="sequence">5</field> + </record> + + <record id="tax_report_line_exempt" model="account.tax.report.line"> + <field name="name">Exempt</field> + <field name="tag_name">Exempt</field> + <field name="parent_id" ref="tax_report_line_gst_others"/> + <field name="sequence">5</field> + <field name="report_id" ref="tax_report"/> + </record> + <record id="tax_report_line_nil_rated" model="account.tax.report.line"> + <field name="name">Nil Rated</field> + <field name="tag_name">Nil Rated</field> + <field name="parent_id" ref="tax_report_line_gst_others"/> + <field name="sequence">6</field> + <field name="report_id" ref="tax_report"/> + </record> + <record id="tax_report_line_zero_rated" model="account.tax.report.line"> + <field name="name">Zero Rated</field> + <field name="tag_name">Zero Rated</field> + <field name="parent_id" ref="tax_report_line_gst_others"/> + <field name="sequence">7</field> + <field name="report_id" ref="tax_report"/> + </record> + + + <!-- GST TAXES--> + + <!-- CESS Tax --> + + <record id="cess_sale_5" model="account.tax.template"> + <field name="name">CESS Sale 5%</field> + <field name="description">CESS 5%</field> + <field name="type_tax_use">none</field> + <field name="amount_type">percent</field> + <field name="amount">5</field> + <field name="tax_group_id" ref="cess_group"/> + <field name="chart_template_id" ref="indian_chart_template_standard"/> + <field name="invoice_repartition_line_ids" eval="[(5, 0, 0), + (0,0, { + 'factor_percent': 100, + 'repartition_type': 'base', + }), + + (0,0, { + 'factor_percent': 100, + 'repartition_type': 'tax', + 'account_id': ref('p11235'), + 'plus_report_line_ids': [ref('tax_report_line_cess')], + }), + ]"/> + <field name="refund_repartition_line_ids" eval="[(5, 0, 0), + (0,0, { + 'factor_percent': 100, + 'repartition_type': 'base', + }), + + (0,0, { + 'factor_percent': 100, + 'repartition_type': 'tax', + 'account_id': ref('p10055'), + 'minus_report_line_ids': [ref('tax_report_line_cess')], + }), + ]"/> + </record> + + <record id="cess_sale_1591" model="account.tax.template"> + <field name="name">CESS Sale 1591 Per Thousand</field> + <field name="description">1591 PER THOUSAND</field> + <field name="type_tax_use">none</field> + <field name="amount_type">fixed</field> + <field name="amount">1.591</field> + <field name="tax_group_id" ref="cess_group"/> + <field name="chart_template_id" ref="indian_chart_template_standard"/> + <field name="invoice_repartition_line_ids" eval="[(5, 0, 0), + (0,0, { + 'factor_percent': 100, + 'repartition_type': 'base', + }), + + (0,0, { + 'factor_percent': 100, + 'repartition_type': 'tax', + 'account_id': ref('p11235'), + 'plus_report_line_ids': [ref('tax_report_line_cess')], + }), + ]"/> + <field name="refund_repartition_line_ids" eval="[(5, 0, 0), + (0,0, { + 'factor_percent': 100, + 'repartition_type': 'base', + }), + + (0,0, { + 'factor_percent': 100, + 'repartition_type': 'tax', + 'account_id': ref('p10055'), + 'minus_report_line_ids': [ref('tax_report_line_cess')], + }), + ]"/> + </record> + + <record id="cess_5_plus_1591_sale" model="account.tax.template"> + <field name="name">CESS 5% + RS.1591/THOUSAND</field> + <field name="description">CESS 5% + RS.1591/THOUSAND</field> + <field name="type_tax_use">sale</field> + <field name="amount_type">group</field> + <field name="amount">0</field> + <field name="chart_template_id" ref="indian_chart_template_standard"/> + <field name="children_tax_ids" eval="[(6, 0, [ref('cess_sale_5'),ref('cess_sale_1591'),])]"/> + <field name="tax_group_id" ref="cess_group"/> + </record> + + <record id="cess_21_4170_higer_sale" model="account.tax.template"> + <field name="name">CESS 21% or RS.4170/THOUSAND</field> + <field name="description">CESS 21% or RS.4170/THOUSAND</field> + <field name="type_tax_use">sale</field> + <field name="amount_type">code</field> + <field name="amount">0</field> + <field name="python_compute">result=base_amount * 0.21 +tax=quantity * 4.17 +if tax > result:result=tax</field> + <field name="tax_group_id" ref="cess_group"/> + <field name="chart_template_id" ref="indian_chart_template_standard"/> + <field name="invoice_repartition_line_ids" eval="[(5, 0, 0), + (0,0, { + 'factor_percent': 100, + 'repartition_type': 'base', + }), + + (0,0, { + 'factor_percent': 100, + 'repartition_type': 'tax', + 'account_id': ref('p11235'), + 'plus_report_line_ids': [ref('tax_report_line_cess')], + }), + ]"/> + <field name="refund_repartition_line_ids" eval="[(5, 0, 0), + (0,0, { + 'factor_percent': 100, + 'repartition_type': 'base', + }), + + (0,0, { + 'factor_percent': 100, + 'repartition_type': 'tax', + 'account_id': ref('p10055'), + 'minus_report_line_ids': [ref('tax_report_line_cess')], + }), + ]"/> + </record> + + <!-- Exempt --> + + <record id="exempt_sale" model="account.tax.template"> + <field name="name">Exempt Sale</field> + <field name="description">Exempt</field> + <field name="type_tax_use">sale</field> + <field name="amount_type">percent</field> + <field name="amount">0</field> + <field name="chart_template_id" ref="indian_chart_template_standard"/> + <field name="tax_group_id" ref="exempt_group"/> + <field name="invoice_repartition_line_ids" eval="[(5, 0, 0), + (0,0, { + 'factor_percent': 100, + 'repartition_type': 'base', + 'plus_report_line_ids': [ref('tax_report_line_exempt')], + + }), + (0,0, { + 'factor_percent': 100, + 'repartition_type': 'tax', + + }), + ]"/> + <field name="refund_repartition_line_ids" eval="[(5, 0, 0), + (0,0, { + 'factor_percent': 100, + 'repartition_type': 'base', + 'minus_report_line_ids': [ref('tax_report_line_exempt')], + }), + (0,0, { + 'factor_percent': 100, + 'repartition_type': 'tax', + + }), + ]"/> + </record> + + <!-- Nil Rated --> + + <record id="nil_rated_sale" model="account.tax.template"> + <field name="name">Nil Rated</field> + <field name="description">Nil Rated</field> + <field name="type_tax_use">sale</field> + <field name="amount_type">percent</field> + <field name="amount">0</field> + <field name="chart_template_id" ref="indian_chart_template_standard"/> + <field name="tax_group_id" ref="nil_rated_group"/> + <field name="invoice_repartition_line_ids" eval="[(5, 0, 0), + (0,0, { + 'factor_percent': 100, + 'repartition_type': 'base', + 'plus_report_line_ids': [ref('tax_report_line_nil_rated')], + + }), + (0,0, { + 'factor_percent': 100, + 'repartition_type': 'tax', + + }), + ]"/> + <field name="refund_repartition_line_ids" eval="[(5, 0, 0), + (0,0, { + 'factor_percent': 100, + 'repartition_type': 'base', + 'minus_report_line_ids': [ref('tax_report_line_nil_rated')], + }), + (0,0, { + 'factor_percent': 100, + 'repartition_type': 'tax', + + }), + ]"/> + </record> + + <!-- IGST --> + + <record id="igst_sale_0" model="account.tax.template"> + <field name="name">IGST 0%</field> + <field name="description">IGST 0%</field> + <field name="type_tax_use">sale</field> + <field name="amount_type">percent</field> + <field name="amount">0</field> + <field name="chart_template_id" ref="indian_chart_template_standard"/> + <field name="tax_group_id" ref="igst_group"/> + <field name="invoice_repartition_line_ids" eval="[(5, 0, 0), + (0,0, { + 'factor_percent': 100, + 'repartition_type': 'base', + 'plus_report_line_ids': [ref('tax_report_line_zero_rated')], + }), + + (0,0, { + 'factor_percent': 100, + 'repartition_type': 'tax', + }), + ]"/> + <field name="refund_repartition_line_ids" eval="[(5, 0, 0), + (0,0, { + 'factor_percent': 100, + 'repartition_type': 'base', + 'minus_report_line_ids': [ref('tax_report_line_zero_rated')], + }), + + (0,0, { + 'factor_percent': 100, + 'repartition_type': 'tax', + }), + ]"/> + </record> + + <record id="igst_sale_1" model="account.tax.template"> + <field name="name">IGST 1%</field> + <field name="description">IGST 1%</field> + <field name="type_tax_use">sale</field> + <field name="amount_type">percent</field> + <field name="amount">1</field> + <field name="chart_template_id" ref="indian_chart_template_standard"/> + <field name="tax_group_id" ref="igst_group"/> + <field name="invoice_repartition_line_ids" eval="[(5, 0, 0), + (0,0, { + 'factor_percent': 100, + 'repartition_type': 'base', + }), + + (0,0, { + 'factor_percent': 100, + 'repartition_type': 'tax', + 'account_id': ref('p11234'), + 'plus_report_line_ids': [ref('tax_report_line_igst')], + }), + ]"/> + <field name="refund_repartition_line_ids" eval="[(5, 0, 0), + (0,0, { + 'factor_percent': 100, + 'repartition_type': 'base', + }), + + (0,0, { + 'factor_percent': 100, + 'repartition_type': 'tax', + 'account_id': ref('p10053'), + 'minus_report_line_ids': [ref('tax_report_line_igst')], + }), + ]"/> + </record> + + <record id="igst_sale_2" model="account.tax.template"> + <field name="name">IGST 2%</field> + <field name="description">IGST 2%</field> + <field name="type_tax_use">sale</field> + <field name="amount_type">percent</field> + <field name="amount">2</field> + <field name="chart_template_id" ref="indian_chart_template_standard"/> + <field name="tax_group_id" ref="igst_group"/> + <field name="invoice_repartition_line_ids" eval="[(5, 0, 0), + (0,0, { + 'factor_percent': 100, + 'repartition_type': 'base', + }), + + (0,0, { + 'factor_percent': 100, + 'repartition_type': 'tax', + 'account_id': ref('p11234'), + 'plus_report_line_ids': [ref('tax_report_line_igst')], + }), + ]"/> + <field name="refund_repartition_line_ids" eval="[(5, 0, 0), + (0,0, { + 'factor_percent': 100, + 'repartition_type': 'base', + }), + + (0,0, { + 'factor_percent': 100, + 'repartition_type': 'tax', + 'account_id': ref('p10053'), + 'minus_report_line_ids': [ref('tax_report_line_igst')], + }), + ]"/> + </record> + + <record id="igst_sale_28" model="account.tax.template"> + <field name="name">IGST 28%</field> + <field name="description">IGST 28%</field> + <field name="type_tax_use">sale</field> + <field name="amount_type">percent</field> + <field name="amount">28</field> + <field name="chart_template_id" ref="indian_chart_template_standard"/> + <field name="tax_group_id" ref="igst_group"/> + <field name="invoice_repartition_line_ids" eval="[(5, 0, 0), + (0,0, { + 'factor_percent': 100, + 'repartition_type': 'base', + }), + + (0,0, { + 'factor_percent': 100, + 'repartition_type': 'tax', + 'account_id': ref('p11234'), + 'plus_report_line_ids': [ref('tax_report_line_igst')], + }), + ]"/> + <field name="refund_repartition_line_ids" eval="[(5, 0, 0), + (0,0, { + 'factor_percent': 100, + 'repartition_type': 'base', + }), + + (0,0, { + 'factor_percent': 100, + 'repartition_type': 'tax', + 'account_id': ref('p10053'), + 'minus_report_line_ids': [ref('tax_report_line_igst')], + }), + ]"/> + </record> + + <record id="igst_sale_18" model="account.tax.template"> + <field name="name">IGST 18%</field> + <field name="description">IGST 18%</field> + <field name="type_tax_use">sale</field> + <field name="amount_type">percent</field> + <field name="amount">18</field> + <field name="chart_template_id" ref="indian_chart_template_standard"/> + <field name="tax_group_id" ref="igst_group"/> + <field name="invoice_repartition_line_ids" eval="[(5, 0, 0), + (0,0, { + 'factor_percent': 100, + 'repartition_type': 'base', + }), + + (0,0, { + 'factor_percent': 100, + 'repartition_type': 'tax', + 'account_id': ref('p11234'), + 'plus_report_line_ids': [ref('tax_report_line_igst')], + }), + ]"/> + <field name="refund_repartition_line_ids" eval="[(5, 0, 0), + (0,0, { + 'factor_percent': 100, + 'repartition_type': 'base', + }), + + (0,0, { + 'factor_percent': 100, + 'repartition_type': 'tax', + 'account_id': ref('p10053'), + 'minus_report_line_ids': [ref('tax_report_line_igst')], + }), + ]"/> + </record> + + <record id="igst_sale_12" model="account.tax.template"> + <field name="name">IGST 12%</field> + <field name="description">IGST 12%</field> + <field name="type_tax_use">sale</field> + <field name="amount_type">percent</field> + <field name="amount">12</field> + <field name="chart_template_id" ref="indian_chart_template_standard"/> + <field name="tax_group_id" ref="igst_group"/> + <field name="invoice_repartition_line_ids" eval="[(5, 0, 0), + (0,0, { + 'factor_percent': 100, + 'repartition_type': 'base', + }), + + (0,0, { + 'factor_percent': 100, + 'repartition_type': 'tax', + 'account_id': ref('p11234'), + 'plus_report_line_ids': [ref('tax_report_line_igst')], + }), + ]"/> + <field name="refund_repartition_line_ids" eval="[(5, 0, 0), + (0,0, { + 'factor_percent': 100, + 'repartition_type': 'base', + }), + + (0,0, { + 'factor_percent': 100, + 'repartition_type': 'tax', + 'account_id': ref('p10053'), + 'minus_report_line_ids': [ref('tax_report_line_igst')], + }), + ]"/> + </record> + + <record id="igst_sale_5" model="account.tax.template"> + <field name="name">IGST 5%</field> + <field name="description">IGST 5%</field> + <field name="type_tax_use">sale</field> + <field name="amount_type">percent</field> + <field name="amount">5</field> + <field name="chart_template_id" ref="indian_chart_template_standard"/> + <field name="tax_group_id" ref="igst_group"/> + <field name="invoice_repartition_line_ids" eval="[(5, 0, 0), + (0,0, { + 'factor_percent': 100, + 'repartition_type': 'base', + }), + + (0,0, { + 'factor_percent': 100, + 'repartition_type': 'tax', + 'account_id': ref('p11234'), + 'plus_report_line_ids': [ref('tax_report_line_igst')], + }), + ]"/> + <field name="refund_repartition_line_ids" eval="[(5, 0, 0), + (0,0, { + 'factor_percent': 100, + 'repartition_type': 'base', + }), + + (0,0, { + 'factor_percent': 100, + 'repartition_type': 'tax', + 'account_id': ref('p10053'), + 'minus_report_line_ids': [ref('tax_report_line_igst')], + }), + ]"/> + </record> + + <!-- SGST & CGST Sales Group Tax --> + + <record id="sgst_sale_0_5" model="account.tax.template"> + <field name="name">SGST Sale 0.5%</field> + <field name="description">SGST 0.5%</field> + <field name="type_tax_use">none</field> + <field name="amount_type">percent</field> + <field name="amount">0.5</field> + <field name="chart_template_id" ref="indian_chart_template_standard"/> + <field name="tax_group_id" ref="sgst_group"/> + <field name="invoice_repartition_line_ids" eval="[(5, 0, 0), + (0,0, { + 'factor_percent': 100, + 'repartition_type': 'base', + }), + + (0,0, { + 'factor_percent': 100, + 'repartition_type': 'tax', + 'account_id': ref('p11232'), + 'plus_report_line_ids': [ref('tax_report_line_sgst')], + }), + ]"/> + <field name="refund_repartition_line_ids" eval="[(5, 0, 0), + (0,0, { + 'factor_percent': 100, + 'repartition_type': 'base', + }), + + (0,0, { + 'factor_percent': 100, + 'repartition_type': 'tax', + 'account_id': ref('p10051'), + 'minus_report_line_ids': [ref('tax_report_line_sgst')], + }) + ]"/> + </record> + + <record id="cgst_sale_0_5" model="account.tax.template"> + <field name="name">CGST Sale 0.5%</field> + <field name="description">CGST 0.5%</field> + <field name="type_tax_use">none</field> + <field name="amount_type">percent</field> + <field name="amount">0.5</field> + <field name="chart_template_id" ref="indian_chart_template_standard"/> + <field name="tax_group_id" ref="cgst_group"/> + <field name="invoice_repartition_line_ids" eval="[(5, 0, 0), + (0,0, { + 'factor_percent': 100, + 'repartition_type': 'base', + }), + (0,0, { + 'factor_percent': 100, + 'repartition_type': 'tax', + 'account_id': ref('p11233'), + 'plus_report_line_ids': [ref('tax_report_line_cgst')], + }) + ]"/> + <field name="refund_repartition_line_ids" eval="[(5, 0, 0), + (0,0, { + 'factor_percent': 100, + 'repartition_type': 'base', + }), + (0,0, { + 'factor_percent': 100, + 'repartition_type': 'tax', + 'account_id': ref('p10052'), + 'minus_report_line_ids': [ref('tax_report_line_cgst')], + }) + ]"/> + </record> + + <record id="sgst_sale_1" model="account.tax.template"> + <field name="name">GST 1%</field> + <field name="description">GST 1%</field> + <field name="type_tax_use">sale</field> + <field name="amount_type">group</field> + <field name="amount">1.0</field> + <field name="chart_template_id" ref="indian_chart_template_standard"/> + <field name="tax_group_id" ref="gst_group"/> + <field name="children_tax_ids" eval="[(6, 0, [ref('sgst_sale_0_5'), ref('cgst_sale_0_5'),])]"/> + </record> + + <record id="sgst_sale_1_2" model="account.tax.template"> + <field name="name">SGST Sale 1%</field> + <field name="description">SGST 1%</field> + <field name="type_tax_use">none</field> + <field name="amount_type">percent</field> + <field name="amount">1</field> + <field name="chart_template_id" ref="indian_chart_template_standard"/> + <field name="tax_group_id" ref="sgst_group"/> + <field name="invoice_repartition_line_ids" eval="[(5, 0, 0), + (0,0, { + 'factor_percent': 100, + 'repartition_type': 'base', + }), + + (0,0, { + 'factor_percent': 100, + 'repartition_type': 'tax', + 'account_id': ref('p11232'), + 'plus_report_line_ids': [ref('tax_report_line_sgst')], + }) + ]"/> + <field name="refund_repartition_line_ids" eval="[(5, 0, 0), + (0,0, { + 'factor_percent': 100, + 'repartition_type': 'base', + }), + + (0,0, { + 'factor_percent': 100, + 'repartition_type': 'tax', + 'account_id': ref('p10051'), + 'minus_report_line_ids': [ref('tax_report_line_sgst')], + }) + ]"/> + </record> + + <record id="cgst_sale_1_2" model="account.tax.template"> + <field name="name">CGST Sale 1%</field> + <field name="description">CGST 1%</field> + <field name="type_tax_use">none</field> + <field name="amount_type">percent</field> + <field name="amount">1</field> + <field name="chart_template_id" ref="indian_chart_template_standard"/> + <field name="tax_group_id" ref="cgst_group"/> + <field name="invoice_repartition_line_ids" eval="[(5, 0, 0), + (0,0, { + 'factor_percent': 100, + 'repartition_type': 'base', + }), + (0,0, { + 'factor_percent': 100, + 'repartition_type': 'tax', + 'account_id': ref('p11233'), + 'plus_report_line_ids': [ref('tax_report_line_cgst')], + }) + ]"/> + <field name="refund_repartition_line_ids" eval="[(5, 0, 0), + (0,0, { + 'factor_percent': 100, + 'repartition_type': 'base', + }), + (0,0, { + 'factor_percent': 100, + 'repartition_type': 'tax', + 'account_id': ref('p10052'), + 'minus_report_line_ids': [ref('tax_report_line_cgst')], + }) + ]"/> + </record> + + <record id="sgst_sale_2" model="account.tax.template"> + <field name="name">GST 2%</field> + <field name="description">GST 2%</field> + <field name="type_tax_use">sale</field> + <field name="amount_type">group</field> + <field name="amount">2.0</field> + <field name="chart_template_id" ref="indian_chart_template_standard"/> + <field name="tax_group_id" ref="gst_group"/> + <field name="children_tax_ids" eval="[(6, 0, [ref('sgst_sale_1_2'), ref('cgst_sale_1_2'),])]"/> + </record> + + <record id="sgst_sale_14" model="account.tax.template"> + <field name="name">SGST Sale 14%</field> + <field name="description">SGST 14%</field> + <field name="type_tax_use">none</field> + <field name="amount_type">percent</field> + <field name="amount">14</field> + <field name="chart_template_id" ref="indian_chart_template_standard"/> + <field name="tax_group_id" ref="sgst_group"/> + <field name="invoice_repartition_line_ids" eval="[(5, 0, 0), + (0,0, { + 'factor_percent': 100, + 'repartition_type': 'base', + }), + + (0,0, { + 'factor_percent': 100, + 'repartition_type': 'tax', + 'account_id': ref('p11232'), + 'plus_report_line_ids': [ref('tax_report_line_sgst')], + }) + ]"/> + <field name="refund_repartition_line_ids" eval="[(5, 0, 0), + (0,0, { + 'factor_percent': 100, + 'repartition_type': 'base', + }), + + (0,0, { + 'factor_percent': 100, + 'repartition_type': 'tax', + 'account_id': ref('p10051'), + 'minus_report_line_ids': [ref('tax_report_line_sgst')], + }) + ]"/> + </record> + + <record id="cgst_sale_14" model="account.tax.template"> + <field name="name">CGST Sale 14%</field> + <field name="description">CGST 14%</field> + <field name="type_tax_use">none</field> + <field name="amount_type">percent</field> + <field name="amount">14</field> + <field name="chart_template_id" ref="indian_chart_template_standard"/> + <field name="tax_group_id" ref="cgst_group"/> + <field name="invoice_repartition_line_ids" eval="[(5, 0, 0), + (0,0, { + 'factor_percent': 100, + 'repartition_type': 'base', + }), + (0,0, { + 'factor_percent': 100, + 'repartition_type': 'tax', + 'account_id': ref('p11233'), + 'plus_report_line_ids': [ref('tax_report_line_cgst')], + }) + ]"/> + <field name="refund_repartition_line_ids" eval="[(5, 0, 0), + (0,0, { + 'factor_percent': 100, + 'repartition_type': 'base', + }), + (0,0, { + 'factor_percent': 100, + 'repartition_type': 'tax', + 'account_id': ref('p10052'), + 'minus_report_line_ids': [ref('tax_report_line_cgst')], + }) + ]"/> + </record> + + <record id="sgst_sale_28" model="account.tax.template"> + <field name="name">GST 28%</field> + <field name="description">GST 28%</field> + <field name="type_tax_use">sale</field> + <field name="amount_type">group</field> + <field name="amount">28.0</field> + <field name="chart_template_id" ref="indian_chart_template_standard"/> + <field name="tax_group_id" ref="gst_group"/> + <field name="children_tax_ids" eval="[(6, 0, [ref('sgst_sale_14'),ref('cgst_sale_14'),])]"/> + </record> + + <record id="sgst_sale_9" model="account.tax.template"> + <field name="name">SGST Sale 9%</field> + <field name="description">SGST 9%</field> + <field name="type_tax_use">none</field> + <field name="amount_type">percent</field> + <field name="amount">9</field> + <field name="chart_template_id" ref="indian_chart_template_standard"/> + <field name="tax_group_id" ref="sgst_group"/> + <field name="invoice_repartition_line_ids" eval="[(5, 0, 0), + (0,0, { + 'factor_percent': 100, + 'repartition_type': 'base', + }), + + (0,0, { + 'factor_percent': 100, + 'repartition_type': 'tax', + 'account_id': ref('p11232'), + 'plus_report_line_ids': [ref('tax_report_line_sgst')], + }) + ]"/> + <field name="refund_repartition_line_ids" eval="[(5, 0, 0), + (0,0, { + 'factor_percent': 100, + 'repartition_type': 'base', + }), + + (0,0, { + 'factor_percent': 100, + 'repartition_type': 'tax', + 'account_id': ref('p10051'), + 'minus_report_line_ids': [ref('tax_report_line_sgst')], + }) + ]"/> + </record> + + <record id="cgst_sale_9" model="account.tax.template"> + <field name="name">CGST Sale 9%</field> + <field name="description">CGST 9%</field> + <field name="type_tax_use">none</field> + <field name="amount_type">percent</field> + <field name="amount">9</field> + <field name="chart_template_id" ref="indian_chart_template_standard"/> + <field name="tax_group_id" ref="cgst_group"/> + <field name="invoice_repartition_line_ids" eval="[(5, 0, 0), + (0,0, { + 'factor_percent': 100, + 'repartition_type': 'base', + }), + (0,0, { + 'factor_percent': 100, + 'repartition_type': 'tax', + 'account_id': ref('p11233'), + 'plus_report_line_ids': [ref('tax_report_line_cgst')], + }) + ]"/> + <field name="refund_repartition_line_ids" eval="[(5, 0, 0), + (0,0, { + 'factor_percent': 100, + 'repartition_type': 'base', + }), + (0,0, { + 'factor_percent': 100, + 'repartition_type': 'tax', + 'account_id': ref('p10052'), + 'minus_report_line_ids': [ref('tax_report_line_cgst')], + }) + ]"/> + </record> + + <record id="sgst_sale_18" model="account.tax.template"> + <field name="name">GST 18%</field> + <field name="description">GST 18%</field> + <field name="type_tax_use">sale</field> + <field name="amount_type">group</field> + <field name="amount">18.0</field> + <field name="chart_template_id" ref="indian_chart_template_standard"/> + <field name="tax_group_id" ref="gst_group"/> + <field name="children_tax_ids" eval="[(6, 0, [ref('sgst_sale_9'),ref('cgst_sale_9'),])]"/> + </record> + + <record id="sgst_sale_6" model="account.tax.template"> + <field name="name">SGST Sale 6%</field> + <field name="description">SGST 6%</field> + <field name="type_tax_use">none</field> + <field name="amount_type">percent</field> + <field name="amount">6</field> + <field name="chart_template_id" ref="indian_chart_template_standard"/> + <field name="tax_group_id" ref="sgst_group"/> + <field name="invoice_repartition_line_ids" eval="[(5, 0, 0), + (0,0, { + 'factor_percent': 100, + 'repartition_type': 'base', + }), + (0,0, { + 'factor_percent': 100, + 'repartition_type': 'tax', + 'account_id': ref('p11232'), + 'plus_report_line_ids': [ref('tax_report_line_sgst')], + }) + ]"/> + <field name="refund_repartition_line_ids" eval="[(5, 0, 0), + (0,0, { + 'factor_percent': 100, + 'repartition_type': 'base', + }), + (0,0, { + 'factor_percent': 100, + 'repartition_type': 'tax', + 'account_id': ref('p10051'), + 'minus_report_line_ids': [ref('tax_report_line_sgst')], + }) + ]"/> + </record> + + <record id="cgst_sale_6" model="account.tax.template"> + <field name="name">CGST Sale 6%</field> + <field name="description">CGST 6%</field> + <field name="type_tax_use">none</field> + <field name="amount_type">percent</field> + <field name="amount">6</field> + <field name="chart_template_id" ref="indian_chart_template_standard"/> + <field name="tax_group_id" ref="cgst_group"/> + <field name="invoice_repartition_line_ids" eval="[(5, 0, 0), + (0,0, { + 'factor_percent': 100, + 'repartition_type': 'base', + }), + (0,0, { + 'factor_percent': 100, + 'repartition_type': 'tax', + 'account_id': ref('p11233'), + 'plus_report_line_ids': [ref('tax_report_line_cgst')], + }) + ]"/> + <field name="refund_repartition_line_ids" eval="[(5, 0, 0), + (0,0, { + 'factor_percent': 100, + 'repartition_type': 'base', + }), + (0,0, { + 'factor_percent': 100, + 'repartition_type': 'tax', + 'account_id': ref('p10052'), + 'minus_report_line_ids': [ref('tax_report_line_cgst')], + }), + ]"/> + </record> + + <record id="sgst_sale_12" model="account.tax.template"> + <field name="name">GST 12%</field> + <field name="description">GST 12%</field> + <field name="type_tax_use">sale</field> + <field name="amount_type">group</field> + <field name="amount">12.0</field> + <field name="chart_template_id" ref="indian_chart_template_standard"/> + <field name="tax_group_id" ref="gst_group"/> + <field name="children_tax_ids" eval="[(6, 0, [ref('sgst_sale_6'),ref('cgst_sale_6'),])]"/> + </record> + + <record id="sgst_sale_2_5" model="account.tax.template"> + <field name="name">SGST Sale 2.5%</field> + <field name="description">SGST 2.5%</field> + <field name="type_tax_use">none</field> + <field name="amount_type">percent</field> + <field name="amount">2.5</field> + <field name="chart_template_id" ref="indian_chart_template_standard"/> + <field name="tax_group_id" ref="sgst_group"/> + <field name="invoice_repartition_line_ids" eval="[(5, 0, 0), + (0,0, { + 'factor_percent': 100, + 'repartition_type': 'base', + }), + + (0,0, { + 'factor_percent': 100, + 'repartition_type': 'tax', + 'account_id': ref('p11232'), + 'plus_report_line_ids': [ref('tax_report_line_sgst')], + }) + ]"/> + <field name="refund_repartition_line_ids" eval="[(5, 0, 0), + (0,0, { + 'factor_percent': 100, + 'repartition_type': 'base', + }), + + (0,0, { + 'factor_percent': 100, + 'repartition_type': 'tax', + 'account_id': ref('p10051'), + 'minus_report_line_ids': [ref('tax_report_line_sgst')], + }) + ]"/> + </record> + + <record id="cgst_sale_2_5" model="account.tax.template"> + <field name="name">CGST Sale 2.5%</field> + <field name="description">CGST 2.5%</field> + <field name="type_tax_use">none</field> + <field name="amount_type">percent</field> + <field name="amount">2.5</field> + <field name="chart_template_id" ref="indian_chart_template_standard"/> + <field name="tax_group_id" ref="cgst_group"/> + <field name="invoice_repartition_line_ids" eval="[(5, 0, 0), + (0,0, { + 'factor_percent': 100, + 'repartition_type': 'base', + }), + (0,0, { + 'factor_percent': 100, + 'repartition_type': 'tax', + 'account_id': ref('p11233'), + 'plus_report_line_ids': [ref('tax_report_line_cgst')], + }) + ]"/> + <field name="refund_repartition_line_ids" eval="[(5, 0, 0), + (0,0, { + 'factor_percent': 100, + 'repartition_type': 'base', + }), + (0,0, { + 'factor_percent': 100, + 'repartition_type': 'tax', + 'account_id': ref('p10052'), + 'minus_report_line_ids': [ref('tax_report_line_cgst')], + }) + ]"/> + </record> + + <record id="sgst_sale_5" model="account.tax.template"> + <field name="name">GST 5%</field> + <field name="description">GST 5%</field> + <field name="type_tax_use">sale</field> + <field name="amount_type">group</field> + <field name="amount">5.0</field> + <field name="chart_template_id" ref="indian_chart_template_standard"/> + <field name="tax_group_id" ref="gst_group"/> + <field name="sequence">0</field> + <field name="children_tax_ids" eval="[(6, 0, [ref('sgst_sale_2_5'), ref('cgst_sale_2_5'),])]"/> + </record> + + <!-- Purchase Taxes--> + + <!-- CESS Taxes --> + + <record id="cess_purchase_5" model="account.tax.template"> + <field name="name">CESS Purchase 5%</field> + <field name="description">CESS 5%</field> + <field name="type_tax_use">none</field> + <field name="amount_type">percent</field> + <field name="amount">5</field> + <field name="tax_group_id" ref="cess_group"/> + <field name="chart_template_id" ref="indian_chart_template_standard"/> + <field name="invoice_repartition_line_ids" eval="[(5, 0, 0), + (0,0, { + 'factor_percent': 100, + 'repartition_type': 'base', + }), + + (0,0, { + 'factor_percent': 100, + 'repartition_type': 'tax', + 'account_id': ref('p10055'), + 'minus_report_line_ids': [ref('tax_report_line_cess')], + }), + ]"/> + <field name="refund_repartition_line_ids" eval="[(5, 0, 0), + (0,0, { + 'factor_percent': 100, + 'repartition_type': 'base', + }), + + (0,0, { + 'factor_percent': 100, + 'repartition_type': 'tax', + 'account_id': ref('p11235'), + 'plus_report_line_ids': [ref('tax_report_line_cess')], + }), + ]"/> + </record> + + <record id="cess_purchase_1591" model="account.tax.template"> + <field name="name">CESS Purchase 1591 Per Thousand</field> + <field name="description">1591 PER THOUSAND</field> + <field name="type_tax_use">none</field> + <field name="amount_type">fixed</field> + <field name="amount">1.591</field> + <field name="tax_group_id" ref="cess_group"/> + <field name="chart_template_id" ref="indian_chart_template_standard"/> + <field name="invoice_repartition_line_ids" eval="[(5, 0, 0), + (0,0, { + 'factor_percent': 100, + 'repartition_type': 'base', + }), + + (0,0, { + 'factor_percent': 100, + 'repartition_type': 'tax', + 'account_id': ref('p10055'), + 'minus_report_line_ids': [ref('tax_report_line_cess')], + }), + ]"/> + <field name="refund_repartition_line_ids" eval="[(5, 0, 0), + (0,0, { + 'factor_percent': 100, + 'repartition_type': 'base', + }), + + (0,0, { + 'factor_percent': 100, + 'repartition_type': 'tax', + 'account_id': ref('p11235'), + 'plus_report_line_ids': [ref('tax_report_line_cess')], + }), + ]"/> + </record> + + <record id="cess_5_plus_1591_purchase" model="account.tax.template"> + <field name="name">CESS 5% + RS.1591/THOUSAND</field> + <field name="description">CESS 5% + RS.1591/THOUSAND</field> + <field name="type_tax_use">purchase</field> + <field name="amount_type">group</field> + <field name="amount">0</field> + <field name="chart_template_id" ref="indian_chart_template_standard"/> + <field name="children_tax_ids" eval="[(6, 0, [ref('cess_purchase_5'),ref('cess_purchase_1591'),])]"/> + <field name="tax_group_id" ref="cess_group"/> + </record> + + <record id="cess_21_4170_higer_purchase" model="account.tax.template"> + <field name="name">CESS 21% or RS.4170/THOUSAND</field> + <field name="description">CESS 21% or RS.4170/THOUSAND</field> + <field name="type_tax_use">purchase</field> + <field name="amount_type">code</field> + <field name="amount">0</field> + <field name="python_compute">result=base_amount * 0.21 +tax=quantity * 4.17 +if tax > result:result=tax</field> + <field name="tax_group_id" ref="cess_group"/> + <field name="chart_template_id" ref="indian_chart_template_standard"/> + <field name="invoice_repartition_line_ids" eval="[(5, 0, 0), + (0,0, { + 'factor_percent': 100, + 'repartition_type': 'base', + }), + + (0,0, { + 'factor_percent': 100, + 'repartition_type': 'tax', + 'account_id': ref('p10055'), + 'minus_report_line_ids': [ref('tax_report_line_cess')], + }), + ]"/> + <field name="refund_repartition_line_ids" eval="[(5, 0, 0), + (0,0, { + 'factor_percent': 100, + 'repartition_type': 'base', + }), + + (0,0, { + 'factor_percent': 100, + 'repartition_type': 'tax', + 'account_id': ref('p11235'), + 'plus_report_line_ids': [ref('tax_report_line_cess')], + }), + ]"/> + </record> + + <!-- Exempt --> + + <record id="exempt_purchase" model="account.tax.template"> + <field name="name">Exempt purchase</field> + <field name="description">Exempt</field> + <field name="type_tax_use">purchase</field> + <field name="amount_type">percent</field> + <field name="amount">0</field> + <field name="chart_template_id" ref="indian_chart_template_standard"/> + <field name="tax_group_id" ref="exempt_group"/> + <field name="invoice_repartition_line_ids" eval="[(5, 0, 0), + (0,0, { + 'factor_percent': 100, + 'repartition_type': 'base', + 'minus_report_line_ids': [ref('tax_report_line_exempt')], + + }), + (0,0, { + 'factor_percent': 100, + 'repartition_type': 'tax', + }), + ]"/> + <field name="refund_repartition_line_ids" eval="[(5, 0, 0), + (0,0, { + 'factor_percent': 100, + 'repartition_type': 'base', + 'plus_report_line_ids': [ref('tax_report_line_exempt')], + }), + (0,0, { + 'factor_percent': 100, + 'repartition_type': 'tax', + }), + ]"/> + </record> + + <!-- Nil Rated --> + + <record id="nil_rated_purchase" model="account.tax.template"> + <field name="name">Nil Rated</field> + <field name="description">Nil Rat</field> + <field name="type_tax_use">purchase</field> + <field name="amount_type">percent</field> + <field name="amount">0</field> + <field name="chart_template_id" ref="indian_chart_template_standard"/> + <field name="tax_group_id" ref="nil_rated_group"/> + <field name="invoice_repartition_line_ids" eval="[(5, 0, 0), + (0,0, { + 'factor_percent': 100, + 'repartition_type': 'base', + 'minus_report_line_ids': [ref('tax_report_line_nil_rated')], + + }), + (0,0, { + 'factor_percent': 100, + 'repartition_type': 'tax', + + }), + ]"/> + <field name="refund_repartition_line_ids" eval="[(5, 0, 0), + (0,0, { + 'factor_percent': 100, + 'repartition_type': 'base', + 'plus_report_line_ids': [ref('tax_report_line_nil_rated')], + }), + (0,0, { + 'factor_percent': 100, + 'repartition_type': 'tax', + + }), + ]"/> + </record> + + <!-- IGST --> + + <record id="igst_purchase_0" model="account.tax.template"> + <field name="name">IGST 0%</field> + <field name="description">IGST 0%</field> + <field name="type_tax_use">purchase</field> + <field name="amount_type">percent</field> + <field name="amount">0</field> + <field name="chart_template_id" ref="indian_chart_template_standard"/> + <field name="tax_group_id" ref="igst_group"/> + <field name="invoice_repartition_line_ids" eval="[(5, 0, 0), + (0,0, { + 'factor_percent': 100, + 'repartition_type': 'base', + 'minus_report_line_ids': [ref('tax_report_line_zero_rated')], + }), + + (0,0, { + 'factor_percent': 100, + 'repartition_type': 'tax', + }), + ]"/> + <field name="refund_repartition_line_ids" eval="[(5, 0, 0), + (0,0, { + 'factor_percent': 100, + 'repartition_type': 'base', + 'plus_report_line_ids': [ref('tax_report_line_zero_rated')], + }), + + (0,0, { + 'factor_percent': 100, + 'repartition_type': 'tax', + }), + ]"/> + </record> + + <record id="igst_purchase_1" model="account.tax.template"> + <field name="name">IGST 1%</field> + <field name="description">IGST 1%</field> + <field name="type_tax_use">purchase</field> + <field name="amount_type">percent</field> + <field name="amount">1</field> + <field name="chart_template_id" ref="indian_chart_template_standard"/> + <field name="tax_group_id" ref="igst_group"/> + <field name="invoice_repartition_line_ids" eval="[(5, 0, 0), + (0,0, { + 'factor_percent': 100, + 'repartition_type': 'base', + }), + + (0,0, { + 'factor_percent': 100, + 'repartition_type': 'tax', + 'account_id': ref('p10053'), + 'minus_report_line_ids': [ref('tax_report_line_igst')], + }), + ]"/> + <field name="refund_repartition_line_ids" eval="[(5, 0, 0), + (0,0, { + 'factor_percent': 100, + 'repartition_type': 'base', + }), + + (0,0, { + 'factor_percent': 100, + 'repartition_type': 'tax', + 'account_id': ref('p11234'), + 'plus_report_line_ids': [ref('tax_report_line_igst')], + }), + ]"/> + </record> + + <record id="igst_purchase_2" model="account.tax.template"> + <field name="name">IGST 2%</field> + <field name="description">IGST 2%</field> + <field name="type_tax_use">purchase</field> + <field name="amount_type">percent</field> + <field name="amount">2</field> + <field name="chart_template_id" ref="indian_chart_template_standard"/> + <field name="tax_group_id" ref="igst_group"/> + <field name="invoice_repartition_line_ids" eval="[(5, 0, 0), + (0,0, { + 'factor_percent': 100, + 'repartition_type': 'base', + }), + + (0,0, { + 'factor_percent': 100, + 'repartition_type': 'tax', + 'account_id': ref('p10053'), + 'minus_report_line_ids': [ref('tax_report_line_igst')], + }), + ]"/> + <field name="refund_repartition_line_ids" eval="[(5, 0, 0), + (0,0, { + 'factor_percent': 100, + 'repartition_type': 'base', + }), + + (0,0, { + 'factor_percent': 100, + 'repartition_type': 'tax', + 'account_id': ref('p11234'), + 'plus_report_line_ids': [ref('tax_report_line_igst')], + }), + ]"/> + </record> + + <record id="igst_purchase_28" model="account.tax.template"> + <field name="name">IGST 28%</field> + <field name="description">IGST 28%</field> + <field name="type_tax_use">purchase</field> + <field name="amount_type">percent</field> + <field name="amount">28</field> + <field name="chart_template_id" ref="indian_chart_template_standard"/> + <field name="tax_group_id" ref="igst_group"/> + <field name="invoice_repartition_line_ids" eval="[(5, 0, 0), + (0,0, { + 'factor_percent': 100, + 'repartition_type': 'base', + }), + + (0,0, { + 'factor_percent': 100, + 'repartition_type': 'tax', + 'account_id': ref('p10053'), + 'minus_report_line_ids': [ref('tax_report_line_igst')], + }), + ]"/> + <field name="refund_repartition_line_ids" eval="[(5, 0, 0), + (0,0, { + 'factor_percent': 100, + 'repartition_type': 'base', + }), + + (0,0, { + 'factor_percent': 100, + 'repartition_type': 'tax', + 'account_id': ref('p11234'), + 'plus_report_line_ids': [ref('tax_report_line_igst')], + }), + ]"/> + </record> + + <record id="igst_purchase_18" model="account.tax.template"> + <field name="name">IGST 18%</field> + <field name="description">IGST 18%</field> + <field name="type_tax_use">purchase</field> + <field name="amount_type">percent</field> + <field name="amount">18</field> + <field name="chart_template_id" ref="indian_chart_template_standard"/> + <field name="tax_group_id" ref="igst_group"/> + <field name="invoice_repartition_line_ids" eval="[(5, 0, 0), + (0,0, { + 'factor_percent': 100, + 'repartition_type': 'base', + }), + + (0,0, { + 'factor_percent': 100, + 'repartition_type': 'tax', + 'account_id': ref('p10053'), + 'minus_report_line_ids': [ref('tax_report_line_igst')], + }), + ]"/> + <field name="refund_repartition_line_ids" eval="[(5, 0, 0), + (0,0, { + 'factor_percent': 100, + 'repartition_type': 'base', + }), + + (0,0, { + 'factor_percent': 100, + 'repartition_type': 'tax', + 'account_id': ref('p11234'), + 'plus_report_line_ids': [ref('tax_report_line_igst')], + }), + ]"/> + </record> + + <record id="igst_purchase_12" model="account.tax.template"> + <field name="name">IGST 12%</field> + <field name="description">IGST 12%</field> + <field name="type_tax_use">purchase</field> + <field name="amount_type">percent</field> + <field name="amount">12</field> + <field name="chart_template_id" ref="indian_chart_template_standard"/> + <field name="tax_group_id" ref="igst_group"/> + <field name="invoice_repartition_line_ids" eval="[(5, 0, 0), + (0,0, { + 'factor_percent': 100, + 'repartition_type': 'base', + }), + + (0,0, { + 'factor_percent': 100, + 'repartition_type': 'tax', + 'account_id': ref('p10053'), + 'minus_report_line_ids': [ref('tax_report_line_igst')], + }), + ]"/> + <field name="refund_repartition_line_ids" eval="[(5, 0, 0), + (0,0, { + 'factor_percent': 100, + 'repartition_type': 'base', + }), + + (0,0, { + 'factor_percent': 100, + 'repartition_type': 'tax', + 'account_id': ref('p11234'), + 'plus_report_line_ids': [ref('tax_report_line_igst')], + }), + ]"/> + </record> + + <record id="igst_purchase_5" model="account.tax.template"> + <field name="name">IGST 5%</field> + <field name="description">IGST 5%</field> + <field name="type_tax_use">purchase</field> + <field name="amount_type">percent</field> + <field name="amount">5</field> + <field name="chart_template_id" ref="indian_chart_template_standard"/> + <field name="tax_group_id" ref="igst_group"/> + <field name="invoice_repartition_line_ids" eval="[(5, 0, 0), + (0,0, { + 'factor_percent': 100, + 'repartition_type': 'base', + }), + + (0,0, { + 'factor_percent': 100, + 'repartition_type': 'tax', + 'account_id': ref('p10053'), + 'minus_report_line_ids': [ref('tax_report_line_igst')], + }), + ]"/> + <field name="refund_repartition_line_ids" eval="[(5, 0, 0), + (0,0, { + 'factor_percent': 100, + 'repartition_type': 'base', + }), + + (0,0, { + 'factor_percent': 100, + 'repartition_type': 'tax', + 'account_id': ref('p11234'), + 'plus_report_line_ids': [ref('tax_report_line_igst')], + }), + ]"/> + </record> + + <!-- SGST & CGST --> + + <record id="sgst_purchase_0_5" model="account.tax.template"> + <field name="name">SGST Purchase 0.5%</field> + <field name="description">SGST 0.5%</field> + <field name="type_tax_use">none</field> + <field name="amount_type">percent</field> + <field name="amount">0.5</field> + <field name="chart_template_id" ref="indian_chart_template_standard"/> + <field name="tax_group_id" ref="sgst_group"/> + <field name="invoice_repartition_line_ids" eval="[(5, 0, 0), + (0,0, { + 'factor_percent': 100, + 'repartition_type': 'base', + }), + (0,0, { + 'factor_percent': 100, + 'repartition_type': 'tax', + 'account_id': ref('p10051'), + 'minus_report_line_ids': [ref('tax_report_line_sgst')], + }) + ]"/> + <field name="refund_repartition_line_ids" eval="[(5, 0, 0), + (0,0, { + 'factor_percent': 100, + 'repartition_type': 'base', + }), + (0,0, { + 'factor_percent': 100, + 'repartition_type': 'tax', + 'account_id': ref('p11232'), + 'plus_report_line_ids': [ref('tax_report_line_sgst')], + }) + ]"/> + </record> + + <record id="cgst_purchase_0_5" model="account.tax.template"> + <field name="name">CGST Purchase 0.5%</field> + <field name="description">CGST 0.5%</field> + <field name="type_tax_use">none</field> + <field name="amount_type">percent</field> + <field name="amount">0.5</field> + <field name="chart_template_id" ref="indian_chart_template_standard"/> + <field name="tax_group_id" ref="cgst_group"/> + <field name="invoice_repartition_line_ids" eval="[(5, 0, 0), + (0,0, { + 'factor_percent': 100, + 'repartition_type': 'base', + }), + (0,0, { + 'factor_percent': 100, + 'repartition_type': 'tax', + 'account_id': ref('p10052'), + 'minus_report_line_ids': [ref('tax_report_line_cgst')], + }) + ]"/> + <field name="refund_repartition_line_ids" eval="[(5, 0, 0), + (0,0, { + 'factor_percent': 100, + 'repartition_type': 'base', + }), + (0,0, { + 'factor_percent': 100, + 'repartition_type': 'tax', + 'account_id': ref('p11233'), + 'plus_report_line_ids': [ref('tax_report_line_cgst')], + }) + ]"/> + </record> + + <record id="sgst_purchase_1" model="account.tax.template"> + <field name="name">GST 1%</field> + <field name="description">GST 1%</field> + <field name="type_tax_use">purchase</field> + <field name="amount_type">group</field> + <field name="amount">1.0</field> + <field name="chart_template_id" ref="indian_chart_template_standard"/> + <field name="tax_group_id" ref="gst_group"/> + <field name="children_tax_ids" eval="[(6, 0, [ref('sgst_purchase_0_5'),ref('cgst_purchase_0_5'),])]"/> + </record> + + <record id="sgst_purchase_1_2" model="account.tax.template"> + <field name="name">SGST Purchase 1%</field> + <field name="description">SGST 1%</field> + <field name="type_tax_use">none</field> + <field name="amount_type">percent</field> + <field name="amount">1</field> + <field name="chart_template_id" ref="indian_chart_template_standard"/> + <field name="tax_group_id" ref="sgst_group"/> + <field name="invoice_repartition_line_ids" eval="[(5, 0, 0), + (0,0, { + 'factor_percent': 100, + 'repartition_type': 'base', + }), + + (0,0, { + 'factor_percent': 100, + 'repartition_type': 'tax', + 'account_id': ref('p10051'), + 'minus_report_line_ids': [ref('tax_report_line_sgst')], + }) + ]"/> + <field name="refund_repartition_line_ids" eval="[(5, 0, 0), + (0,0, { + 'factor_percent': 100, + 'repartition_type': 'base', + }), + + (0,0, { + 'factor_percent': 100, + 'repartition_type': 'tax', + 'account_id': ref('p11232'), + 'plus_report_line_ids': [ref('tax_report_line_sgst')], + }) + ]"/> + </record> + + <record id="cgst_purchase_1_2" model="account.tax.template"> + <field name="name">CGST Purchase 1%</field> + <field name="description">CGST 1%</field> + <field name="type_tax_use">none</field> + <field name="amount_type">percent</field> + <field name="amount">1</field> + <field name="chart_template_id" ref="indian_chart_template_standard"/> + <field name="tax_group_id" ref="cgst_group"/> + <field name="invoice_repartition_line_ids" eval="[(5, 0, 0), + (0,0, { + 'factor_percent': 100, + 'repartition_type': 'base', + }), + (0,0, { + 'factor_percent': 100, + 'repartition_type': 'tax', + 'account_id': ref('p10052'), + 'minus_report_line_ids': [ref('tax_report_line_cgst')], + }) + ]"/> + <field name="refund_repartition_line_ids" eval="[(5, 0, 0), + (0,0, { + 'factor_percent': 100, + 'repartition_type': 'base', + }), + (0,0, { + 'factor_percent': 100, + 'repartition_type': 'tax', + 'account_id': ref('p11233'), + 'plus_report_line_ids': [ref('tax_report_line_cgst')], + }) + ]"/> + + </record> + + <record id="sgst_purchase_2" model="account.tax.template"> + <field name="name">GST 2%</field> + <field name="description">GST 2%</field> + <field name="type_tax_use">purchase</field> + <field name="amount_type">group</field> + <field name="amount">2.0</field> + <field name="chart_template_id" ref="indian_chart_template_standard"/> + <field name="tax_group_id" ref="gst_group"/> + <field name="children_tax_ids" eval="[(6, 0, [ref('sgst_purchase_1_2'),ref('cgst_purchase_1_2'),])]"/> + </record> + + <record id="sgst_purchase_14" model="account.tax.template"> + <field name="name">SGST Purchase 14%</field> + <field name="description">SGST 14%</field> + <field name="type_tax_use">none</field> + <field name="amount_type">percent</field> + <field name="amount">14</field> + <field name="chart_template_id" ref="indian_chart_template_standard"/> + <field name="tax_group_id" ref="sgst_group"/> + <field name="invoice_repartition_line_ids" eval="[(5, 0, 0), + (0,0, { + 'factor_percent': 100, + 'repartition_type': 'base', + }), + (0,0, { + 'factor_percent': 100, + 'repartition_type': 'tax', + 'account_id': ref('p10051'), + 'minus_report_line_ids': [ref('tax_report_line_sgst')], + }) + ]"/> + <field name="refund_repartition_line_ids" eval="[(5, 0, 0), + (0,0, { + 'factor_percent': 100, + 'repartition_type': 'base', + }), + (0,0, { + 'factor_percent': 100, + 'repartition_type': 'tax', + 'account_id': ref('p11232'), + 'plus_report_line_ids': [ref('tax_report_line_sgst')], + }) + ]"/> + </record> + + <record id="cgst_purchase_14" model="account.tax.template"> + <field name="name">CGST Purchase 14%</field> + <field name="description">CGST 14%</field> + <field name="type_tax_use">none</field> + <field name="amount_type">percent</field> + <field name="amount">14</field> + <field name="chart_template_id" ref="indian_chart_template_standard"/> + <field name="tax_group_id" ref="cgst_group"/> + <field name="invoice_repartition_line_ids" eval="[(5, 0, 0), + (0,0, { + 'factor_percent': 100, + 'repartition_type': 'base', + }), + (0,0, { + 'factor_percent': 100, + 'repartition_type': 'tax', + 'account_id': ref('p10052'), + 'minus_report_line_ids': [ref('tax_report_line_cgst')], + }) + ]"/> + <field name="refund_repartition_line_ids" eval="[(5, 0, 0), + (0,0, { + 'factor_percent': 100, + 'repartition_type': 'base', + }), + (0,0, { + 'factor_percent': 100, + 'repartition_type': 'tax', + 'account_id': ref('p11233'), + 'plus_report_line_ids': [ref('tax_report_line_cgst')], + }) + ]"/> + </record> + + <record id="sgst_purchase_28" model="account.tax.template"> + <field name="name">GST 28%</field> + <field name="description">GST 28%</field> + <field name="type_tax_use">purchase</field> + <field name="amount_type">group</field> + <field name="amount">28.0</field> + <field name="chart_template_id" ref="indian_chart_template_standard"/> + <field name="tax_group_id" ref="gst_group"/> + <field name="children_tax_ids" eval="[(6, 0, [ref('sgst_purchase_14'),ref('cgst_purchase_14'),])]"/> + </record> + + <record id="sgst_purchase_9" model="account.tax.template"> + <field name="name">SGST Purchase 9%</field> + <field name="description">SGST 9%</field> + <field name="type_tax_use">none</field> + <field name="amount_type">percent</field> + <field name="amount">9</field> + <field name="chart_template_id" ref="indian_chart_template_standard"/> + <field name="tax_group_id" ref="sgst_group"/> + <field name="invoice_repartition_line_ids" eval="[(5, 0, 0), + (0,0, { + 'factor_percent': 100, + 'repartition_type': 'base', + }), + + (0,0, { + 'factor_percent': 100, + 'repartition_type': 'tax', + 'account_id': ref('p10051'), + 'minus_report_line_ids': [ref('tax_report_line_sgst')], + }) + ]"/> + <field name="refund_repartition_line_ids" eval="[(5, 0, 0), + (0,0, { + 'factor_percent': 100, + 'repartition_type': 'base', + }), + + (0,0, { + 'factor_percent': 100, + 'repartition_type': 'tax', + 'account_id': ref('p11232'), + 'plus_report_line_ids': [ref('tax_report_line_sgst')], + }) + ]"/> + </record> + + <record id="cgst_purchase_9" model="account.tax.template"> + <field name="name">CGST Purchase 9%</field> + <field name="description">CGST 9%</field> + <field name="type_tax_use">none</field> + <field name="amount_type">percent</field> + <field name="amount">9</field> + <field name="chart_template_id" ref="indian_chart_template_standard"/> + <field name="tax_group_id" ref="cgst_group"/> + <field name="invoice_repartition_line_ids" eval="[(5, 0, 0), + (0,0, { + 'factor_percent': 100, + 'repartition_type': 'base', + }), + (0,0, { + 'factor_percent': 100, + 'repartition_type': 'tax', + 'account_id': ref('p10052'), + 'minus_report_line_ids': [ref('tax_report_line_cgst')], + }) + ]"/> + <field name="refund_repartition_line_ids" eval="[(5, 0, 0), + (0,0, { + 'factor_percent': 100, + 'repartition_type': 'base', + }), + (0,0, { + 'factor_percent': 100, + 'repartition_type': 'tax', + 'account_id': ref('p11233'), + 'plus_report_line_ids': [ref('tax_report_line_cgst')], + }) + ]"/> + </record> + + <record id="sgst_purchase_18" model="account.tax.template"> + <field name="name">GST 18%</field> + <field name="description">GST 18%</field> + <field name="type_tax_use">purchase</field> + <field name="amount_type">group</field> + <field name="amount">18.0</field> + <field name="chart_template_id" ref="indian_chart_template_standard"/> + <field name="tax_group_id" ref="gst_group"/> + <field name="children_tax_ids" eval="[(6, 0, [ref('sgst_purchase_9'),ref('cgst_purchase_9'),])]"/> + </record> + + <record id="sgst_purchase_6" model="account.tax.template"> + <field name="name">SGST Purchase 6%</field> + <field name="description">SGST 6%</field> + <field name="type_tax_use">none</field> + <field name="amount_type">percent</field> + <field name="amount">6</field> + <field name="chart_template_id" ref="indian_chart_template_standard"/> + <field name="tax_group_id" ref="sgst_group"/> + <field name="invoice_repartition_line_ids" eval="[(5, 0, 0), + (0,0, { + 'factor_percent': 100, + 'repartition_type': 'base', + }), + + (0,0, { + 'factor_percent': 100, + 'repartition_type': 'tax', + 'account_id': ref('p10051'), + 'minus_report_line_ids': [ref('tax_report_line_sgst')], + }) + ]"/> + <field name="refund_repartition_line_ids" eval="[(5, 0, 0), + (0,0, { + 'factor_percent': 100, + 'repartition_type': 'base', + }), + + (0,0, { + 'factor_percent': 100, + 'repartition_type': 'tax', + 'account_id': ref('p11232'), + 'plus_report_line_ids': [ref('tax_report_line_sgst')], + }) + ]"/> + </record> + + <record id="cgst_purchase_6" model="account.tax.template"> + <field name="name">CGST Purchase 6%</field> + <field name="description">CGST 6%</field> + <field name="type_tax_use">none</field> + <field name="amount_type">percent</field> + <field name="amount">6</field> + <field name="chart_template_id" ref="indian_chart_template_standard"/> + <field name="tax_group_id" ref="cgst_group"/> + <field name="invoice_repartition_line_ids" eval="[(5, 0, 0), + (0,0, { + 'factor_percent': 100, + 'repartition_type': 'base', + }), + (0,0, { + 'factor_percent': 100, + 'repartition_type': 'tax', + 'account_id': ref('p10052'), + 'minus_report_line_ids': [ref('tax_report_line_cgst')], + }), + ]"/> + <field name="refund_repartition_line_ids" eval="[(5, 0, 0), + (0,0, { + 'factor_percent': 100, + 'repartition_type': 'base', + }), + (0,0, { + 'factor_percent': 100, + 'repartition_type': 'tax', + 'account_id': ref('p11233'), + 'plus_report_line_ids': [ref('tax_report_line_cgst')], + }) + ]"/> + </record> + + <record id="sgst_purchase_12" model="account.tax.template"> + <field name="name">GST 12%</field> + <field name="description">GST 12%</field> + <field name="type_tax_use">purchase</field> + <field name="amount_type">group</field> + <field name="amount">12.0</field> + <field name="chart_template_id" ref="indian_chart_template_standard"/> + <field name="tax_group_id" ref="gst_group"/> + <field name="children_tax_ids" eval="[(6, 0, [ref('sgst_purchase_6'),ref('cgst_purchase_6'),])]"/> + </record> + + <record id="sgst_purchase_2_5" model="account.tax.template"> + <field name="name">SGST Purchase 2.5%</field> + <field name="description">SGST 2.5%</field> + <field name="type_tax_use">none</field> + <field name="amount_type">percent</field> + <field name="amount">2.5</field> + <field name="chart_template_id" ref="indian_chart_template_standard"/> + <field name="tax_group_id" ref="sgst_group"/> + <field name="invoice_repartition_line_ids" eval="[(5, 0, 0), + (0,0, { + 'factor_percent': 100, + 'repartition_type': 'base', + }), + + (0,0, { + 'factor_percent': 100, + 'repartition_type': 'tax', + 'account_id': ref('p10051'), + 'minus_report_line_ids': [ref('tax_report_line_sgst')], + }) + ]"/> + <field name="refund_repartition_line_ids" eval="[(5, 0, 0), + (0,0, { + 'factor_percent': 100, + 'repartition_type': 'base', + }), + + (0,0, { + 'factor_percent': 100, + 'repartition_type': 'tax', + 'account_id': ref('p11232'), + 'plus_report_line_ids': [ref('tax_report_line_sgst')], + }) + ]"/> + </record> + + <record id="cgst_purchase_2_5" model="account.tax.template"> + <field name="name">CGST Purchase 2.5%</field> + <field name="description">CGST 2.5%</field> + <field name="type_tax_use">none</field> + <field name="amount_type">percent</field> + <field name="amount">2.5</field> + <field name="chart_template_id" ref="indian_chart_template_standard"/> + <field name="tax_group_id" ref="cgst_group"/> + <field name="invoice_repartition_line_ids" eval="[(5, 0, 0), + (0,0, { + 'factor_percent': 100, + 'repartition_type': 'base', + }), + (0,0, { + 'factor_percent': 100, + 'repartition_type': 'tax', + 'account_id': ref('p10052'), + 'minus_report_line_ids': [ref('tax_report_line_cgst')], + }) + ]"/> + <field name="refund_repartition_line_ids" eval="[(5, 0, 0), + (0,0, { + 'factor_percent': 100, + 'repartition_type': 'base', + }), + (0,0, { + 'factor_percent': 100, + 'repartition_type': 'tax', + 'account_id': ref('p11233'), + 'plus_report_line_ids': [ref('tax_report_line_cgst')], + }) + ]"/> + </record> + + <record id="sgst_purchase_5" model="account.tax.template"> + <field name="name">GST 5%</field> + <field name="description">GST 5%</field> + <field name="type_tax_use">purchase</field> + <field name="amount_type">group</field> + <field name="amount">5.0</field> + <field name="chart_template_id" ref="indian_chart_template_standard"/> + <field name="tax_group_id" ref="gst_group"/> + <field name="sequence">0</field> + <field name="children_tax_ids" eval="[(6, 0, [ref('sgst_purchase_2_5'),ref('cgst_purchase_2_5'),])]"/> + </record> + + <!-- Purchase Reverse Charge Taxes--> + + <!-- CESS Taxes --> + + <record id="cess_purchase_5_rc" model="account.tax.template"> + <field name="name">CESS Purchase 5% (RC)</field> + <field name="description">CESS 5%</field> + <field name="type_tax_use">none</field> + <field name="amount_type">percent</field> + <field name="amount">5</field> + <field name="tax_group_id" ref="cess_group"/> + <field name="l10n_in_reverse_charge" eval="True"/> + <field name="chart_template_id" ref="indian_chart_template_standard"/> + <field name="invoice_repartition_line_ids" eval="[(5, 0, 0), + (0,0, { + 'factor_percent': 100, + 'repartition_type': 'base', + }), + + (0,0, { + 'factor_percent': 100, + 'repartition_type': 'tax', + 'account_id': ref('p10057'), + }), + (0,0, { + 'factor_percent': -100, + 'repartition_type': 'tax', + 'account_id': ref('p11235'), + 'minus_report_line_ids': [ref('tax_report_line_cess_rc')], + }), + ]"/> + <field name="refund_repartition_line_ids" eval="[(5, 0, 0), + (0,0, { + 'factor_percent': 100, + 'repartition_type': 'base', + }), + + (0,0, { + 'factor_percent': 100, + 'repartition_type': 'tax', + 'account_id': ref('p10057'), + }), + (0,0, { + 'factor_percent': -100, + 'repartition_type': 'tax', + 'account_id': ref('p10055'), + 'plus_report_line_ids': [ref('tax_report_line_cess_rc')], + }), + ]"/> + </record> + + <record id="cess_purchase_1591_rc" model="account.tax.template"> + <field name="name">CESS Purchase 1591 Per Thousand (RC)</field> + <field name="description">1591 PER THOUSAND</field> + <field name="type_tax_use">none</field> + <field name="amount_type">fixed</field> + <field name="amount">1.591</field> + <field name="tax_group_id" ref="cess_group"/> + <field name="l10n_in_reverse_charge" eval="True"/> + <field name="chart_template_id" ref="indian_chart_template_standard"/> + <field name="invoice_repartition_line_ids" eval="[(5, 0, 0), + (0,0, { + 'factor_percent': 100, + 'repartition_type': 'base', + }), + (0,0, { + 'factor_percent': 100, + 'repartition_type': 'tax', + 'account_id': ref('p10057'), + }), + (0,0, { + 'factor_percent': -100, + 'repartition_type': 'tax', + 'account_id': ref('p11235'), + 'minus_report_line_ids': [ref('tax_report_line_cess_rc')], + }), + ]"/> + <field name="refund_repartition_line_ids" eval="[(5, 0, 0), + (0,0, { + 'factor_percent': 100, + 'repartition_type': 'base', + }), + + (0,0, { + 'factor_percent': 100, + 'repartition_type': 'tax', + 'account_id': ref('p10057'), + }), + (0,0, { + 'factor_percent': -100, + 'repartition_type': 'tax', + 'account_id': ref('p10055'), + 'plus_report_line_ids': [ref('tax_report_line_cess_rc')], + }), + ]"/> + </record> + + <record id="cess_5_plus_1591_purchase_rc" model="account.tax.template"> + <field name="name">CESS 5% + RS.1591/THOUSAND (RC)</field> + <field name="description">CESS 5% + RS.1591/THOUSAND</field> + <field name="type_tax_use">purchase</field> + <field name="amount_type">group</field> + <field name="amount">0</field> + <field name="chart_template_id" ref="indian_chart_template_standard"/> + <field name="children_tax_ids" eval="[(6, 0, [ref('cess_purchase_5_rc'),ref('cess_purchase_1591_rc'),])]"/> + <field name="tax_group_id" ref="cess_group"/> + <field name="l10n_in_reverse_charge" eval="True"/> + </record> + + <record id="cess_21_4170_higer_purchase_rc" model="account.tax.template"> + <field name="name">CESS 21% or RS.4170/THOUSAND (RC)</field> + <field name="description">CESS 21% or RS.4170/THOUSAND</field> + <field name="type_tax_use">purchase</field> + <field name="amount_type">code</field> + <field name="amount">0</field> + <field name="python_compute">result=base_amount * 0.21 +tax=quantity * 4.17 +if tax > result:result=tax</field> + <field name="tax_group_id" ref="cess_group"/> + <field name="l10n_in_reverse_charge" eval="True"/> + <field name="chart_template_id" ref="indian_chart_template_standard"/> + <field name="invoice_repartition_line_ids" eval="[(5, 0, 0), + (0,0, { + 'factor_percent': 100, + 'repartition_type': 'base', + }), + (0,0, { + 'factor_percent': 100, + 'repartition_type': 'tax', + 'account_id': ref('p10057'), + }), + (0,0, { + 'factor_percent': -100, + 'repartition_type': 'tax', + 'account_id': ref('p11235'), + 'minus_report_line_ids': [ref('tax_report_line_cess_rc')], + }), + ]"/> + <field name="refund_repartition_line_ids" eval="[(5, 0, 0), + (0,0, { + 'factor_percent': 100, + 'repartition_type': 'base', + }), + + (0,0, { + 'factor_percent': 100, + 'repartition_type': 'tax', + 'account_id': ref('p10057'), + }), + (0,0, { + 'factor_percent': -100, + 'repartition_type': 'tax', + 'account_id': ref('p10055'), + 'plus_report_line_ids': [ref('tax_report_line_cess_rc')], + }), + ]"/> + </record> + + + <!-- IGST --> + + <record id="igst_purchase_1_rc" model="account.tax.template"> + <field name="name">IGST 1% (RC)</field> + <field name="description">IGST 1%</field> + <field name="type_tax_use">purchase</field> + <field name="amount_type">percent</field> + <field name="amount">1</field> + <field name="chart_template_id" ref="indian_chart_template_standard"/> + <field name="tax_group_id" ref="igst_group"/> + <field name="l10n_in_reverse_charge" eval="True"/> + <field name="invoice_repartition_line_ids" eval="[(5, 0, 0), + (0,0, { + 'factor_percent': 100, + 'repartition_type': 'base', + }), + + (0,0, { + 'factor_percent': 100, + 'repartition_type': 'tax', + 'account_id': ref('p10057'), + }), + (0,0, { + 'factor_percent': -100, + 'repartition_type': 'tax', + 'account_id': ref('p11234'), + 'minus_report_line_ids': [ref('tax_report_line_igst_rc')], + }), + ]"/> + <field name="refund_repartition_line_ids" eval="[(5, 0, 0), + (0,0, { + 'factor_percent': 100, + 'repartition_type': 'base', + }), + + (0,0, { + 'factor_percent': 100, + 'repartition_type': 'tax', + 'account_id': ref('p10057'), + }), + (0,0, { + 'factor_percent': -100, + 'repartition_type': 'tax', + 'account_id': ref('p10053'), + 'plus_report_line_ids': [ref('tax_report_line_igst'), ref('tax_report_line_igst_rc')], + }), + ]"/> + </record> + + <record id="igst_purchase_2_rc" model="account.tax.template"> + <field name="name">IGST 2% (RC)</field> + <field name="description">IGST 2%</field> + <field name="type_tax_use">purchase</field> + <field name="amount_type">percent</field> + <field name="amount">2</field> + <field name="chart_template_id" ref="indian_chart_template_standard"/> + <field name="tax_group_id" ref="igst_group"/> + <field name="l10n_in_reverse_charge" eval="True"/> + <field name="invoice_repartition_line_ids" eval="[(5, 0, 0), + (0,0, { + 'factor_percent': 100, + 'repartition_type': 'base', + }), + (0,0, { + 'factor_percent': 100, + 'repartition_type': 'tax', + 'account_id': ref('p10057'), + }), + (0,0, { + 'factor_percent': -100, + 'repartition_type': 'tax', + 'account_id': ref('p11234'), + 'minus_report_line_ids': [ref('tax_report_line_igst_rc')], + }), + ]"/> + <field name="refund_repartition_line_ids" eval="[(5, 0, 0), + (0,0, { + 'factor_percent': 100, + 'repartition_type': 'base', + }), + + (0,0, { + 'factor_percent': 100, + 'repartition_type': 'tax', + 'account_id': ref('p10057'), + }), + (0,0, { + 'factor_percent': -100, + 'repartition_type': 'tax', + 'account_id': ref('p10053'), + 'plus_report_line_ids': [ref('tax_report_line_igst_rc')], + }), + ]"/> + </record> + + <record id="igst_purchase_28_rc" model="account.tax.template"> + <field name="name">IGST 28% (RC)</field> + <field name="description">IGST 28%</field> + <field name="type_tax_use">purchase</field> + <field name="amount_type">percent</field> + <field name="amount">28</field> + <field name="chart_template_id" ref="indian_chart_template_standard"/> + <field name="tax_group_id" ref="igst_group"/> + <field name="l10n_in_reverse_charge" eval="True"/> + <field name="invoice_repartition_line_ids" eval="[(5, 0, 0), + (0,0, { + 'factor_percent': 100, + 'repartition_type': 'base', + }), + + (0,0, { + 'factor_percent': 100, + 'repartition_type': 'tax', + 'account_id': ref('p10057'), + }), + (0,0, { + 'factor_percent': -100, + 'repartition_type': 'tax', + 'account_id': ref('p11234'), + 'minus_report_line_ids': [ref('tax_report_line_igst_rc')], + }), + ]"/> + <field name="refund_repartition_line_ids" eval="[(5, 0, 0), + (0,0, { + 'factor_percent': 100, + 'repartition_type': 'base', + }), + + (0,0, { + 'factor_percent': 100, + 'repartition_type': 'tax', + 'account_id': ref('p10057'), + }), + (0,0, { + 'factor_percent': -100, + 'repartition_type': 'tax', + 'account_id': ref('p10053'), + 'plus_report_line_ids': [ref('tax_report_line_igst'), ref('tax_report_line_igst_rc')], + }), + ]"/> + </record> + + <record id="igst_purchase_18_rc" model="account.tax.template"> + <field name="name">IGST 18% (RC)</field> + <field name="description">IGST 18%</field> + <field name="type_tax_use">purchase</field> + <field name="amount_type">percent</field> + <field name="amount">18</field> + <field name="chart_template_id" ref="indian_chart_template_standard"/> + <field name="tax_group_id" ref="igst_group"/> + <field name="l10n_in_reverse_charge" eval="True"/> + <field name="invoice_repartition_line_ids" eval="[(5, 0, 0), + (0,0, { + 'factor_percent': 100, + 'repartition_type': 'base', + }), + + (0,0, { + 'factor_percent': 100, + 'repartition_type': 'tax', + 'account_id': ref('p10057'), + }), + (0,0, { + 'factor_percent': -100, + 'repartition_type': 'tax', + 'account_id': ref('p11234'), + 'minus_report_line_ids': [ref('tax_report_line_igst_rc')], + }), + ]"/> + <field name="refund_repartition_line_ids" eval="[(5, 0, 0), + (0,0, { + 'factor_percent': 100, + 'repartition_type': 'base', + }), + + (0,0, { + 'factor_percent': 100, + 'repartition_type': 'tax', + 'account_id': ref('p10057'), + }), + (0,0, { + 'factor_percent': -100, + 'repartition_type': 'tax', + 'account_id': ref('p10053'), + 'plus_report_line_ids': [ref('tax_report_line_igst_rc')], + }), + ]"/> + </record> + + <record id="igst_purchase_12_rc" model="account.tax.template"> + <field name="name">IGST 12% (RC)</field> + <field name="description">IGST 12%</field> + <field name="type_tax_use">purchase</field> + <field name="amount_type">percent</field> + <field name="amount">12</field> + <field name="chart_template_id" ref="indian_chart_template_standard"/> + <field name="tax_group_id" ref="igst_group"/> + <field name="l10n_in_reverse_charge" eval="True"/> + <field name="invoice_repartition_line_ids" eval="[(5, 0, 0), + (0,0, { + 'factor_percent': 100, + 'repartition_type': 'base', + }), + + (0,0, { + 'factor_percent': 100, + 'repartition_type': 'tax', + 'account_id': ref('p10057'), + }), + (0,0, { + 'factor_percent': -100, + 'repartition_type': 'tax', + 'account_id': ref('p11234'), + 'minus_report_line_ids': [ref('tax_report_line_igst_rc')], + }), + ]"/> + <field name="refund_repartition_line_ids" eval="[(5, 0, 0), + (0,0, { + 'factor_percent': 100, + 'repartition_type': 'base', + }), + + (0,0, { + 'factor_percent': 100, + 'repartition_type': 'tax', + 'account_id': ref('p10057'), + }), + (0,0, { + 'factor_percent': -100, + 'repartition_type': 'tax', + 'account_id': ref('p10053'), + 'plus_report_line_ids': [ref('tax_report_line_igst_rc')], + }), + ]"/> + </record> + + <record id="igst_purchase_5_rc" model="account.tax.template"> + <field name="name">IGST 5% (RC)</field> + <field name="description">IGST 5%</field> + <field name="type_tax_use">purchase</field> + <field name="amount_type">percent</field> + <field name="amount">5</field> + <field name="chart_template_id" ref="indian_chart_template_standard"/> + <field name="tax_group_id" ref="igst_group"/> + <field name="l10n_in_reverse_charge" eval="True"/> + <field name="invoice_repartition_line_ids" eval="[(5, 0, 0), + (0,0, { + 'factor_percent': 100, + 'repartition_type': 'base', + }), + + (0,0, { + 'factor_percent': 100, + 'repartition_type': 'tax', + 'account_id': ref('p10057'), + }), + (0,0, { + 'factor_percent': -100, + 'repartition_type': 'tax', + 'account_id': ref('p11234'), + 'minus_report_line_ids': [ref('tax_report_line_igst_rc')], + }), + ]"/> + <field name="refund_repartition_line_ids" eval="[(5, 0, 0), + (0,0, { + 'factor_percent': 100, + 'repartition_type': 'base', + }), + + (0,0, { + 'factor_percent': 100, + 'repartition_type': 'tax', + 'account_id': ref('p10057'), + }), + (0,0, { + 'factor_percent': -100, + 'repartition_type': 'tax', + 'account_id': ref('p10053'), + 'plus_report_line_ids': [ref('tax_report_line_igst_rc')], + }), + ]"/> + </record> + + <!-- SGST & CGST --> + + <record id="sgst_purchase_0_5_rc" model="account.tax.template"> + <field name="name">SGST Purchase 0.5% (RC)</field> + <field name="description">SGST 0.5%</field> + <field name="type_tax_use">none</field> + <field name="amount_type">percent</field> + <field name="amount">0.5</field> + <field name="chart_template_id" ref="indian_chart_template_standard"/> + <field name="tax_group_id" ref="sgst_group"/> + <field name="l10n_in_reverse_charge" eval="True"/> + <field name="invoice_repartition_line_ids" eval="[(5, 0, 0), + (0,0, { + 'factor_percent': 100, + 'repartition_type': 'base', + }), + (0,0, { + 'factor_percent': 100, + 'repartition_type': 'tax', + 'account_id': ref('p10057'), + }), + (0,0, { + 'factor_percent': -100, + 'repartition_type': 'tax', + 'account_id': ref('p11232'), + 'minus_report_line_ids': [ref('tax_report_line_sgst_rc')], + }) + ]"/> + <field name="refund_repartition_line_ids" eval="[(5, 0, 0), + (0,0, { + 'factor_percent': 100, + 'repartition_type': 'base', + }), + (0,0, { + 'factor_percent': 100, + 'repartition_type': 'tax', + 'account_id': ref('p10057'), + }), + (0,0, { + 'factor_percent': -100, + 'repartition_type': 'tax', + 'account_id': ref('p10051'), + 'plus_report_line_ids': [ref('tax_report_line_sgst_rc')], + }) + ]"/> + </record> + + <record id="cgst_purchase_0_5_rc" model="account.tax.template"> + <field name="name">CGST Purchase 0.5% (RC)</field> + <field name="description">CGST 0.5%</field> + <field name="type_tax_use">none</field> + <field name="amount_type">percent</field> + <field name="amount">0.5</field> + <field name="chart_template_id" ref="indian_chart_template_standard"/> + <field name="tax_group_id" ref="cgst_group"/> + <field name="l10n_in_reverse_charge" eval="True"/> + <field name="invoice_repartition_line_ids" eval="[(5, 0, 0), + (0,0, { + 'factor_percent': 100, + 'repartition_type': 'base', + }), + (0,0, { + 'factor_percent': 100, + 'repartition_type': 'tax', + 'account_id': ref('p10057'), + }), + (0,0, { + 'factor_percent': -100, + 'repartition_type': 'tax', + 'account_id': ref('p11233'), + 'minus_report_line_ids': [ref('tax_report_line_cgst_rc')], + }) + ]"/> + <field name="refund_repartition_line_ids" eval="[(5, 0, 0), + (0,0, { + 'factor_percent': 100, + 'repartition_type': 'base', + }), + (0,0, { + 'factor_percent': 100, + 'repartition_type': 'tax', + 'account_id': ref('p10057'), + }), + (0,0, { + 'factor_percent': -100, + 'repartition_type': 'tax', + 'account_id': ref('p10052'), + 'plus_report_line_ids': [ref('tax_report_line_cgst_rc')], + }) + ]"/> + </record> + + <record id="sgst_purchase_1_rc" model="account.tax.template"> + <field name="name">GST 1% (RC)</field> + <field name="description">GST 1%</field> + <field name="type_tax_use">purchase</field> + <field name="amount_type">group</field> + <field name="amount">1.0</field> + <field name="chart_template_id" ref="indian_chart_template_standard"/> + <field name="tax_group_id" ref="gst_group"/> + <field name="l10n_in_reverse_charge" eval="True"/> + <field name="children_tax_ids" eval="[(6, 0, [ref('sgst_purchase_0_5_rc'),ref('cgst_purchase_0_5_rc'),])]"/> + </record> + + <record id="sgst_purchase_1_2_rc" model="account.tax.template"> + <field name="name">SGST Purchase 1% (RC)</field> + <field name="description">SGST 1%</field> + <field name="type_tax_use">none</field> + <field name="amount_type">percent</field> + <field name="amount">1</field> + <field name="chart_template_id" ref="indian_chart_template_standard"/> + <field name="tax_group_id" ref="sgst_group"/> + <field name="l10n_in_reverse_charge" eval="True"/> + <field name="invoice_repartition_line_ids" eval="[(5, 0, 0), + (0,0, { + 'factor_percent': 100, + 'repartition_type': 'base', + }), + + (0,0, { + 'factor_percent': 100, + 'repartition_type': 'tax', + 'account_id': ref('p10057'), + }), + (0,0, { + 'factor_percent': -100, + 'repartition_type': 'tax', + 'account_id': ref('p11232'), + 'minus_report_line_ids': [ref('tax_report_line_sgst_rc')], + }) + ]"/> + <field name="refund_repartition_line_ids" eval="[(5, 0, 0), + (0,0, { + 'factor_percent': 100, + 'repartition_type': 'base', + }), + + (0,0, { + 'factor_percent': 100, + 'repartition_type': 'tax', + 'account_id': ref('p10057'), + }), + (0,0, { + 'factor_percent': -100, + 'repartition_type': 'tax', + 'account_id': ref('p10051'), + 'plus_report_line_ids': [ref('tax_report_line_sgst_rc')], + }) + ]"/> + </record> + + <record id="cgst_purchase_1_2_rc" model="account.tax.template"> + <field name="name">CGST Purchase 1% (RC)</field> + <field name="description">CGST 1%</field> + <field name="type_tax_use">none</field> + <field name="amount_type">percent</field> + <field name="amount">1</field> + <field name="chart_template_id" ref="indian_chart_template_standard"/> + <field name="tax_group_id" ref="cgst_group"/> + <field name="l10n_in_reverse_charge" eval="True"/> + <field name="invoice_repartition_line_ids" eval="[(5, 0, 0), + (0,0, { + 'factor_percent': 100, + 'repartition_type': 'base', + }), + (0,0, { + 'factor_percent': 100, + 'repartition_type': 'tax', + 'account_id': ref('p10057'), + }), + (0,0, { + 'factor_percent': -100, + 'repartition_type': 'tax', + 'account_id': ref('p11233'), + 'minus_report_line_ids': [ref('tax_report_line_cgst_rc')], + }) + ]"/> + <field name="refund_repartition_line_ids" eval="[(5, 0, 0), + (0,0, { + 'factor_percent': 100, + 'repartition_type': 'base', + }), + (0,0, { + 'factor_percent': 100, + 'repartition_type': 'tax', + 'account_id': ref('p10057'), + }), + (0,0, { + 'factor_percent': -100, + 'repartition_type': 'tax', + 'account_id': ref('p10052'), + 'plus_report_line_ids': [ref('tax_report_line_cgst_rc')], + }) + ]"/> + + </record> + + <record id="sgst_purchase_2_rc" model="account.tax.template"> + <field name="name">GST 2% (RC)</field> + <field name="description">GST 2%</field> + <field name="type_tax_use">purchase</field> + <field name="amount_type">group</field> + <field name="amount">2.0</field> + <field name="chart_template_id" ref="indian_chart_template_standard"/> + <field name="tax_group_id" ref="gst_group"/> + <field name="l10n_in_reverse_charge" eval="True"/> + <field name="children_tax_ids" eval="[(6, 0, [ref('sgst_purchase_1_2_rc'),ref('cgst_purchase_1_2_rc'),])]"/> + </record> + + <record id="sgst_purchase_14_rc" model="account.tax.template"> + <field name="name">SGST Purchase 14% (RC)</field> + <field name="description">SGST 14%</field> + <field name="type_tax_use">none</field> + <field name="amount_type">percent</field> + <field name="amount">14</field> + <field name="chart_template_id" ref="indian_chart_template_standard"/> + <field name="tax_group_id" ref="sgst_group"/> + <field name="l10n_in_reverse_charge" eval="True"/> + <field name="invoice_repartition_line_ids" eval="[(5, 0, 0), + (0,0, { + 'factor_percent': 100, + 'repartition_type': 'base', + }), + (0,0, { + 'factor_percent': 100, + 'repartition_type': 'tax', + 'account_id': ref('p10057'), + }), + (0,0, { + 'factor_percent': -100, + 'repartition_type': 'tax', + 'account_id': ref('p11232'), + 'minus_report_line_ids': [ref('tax_report_line_sgst_rc')], + }), + + ]"/> + <field name="refund_repartition_line_ids" eval="[(5, 0, 0), + (0,0, { + 'factor_percent': 100, + 'repartition_type': 'base', + }), + (0,0, { + 'factor_percent': 100, + 'repartition_type': 'tax', + 'account_id': ref('p10057'), + }), + (0,0, { + 'factor_percent': -100, + 'repartition_type': 'tax', + 'account_id': ref('p10051'), + 'plus_report_line_ids': [ref('tax_report_line_sgst_rc')], + }), + ]"/> + </record> + + <record id="cgst_purchase_14_rc" model="account.tax.template"> + <field name="name">CGST Purchase 14% (RC)</field> + <field name="description">CGST 14%</field> + <field name="type_tax_use">none</field> + <field name="amount_type">percent</field> + <field name="amount">14</field> + <field name="chart_template_id" ref="indian_chart_template_standard"/> + <field name="tax_group_id" ref="cgst_group"/> + <field name="l10n_in_reverse_charge" eval="True"/> + <field name="invoice_repartition_line_ids" eval="[(5, 0, 0), + (0,0, { + 'factor_percent': 100, + 'repartition_type': 'base', + }), + (0,0, { + 'factor_percent': 100, + 'repartition_type': 'tax', + 'account_id': ref('p10057'), + }), + (0,0, { + 'factor_percent': -100, + 'repartition_type': 'tax', + 'account_id': ref('p11233'), + 'minus_report_line_ids': [ref('tax_report_line_cgst_rc')], + }), + ]"/> + <field name="refund_repartition_line_ids" eval="[(5, 0, 0), + (0,0, { + 'factor_percent': 100, + 'repartition_type': 'base', + }), + (0,0, { + 'factor_percent': 100, + 'repartition_type': 'tax', + 'account_id': ref('p10057'), + }), + (0,0, { + 'factor_percent': -100, + 'repartition_type': 'tax', + 'account_id': ref('p10052'), + 'plus_report_line_ids': [ref('tax_report_line_cgst_rc')], + }), + ]"/> + </record> + + <record id="sgst_purchase_28_rc" model="account.tax.template"> + <field name="name">GST 28% (RC)</field> + <field name="description">GST 28%</field> + <field name="type_tax_use">purchase</field> + <field name="amount_type">group</field> + <field name="amount">28.0</field> + <field name="chart_template_id" ref="indian_chart_template_standard"/> + <field name="tax_group_id" ref="gst_group"/> + <field name="l10n_in_reverse_charge" eval="True"/> + <field name="children_tax_ids" eval="[(6, 0, [ref('sgst_purchase_14_rc'),ref('cgst_purchase_14_rc'),])]"/> + </record> + + <record id="sgst_purchase_9_rc" model="account.tax.template"> + <field name="name">SGST Purchase 9% (RC)</field> + <field name="description">SGST 9%</field> + <field name="type_tax_use">none</field> + <field name="amount_type">percent</field> + <field name="amount">9</field> + <field name="chart_template_id" ref="indian_chart_template_standard"/> + <field name="tax_group_id" ref="sgst_group"/> + <field name="l10n_in_reverse_charge" eval="True"/> + <field name="invoice_repartition_line_ids" eval="[(5, 0, 0), + (0,0, { + 'factor_percent': 100, + 'repartition_type': 'base', + }), + + (0,0, { + 'factor_percent': 100, + 'repartition_type': 'tax', + 'account_id': ref('p10057'), + }), + (0,0, { + 'factor_percent': -100, + 'repartition_type': 'tax', + 'account_id': ref('p11232'), + 'minus_report_line_ids': [ref('tax_report_line_sgst_rc')], + }), + ]"/> + <field name="refund_repartition_line_ids" eval="[(5, 0, 0), + (0,0, { + 'factor_percent': 100, + 'repartition_type': 'base', + }), + + (0,0, { + 'factor_percent': 100, + 'repartition_type': 'tax', + 'account_id': ref('p10057'), + }), + (0,0, { + 'factor_percent': -100, + 'repartition_type': 'tax', + 'account_id': ref('p10051'), + 'plus_report_line_ids': [ref('tax_report_line_sgst_rc')], + }), + ]"/> + </record> + + <record id="cgst_purchase_9_rc" model="account.tax.template"> + <field name="name">CGST Purchase 9% (RC)</field> + <field name="description">CGST 9%</field> + <field name="type_tax_use">none</field> + <field name="amount_type">percent</field> + <field name="amount">9</field> + <field name="chart_template_id" ref="indian_chart_template_standard"/> + <field name="tax_group_id" ref="cgst_group"/> + <field name="l10n_in_reverse_charge" eval="True"/> + <field name="invoice_repartition_line_ids" eval="[(5, 0, 0), + (0,0, { + 'factor_percent': 100, + 'repartition_type': 'base', + }), + (0,0, { + 'factor_percent': 100, + 'repartition_type': 'tax', + 'account_id': ref('p10057'), + }), + (0,0, { + 'factor_percent': -100, + 'repartition_type': 'tax', + 'account_id': ref('p11233'), + 'minus_report_line_ids': [ref('tax_report_line_cgst_rc')], + }), + ]"/> + <field name="refund_repartition_line_ids" eval="[(5, 0, 0), + (0,0, { + 'factor_percent': 100, + 'repartition_type': 'base', + }), + (0,0, { + 'factor_percent': 100, + 'repartition_type': 'tax', + 'account_id': ref('p10057'), + }), + (0,0, { + 'factor_percent': -100, + 'repartition_type': 'tax', + 'account_id': ref('p10052'), + 'plus_report_line_ids': [ref('tax_report_line_cgst_rc')], + }), + ]"/> + </record> + + <record id="sgst_purchase_18_rc" model="account.tax.template"> + <field name="name">GST 18% (RC)</field> + <field name="description">GST 18%</field> + <field name="type_tax_use">purchase</field> + <field name="amount_type">group</field> + <field name="amount">18.0</field> + <field name="chart_template_id" ref="indian_chart_template_standard"/> + <field name="tax_group_id" ref="gst_group"/> + <field name="l10n_in_reverse_charge" eval="True"/> + <field name="children_tax_ids" eval="[(6, 0, [ref('sgst_purchase_9_rc'),ref('cgst_purchase_9_rc'),])]"/> + </record> + + <record id="sgst_purchase_6_rc" model="account.tax.template"> + <field name="name">SGST Purchase 6% (RC)</field> + <field name="description">SGST 6%</field> + <field name="type_tax_use">none</field> + <field name="amount_type">percent</field> + <field name="amount">6</field> + <field name="chart_template_id" ref="indian_chart_template_standard"/> + <field name="tax_group_id" ref="sgst_group"/> + <field name="l10n_in_reverse_charge" eval="True"/> + <field name="invoice_repartition_line_ids" eval="[(5, 0, 0), + (0,0, { + 'factor_percent': 100, + 'repartition_type': 'base', + }), + + (0,0, { + 'factor_percent': 100, + 'repartition_type': 'tax', + 'account_id': ref('p10057'), + }), + (0,0, { + 'factor_percent': -100, + 'repartition_type': 'tax', + 'account_id': ref('p11232'), + 'minus_report_line_ids': [ref('tax_report_line_sgst_rc')], + }), + ]"/> + <field name="refund_repartition_line_ids" eval="[(5, 0, 0), + (0,0, { + 'factor_percent': 100, + 'repartition_type': 'base', + }), + + (0,0, { + 'factor_percent': 100, + 'repartition_type': 'tax', + 'account_id': ref('p10057'), + }), + (0,0, { + 'factor_percent': -100, + 'repartition_type': 'tax', + 'account_id': ref('p10051'), + 'plus_report_line_ids': [ref('tax_report_line_sgst_rc')], + }), + ]"/> + </record> + + <record id="cgst_purchase_6_rc" model="account.tax.template"> + <field name="name">CGST Purchase 6% (RC)</field> + <field name="description">CGST 6%</field> + <field name="type_tax_use">none</field> + <field name="amount_type">percent</field> + <field name="amount">6</field> + <field name="chart_template_id" ref="indian_chart_template_standard"/> + <field name="tax_group_id" ref="cgst_group"/> + <field name="l10n_in_reverse_charge" eval="True"/> + <field name="invoice_repartition_line_ids" eval="[(5, 0, 0), + (0,0, { + 'factor_percent': 100, + 'repartition_type': 'base', + }), + (0,0, { + 'factor_percent': 100, + 'repartition_type': 'tax', + 'account_id': ref('p10057'), + }), + (0,0, { + 'factor_percent': -100, + 'repartition_type': 'tax', + 'account_id': ref('p11233'), + 'minus_report_line_ids': [ref('tax_report_line_cgst_rc')], + }), + ]"/> + <field name="refund_repartition_line_ids" eval="[(5, 0, 0), + (0,0, { + 'factor_percent': 100, + 'repartition_type': 'base', + }), + (0,0, { + 'factor_percent': 100, + 'repartition_type': 'tax', + 'account_id': ref('p10057'), + }), + (0,0, { + 'factor_percent': -100, + 'repartition_type': 'tax', + 'account_id': ref('p10052'), + 'plus_report_line_ids': [ref('tax_report_line_cgst_rc')], + }), + ]"/> + </record> + + <record id="sgst_purchase_12_rc" model="account.tax.template"> + <field name="name">GST 12% (RC)</field> + <field name="description">GST 12%</field> + <field name="type_tax_use">purchase</field> + <field name="amount_type">group</field> + <field name="amount">12.0</field> + <field name="chart_template_id" ref="indian_chart_template_standard"/> + <field name="tax_group_id" ref="gst_group"/> + <field name="l10n_in_reverse_charge" eval="True"/> + <field name="children_tax_ids" eval="[(6, 0, [ref('sgst_purchase_6_rc'),ref('cgst_purchase_6_rc'),])]"/> + </record> + + <record id="sgst_purchase_2_5_rc" model="account.tax.template"> + <field name="name">SGST Purchase 2.5% (RC)</field> + <field name="description">SGST 2.5%</field> + <field name="type_tax_use">none</field> + <field name="amount_type">percent</field> + <field name="amount">2.5</field> + <field name="chart_template_id" ref="indian_chart_template_standard"/> + <field name="tax_group_id" ref="sgst_group"/> + <field name="l10n_in_reverse_charge" eval="True"/> + <field name="invoice_repartition_line_ids" eval="[(5, 0, 0), + (0,0, { + 'factor_percent': 100, + 'repartition_type': 'base', + }), + + (0,0, { + 'factor_percent': 100, + 'repartition_type': 'tax', + 'account_id': ref('p10057'), + }), + (0,0, { + 'factor_percent': -100, + 'repartition_type': 'tax', + 'account_id': ref('p11232'), + 'minus_report_line_ids': [ref('tax_report_line_sgst_rc')], + }), + ]"/> + <field name="refund_repartition_line_ids" eval="[(5, 0, 0), + (0,0, { + 'factor_percent': 100, + 'repartition_type': 'base', + }), + + (0,0, { + 'factor_percent': 100, + 'repartition_type': 'tax', + 'account_id': ref('p10057'), + }), + (0,0, { + 'factor_percent': -100, + 'repartition_type': 'tax', + 'account_id': ref('p10051'), + 'plus_report_line_ids': [ref('tax_report_line_sgst_rc')], + }) + ]"/> + </record> + + <record id="cgst_purchase_2_5_rc" model="account.tax.template"> + <field name="name">CGST Purchase 2.5% (RC)</field> + <field name="description">CGST 2.5%</field> + <field name="type_tax_use">none</field> + <field name="amount_type">percent</field> + <field name="amount">2.5</field> + <field name="chart_template_id" ref="indian_chart_template_standard"/> + <field name="tax_group_id" ref="cgst_group"/> + <field name="l10n_in_reverse_charge" eval="True"/> + <field name="invoice_repartition_line_ids" eval="[(5, 0, 0), + (0,0, { + 'factor_percent': 100, + 'repartition_type': 'base', + }), + (0,0, { + 'factor_percent': 100, + 'repartition_type': 'tax', + 'account_id': ref('p10057'), + }), + (0,0, { + 'factor_percent': -100, + 'repartition_type': 'tax', + 'account_id': ref('p11233'), + 'minus_report_line_ids': [ref('tax_report_line_cgst_rc')], + }), + ]"/> + <field name="refund_repartition_line_ids" eval="[(5, 0, 0), + (0,0, { + 'factor_percent': 100, + 'repartition_type': 'base', + }), + (0,0, { + 'factor_percent': 100, + 'repartition_type': 'tax', + 'account_id': ref('p10057'), + }), + (0,0, { + 'factor_percent': -100, + 'repartition_type': 'tax', + 'account_id': ref('p10052'), + 'plus_report_line_ids': [ref('tax_report_line_cgst_rc')], + }), + ]"/> + </record> + + <record id="sgst_purchase_5_rc" model="account.tax.template"> + <field name="name">GST 5% (RC)</field> + <field name="description">GST 5%</field> + <field name="type_tax_use">purchase</field> + <field name="amount_type">group</field> + <field name="amount">5.0</field> + <field name="chart_template_id" ref="indian_chart_template_standard"/> + <field name="tax_group_id" ref="gst_group"/> + <field name="l10n_in_reverse_charge" eval="True"/> + <field name="sequence">0</field> + <field name="children_tax_ids" eval="[(6, 0, [ref('sgst_purchase_2_5_rc'),ref('cgst_purchase_2_5_rc'),])]"/> + </record> + +</odoo> diff --git a/addons/l10n_in/data/l10n_in.port.code.csv b/addons/l10n_in/data/l10n_in.port.code.csv new file mode 100644 index 00000000..f8c76ba9 --- /dev/null +++ b/addons/l10n_in/data/l10n_in.port.code.csv @@ -0,0 +1,635 @@ +id,state_id:id,code,name +port_code_incnb1,base.state_in_an,INCNB1,Car-Nicobar +port_code_incrn1,base.state_in_an,INCRN1,Cornwallis +port_code_inmyb1,base.state_in_an,INMYB1,Mayabandar +port_code_inesh1,base.state_in_an,INESH1,Elphinstone Harbour +port_code_inrgt1,base.state_in_an,INRGT1,Ranghat Bay +port_code_inmdw1,base.state_in_an,INMDW1,Meadows +port_code_innan1,base.state_in_an,INNAN1,Nancowrie +port_code_inixz1,base.state_in_an,INIXZ1,Port Blair +port_code_inixz4,base.state_in_an,INIXZ4,Port Blair +port_code_inhyd4,base.state_in_ap,INHYD4,Hyderabad Air Cargo +port_code_inbnp1,base.state_in_ap,INBNP1,Bheemunipatnam +port_code_innvp1,base.state_in_ap,INNVP1,Navaspur +port_code_invtz1,base.state_in_ap,INVTZ1,Vizac Sea +port_code_insrv1,base.state_in_ap,INSRV1,Surasani – Yanam +port_code_invtz6,base.state_in_ap,INVTZ6,Visakhapatnam (EPZ/SEZ) +port_code_invru1,base.state_in_ap,INVRU1,Vadarevu +port_code_inkak1,base.state_in_ap,INKAK1,Kakinada +port_code_inrpl6,base.state_in_ap,INRPL6,Raddipalem +port_code_inkdd6,base.state_in_ap,INKDD6,Karedu +port_code_invtz4,base.state_in_ap,INVTZ4,Vishakapatnam +port_code_inapt6,base.state_in_ap,INAPT6,Anaparthi +port_code_inclx6,base.state_in_ap,INCLX6,Chirala +port_code_insnf6,base.state_in_ap,INSNF6,Hyderabad +port_code_incoi6,base.state_in_ap,INCOI6,Kakinada +port_code_inmap1,base.state_in_ap,INMAP1,Masulipatnam +port_code_inkri6,base.state_in_ap,INKRI1,Krishnapatnam +port_code_inakp6,base.state_in_ap,INAKP6,APIICL SEZ/Visakhapatnam +port_code_intni6,base.state_in_ap,INTNI6,HIPL SEZ/Visakhapatnam +port_code_inakr6,base.state_in_ap,INAKR6,RPCIPL SEZ/Visakhapatnam +port_code_invzm6,base.state_in_ap,INVZM6,DLL SEZ/Visakhapatnam +port_code_inakb6,base.state_in_ap,INAKB6,BIACPL SEZ/Visakhapatnam +port_code_innrp6,base.state_in_ap,INNRP6,AAL-SEZ/Visakhapatnam +port_code_inmov6,base.state_in_ap,INMOV6,VBTL-SEZ/Medak +port_code_inkvr6,base.state_in_ap,INKVR6,WFPML-SEZ/KOVVUR +port_code_infma6,base.state_in_ap,INFMA6,APIICL/Medak District +port_code_infmh6,base.state_in_ap,INFMH6,hgsezl/Ranga Reddy +port_code_incoa6,base.state_in_ap,INCOA6,KSPL-SEZ/KAKINADA +port_code_ingly6,base.state_in_ap,INGLY6,APIICL-SEZ/MAHABOOBNAGAR +port_code_inspe6,base.state_in_ap,INSPE6,ASDIPL-SEZ/NELLORE +port_code_incop6,base.state_in_ap,INCOP6,PICPL-SEZ/KAKINADA +port_code_inmde6,base.state_in_ap,INMDE6,APIICL SEZ/MEDAK +port_code_inkoh6,base.state_in_ap,INKOH6,RLL-SEZ/Medak +port_code_inurf6,base.state_in_ap,INURF6,FAB CITY SPV Distt. Ranga Reddy +port_code_inmea6,base.state_in_ap,INMEA6,APIIC-SEZ/Vill-Lalgadi Distt.-Ranga +port_code_indbs6,base.state_in_ap,INDBS6,SANTA-SEZ/Vill-Muppireddipally +port_code_inurg6,base.state_in_ap,INURG6,GMR Hyderabad +port_code_intas6,base.state_in_ap,INTAS6,Sri City Private Limited +port_code_ingnr6,base.state_in_ap,INGNR6,LIPL-ICD/Marripalem, Guntur +port_code_infms6,base.state_in_ap,INFMS6,Stargaze/Rangareddy/SEZ +port_code_infmj6,base.state_in_ap,INFMJ6,J T/SEZ/Rangareddy +port_code_inlpi6,base.state_in_ap,INLPI6,Sundew/SEZ/Rangareddy +port_code_inlpd6,base.state_in_ap,INLPD6,DLF/SEZ/Rangareddy +port_code_intmi6,base.state_in_ap,INTMI6,IIFFCO/SEZ/Nellore +port_code_inhur6,base.state_in_ap,INHUR6,Rassi/SEZ/Anantpur +port_code_invzr6,base.state_in_ap,INVZR6,Reddy’r/SEZ/Srikakulam +port_code_incdp6,base.state_in_ap,INCDP6,APIIC/SEZ/Cuddapah +port_code_intmx6,base.state_in_ap,INTMX6,M/s CONTINENTAL MULTIMODAL +port_code_innpgb,base.state_in_ar,INNPGB,TNEaRmMpIoNnAgLS LTD. +port_code_indrgb,base.state_in_as,INDRGB,Darranga +port_code_ingau4,base.state_in_as,INGAU4,Gauhati +port_code_inghwb,base.state_in_as,INGHWB,Gauhati Steamerghat +port_code_indhbb,base.state_in_as,INDHBB,Dhubri Steamerghat +port_code_ingtgb,base.state_in_as,INGTGB,Gitaldah road +port_code_ingkj2,base.state_in_as,INGKJ2,Golakganj Raiiway Station +port_code_inhtsb,base.state_in_as,INHTSB,Hatisar +port_code_inkgjb,base.state_in_as,INKGJB,Karimganj Steamerghat and Ferry +port_code_instrb,base.state_in_as,INSTRB,Sutarkandi +port_code_inslrb,base.state_in_as,INSLRB,Silcher Steamerghat +port_code_inslr2,base.state_in_as,INSLR2,Silcher R.M.S. Office +port_code_inphbb,base.state_in_as,INPHBB,Phulbari +port_code_innmtb,base.state_in_as,INNMTB,Neamati steamer Ghat +port_code_inmnub,base.state_in_as,INMNUB,Manu +port_code_inmkcb,base.state_in_as,INMKCB,Manikarchar +port_code_inmhn2,base.state_in_as,INMHN2,Mahisashan Railway Station +port_code_inltbb,base.state_in_as,INLTBB,Latu Bazar +port_code_inulpb,base.state_in_as,INULPB,Ultapani +port_code_intjpb,base.state_in_as,INTJPB,Tezpur Steamerghat +port_code_inkxj2,base.state_in_as,INKXJ2,Karimganj Railway Station +port_code_inhld2,base.state_in_as,INHLD2,Haldibari Railway Station +port_code_ingkjb,base.state_in_as,INGKJB,Golakganj (LCS) +port_code_inamg6,base.state_in_as,INAMG6,Amingaon(Gauhati) +port_code_inrxl8,base.state_in_br,INRXL8,Rexaul +port_code_ingalb,base.state_in_br,INGALB,Galgalia +port_code_injbnb,base.state_in_br,INJBNB,Jogbani +port_code_insnbb,base.state_in_br,INSNBB,Sonabarsa +port_code_inrxlb,base.state_in_br,INRXLB,Raxaul +port_code_inknlb,base.state_in_br,INKNLB ,Kunauli +port_code_inktrb,base.state_in_br,INKTRB,Kathihar +port_code_injayb,base.state_in_br,INJAYB,Jayanagar +port_code_inbtmb,base.state_in_br,INBTMB,Bhithamore(Sursnad) +port_code_inbgub,base.state_in_br,INBGUB,Bairgania +port_code_inbnrb,base.state_in_br,INBNRB,Bhimnagar +port_code_ingay4,base.state_in_br,INGAY4,Gaya +port_code_inpat4,base.state_in_br,INPAT4,Patna +port_code_inrai6,base.state_in_cg,INRAI6,Raipur +port_code_inrjn6,base.state_in_cg,INRJN6,M/s LANCO SOLAR PRIVATE LTD. +port_code_indam1,base.state_in_dd,INDAM1,Daman & Diu +port_code_inshp1,base.state_in_dd,INSHP1,Sinbhour Port +port_code_indel4,base.state_in_dl,INDEL4,Delhi Air Cargo +port_code_indli2,base.state_in_dl,INDLI2,Delhi Railway Station +port_code_intkd6,base.state_in_dl,INTKD6,Tughlakabad +port_code_inppg6,base.state_in_dl,INPPG6,Patparganj +port_code_inmrm1,base.state_in_ga,INMRM1,Goa Sea +port_code_intpn1,base.state_in_ga,INTPN1,Talpona +port_code_inppj1,base.state_in_ga,INPPJ1,Pellet Plant Jetty at Shiroda +port_code_inpnj1,base.state_in_ga,INPNJ1,Panjim +port_code_inchr1,base.state_in_ga,INCHR1,Chapora +port_code_inbet1,base.state_in_ga,INBET1,Betul +port_code_inmdg6,base.state_in_ga,INMDG6,Margao +port_code_ingoi4,base.state_in_ga,INGOI4,Dabolim +port_code_inpan1,base.state_in_ga,INPAN1,Panaji Port +port_code_insbi6,base.state_in_gj,INSBI6,Sabarmati ICD +port_code_inpav1,base.state_in_gj,INPAV1,Pipavav(Victor) Port +port_code_inbed1,base.state_in_gj,INBED1,Bedi(Including Rozi-Jamnagar) +port_code_inbgw1,base.state_in_gj,INBGW1,Bhagwa +port_code_inkdn1,base.state_in_gj,INKDN1,Kodinar(Muldwarka) +port_code_inakvi1,base.state_in_gj,INKVI1,Kavi +port_code_ingha1,base.state_in_gj,INGHA1,Ghogha +port_code_ingin6,base.state_in_gj,INGIN6,Gandhidham +port_code_indrk1,base.state_in_gj,INDRK1,Dwarka (Rupen) +port_code_indhr1,base.state_in_gj,INDHR1,Dholera +port_code_incmb1,base.state_in_gj,INCMB1,Cambay +port_code_inbsr1,base.state_in_gj,INBSR1,Bulsar +port_code_inblm1,base.state_in_gj,INBLM1,Bilimora +port_code_inhza6,base.state_in_gj,INHZA6,Hazira SEZ / Surat +port_code_inbhd6,base.state_in_gj,INBHD6,Dahez SEZ +port_code_inlpj6,base.state_in_gj,INLPJ6,Reliance SEZ/ Jamnagar +port_code_inbco6,base.state_in_gj,INBCO6,Euro Multivision Bhachau SEZ / Kutch +port_code_inaje6,base.state_in_gj,INAJE6,Welspun Anjar SEZ / Anjar +port_code_injbl6,base.state_in_gj,INJBL6,E-Complex SEZ / Amreli +port_code_inkdl6,base.state_in_gj,INKDL6,Kandla SEZ / Gandhidham +port_code_inval6,base.state_in_gj,INVAL6,Valvada ICD +port_code_insbh1,base.state_in_gj,INSBH1,Sinbhour +port_code_insmr1,base.state_in_gj,INSMR1,Simor +port_code_inrjp1,base.state_in_gj,INRJP1,Rajpara +port_code_inonj1,base.state_in_gj,INONJ1,Onjal +port_code_inomu1,base.state_in_gj,INOMU1,Old Mundra +port_code_innvb1,base.state_in_gj,INNVB1,Navabunder +port_code_inmtw1,base.state_in_gj,INMTW1,Metwad +port_code_inktw1,base.state_in_gj,INKTW1,Koteshwar +port_code_inktd1,base.state_in_gj,INKTD1,Kotda +port_code_inumr1,base.state_in_gj,INUMR1,Umarsadi +port_code_intnk1,base.state_in_gj,INTNK1,T ankari +port_code_inbyt1,base.state_in_gj,INBYT1,Beyt +port_code_inada6,base.state_in_gj,INADA6,Adalaj +port_code_inbhu1,base.state_in_gj,INBHU1,Bhavanagar +port_code_indiv1,base.state_in_gj,INDIV1,Div +port_code_inixy1,base.state_in_gj,INIXY1,Kandla +port_code_injbd1,base.state_in_gj,INJBD1,Jafrabad +port_code_inumb1,base.state_in_gj,INUMB1,Umbergoan +port_code_intun1,base.state_in_gj,INTUN1,Tuna +port_code_intja1,base.state_in_gj,INTJA1,Talaja +port_code_insik1,base.state_in_gj,INSIK1,Sikka +port_code_insal1,base.state_in_gj,INSAL1,Salaya +port_code_inpin1,base.state_in_gj,INPIN1,Pindhara +port_code_inpbd1,base.state_in_gj,INPBD1,Porbandar +port_code_inokh1,base.state_in_gj,INOKH1,Okha +port_code_innav1,base.state_in_gj,INNAV1,Navlakhi +port_code_inraj6,base.state_in_gj,INRAJ6,Rajkot +port_code_invpi6,base.state_in_gj,INVPI6,Vapi +port_code_instv6,base.state_in_gj,INSTV6,Surat (EPZ/SEZ) +port_code_inixy6,base.state_in_gj,INIXY6,Kandla (EPZ/SEZ) +port_code_insac6,base.state_in_gj,INSAC6,Sachin(Surat) +port_code_inkap6,base.state_in_gj,INKAP6,Kapadra(Surat) +port_code_inbrc6,base.state_in_gj,INBRC6,Baroda +port_code_inamd5,base.state_in_gj,INAMD5,Amhedabad +port_code_inamd4,base.state_in_gj,INAMD4,Ahmedabad +port_code_inala1,base.state_in_gj,INALA1,ALANG SBY +port_code_inmdv1,base.state_in_gj,INMDV1,Mandvi +port_code_invva1,base.state_in_gj,INVVA1,Veraval +port_code_invsi1,base.state_in_gj,INVSI1,Vansi-Borsi +port_code_invad1,base.state_in_gj,INVAD1,Vadinar +port_code_inmun1,base.state_in_gj,INMUN1,Mundra +port_code_inmli1,base.state_in_gj,INMLI1,Maroli +port_code_inmha1,base.state_in_gj,INMHA1,Mahuva +port_code_inmgr1,base.state_in_gj,INMGR1,Mangrol +port_code_inmdk1,base.state_in_gj,INMDK1,Muldwarka +port_code_inmda1,base.state_in_gj,INMDA1,Magdalla +port_code_inkok1,base.state_in_gj,INKOK1,Koka +port_code_injda1,base.state_in_gj,INJDA1,Jodia +port_code_injak1,base.state_in_gj,INJAK1,Jakhau +port_code_ingga1,base.state_in_gj,INGGA1,Gogha +port_code_indah1,base.state_in_gj,INDAH1,Dahej +port_code_inbrh1,base.state_in_gj,INBRH1,Broach +port_code_inakv6,base.state_in_gj,INAKV6,Ankleshwar +port_code_inchn6,base.state_in_gj,INCHN6,Vadodara – Chhani +port_code_insau6,base.state_in_gj,INSAU6,Thar Dry Port – Ahemdabad ICD +port_code_inudn6,base.state_in_gj,INUDN6,GHB-SEZ/SURAT +port_code_inajm6,base.state_in_gj,INAJM6,Mundra Port SEZ +port_code_insch6,base.state_in_gj,INSCH6,SAP-SEZ/SURAT +port_code_inapi6,base.state_in_gj,INAPI6 ,AAP-SEZ/AHMEDABAD +port_code_ingng6,base.state_in_gj,INGNG6,GIDC-SEZ/GANDHINAGAR +port_code_inadg6,base.state_in_gj,INADG6,GIPL-SEZ/AHMEDABAD +port_code_inadc6,base.state_in_gj,INADC6,CCIPL-SEZ/AHMEDABAD +port_code_inzip6,base.state_in_gj,INZIP6,ZIPL-SEZ/AHMEDABAD +port_code_ingns6,base.state_in_gj,INGNS6,SREHPL-SEZ/GANDHINAGAR +port_code_inadm6,base.state_in_gj,INADM6,MRPL-SEZ/AHMEDABAD +port_code_inadr6,base.state_in_gj,INADR6,CGRPL-SEZ/AHMEDABAD +port_code_ingnt6,base.state_in_gj,INGNT6,TCS-SEZ/GANDHINAGAR +port_code_inbhs6,base.state_in_gj,INBHS6,Sterling – SEZ / Bharuch +port_code_invln6,base.state_in_gj,INVLN6,NG REALTY- SEZ/Taluka Bavla Distt. +port_code_inbrs6,base.state_in_gj,INBRS6,SAhE m&e Cd aLbTaD.d- SEZ /WAGHODIA +port_code_inbhc6,base.state_in_gj,INBHC6,Jubilant-Chemical-SEZ/Vilayat +port_code_invld6,base.state_in_gj,INVLD6,Dishman-Pharmaceutical +port_code_inhzr6,base.state_in_gj,INHZR6,Surat ICD +port_code_inbrl6,base.state_in_gj,INBRL6,L and T ltd./SEZ/Vadodara +port_code_inhza1,base.state_in_gj,INHZA1,HAZIRA PORT/SURAT +port_code_ingna6,base.state_in_gj,INGNA6,APPL SEZ/Gandhinagar +port_code_ingnc6,base.state_in_gj,INGNC6,GIFT SEZ/Gandhinagar +port_code_inkbc6,base.state_in_gj,INKBC6,KRIL ICD / HAZIRA +port_code_ingao6,base.state_in_gj,INGAO6,OPGS SEZ / Gandhidham +port_code_inbdm6,base.state_in_hr,INBDM6,PANCHI GUJARAN, Sonepat ICD +port_code_inghr6,base.state_in_hr,INGHR6,Garhi Harsaru – Gurgaon ICD +port_code_inrea6,base.state_in_hr,INREA6,Rewari +port_code_inptl6,base.state_in_hr,INPTL6,Patli ICD +port_code_innur6,base.state_in_hr,INNUR6,Kundli +port_code_inpnp6,base.state_in_hr,INPNP6,Babarpur +port_code_infbd6,base.state_in_hr,INFBD6,Faridabad +port_code_inbvc6,base.state_in_hr,INBVC6,CONCOR-ICD/BALLABHGARH +port_code_inbfr6,base.state_in_hr,INBFR6,Piyala/Ballabhgarh ICD +port_code_incdd6,base.state_in_hr,INCDD6,DCA-I SEZ/CHANDIGARH +port_code_incdc6,base.state_in_hr,INCDC6,DCA-II SEZ/CHANDIGARH +port_code_inpkr6,base.state_in_hr,INPKR6,KRIL ICD/PALI +port_code_inngsb,base.state_in_hp,INNGSB,Village Namgaya Shipkila +port_code_insxr4,base.state_in_jk,INSXR4,Srinagar +port_code_inbbm6,base.state_in_jk,INBBM6,Bari Brahma +port_code_inixw6,base.state_in_jh,INIXW6,Jamshedpur (ICD) +port_code_intat6,base.state_in_jh,INTAT6,Jamshedpur (ICD) +port_code_inblr4,base.state_in_ka,INBLR4,Banglore Air Cargo +port_code_inblr5,base.state_in_ka,INBLR5,Bangalore +port_code_indru6,base.state_in_ka,INDRU6,Belgaum – Desur +port_code_incdp1,base.state_in_ka,INCDP1,Coondapur (Ganguly) +port_code_inpdd1,base.state_in_ka,INPDD1,Padubidri Minor Port +port_code_inkrw1,base.state_in_ka,INKRW1,Karwar(including Sardeshivagad) +port_code_inhwr1,base.state_in_ka,INHWR1,Honawar +port_code_inhgt1,base.state_in_ka,INHGT1,Hangarkatta +port_code_inbtk1,base.state_in_ka,INBTK1,Bhatkal +port_code_inbkr1,base.state_in_ka,INBKR1,Belekeri +port_code_inbdr1,base.state_in_ka,INBDR1,Baindur +port_code_innml1,base.state_in_ka,INNML1,Mangalore Sea +port_code_inbgq6,base.state_in_ka,INBGQ6,Quest SEZ Belgaum +port_code_inmaq6,base.state_in_ka,INMAQ6,Mangalore SEZ +port_code_inudi6,base.state_in_ka,INUDI6,Synefra SEZ / Udipi +port_code_inbnc6,base.state_in_ka,INBNC6,KBITS SEZ / Bangalore +port_code_inhsp6,base.state_in_ka,INHSP6,KIADBP SEZ / Hassan +port_code_inhsf6,base.state_in_ka,INHSF6,KIADBFP SEZ / Hassan +port_code_inhst6,base.state_in_ka,INHST6,KIADBT SEZ / Hassan +port_code_insbc6,base.state_in_ka,INSBC6,Biocon SEZ / Bangalore +port_code_inblk1,base.state_in_ka,INBLK1,Belekeri +port_code_incoo1,base.state_in_ka,INCOO1,Coondapur (Ganguly) +port_code_inmal1,base.state_in_ka,INMAL1,Malpe +port_code_inhas6,base.state_in_ka,INHAS6,Hassan (EPZ/SEZ) +port_code_inwfd6,base.state_in_ka,INWFD6,Bangalore +port_code_intri1,base.state_in_ka,INTRI1,Tadri +port_code_inixe1,base.state_in_ka,INIXE1,Mangalore +port_code_intrv4,base.state_in_kl,INTRV4,Trivendrun Air Cargo +port_code_inang1,base.state_in_kl,INANG1,Anijengo +port_code_inbdg1,base.state_in_kl,INBDG1,Badagara +port_code_inkal1,base.state_in_kl,INKAL1,Kallai +port_code_inksg1,base.state_in_kl,INKSG1,Kasargod +port_code_inkvl1,base.state_in_kl,INKVL1,Kovalam +port_code_inmhe1,base.state_in_kl,INMHE1,Mahe +port_code_inpnn1,base.state_in_kl,INPNN1,Ponnani +port_code_incct6,base.state_in_kl,INCCT6,KINFRAFP SEZ / Kozhikkode +port_code_intvc6,base.state_in_kl,INTVC6,KINFRAA SEZ / Thiruvananthapuram +port_code_inerv6,base.state_in_kl,INERV6,Vallarpadom SEZ / Ernakulam +port_code_inerp6,base.state_in_kl,INERP6,Puthuvypeen SEZ / Ernakulam +port_code_inrkg1,base.state_in_kl,INRKG1,Rajakkamangalam +port_code_inmlp1,base.state_in_kl,INMLP1,Mallipuram +port_code_inlpr1,base.state_in_kl,INLPR1,Leapuram +port_code_inkdp1,base.state_in_kl,INKDP1,Kondiapetnam +port_code_inknd1,base.state_in_kl,INKND1,Kankudy +port_code_incnn1,base.state_in_kl,INCNN1,Cannanore +port_code_incok1,base.state_in_kl,INCOK1,Cochin Sea +port_code_inalf1,base.state_in_kl,INALF1,Allepey +port_code_incok6,base.state_in_kl,INCOK6,Cochin (EPZ/SEZ) +port_code_inarr6,base.state_in_kl,INARR6,Aroor +port_code_inccj4,base.state_in_kl,INCCJ4,Karipur(Calicut) +port_code_inmci1,base.state_in_kl,INMCI1,Minicoy Island +port_code_intel1,base.state_in_kl,INTEL1,Tellichery +port_code_invzj1,base.state_in_kl,INVZJ1,Vazhinjam +port_code_incok4,base.state_in_kl,INCOK4,Cochin +port_code_innee1,base.state_in_kl,INNEE1,Neendakara +port_code_inccj1,base.state_in_kl,INCCJ1,C.H. Kozikode +port_code_inazk1,base.state_in_kl,INAZK1,Azhikkal +port_code_inkym6,base.state_in_kl,INKYM6,Kottayam (10.11.09) +port_code_intcr6,base.state_in_kl,INTCR6,Thrissur ICD +port_code_inagi1,base.state_in_ld,INAGI1,Agatti Island +port_code_inkti1,base.state_in_ld,INKTI1,Kiltan Island +port_code_inadi1,base.state_in_ld,INADI1,Androth Island +port_code_inbtr1,base.state_in_ld,INBTR1,Bitra Island +port_code_incti1,base.state_in_ld,INCTI1,Chettat Island +port_code_inkvt1,base.state_in_ld,INKVT1,Kavaratti Island +port_code_inkdi1,base.state_in_ld,INKDI1,Kadmat lsland +port_code_inami1,base.state_in_ld,INAMI1,Amini IsTand +port_code_inmpr6,base.state_in_mp,INMPR6,Malanpur ICD +port_code_inkhd6,base.state_in_mp,INKHD6,Kheda -Dhar ICD +port_code_indha6,base.state_in_mp,INDHA6,Indore-Dhannad +port_code_inmdd6,base.state_in_mp,INMDD6,Mandideep +port_code_inidr4,base.state_in_mp,INIDR4,Indore +port_code_ingwl6,base.state_in_mp,INGWL6,Malanpur(Gwalior) +port_code_inind6,base.state_in_mp,ININD6,Pithampur +port_code_inidr6,base.state_in_mp,INIDR6,Indore (EPZ/SEZ) +port_code_inrtm6,base.state_in_mp,INRTM6,RATLAM(CONCOR) +port_code_ininb6,base.state_in_mp,ININB6,MPAKVN SEZ/Indore +port_code_inini6,base.state_in_mp,ININI6,IIPL SEZ / Indore +port_code_ininn6,base.state_in_mp,ININN6,Infosys SEZ / Indore +port_code_inint6,base.state_in_mp,ININT6,TCS SEZ / Indore +port_code_inach1,base.state_in_mh,INACH1,Achra +port_code_inbom4,base.state_in_mh,INBOM4,Bombay Air Cargo +port_code_innsa1,base.state_in_mh,INNSA1,Nhava Sheva Sea +port_code_invyd1,base.state_in_mh,INVYD1,Vijaydurg +port_code_invng1,base.state_in_mh,INVNG1,Vengurla +port_code_invsv1,base.state_in_mh,INVSV1,Varsava +port_code_invrd1,base.state_in_mh,INVRD1,Varavda +port_code_inutn1,base.state_in_mh,INUTN1,Uttan +port_code_inulw1,base.state_in_mh,INULW1,Ulwa +port_code_intmp1,base.state_in_mh,INTMP1,Trombay +port_code_intna1,base.state_in_mh,INTNA1,Thana +port_code_inthl1,base.state_in_mh,INTHL1,Thal +port_code_intrp1,base.state_in_mh,INTRP1,Tarapur +port_code_indeg1,base.state_in_mh,INDEG1,Deogad +port_code_indlb6,base.state_in_mh,INDLB6,Daulatabad ICD +port_code_indtw1,base.state_in_mh,INDTW1,Dantiwara +port_code_indhn1,base.state_in_mh,INDHN1,Dahanu +port_code_inbry1,base.state_in_mh,INBRY1,Borya +port_code_inbrm1,base.state_in_mh,INBRM1,Borlai – Mandla +port_code_inbsl6,base.state_in_mh,INBSL6,Bhusaval ICD +port_code_inbwn1,base.state_in_mh,INBWN1,Bhiwandi +port_code_inblp1,base.state_in_mh,INBLP1,Belapur +port_code_inkrp1,base.state_in_mh,INKRP1,Kiranpani +port_code_inkiw1,base.state_in_mh,INKIW1,Kelwa +port_code_inksh1,base.state_in_mh,INKSH1,Kelshi +port_code_inkrn1,base.state_in_mh,INKRN1,Karanja +port_code_inkly1,base.state_in_mh,INKLY1,Kalyan +port_code_injtp1,base.state_in_mh,INJTP1,Jaitapur +port_code_injgd1,base.state_in_mh,INJGD1,Jaigad +port_code_inhrn1,base.state_in_mh,INHRN1,Harnai +port_code_indig1,base.state_in_mh,INDIG1,Dighi Port +port_code_injnr4,base.state_in_mh,INJNR4,Nashik-Janori ACC +port_code_injnr6,base.state_in_mh,INJNR6,Nashik-Janori ICD +port_code_intlg6,base.state_in_mh,INTLG6,Pune-Talegoan ICD +port_code_inmwa6,base.state_in_mh,INMWA6,ICD Maliwada +port_code_inpvl6,base.state_in_mh,INPVL6,Panvel +port_code_inswd1,base.state_in_mh,INSWD1,Shriwardhan +port_code_instp1,base.state_in_mh,INSTP1,Satpati +port_code_inrjr1,base.state_in_mh,INRJR1,Rajpuri +port_code_inprg1,base.state_in_mh,INPRG1,Purangad +port_code_inpsh1,base.state_in_mh,INPSH1,Palshet +port_code_innvt1,base.state_in_mh,INNVT1,Nivti +port_code_innwp1,base.state_in_mh,INNWP1,Newapur +port_code_inndg1,base.state_in_mh,INNDG1,Nandgaon +port_code_inmrd1,base.state_in_mh,INMRD1,Murad +port_code_ingrd6,base.state_in_mh,INGRD6,Mumbai DP-II +port_code_ingrr6,base.state_in_mh,INGRR6,Mumbai -DP-I +port_code_inmra1,base.state_in_mh,INMRA1,Mora +port_code_inmrj6,base.state_in_mh,INMRJ6,Miraj +port_code_inmnr1,base.state_in_mh,INMNR1,Manori +port_code_inmnw1,base.state_in_mh,INMNW1,Mandwa +port_code_inmlw1,base.state_in_mh,INMLW1,Malwan +port_code_inkmb1,base.state_in_mh,INKMB1,Kumbharu +port_code_inbsn1,base.state_in_mh,INBSN1,Bassein +port_code_inbkt1,base.state_in_mh,INBKT1,Bankot +port_code_inbnd1,base.state_in_mh,INBND1,Bandra +port_code_inanl1,base.state_in_mh,INANL1,Arnala +port_code_inabg1,base.state_in_mh,INABG1,Alibag +port_code_inbom1,base.state_in_mh,INBOM1,Bombay Sea +port_code_indhp1,base.state_in_mh,INDHP1,Dabhol Port +port_code_inred1,base.state_in_mh,INRED1,Redi +port_code_inkhp6,base.state_in_mh,INKHP6,Khopta (EPZ/SEZ) +port_code_inbom6,base.state_in_mh,INBOM6,Mumbai (EPZ/SEZ) +port_code_incch6,base.state_in_mh,INCCH6,Chinchwad (ICD) +port_code_inwal6,base.state_in_mh,INWAL6,Waluj(Aurangabad) +port_code_inpmp6,base.state_in_mh,INPMP6,Pimpri +port_code_innsk6,base.state_in_mh,INNSK6,Nasik +port_code_inngp6,base.state_in_mh,INNGP6,Nagpur +port_code_inmul6,base.state_in_mh,INMUL6,Mulund +port_code_injal6,base.state_in_mh,INJAL6,Jalgaon +port_code_indig6,base.state_in_mh,INDIG6,Dighi(Pune) +port_code_innag4,base.state_in_mh,INNAG4,Nagpur +port_code_inpnq4,base.state_in_mh,INPNQ4,Pune +port_code_indhu1,base.state_in_mh,INDHU1,Dahanu +port_code_inrvd1,base.state_in_mh,INRVD1,Revdanda +port_code_inrtc1,base.state_in_mh,INRTC1,Ratnagiri +port_code_inrnr1,base.state_in_mh,INRNR1,Ranpar +port_code_inpnv6,base.state_in_mh,INPNV6,ARSHIYA-SEZ/PANVEL +port_code_indmt1,base.state_in_mh,INDMT1,Dharamtar +port_code_inbap6,base.state_in_mh,INBAP6,MultiService-SEZ +port_code_inklm6,base.state_in_mh,INKLM6,Multi Service-SEZ Kalambolli +port_code_inbau6,base.state_in_mh,INBAU6,IT/ITES-A-SEZ/Ulwe +port_code_inbai6,base.state_in_mh,INBAI6,IT/ITES-B-SEZ/Ulwe +port_code_inbag6,base.state_in_mh,INBAG6,Gem & Jewellery-SEZ/Ulwe +port_code_inbam6,base.state_in_mh,INBAM6,Multi Service-SEZ/Ulwe(Distt. Raigad) +port_code_inbat6,base.state_in_mh,INBAT6,IT/ITES-C SEZ/Ulwe +port_code_ainpnq6,base.state_in_mh,AINPNQ 6,Hadapsar, SEZ, Pune +port_code_inmuc6,base.state_in_mh,INMUC6,SUNSTREAM CITY PVT. +port_code_inpsi6,base.state_in_mh,INPSI6,SYNTEL INTERNATIONAL +port_code_inpmt6,base.state_in_mh,INPMT6,MAGARPATTA TOWNSHIP +port_code_inpit6,base.state_in_mh,INPIT6,INFOSYS TECHNOLOGIES +port_code_inpek6,base.state_in_mh,INPEK6,EON KHARADI INFRASTRUCTURE +port_code_inkrm6,base.state_in_mh,INKRM6,Maharashtra Airport +port_code_inair6,base.state_in_mh,INAIR6,Serene Properties Private Limited +port_code_invkh6,base.state_in_mh,INVKH6,HNB SEZ/ MUMBAI +port_code_inchj6,base.state_in_mh,INCHJ6,WWIL ICD/ WARDHA +port_code_indpc4,base.state_in_mh,INDPC4,PCCCC, Bandra- Kurla Complex +port_code_inbng6,base.state_in_mh,INBNG6,MMAuHmAbGaAiONICD/THAN +port_code_inaig6,base.state_in_mh,INAIG6,GEPL SEZ/Thane +port_code_inawm6,base.state_in_mh,INAWM6,MIDC SEZ/AURANGABAD +port_code_indid6,base.state_in_mh,INDID6,MIDC SEZ/NANDED +port_code_inpum6,base.state_in_mh,INPUM6,MIDC SEZ/PUNE +port_code_inkle6,base.state_in_mh,INKLE6,MIDC SEZ / RAIGAD +port_code_instu6,base.state_in_mh,INSTU6,MIDC SEZ / KESURDE +port_code_innki6,base.state_in_mh,INNKI6,IIIL SEZ / SINNAR +port_code_instm6,base.state_in_mh,INSTM6,MIDC PHALTAN SEZ / SATARA +port_code_inpnu6,base.state_in_mh,INPNU6,MSFPL SEZ / PUNE +port_code_inaww6,base.state_in_mh,INAWW6,WIDL SEZ / AURANGABAD +port_code_inwrr6,base.state_in_mh,INWRR6,WPCL CHANDRAPUR +port_code_inccw6,base.state_in_mh,INCCW6,WIPRO / PUNE +port_code_intgn6,base.state_in_mh,INTGN6,KEIPL / PUNE +port_code_inpun6,base.state_in_mh,INPUN6,KBTV / PUNE +port_code_inpne6,base.state_in_mh,INPNE6,NTPL / PUNE +port_code_inccq6,base.state_in_mh,INCCQ6,QBP / PUNE +port_code_inmreb,base.state_in_mn,INMREB,Moreh +port_code_inimf4,base.state_in_mn,INIMF4,Imphal +port_code_inbgmb,base.state_in_ml,INBGMB,Baghmara +port_code_inbrab,base.state_in_ml,INBRAB,Barsora +port_code_insbzb,base.state_in_ml,INSBZB,Shella Bazar +port_code_inrgub,base.state_in_ml,INRGUB,Ryngku +port_code_inmghb,base.state_in_ml,INMGHB,Mahendraganj +port_code_inghpb,base.state_in_ml,INGHPB,Ghasuapara +port_code_indwkb,base.state_in_ml,INDWKB,Dawki +port_code_indlub,base.state_in_ml,INDLUB,Dalu +port_code_inbolb,base.state_in_ml,INBOLB,Bolanganj +port_code_inbltb,base.state_in_ml,INBLTB,Balet +port_code_inchpb,base.state_in_mz,INCHPB,Champai +port_code_indmrb,base.state_in_nl,INDMRB,Demagir +port_code_inbbp1,base.state_in_or,INBBP1,Bahabal Pur +port_code_inprt1,base.state_in_or,INPRT1,Paradeep +port_code_inbbi4,base.state_in_or,INBBI4,Bhubaneswar +port_code_ingpr1,base.state_in_or,INGPR1,Gopalpur +port_code_inskd6,base.state_in_or,INSKD6,Kalinganagar +port_code_inbbs6,base.state_in_or,INBBS6,OIIDC SEZ/Bhubneshwar +port_code_incas6,base.state_in_or,INCAS6,SAPL SEZ / Ganjam +port_code_inkrk1,base.state_in_py,INKRK1,Karaikal +port_code_inpny1,base.state_in_py,INPNY1,Pondicherry +port_code_inpny6,base.state_in_py,INPNY6,Pondicherry ICD +port_code_inlud6,base.state_in_pb,INLUD6,Ludhiana +port_code_inasr2,base.state_in_pb,INASR2,Amritsar Railway Station +port_code_inatt2,base.state_in_pb,INATT2,Attari Railway Station +port_code_inatrb,base.state_in_pb,INATRB,Attari Road +port_code_indpr6,base.state_in_pb,INDPR6,DAPPER +port_code_inatq4,base.state_in_pb,INATQ4,Rajasansi(Amritsar) +port_code_injuuc6,base.state_in_pb,INJUC6,Jalandhar +port_code_inldh6,base.state_in_pb,INLDH6,Ludhiana +port_code_inasr6,base.state_in_pb,INASR6,Amritsar +port_code_inbti6,base.state_in_pb,INBTI6,Bhatinda +port_code_injai6,base.state_in_rj,INJAI6,Jaipur ICD +port_code_intha6,base.state_in_rj,INTHA6,Thar Dry Port – Jodhpur ICD +port_code_inmnb2,base.state_in_rj,INMNB2,Munabao Railway Station +port_code_inkku6,base.state_in_rj,INKKU6,Kanakpura – Jaipur ICD +port_code_inbrn6,base.state_in_rj,INBRN6,Jodhpur- Boranda (EPZ/SEZ) +port_code_injai5,base.state_in_rj,INJAI5,Jaipur +port_code_injsz6,base.state_in_rj,INJSZ6,Jaipur – Sitapur (EPZ/SEZ) +port_code_inbgk6,base.state_in_rj,INBGK6,Bhagat ki Kothi – Jodhpur ICD +port_code_inbmr2,base.state_in_rj,INBMR2,Barmer Railway Station +port_code_injai4,base.state_in_rj,INJAI4,Jaipur +port_code_inbhl6,base.state_in_rj,INBHL6,Bhilwara +port_code_injux6,base.state_in_rj,INJUX6,Jodhpur +port_code_inudz6,base.state_in_rj,INUDZ6,Udaipur +port_code_inktt6,base.state_in_rj,INKTT6,Kota +port_code_inbwd6,base.state_in_rj,INBWD6,Bhiwadi +port_code_inchmb,base.state_in_sk,INCHMB,Chamurchi +port_code_inajj6,base.state_in_tn,INAJJ6,Arakkonam – Melpakkam – Chennai +port_code_inixm6,base.state_in_tn,INIXM6,Madurai ICD +port_code_inche6,base.state_in_tn,INCHE6,Tiruppur – Chettipalayam CFS +port_code_inkar6,base.state_in_tn,INKAR6,KARUR +port_code_inigu6,base.state_in_tn,INIGU6,Coimbatore – Irugur ICD +port_code_inmaa6,base.state_in_tn,INMAA6,Chennai (EPZ/SEZ) +port_code_inmaa4,base.state_in_tn,INMAA4,Chennai Air Cargo +port_code_intut1,base.state_in_tn,INTUT1,Tuticorin Sea +port_code_intut6,base.state_in_tn,INTUT6,Tuticorin ICD +port_code_inmaa1,base.state_in_tn,INMAA1,Chennai Sea +port_code_indsk1,base.state_in_tn,INDSK1,Dhanu – Shkodi +port_code_inksp1,base.state_in_tn,INKSP1,Kulasekarapatnam +port_code_inptn1,base.state_in_tn,INPTN1,Portonovo +port_code_intph1,base.state_in_tn,INTPH1,Thopputhurai +port_code_intde6,base.state_in_tn,INTDE6,Tudiyalur – Coimbatore ICD +port_code_intnd1,base.state_in_tn,INTND1,Tondi +port_code_intho6,base.state_in_tn,INTHO6,Tiruppur – Thottiplayam ICD +port_code_inrwr1,base.state_in_tn,INRWR1,Rameshwaram +port_code_inpmb1,base.state_in_tn,INPMB1,Pamban +port_code_inkkr1,base.state_in_tn,INKKR1,Kilakari +port_code_inchl1,base.state_in_tn,INCHL1,Colachel +port_code_intrl6,base.state_in_tn,INTRL6,Tiruvallur ICD +port_code_inilp6,base.state_in_tn,INILP6,Irungattukottai-ILP ICD +port_code_incdl1,base.state_in_tn,INCDL1,Cuddalore +port_code_innpt1,base.state_in_tn,INNPT1,Nagapattinam +port_code_intyr1,base.state_in_tn,INTYR1,Tirukkadayyur +port_code_invkm1,base.state_in_tn,INVKM1,Valinokkam +port_code_insll6,base.state_in_tn,INSLL6,Singnallur +port_code_intup6,base.state_in_tn,INTUP6,Tirupur +port_code_insxt6,base.state_in_tn,INSXT6,Salem +port_code_incbe6,base.state_in_tn,INCBE6,Coimbatore +port_code_intrz4,base.state_in_tn,INTRZ4,Tiruchirapalli +port_code_incjb4,base.state_in_tn,INCJB4,Coimbatore +port_code_invep1,base.state_in_tn,INVEP1,Veppalodai +port_code_inram1,base.state_in_tn,INRAM1,Rameshwaram +port_code_inmdp1,base.state_in_tn,INMDP1,Mandapam +port_code_incgi6,base.state_in_tn,INCGI6,MWCDL-IT SEZ/Chengalpattu +port_code_incga6,base.state_in_tn,INCGA6,MWCDL-Apparel-sez/Chengalpattu +port_code_incgl6,base.state_in_tn,INCGL6,MWCDL-Auto ANCILLARIES +port_code_incjn6,base.state_in_tn,INCJN6,NIPL-SEZ Sriperumbudur +port_code_incjs6,base.state_in_tn,INCJS6,SIPCOT Hi-Tech-SEZ Sriperumbudur +port_code_incjo6,base.state_in_tn,INCJO6,SIPCOT +port_code_incjf6,base.state_in_tn,INCJF6,FTIL-SEZ Sriperumbudur +port_code_incbs6,base.state_in_tn,INCBS6,SE&C Ltd-SEZ/Coimbatore +port_code_invtc6,base.state_in_tn,INVTC6,CHEYYAR-SEZ/Vellore +port_code_inten6,base.state_in_tn,INTEN6,SIPCOT-Gangaikondan-SEZ/Tirunelveli +port_code_intnc6,base.state_in_tn,INTNC6,CCCL Infrastructure Ltd. +port_code_innnn6,base.state_in_tn,INNNN6,AMRL International Tech City Ltd. +port_code_intbm6,base.state_in_tn,INTBM6,SPEHZP/L -NSaEnZg/Kuannerciheepuram +port_code_inukl6,base.state_in_tn,INUKL6,ETLISL-SEZ/Erode +port_code_inpys6,base.state_in_tn,INPYS6,SIPCOT-SEZ/Erode +port_code_ingdp6,base.state_in_tn,INGDP6,FLLPL-SEZ/Thirruvallur +port_code_inenr1,base.state_in_tn,INENR1,Ennore +port_code_intvt6,base.state_in_tn,INTVT6,ICD/Tondiarpet Chennai +port_code_inkat1,base.state_in_tn,INKAT1,KATTUPALLI +port_code_intbt6,base.state_in_tn,INTBT6,TCSL SEZ / SIRUSERI +port_code_incsp6,base.state_in_tn,INCSP6,SIPL SEZ / KANCHEEPURAM +port_code_incji6,base.state_in_tn,INCJI6,IG3I SEZ / KANCHEEPURAM +port_code_incjd6,base.state_in_tn,INCJD6,DLFC SEZ / KANCHEEPURAM +port_code_incec6,base.state_in_tn,INCEC6,ECTN SEZ / COIMBATORE +port_code_incje6,base.state_in_tn,INCJE6,ECTN SEZ / KANCHEEPURAM +port_code_incja6,base.state_in_tn,INCJA6,AEIP SEZ / KANCHEEPURAM +port_code_incsv6,base.state_in_tn,INCSV6,SVPL SEZ / COIMBATORE +port_code_incge6,base.state_in_tn,INCGE6,ETA SEZ / KANCHEEPURAM +port_code_incnc6,base.state_in_tn,INCNC6,NCTL SEZ / KANCHEEPURAM +port_code_intbc6,base.state_in_tn,INTBC6,CTSI SEZ / SIRUSERI +port_code_inmas6,base.state_in_tn,INMAS6,TIPL SEZ / CHENNAI +port_code_intlt6,base.state_in_tn,INTLT6,LTSL SEZ / TIRUVALLUR +port_code_intbh6,base.state_in_tn,INTBH6,HIRL SEZ / KANCHEEPURAM +port_code_incbt6,base.state_in_tn,INCBT6 ,TDPL SEZ / COIMBATORE +port_code_invlr6,base.state_in_tn,INVLR6,SIPC SEZ / VELLORE +port_code_incjv6,base.state_in_tn,INCJV6,VTPL SEZ / KANCHEEPURAM +port_code_inmec6,base.state_in_tn,INMEC6,ECTN SEZ / MADURAI – I +port_code_inmdc6,base.state_in_tn,INMDC6,ECTN SEZ / MADURAI – II +port_code_insxe6,base.state_in_tn,INSXE6,ECTN SEZ / SALEM +port_code_inmdr6,base.state_in_tn,INMDR6,RTPL SEZ / MADURAI +port_code_incfi6,base.state_in_tn,INCFI6,FIPL SEZ / KANCHEEPURAM +port_code_inhsi6,base.state_in_tn,INHSI6,SIPC SEZ / KRISHNAGIRI +port_code_inmae6,base.state_in_tn,INMAE6,ECTNL SEZ / Gangaikondan +port_code_intbs6,base.state_in_tn,INTBS6,HTL SEZ / Sireseri +port_code_inagtb,base.state_in_tr,INAGTB,Agartala +port_code_inmhgb,base.state_in_tr,INMHGB,Mahurighat +port_code_insabb,base.state_in_tr,INSABB,Sabroom +port_code_insmpb,base.state_in_tr,INSMPB,Srimantapur +port_code_inrgbb,base.state_in_tr,INRGBB,Old Raghna Bazar +port_code_inkwgb,base.state_in_tr,INKWGB,Khowaighat +port_code_indhlb,base.state_in_tr,INDHLB,Dhalaighat +port_code_inkelb,base.state_in_tr,INKELB,Kel Sahar Subdivision +port_code_inbsab,base.state_in_up,INBSAB,Banbasa +port_code_ingaib,base.state_in_up,INGAIB,Gauriphanta +port_code_inrdt6,base.state_in_up,INRDT6,Kota-Ravtha Road +port_code_ingjib,base.state_in_up,INGJIB,Gunji +port_code_injhob,base.state_in_up,INJHOB,Jhulaghat (Pithoragarh) +port_code_inktgb,base.state_in_up,INKTGB,Katarniyaghat +port_code_inngrb,base.state_in_up,INNGRB,Nepalgunj Road +port_code_inmbs6,base.state_in_up,INMBS6,Madhosingh ICD +port_code_inlon6,base.state_in_up,INLON6,ICD Loni +port_code_incpl6,base.state_in_up,INCPL6,Dadri-CGML +port_code_inbdh6,base.state_in_up,INBDH6,ICD Badohi +port_code_inttp6,base.state_in_up,INTTP6,Dadri TTPL +port_code_inapl6,base.state_in_up,INAPL6,Dadri-ACPL CFS +port_code_intknb,base.state_in_up,INTKNB,Tikonia +port_code_insnlb,base.state_in_up,INSNLB,Sonauli +port_code_inkwab,base.state_in_up,INKWAB,Khunwa +port_code_inknu6,base.state_in_up,INKNU6,Kanpur – JRY (ICD) +port_code_injwab,base.state_in_up,INJWAB,Jarwa +port_code_insjr6,base.state_in_up,INSJR6,Greater Noida-Surajpur +port_code_indlab,base.state_in_up,INDLAB,Dharchula +port_code_inbnyb,base.state_in_up,INBNYB,Berhni +port_code_instt6,base.state_in_up,INSTT6,Dadri – STTPL (CFS) +port_code_inagr4,base.state_in_up,INAGR4,Agra +port_code_inder6,base.state_in_up,INDER6,Noida-Dadri (ICD) +port_code_inmbc6,base.state_in_up,INMBC6,Moradabad (EPZ/SEZ) +port_code_innda6,base.state_in_up,INNDA6,Noida (EPZ/SEZ) +port_code_insre6,base.state_in_up,INSRE6,Saharanpur +port_code_inmtc6,base.state_in_up,INMTC6,Meerut +port_code_inmbd6,base.state_in_up,INMBD6,Pakwara (Moradabad) +port_code_incpc6,base.state_in_up,INCPC6,Kanpur +port_code_inbsb6,base.state_in_up,INBSB6,Varanasi +port_code_inblj6,base.state_in_up,INBLJ6,Agra +port_code_invns4,base.state_in_up,INVNS4,Varanasi +port_code_inpnk6,base.state_in_up,INPNK6,KLPPL-ICD/PANKI +port_code_inbek4,base.state_in_up,INBEK4,Bareilly +port_code_inlko4,base.state_in_up,INLKO4,Lucknow +port_code_inknu4,base.state_in_up,INKNU4,Kanpur +port_code_inbul6,base.state_in_up,INBUL6,AN FTWZ LTD – FTWZ/ BULANDSHAHR +port_code_inalp6,base.state_in_up,INALP6,Dadri, Greater Noida +port_code_innoi6,base.state_in_up,INNOI6,LONI-1 ICD Ghaziabad +port_code_inccu4,base.state_in_wb,INCCU4,Kolkata Air Cargo +port_code_ingtzb,base.state_in_wb,INGTZB,Getandah +port_code_inhlib,base.state_in_wb,INHLIB,Hilli +port_code_injigb,base.state_in_wb,INJIGB,Jaigaon +port_code_insng2,base.state_in_wb,INSNG2,Singabad Railway Station +port_code_inrng2,base.state_in_wb,INRNG2,Ranaghat Railway Station +port_code_inrdp2,base.state_in_wb,INRDP2,Radhikapur Railway Station +port_code_inptpb,base.state_in_wb,INPTPB,Petrapole Road +port_code_inpntb,base.state_in_wb,INPNTB,Pan itanki (Naxabari) +port_code_innknb,base.state_in_wb,INNKNB,Namkhana +port_code_inlglb,base.state_in_wb,INLGLB,Lalgola Town +port_code_inmhdb,base.state_in_wb,INMHDB,Kotawalighat (Mohedipur) +port_code_injpgb,base.state_in_wb,INJPGB,Jalpaiguri +port_code_indur6,base.state_in_wb,INDUR6,ICD Durgapur +port_code_intngb,base.state_in_wb,INTNGB,Tungi +port_code_inttsb,base.state_in_wb,INTTSB,T.T. Shed (Kidcerpore) +port_code_inskpb,base.state_in_wb,INSKPB,Sukhia Pokhari +port_code_instib,base.state_in_wb,INSTIB,Sitai +port_code_inhglb,base.state_in_wb,INHGLB,Hingalganj +port_code_ingjxb,base.state_in_wb,INGJXB,Ghojadanga +port_code_inged2,base.state_in_wb,INGED2,Gede Railway Station +port_code_inptp8,base.state_in_wb,INPTP8,Patrapole +port_code_incbdb,base.state_in_wb,INCBDB,Changrabandh +port_code_infbrb,base.state_in_wb,INFBRB,Fulbari +port_code_inccu1,base.state_in_wb,INCCU1,Kolkata Sea +port_code_inhal1,base.state_in_wb,INHAL1,Haldia +port_code_inslt6,base.state_in_wb,INSLT6,Salt Lake (EPZ/SEZ) +port_code_inflt6,base.state_in_wb,INFLT6,Falta (EPZ/SEZ) +port_code_inixb4,base.state_in_wb,INIXB4,Bagdogra +port_code_inbnt6,base.state_in_wb,INBNT6,TCS SEZ/Kolkata +port_code_inbxr6,base.state_in_wb,INBXR6,DLF SEZ/Kolkata +port_code_inbnx6,base.state_in_wb,INBNX6,UNITECH SEZ/Kolkata +port_code_inbnk6,base.state_in_wb,INBNK6,Kolkata IT Park/Bantala +port_code_inbnw6,base.state_in_wb,INBNW6,Wipro SEZ/ Kolkata diff --git a/addons/l10n_in/data/l10n_in_chart_data.xml b/addons/l10n_in/data/l10n_in_chart_data.xml new file mode 100644 index 00000000..68ba18d6 --- /dev/null +++ b/addons/l10n_in/data/l10n_in_chart_data.xml @@ -0,0 +1,60 @@ +<?xml version="1.0" encoding="utf-8"?> +<odoo> + <menuitem id="account_reports_in_statements_menu" name="India" parent="account.menu_finance_reports" sequence="0"/> + + <record id="indian_chart_template_standard" model="account.chart.template"> + <field name="name">Indian Chart of Accounts - Standard</field> + <field name="bank_account_code_prefix">1002</field> + <field name="cash_account_code_prefix">1001</field> + <field name="transfer_account_code_prefix">1008</field> + <field name="code_digits">6</field> + <field name="currency_id" ref="base.INR"/> + </record> + + <record id="sgst_tag_account" model="account.account.tag"> + <field name="name">SGST</field> + <field name="applicability">accounts</field> + </record> + <record id="cgst_tag_account" model="account.account.tag"> + <field name="name">CGST</field> + <field name="applicability">accounts</field> + </record> + <record id="igst_tag_account" model="account.account.tag"> + <field name="name">IGST</field> + <field name="applicability">accounts</field> + </record> + <record id="cess_tag_account" model="account.account.tag"> + <field name="name">CESS</field> + <field name="applicability">accounts</field> + </record> + <record id="p10055" model="account.account.template"> + <field name="name">CESS Receivable</field> + <field name="code">10055</field> + <field name="user_type_id" ref="account.data_account_type_current_assets"/> + <field name="reconcile" eval="False"/> + <field name="chart_template_id" ref="indian_chart_template_standard"/> + <field name="tag_ids" eval="[(6,0,[ref('cess_tag_account'),])]"/> + </record> + <record id="p10056" model="account.account.template"> + <field name="name">Tax Receivable</field> + <field name="code">10056</field> + <field name="user_type_id" ref="account.data_account_type_current_assets"/> + <field name="reconcile" eval="False"/> + <field name="chart_template_id" ref="indian_chart_template_standard"/> + </record> + <record model="account.account.template" id="p11235"> + <field name="name">CESS Payable</field> + <field name="code">11235</field> + <field name="user_type_id" ref="account.data_account_type_current_liabilities"/> + <field name="reconcile" eval="False"/> + <field name="chart_template_id" ref="indian_chart_template_standard"/> + <field name="tag_ids" eval="[(6,0,[ref('cess_tag_account'),])]"/> + </record> + <record id="p11236" model="account.account.template"> + <field name="name">Tax Payable</field> + <field name="code">11236</field> + <field name="user_type_id" ref="account.data_account_type_current_liabilities"/> + <field name="reconcile" eval="False"/> + <field name="chart_template_id" ref="indian_chart_template_standard"/> + </record> +</odoo> diff --git a/addons/l10n_in/data/l10n_in_chart_post_data.xml b/addons/l10n_in/data/l10n_in_chart_post_data.xml new file mode 100644 index 00000000..23876e62 --- /dev/null +++ b/addons/l10n_in/data/l10n_in_chart_post_data.xml @@ -0,0 +1,12 @@ +<?xml version="1.0" encoding="utf-8"?> +<odoo> + <record id="indian_chart_template_standard" model="account.chart.template"> + <field name="property_account_receivable_id" ref="p10040"/> + <field name="property_account_payable_id" ref="p11211"/> + <field name="property_account_expense_categ_id" ref="p2107"/> + <field name="property_account_income_categ_id" ref="p20011"/> + <field name="income_currency_exchange_account_id" ref="p2013"/> + <field name="expense_currency_exchange_account_id" ref="p2117"/> + <field name="default_pos_receivable_account_id" ref="p10041" /> + </record> +</odoo> diff --git a/addons/l10n_in/data/res_country_state_data.xml b/addons/l10n_in/data/res_country_state_data.xml new file mode 100644 index 00000000..55412d1f --- /dev/null +++ b/addons/l10n_in/data/res_country_state_data.xml @@ -0,0 +1,120 @@ +<?xml version="1.0" encoding="utf-8"?> +<odoo> + + <record id="state_in_ot" model="res.country.state"> + <field name="name">Other Territory</field> + <field name="code">IN_OT</field> + <field name="country_id" ref="base.in"/> + <field name="l10n_in_tin">97</field> + </record> + + <record id="base.state_in_an" model="res.country.state"> + <field name="l10n_in_tin">35</field> + </record> + <record id="base.state_in_ap" model="res.country.state"> + <field name="l10n_in_tin">37</field> + </record> + <record id="base.state_in_ar" model="res.country.state"> + <field name="l10n_in_tin">12</field> + </record> + <record id="base.state_in_as" model="res.country.state"> + <field name="l10n_in_tin">18</field> + </record> + <record id="base.state_in_br" model="res.country.state"> + <field name="l10n_in_tin">10</field> + </record> + <record id="base.state_in_ch" model="res.country.state"> + <field name="l10n_in_tin">04</field> + </record> + <record id="base.state_in_cg" model="res.country.state"> + <field name="l10n_in_tin">22</field> + </record> + <record id="base.state_in_dn" model="res.country.state"> + <field name="l10n_in_tin">26</field> + </record> + <record id="base.state_in_dd" model="res.country.state"> + <field name="l10n_in_tin">25</field> + </record> + <record id="base.state_in_dl" model="res.country.state"> + <field name="l10n_in_tin">07</field> + </record> + <record id="base.state_in_ga" model="res.country.state"> + <field name="l10n_in_tin">30</field> + </record> + <record id="base.state_in_gj" model="res.country.state"> + <field name="l10n_in_tin">24</field> + </record> + <record id="base.state_in_hr" model="res.country.state"> + <field name="l10n_in_tin">06</field> + </record> + <record id="base.state_in_hp" model="res.country.state"> + <field name="l10n_in_tin">02</field> + </record> + <record id="base.state_in_jk" model="res.country.state"> + <field name="l10n_in_tin">01</field> + </record> + <record id="base.state_in_jh" model="res.country.state"> + <field name="l10n_in_tin">20</field> + </record> + <record id="base.state_in_ka" model="res.country.state"> + <field name="l10n_in_tin">29</field> + </record> + <record id="base.state_in_kl" model="res.country.state"> + <field name="l10n_in_tin">32</field> + </record> + <record id="base.state_in_ld" model="res.country.state"> + <field name="l10n_in_tin">31</field> + </record> + <record id="base.state_in_mp" model="res.country.state"> + <field name="l10n_in_tin">23</field> + </record> + <record id="base.state_in_mh" model="res.country.state"> + <field name="l10n_in_tin">27</field> + </record> + <record id="base.state_in_mn" model="res.country.state"> + <field name="l10n_in_tin">14</field> + </record> + <record id="base.state_in_ml" model="res.country.state"> + <field name="l10n_in_tin">17</field> + </record> + <record id="base.state_in_mz" model="res.country.state"> + <field name="l10n_in_tin">15</field> + </record> + <record id="base.state_in_nl" model="res.country.state"> + <field name="l10n_in_tin">13</field> + </record> + <record id="base.state_in_or" model="res.country.state"> + <field name="l10n_in_tin">21</field> + </record> + <record id="base.state_in_py" model="res.country.state"> + <field name="l10n_in_tin">34</field> + </record> + <record id="base.state_in_pb" model="res.country.state"> + <field name="l10n_in_tin">03</field> + </record> + <record id="base.state_in_rj" model="res.country.state"> + <field name="l10n_in_tin">08</field> + </record> + <record id="base.state_in_sk" model="res.country.state"> + <field name="l10n_in_tin">11</field> + </record> + <record id="base.state_in_tn" model="res.country.state"> + <field name="l10n_in_tin">33</field> + </record> + <record id="base.state_in_ts" model="res.country.state"> + <field name="l10n_in_tin">36</field> + </record> + <record id="base.state_in_tr" model="res.country.state"> + <field name="l10n_in_tin">16</field> + </record> + <record id="base.state_in_up" model="res.country.state"> + <field name="l10n_in_tin">09</field> + </record> + <record id="base.state_in_uk" model="res.country.state"> + <field name="l10n_in_tin">05</field> + </record> + <record id="base.state_in_wb" model="res.country.state"> + <field name="l10n_in_tin">19</field> + </record> + +</odoo> diff --git a/addons/l10n_in/data/uom_data.xml b/addons/l10n_in/data/uom_data.xml new file mode 100644 index 00000000..c33b5060 --- /dev/null +++ b/addons/l10n_in/data/uom_data.xml @@ -0,0 +1,63 @@ +<?xml version="1.0" encoding="utf-8"?> +<odoo noupdate="1"> + <!-- + l10n_in_code use in export GSTR hsn section report. + --> + <record id="uom.product_uom_unit" model="uom.uom"> + <field name="l10n_in_code">UNT-UNITS</field> + </record> + <record id="uom.product_uom_dozen" model="uom.uom"> + <field name="l10n_in_code">DOZ-DOZENS</field> + </record> + <record id="uom.product_uom_kgm" model="uom.uom"> + <field name="l10n_in_code">KGS-KILOGRAMS</field> + </record> + <record id="uom.product_uom_gram" model="uom.uom"> + <field name="l10n_in_code">GMS-GRAMMES</field> + </record> + <record id="uom.product_uom_day" model="uom.uom"> + <field name="l10n_in_code">OTH-OTHERS</field> + </record> + <record id="uom.product_uom_hour" model="uom.uom"> + <field name="l10n_in_code">OTH-OTHERS</field> + </record> + <record id="uom.product_uom_ton" model="uom.uom"> + <field name="l10n_in_code">TON-TONNES</field> + </record> + <record id="uom.product_uom_meter" model="uom.uom"> + <field name="l10n_in_code">MTR-METERS</field> + </record> + <record id="uom.product_uom_km" model="uom.uom"> + <field name="l10n_in_code">KME-KILOMETRE</field> + </record> + <record id="uom.product_uom_cm" model="uom.uom"> + <field name="l10n_in_code">CMS-CENTIMETERS</field> + </record> + <record id="uom.product_uom_litre" model="uom.uom"> + <field name="l10n_in_code">OTH-OTHERS</field> + </record> + <record id="uom.product_uom_lb" model="uom.uom"> + <field name="l10n_in_code">OTH-OTHERS</field> + </record> + <record id="uom.product_uom_oz" model="uom.uom"> + <field name="l10n_in_code">OTH-OTHERS</field> + </record> + <record id="uom.product_uom_inch" model="uom.uom"> + <field name="l10n_in_code">OTH-OTHERS</field> + </record> + <record id="uom.product_uom_foot" model="uom.uom"> + <field name="l10n_in_code">OTH-OTHERS</field> + </record> + <record id="uom.product_uom_mile" model="uom.uom"> + <field name="l10n_in_code">OTH-OTHERS</field> + </record> + <record id="uom.product_uom_floz" model="uom.uom"> + <field name="l10n_in_code">OTH-OTHERS</field> + </record> + <record id="uom.product_uom_qt" model="uom.uom"> + <field name="l10n_in_code">OTH-OTHERS</field> + </record> + <record id="uom.product_uom_gal" model="uom.uom"> + <field name="l10n_in_code">UGS-US GALLONS</field> + </record> +</odoo> diff --git a/addons/l10n_in/demo/account_invoice_demo.xml b/addons/l10n_in/demo/account_invoice_demo.xml new file mode 100644 index 00000000..eddd07d6 --- /dev/null +++ b/addons/l10n_in/demo/account_invoice_demo.xml @@ -0,0 +1,327 @@ +<?xml version="1.0" encoding="utf-8"?> +<odoo noupdate="1"> + + <!-- Demo of B2B (business-to-business) Taxable supplies made to other registered person.--> + <record id="demo_invoice_b2b" model="account.move"> + <field name="move_type">out_invoice</field> + <field name="partner_id" ref="l10n_in.res_partner_registered_customer"/> + <field name="l10n_in_reseller_partner_id" ref="l10n_in.res_partner_reseller"/> + <field name="invoice_user_id" ref="base.user_demo"/> + <field name="invoice_payment_term_id" ref="account.account_payment_term_end_following_month"/> + <field name="invoice_date" eval="time.strftime('%Y-%m')+'-01'"/> + <field name="l10n_in_gst_treatment">regular</field> + <field name="journal_id" model="account.journal" + eval="obj().search([ + ('type', '=', 'sale'), + ('company_id', '=', ref('l10n_in.demo_company_in'))], limit=1).id"/> + <field name="invoice_line_ids" model="account.move.line" eval="[ + (0, 0, { + 'product_id': ref('product.product_product_8'), + 'quantity': 2, + 'price_unit': 40000.0, + 'tax_ids': [(6, 0, obj().tax_ids.search([ + ('company_id', '=', ref('l10n_in.demo_company_in')), + ('type_tax_use', '=', 'sale'), + ('amount','=', 28), + ('tax_group_id', '=', ref('l10n_in.gst_group'))], limit=1).ids)] + }), + (0, 0, { + 'product_id': ref('product.product_product_9'), + 'quantity': 3, + 'price_unit': 400.0, + 'tax_ids': [(6, 0, obj().tax_ids.search([ + ('company_id', '=', ref('l10n_in.demo_company_in')), + ('type_tax_use', '=', 'sale'), + ('amount','=', 18), + ('tax_group_id', '=', ref('l10n_in.gst_group'))], limit=1).ids)] + }), + (0, 0, { + 'product_id': ref('product.product_product_10'), + 'quantity': 4, + 'price_unit': 300.0, + 'tax_ids': [(6, 0, obj().tax_ids.search([ + ('company_id', '=', ref('l10n_in.demo_company_in')), + ('type_tax_use', '=', 'sale'), + '|', + '&', + ('amount', '=', 18), + ('tax_group_id', '=', ref('l10n_in.gst_group')), + '&', + ('tax_group_id', '=', ref('l10n_in.cess_group')), + ('children_tax_ids.amount','=', 5) + ], limit=2).ids)] + }), + ]"/> + </record> + + <!-- Demo of B2CS (business to consumer small) Taxable supplies made to other unregistered Person and below INR 2.5 lakhs invoice value.--> + <record id="demo_invoice_b2cs" model="account.move"> + <field name="move_type">out_invoice</field> + <field name="partner_id" ref="l10n_in.res_partner_unregistered_customer"/> + <field name="invoice_user_id" ref="base.user_demo"/> + <field name="invoice_payment_term_id" ref="account.account_payment_term_end_following_month"/> + <field name="invoice_date" eval="time.strftime('%Y-%m')+'-01'"/> + <field name="l10n_in_gst_treatment">consumer</field> + <field name="journal_id" model="account.journal" + eval="obj().search([ + ('type', '=', 'sale'), + ('company_id', '=', ref('l10n_in.demo_company_in'))], limit=1).id"/> + <field name="invoice_line_ids" model="account.move.line" eval="[ + (0, 0, { + 'product_id': ref('product.product_product_16'), + 'quantity': 1, + 'price_unit': 1500.0, + 'tax_ids': [(6, 0, obj().tax_ids.search([ + ('company_id', '=', ref('l10n_in.demo_company_in')), + ('type_tax_use', '=', 'sale'), + ('amount','=', 18), + ('tax_group_id', '=', obj().env.ref('l10n_in.gst_group').id)], limit=1).ids)] + }), + (0, 0, { + 'product_id': ref('product.product_product_20'), + 'quantity': 1, + 'price_unit': 2300.0, + 'tax_ids': [(6, 0, obj().tax_ids.search([ + ('company_id', '=', ref('l10n_in.demo_company_in')), + ('type_tax_use', '=', 'sale'), + ('amount','=', 18), + ('tax_group_id', '=', obj().env.ref('l10n_in.gst_group').id)], limit=1).ids)] + }), + (0, 0, { + 'product_id': ref('product.product_product_22'), + 'quantity': 1, + 'price_unit': 2600.0, + 'tax_ids': [(6, 0, obj().tax_ids.search([ + ('company_id', '=', ref('l10n_in.demo_company_in')), + ('type_tax_use', '=', 'sale'), + ('amount','=', 5), + ('tax_group_id', '=', obj().env.ref('l10n_in.gst_group').id)], limit=1).ids)] + }), + (0, 0, { + 'product_id': ref('product.product_product_24'), + 'quantity': 2, + 'price_unit': 1655.0, + 'tax_ids': [(6, 0, obj().tax_ids.search([ + ('company_id', '=', ref('l10n_in.demo_company_in')), + ('type_tax_use', '=', 'sale'), + ('amount','=', 5), + ('tax_group_id', '=', obj().env.ref('l10n_in.gst_group').id)], limit=1).ids)] + }), + ]"/> + </record> + + <!-- Demo of B2CL (business to consumer - Large) Taxable supplies made to other unregistered Person and invoice value is more than INR 2.5 lakhs.--> + <record id="demo_invoice_b2cl" model="account.move"> + <field name="move_type">out_invoice</field> + <field name="partner_id" ref="l10n_in.res_partner_unregistered_customer_out_state"/> + <field name="invoice_user_id" ref="base.user_demo"/> + <field name="invoice_payment_term_id" ref="account.account_payment_term_end_following_month"/> + <field name="invoice_date" eval="time.strftime('%Y-%m')+'-01'"/> + <field name="l10n_in_gst_treatment">consumer</field> + <field name="journal_id" model="account.journal" + eval="obj().search([ + ('type', '=', 'sale'), + ('company_id', '=', ref('l10n_in.demo_company_in'))], limit=1).id"/> + <field name="invoice_line_ids" model="account.move.line" eval="[ + (0, 0, { + 'product_id': ref('product.consu_delivery_01'), + 'quantity': 3, + 'price_unit': 90000.0, + 'tax_ids': [(6, 0, obj().tax_ids.search([ + ('company_id', '=', ref('l10n_in.demo_company_in')), + ('type_tax_use', '=', 'sale'), + ('amount','=', 18), + ('tax_group_id', '=', obj().env.ref('l10n_in.igst_group').id)], limit=1).ids)] + }), + ]"/> + </record> + + <!-- Demo of EXP(Export) supplies including supplies to SEZ/SEZ Developer or deemed exports.--> + <record id="demo_invoice_exp" model="account.move"> + <field name="move_type">out_invoice</field> + <field name="partner_id" ref="base.res_partner_3"/> + <field name="invoice_user_id" ref="base.user_demo"/> + <field name="invoice_payment_term_id" ref="account.account_payment_term_end_following_month"/> + <field name="invoice_date" eval="time.strftime('%Y-%m')+'-01'"/> + <field name="l10n_in_gst_treatment">overseas</field> + <field name="l10n_in_shipping_bill_number">999704</field> + <field name="l10n_in_shipping_bill_date" eval="time.strftime('%Y-%m')+'-02'"/> + <field name="l10n_in_shipping_port_code_id" ref="l10n_in.port_code_inixy1"/> + <field name="journal_id" model="account.journal" + eval="obj().search([ + ('type', '=', 'sale'), + ('company_id', '=', ref('l10n_in.demo_company_in'))], limit=1).id"/> + <field name="invoice_line_ids" model="account.move.line" eval="[ + (0, 0, { + 'product_id': ref('product.product_product_4'), + 'quantity': 30, + 'price_unit': 8000.0, + 'tax_ids': [(6, 0, obj().tax_ids.search([ + ('company_id', '=', ref('l10n_in.demo_company_in')), + ('type_tax_use', '=', 'sale'), + ('amount','=', 18), + ('tax_group_id', '=', obj().env.ref('l10n_in.igst_group').id)], limit=1).ids)] + }), + ]"/> + </record> + + <!-- Demo of exemp(Nil Rated, Exempted and Non GST supplies). Set Nill rated and Exempted tax in line.--> + <record id="demo_invoice_nill" model="account.move"> + <field name="move_type">out_invoice</field> + <field name="partner_id" ref="l10n_in.res_partner_registered_customer"/> + <field name="invoice_user_id" ref="base.user_demo"/> + <field name="invoice_payment_term_id" ref="account.account_payment_term_end_following_month"/> + <field name="invoice_date" eval="time.strftime('%Y-%m')+'-01'"/> + <field name="l10n_in_gst_treatment">regular</field> + <field name="journal_id" model="account.journal" + eval="obj().search([ + ('type', '=', 'sale'), + ('company_id', '=', ref('l10n_in.demo_company_in'))], limit=1).id"/> + <field name="invoice_line_ids" model="account.move.line" eval="[ + (0, 0, { + 'product_id': ref('product.product_product_1'), + 'quantity': 2, + 'price_unit': 25000.0, + 'tax_ids': [(6, 0, obj().tax_ids.search([ + ('company_id', '=', ref('l10n_in.demo_company_in')), + ('type_tax_use', '=', 'sale'), + ('tax_group_id', '=', obj().env.ref('l10n_in.exempt_group').id)], limit=1).ids)] + }), + (0, 0, { + 'product_id': ref('product.product_product_5'), + 'quantity': 1, + 'price_unit': 400.0, + 'tax_ids': [(6, 0, obj().tax_ids.search([ + ('company_id', '=', ref('l10n_in.demo_company_in')), + ('type_tax_use', '=', 'sale'), + ('tax_group_id', '=', obj().env.ref('l10n_in.nil_rated_group').id)], limit=1).ids)] + }), + ]"/> + </record> + + <!-- Demo of cdnr(Credit/ Debit Note for registered person). Create credit note for demo b2b invoice.--> + <record id="demo_invoice_cdnr" model="account.move"> + <field name="move_type">out_refund</field> + <field name="partner_id" ref="l10n_in.res_partner_registered_customer"/> + <field name="l10n_in_reseller_partner_id" ref="l10n_in.res_partner_reseller"/> + <field name="invoice_user_id" ref="base.user_demo"/> + <field name="invoice_payment_term_id" ref="account.account_payment_term_end_following_month"/> + <field name="invoice_date" eval="time.strftime('%Y-%m')+'-02'"/> + <field name="reversed_entry_id" ref="l10n_in.demo_invoice_b2b"/> + <field name="l10n_in_gst_treatment">regular</field> + <field name="journal_id" model="account.journal" + eval="obj().search([ + ('type', '=', 'sale'), + ('company_id', '=', ref('l10n_in.demo_company_in'))], limit=1).id"/> + <field name="invoice_line_ids" model="account.move.line" eval="[ + (0, 0, { + 'product_id': ref('product.product_product_8'), + 'quantity': 2, + 'price_unit': 40000.0, + 'tax_ids': [(6, 0, obj().tax_ids.search([ + ('company_id', '=', ref('l10n_in.demo_company_in')), + ('type_tax_use', '=', 'sale'), + ('amount','=', 28), + ('tax_group_id', '=', obj().env.ref('l10n_in.gst_group').id)], limit=1).ids)] + }), + (0, 0, { + 'product_id': ref('product.product_product_9'), + 'quantity': 3, + 'price_unit': 400.0, + 'tax_ids': [(6, 0, obj().tax_ids.search([ + ('company_id', '=', ref('l10n_in.demo_company_in')), + ('type_tax_use', '=', 'sale'), + ('amount','=', 18), + ('tax_group_id', '=', obj().env.ref('l10n_in.gst_group').id)], limit=1).ids)] + }), + (0, 0, { + 'product_id': ref('product.product_product_10'), + 'quantity': 3, + 'price_unit': 400.0, + 'tax_ids': [(6, 0, obj().tax_ids.search([ + ('company_id', '=', ref('l10n_in.demo_company_in')), + ('type_tax_use', '=', 'sale'), + '|', + '&', + ('amount', '=', 18), + ('tax_group_id', '=', ref('l10n_in.gst_group')), + '&', + ('tax_group_id', '=', ref('l10n_in.cess_group')), + ('children_tax_ids.amount','=', 5) + ], limit=2).ids)] + }), + ]"/> + </record> + + <!-- Demo of cdnr(Credit/ Debit Note for unregistered person). Create credit note for demo b2cl invoice.--> + <record id="demo_invoice_cdnur" model="account.move"> + <field name="move_type">out_refund</field> + <field name="partner_id" ref="l10n_in.res_partner_unregistered_customer_out_state"/> + <field name="invoice_user_id" ref="base.user_demo"/> + <field name="invoice_payment_term_id" ref="account.account_payment_term_end_following_month"/> + <field name="invoice_date" eval="time.strftime('%Y-%m')+'-02'"/> + <field name="reversed_entry_id" ref="l10n_in.demo_invoice_b2cl"/> + <field name="l10n_in_gst_treatment">consumer</field> + <field name="journal_id" model="account.journal" + eval="obj().search([ + ('type', '=', 'sale'), + ('company_id', '=', ref('l10n_in.demo_company_in'))], limit=1).id"/> + <field name="invoice_line_ids" model="account.move.line" eval="[ + (0, 0, { + 'product_id': ref('product.consu_delivery_01'), + 'quantity': 3, + 'price_unit': 90000.0, + 'tax_ids': [(6, 0, obj().tax_ids.search([ + ('company_id', '=', ref('l10n_in.demo_company_in')), + ('type_tax_use', '=', 'sale'), + ('amount','=', 18), + ('tax_group_id', '=', obj().env.ref('l10n_in.igst_group').id)], limit=1).ids)] + }), + ]"/> + </record> + + <!-- Demo of atadj(Advance adjustments). When invoice is reconcile against Advance payment. + Reconciled invoice consideration for which payment have been received in the past months.--> + <record id="demo_invoice_atadj" model="account.move"> + <field name="move_type">out_invoice</field> + <field name="partner_id" ref="l10n_in.res_partner_registered_customer"/> + <field name="invoice_user_id" ref="base.user_demo"/> + <field name="invoice_payment_term_id" ref="account.account_payment_term_end_following_month"/> + <field name="invoice_date" eval="(datetime.now() + relativedelta(months=1)).strftime('%Y-%m-01')"/> + <field name="l10n_in_gst_treatment">regular</field> + <field name="journal_id" model="account.journal" + eval="obj().search([ + ('type', '=', 'sale'), + ('company_id', '=', ref('l10n_in.demo_company_in'))], limit=1).id"/> + <field name="invoice_line_ids" model="account.move.line" eval="[ + (0, 0, { + 'product_id': ref('product.consu_delivery_01'), + 'quantity': 3, + 'price_unit': 2000.0, + 'tax_ids': [(6, 0, obj().tax_ids.search([ + ('company_id', '=', ref('l10n_in.demo_company_in')), + ('type_tax_use', '=', 'sale'), + ('amount','=', 18), + ('tax_group_id', '=', obj().env.ref('l10n_in.gst_group').id)], limit=1).ids)] + }), + ]"/> + </record> + + <function model="account.move" name="action_post"> + <value eval="[ + ref('demo_invoice_b2b'), ref('demo_invoice_b2cs'), ref('demo_invoice_b2cl'), + ref('demo_invoice_exp'), ref('demo_invoice_nill'), ref('demo_invoice_cdnr'), + ref('demo_invoice_cdnur'), ref('demo_invoice_atadj')]"/> + </function> + + <!-- Reconciled demo payment with demo invoice of atadj(Advance adjustments)--> + <function model="account.move" name="js_assign_outstanding_line"> + <value eval="[ref('demo_invoice_atadj')]"/> + <value model="account.move.line" eval="obj().search([ + ('credit', '>', 0), + ('debit', '=', 0), + ('payment_id','=', obj().env.ref('l10n_in.demo_payment_at').id) + ], limit=1).id"/> + </function> + +</odoo> diff --git a/addons/l10n_in/demo/account_payment_demo.xml b/addons/l10n_in/demo/account_payment_demo.xml new file mode 100644 index 00000000..54bfc1f7 --- /dev/null +++ b/addons/l10n_in/demo/account_payment_demo.xml @@ -0,0 +1,23 @@ +<?xml version="1.0" encoding="utf-8"?> +<odoo noupdate="1"> + <!-- Demo of at(Tax liability on advances). Advance payment need to consideration for which invoices have not been issued in the same month.--> + <record id="demo_payment_at" model="account.payment"> + <field name="partner_id" ref="l10n_in.res_partner_registered_customer"/> + <field name="partner_type">customer</field> + <field name="amount">10000</field> + <field name="payment_type">inbound</field> + <field name="date" eval="time.strftime('%Y-%m')+'-01'"/> + <field name="journal_id" model="account.journal" + eval="obj().search([ + ('type', '=', 'cash'), + ('company_id', '=', ref('l10n_in.demo_company_in'))], limit=1).id"/> + <field name="payment_method_id" model="account.journal" + eval="obj().search([ + ('type', '=', 'cash'), + ('company_id', '=', ref('l10n_in.demo_company_in'))], limit=1).inbound_payment_method_ids[0].id"/> + </record> + + <function model="account.payment" name="action_post"> + <value eval="[ref('demo_payment_at')]"/> + </function> +</odoo>
\ No newline at end of file diff --git a/addons/l10n_in/demo/demo_company.xml b/addons/l10n_in/demo/demo_company.xml new file mode 100644 index 00000000..d8873ad9 --- /dev/null +++ b/addons/l10n_in/demo/demo_company.xml @@ -0,0 +1,34 @@ +<?xml version="1.0" encoding="utf-8"?> +<odoo> + <record id="partner_demo_company_in" model="res.partner"> + <field name="name">IN Company</field> + <field name="vat"></field> + <field name="street">A</field> + <field name="city">Kannamangala</field> + <field name="country_id" ref="base.in"/> + <field name="state_id" ref="base.state_in_wb"/> + <field name="zip">56066</field> + <field name="phone">+91 81234 56789</field> + <field name="email">info@company.inexample.com</field> + <field name="website">www.inexample.com</field> + </record> + + <record id="demo_company_in" model="res.company"> + <field name="name">IN Company</field> + <field name="partner_id" ref="partner_demo_company_in"/> + </record> + + <function model="res.company" name="_onchange_country_id"> + <value eval="[ref('demo_company_in')]"/> + </function> + + <function model="res.users" name="write"> + <value eval="[ref('base.user_root'), ref('base.user_admin'), ref('base.user_demo')]"/> + <value eval="{'company_ids': [(4, ref('l10n_in.demo_company_in'))]}"/> + </function> + + <function model="account.chart.template" name="try_loading"> + <value eval="[ref('l10n_in.indian_chart_template_standard')]"/> + <value model="res.company" eval="obj().env.ref('l10n_in.demo_company_in')"/> + </function> +</odoo> diff --git a/addons/l10n_in/demo/product_demo.xml b/addons/l10n_in/demo/product_demo.xml new file mode 100644 index 00000000..ee79304e --- /dev/null +++ b/addons/l10n_in/demo/product_demo.xml @@ -0,0 +1,132 @@ +<?xml version="1.0" encoding="utf-8"?> +<odoo noupdate="1"> + <record id="product.product_product_1" model="product.product"> + <field name="l10n_in_hsn_code">998391</field> + <field name="l10n_in_hsn_description">Specialty Design Services Including Interior Design, Fashion Design, Industrial Design And Other Specialty Design Services</field> + </record> + <record id="product.product_product_2" model="product.product"> + <field name="l10n_in_hsn_code">998391</field> + <field name="l10n_in_hsn_description">Specialty Design Services Including Interior Design, Fashion Design, Industrial Design And Other Specialty Design Services</field> + </record> + <record id="product.product_product_3" model="product.product"> + <field name="l10n_in_hsn_code">9403</field> + <field name="l10n_in_hsn_description">Other furniture and parts thereof.</field> + </record> + <record id="product.product_product_4" model="product.product"> + <field name="l10n_in_hsn_code">9403</field> + <field name="l10n_in_hsn_description">Other furniture and parts thereof.</field> + </record> + <record id="product.product_product_4b" model="product.product"> + <field name="l10n_in_hsn_code">9403</field> + <field name="l10n_in_hsn_description">Other furniture and parts thereof.</field> + </record> + <record id="product.product_product_4c" model="product.product"> + <field name="l10n_in_hsn_code">9403</field> + <field name="l10n_in_hsn_description">Other furniture and parts thereof.</field> + </record> + <record id="product.product_product_4d" model="product.product"> + <field name="l10n_in_hsn_code">9403</field> + <field name="l10n_in_hsn_description">Other furniture and parts thereof.</field> + </record> + <record id="product.product_product_5" model="product.product"> + <field name="l10n_in_hsn_code">9403</field> + <field name="l10n_in_hsn_description">Other furniture and parts thereof.</field> + </record> + <record id="product.product_product_6" model="product.product"> + <field name="l10n_in_hsn_code">9403</field> + <field name="l10n_in_hsn_description">Other furniture and parts thereof.</field> + </record> + <record id="product.product_product_7" model="product.product"> + <field name="l10n_in_hsn_code">48196000</field> + <field name="l10n_in_hsn_description">Box files, letter trays, storage boxes and similar articles, of a kind used in offices, shops or the like</field> + </record> + <record id="product.product_product_8" model="product.product"> + <field name="l10n_in_hsn_code">9403</field> + <field name="l10n_in_hsn_description">Other furniture and parts thereof.</field> + </record> + <record id="product.product_product_9" model="product.product"> + <field name="l10n_in_hsn_code">7323</field> + <field name="l10n_in_hsn_description">Table, kitchen or other household articles and parts thereof, of iron or steel; iron or steel wool; pot scourers and scouring or polishing pads, gloves and the like, of iron or steel.</field> + </record> + <record id="product.product_product_10" model="product.product"> + <field name="l10n_in_hsn_code">84185000</field> + <field name="l10n_in_hsn_description">Other furniture (chests, cabinets, display counters, show-cases and the like) for storage and display, incorporating refrigerating or freezing equipment</field> + </record> + <record id="product.product_product_11" model="product.product"> + <field name="l10n_in_hsn_code">94018000</field> + <field name="l10n_in_hsn_description">Seats (other than those of heading 9402), whether or not convertible into beds, and parts thereof</field> + </record> + <record id="product.product_product_11b" model="product.product"> + <field name="l10n_in_hsn_code">94018000</field> + <field name="l10n_in_hsn_description">Seats (other than those of heading 9402), whether or not convertible into beds, and parts thereof</field> + </record> + <record id="product.product_product_12" model="product.product"> + <field name="l10n_in_hsn_code">94018000</field> + <field name="l10n_in_hsn_description">Seats (other than those of heading 9402), whether or not convertible into beds, and parts thereof</field> + </record> + <record id="product.product_product_13" model="product.product"> + <field name="l10n_in_hsn_code">9403</field> + <field name="l10n_in_hsn_description">Other furniture and parts thereof.</field> + </record> + <record id="product.product_product_16" model="product.product"> + <field name="l10n_in_hsn_code">94031090</field> + <field name="l10n_in_hsn_description">Metal furniture of a kind used in offices</field> + </record> + <record id="product.product_product_20" model="product.product"> + <field name="l10n_in_hsn_code">37011090</field> + <field name="l10n_in_hsn_description">Photographic plates and film in the flat, sensitised, unexposed, of any material other than paper, paperboard or textiles; instant print film in the flat, sensitised, unexposed, whether or not in packs.</field> + </record> + <record id="product.product_product_22" model="product.product"> + <field name="l10n_in_hsn_code">9403</field> + <field name="l10n_in_hsn_description">Other furniture and parts thereof.</field> + </record> + <record id="product.product_product_24" model="product.product"> + <field name="l10n_in_hsn_code">94031090</field> + <field name="l10n_in_hsn_description">Metal furniture of a kind used in offices</field> + </record> + <record id="product.product_product_25" model="product.product"> + <field name="l10n_in_hsn_code">94031090</field> + <field name="l10n_in_hsn_description">Metal furniture of a kind used in offices</field> + </record> + <record id="product.product_product_27" model="product.product"> + <field name="l10n_in_hsn_code">94031090</field> + <field name="l10n_in_hsn_description">Metal furniture of a kind used in offices</field> + </record> + + <!-- Expensable products --> + <record id="product.expense_product" model="product.product"> + <field name="l10n_in_hsn_code">9963.31</field> + <field name="l10n_in_hsn_description">Services provided by Restaurants, Cafes and similar eating facilities including takeaway services, Room services and door delivery of food. + </field> + </record> + <record id="product.expense_hotel" model="product.product"> + <field name="l10n_in_hsn_code">9963.32</field> + <field name="l10n_in_hsn_description">Services provided by Hotels, INN, Guest House, Club etc including Room services, takeaway services and door delivery of food.</field> + </record> + + <!-- Physical Products --> + <record id="product.product_delivery_01" model="product.product"> + <field name="l10n_in_hsn_code">94018000</field> + <field name="l10n_in_hsn_description">Seats (other than those of heading 9402), whether or not convertible into beds, and parts thereof</field> + </record> + <record id="product.product_delivery_02" model="product.product"> + <field name="l10n_in_hsn_code">94051090</field> + <field name="l10n_in_hsn_description">Lamps and lighting fittings including searchlights and spotlights and parts thereof, not elsewhere specified or included; illuminated signs, illuminated name-plates and the like, having a permanently fixed light source, and parts thereof not elsewhere specified or included</field> + </record> + <record id="product.product_order_01" model="product.product"> + <field name="l10n_in_hsn_code">4911.99.10</field> + <field name="l10n_in_hsn_description">Hard copy (printed) of computer software</field> + </record> + <record id="product.consu_delivery_01" model="product.product"> + <field name="l10n_in_hsn_code">9401.61.00</field> + <field name="l10n_in_hsn_description">Seats (other than those of heading 9402), whether or not convertible into beds, and parts thereof</field> + </record> + <record id="product.consu_delivery_02" model="product.product"> + <field name="l10n_in_hsn_code">9403.89.00</field> + <field name="l10n_in_hsn_description">Other Furniture</field> + </record> + <record id="product.consu_delivery_03" model="product.product"> + <field name="l10n_in_hsn_code">9403</field> + <field name="l10n_in_hsn_description">Other furniture and parts thereof.</field> + </record> +</odoo> diff --git a/addons/l10n_in/demo/res_partner_demo.xml b/addons/l10n_in/demo/res_partner_demo.xml new file mode 100644 index 00000000..3562e348 --- /dev/null +++ b/addons/l10n_in/demo/res_partner_demo.xml @@ -0,0 +1,96 @@ +<?xml version="1.0" encoding="utf-8"?> +<odoo noupdate="1"> + <record id="res_partner_category_registered" model="res.partner.category"> + <field name="name">Registered</field> + <field name="color" eval="2"/> + </record> + <record id="res_partner_category_unregistered" model="res.partner.category"> + <field name="name">Unregistered</field> + <field name="color" eval="3"/> + </record> + <record id="res_partner_category_reseller" model="res.partner.category"> + <field name="name">Reseller</field> + <field name="color" eval="12"/> + </record> + + <!-- Registered Customer --> + <record id="res_partner_registered_customer" model="res.partner"> + <field name="name">Registered Customer</field> + <field eval="[(6, 0, [ref('l10n_in.res_partner_category_registered')])]" name="category_id"/> + <field name="is_company">1</field> + <field name="l10n_in_gst_treatment">regular</field> + <field name="street">201, Second Floor, IT Tower 4</field> + <field name="street2">InfoCity Gate - 1, Infocity</field> + <field name="city">Gandhinagar</field> + <field name="zip">382007</field> + <field name="state_id" ref="base.state_in_gj"/> + <field name="country_id" ref="base.in"/> + <field name="vat">12GEOPS0823BBZH</field> + </record> + + <!-- Unregistered Customer --> + <record id="res_partner_unregistered_customer" model="res.partner"> + <field name="name">Unregistered Customer</field> + <field name="l10n_in_gst_treatment">unregistered</field> + <field eval="[(6, 0, [ref('l10n_in.res_partner_category_unregistered')])]" name="category_id"/> + <field name="is_company">1</field> + <field name="street">B105, yogeshwar Tower</field> + <field name="city">Veraval</field> + <field name="zip">362266</field> + <field name="state_id" ref="base.state_in_gj"/> + <field name="country_id" ref="base.in"/> + </record> + + <!-- Unregistered Customer out of state--> + <record id="res_partner_unregistered_customer_out_state" model="res.partner"> + <field name="name">Unregistered Customer (out state)</field> + <field eval="[(6, 0, [ref('l10n_in.res_partner_category_unregistered')])]" name="category_id"/> + <field name="is_company">1</field> + <field name="street">Gulloy, Carmona Road</field> + <field name="city">Orlim</field> + <field name="zip">403724</field> + <field name="state_id" ref="base.state_in_ga"/> + <field name="country_id" ref="base.in"/> + </record> + + <!-- Registered Customer --> + <record id="res_partner_registered_supplier" model="res.partner"> + <field name="name">Registered Supplier</field> + <field name="l10n_in_gst_treatment">regular</field> + <field eval="[(6, 0, [ref('l10n_in.res_partner_category_registered')])]" name="category_id"/> + <field name="is_company">1</field> + <field name="street">201, Second Floor, IT Tower 4</field> + <field name="street2">InfoCity Gate - 1, Infocity</field> + <field name="city">Gandhinagar</field> + <field name="zip">382007</field> + <field name="state_id" ref="base.state_in_gj"/> + <field name="country_id" ref="base.in"/> + <field name="vat">12GEOPS0823BBZ1</field> + </record> + + <!-- Unregistered Customer --> + <record id="res_partner_unregistered_supplier" model="res.partner"> + <field name="name">Unregistered Supplier</field> + <field eval="[(6, 0, [ref('l10n_in.res_partner_category_unregistered')])]" name="category_id"/> + <field name="l10n_in_gst_treatment">unregistered</field> + <field name="street">B105, yogeshwar Tower</field> + <field name="city">Veraval</field> + <field name="zip">362266</field> + <field name="state_id" ref="base.state_in_gj"/> + <field name="country_id" ref="base.in"/> + </record> + + <!-- reseller partner --> + <record id="res_partner_reseller" model="res.partner"> + <field name="name">Reseller(E-Commerce)</field> + <field eval="[(6, 0, [ref('l10n_in.res_partner_category_reseller'), + ref('l10n_in.res_partner_category_registered')])]" name="category_id"/> + <field name="street">4/001 Ground Floor, 16th Main Rd,</field> + <field name="l10n_in_gst_treatment">regular</field> + <field name="city">Bengaluru</field> + <field name="zip">560001</field> + <field name="state_id" ref="base.state_in_ka"/> + <field name="country_id" ref="base.in"/> + <field name="vat">29AJIPA1572E1ZR</field> + </record> +</odoo> diff --git a/addons/l10n_in/migrations/9.0.2.0/pre-set_tags_and_taxes_updatable.py b/addons/l10n_in/migrations/9.0.2.0/pre-set_tags_and_taxes_updatable.py new file mode 100644 index 00000000..955a3376 --- /dev/null +++ b/addons/l10n_in/migrations/9.0.2.0/pre-set_tags_and_taxes_updatable.py @@ -0,0 +1,8 @@ +# -*- coding: utf-8 -*- + +import odoo + +def migrate(cr, version): + registry = odoo.registry(cr.dbname) + from odoo.addons.account.models.chart_template import migrate_set_tags_and_taxes_updatable + migrate_set_tags_and_taxes_updatable(cr, registry, 'l10n_in') diff --git a/addons/l10n_in/models/__init__.py b/addons/l10n_in/models/__init__.py new file mode 100644 index 00000000..2f479b39 --- /dev/null +++ b/addons/l10n_in/models/__init__.py @@ -0,0 +1,12 @@ +# -*- coding:utf-8 -*- +# Part of Odoo. See LICENSE file for full copyright and licensing details. + +from . import account +from . import account_invoice +from . import chart_template +from . import product_template +from . import port_code +from . import res_config_settings +from . import res_country_state +from . import res_partner +from . import uom_uom diff --git a/addons/l10n_in/models/account.py b/addons/l10n_in/models/account.py new file mode 100644 index 00000000..bdc6e36d --- /dev/null +++ b/addons/l10n_in/models/account.py @@ -0,0 +1,55 @@ +# -*- coding: utf-8 -*- +# Part of Odoo. See LICENSE file for full copyright and licensing details. + +from odoo import api, fields, models, _ +from odoo.exceptions import ValidationError + + +class AccountJournal(models.Model): + _inherit = "account.journal" + + # Use for filter import and export type. + l10n_in_gstin_partner_id = fields.Many2one('res.partner', string="GSTIN Unit", ondelete="restrict", help="GSTIN related to this journal. If empty then consider as company GSTIN.") + + def name_get(self): + """ + Add GSTIN number in name as suffix so user can easily find the right journal. + Used super to ensure nothing is missed. + """ + result = super().name_get() + result_dict = dict(result) + indian_journals = self.filtered(lambda j: j.company_id.country_id.code == 'IN' and + j.l10n_in_gstin_partner_id and j.l10n_in_gstin_partner_id.vat) + for journal in indian_journals: + name = result_dict[journal.id] + name += "- %s" % (journal.l10n_in_gstin_partner_id.vat) + result_dict[journal.id] = name + return list(result_dict.items()) + + +class AccountMoveLine(models.Model): + _inherit = "account.move.line" + + @api.depends('move_id.line_ids', 'move_id.line_ids.tax_line_id', 'move_id.line_ids.debit', 'move_id.line_ids.credit') + def _compute_tax_base_amount(self): + aml = self.filtered(lambda l: l.company_id.country_id.code == 'IN' and l.tax_line_id and l.product_id) + for move_line in aml: + base_lines = move_line.move_id.line_ids.filtered(lambda line: move_line.tax_line_id in line.tax_ids and move_line.product_id == line.product_id) + move_line.tax_base_amount = abs(sum(base_lines.mapped('balance'))) + remaining_aml = self - aml + if remaining_aml: + return super(AccountMoveLine, remaining_aml)._compute_tax_base_amount() + + +class AccountTax(models.Model): + _inherit = 'account.tax' + + l10n_in_reverse_charge = fields.Boolean("Reverse charge", help="Tick this if this tax is reverse charge. Only for Indian accounting") + + def get_grouping_key(self, invoice_tax_val): + """ Returns a string that will be used to group account.invoice.tax sharing the same properties""" + key = super(AccountTax, self).get_grouping_key(invoice_tax_val) + if self.company_id.country_id.code == 'IN': + key += "-%s-%s"% (invoice_tax_val.get('l10n_in_product_id', False), + invoice_tax_val.get('l10n_in_uom_id', False)) + return key diff --git a/addons/l10n_in/models/account_invoice.py b/addons/l10n_in/models/account_invoice.py new file mode 100644 index 00000000..d755cebd --- /dev/null +++ b/addons/l10n_in/models/account_invoice.py @@ -0,0 +1,129 @@ +# -*- coding: utf-8 -*- +# Part of Odoo. See LICENSE file for full copyright and licensing details. + +from odoo import api, fields, models, _ +from odoo.exceptions import ValidationError + + +class AccountMove(models.Model): + _inherit = "account.move" + + @api.depends('amount_total') + def _compute_amount_total_words(self): + for invoice in self: + invoice.amount_total_words = invoice.currency_id.amount_to_text(invoice.amount_total) + + amount_total_words = fields.Char("Total (In Words)", compute="_compute_amount_total_words") + l10n_in_gst_treatment = fields.Selection([ + ('regular', 'Registered Business - Regular'), + ('composition', 'Registered Business - Composition'), + ('unregistered', 'Unregistered Business'), + ('consumer', 'Consumer'), + ('overseas', 'Overseas'), + ('special_economic_zone', 'Special Economic Zone'), + ('deemed_export', 'Deemed Export') + ], string="GST Treatment", readonly=True, states={'draft': [('readonly', False)]}) + l10n_in_state_id = fields.Many2one('res.country.state', string="Location of supply") + l10n_in_company_country_code = fields.Char(related='company_id.country_id.code', string="Country code") + l10n_in_gstin = fields.Char(string="GSTIN") + # For Export invoice this data is need in GSTR report + l10n_in_shipping_bill_number = fields.Char('Shipping bill number', readonly=True, states={'draft': [('readonly', False)]}) + l10n_in_shipping_bill_date = fields.Date('Shipping bill date', readonly=True, states={'draft': [('readonly', False)]}) + l10n_in_shipping_port_code_id = fields.Many2one('l10n_in.port.code', 'Port code', states={'draft': [('readonly', False)]}) + l10n_in_reseller_partner_id = fields.Many2one('res.partner', 'Reseller', domain=[('vat', '!=', False)], help="Only Registered Reseller", readonly=True, states={'draft': [('readonly', False)]}) + + @api.onchange('partner_id') + def _onchange_partner_id(self): + """Use journal type to define document type because not miss state in any entry including POS entry""" + if self.l10n_in_company_country_code == 'IN': + self.l10n_in_gst_treatment = self.partner_id.l10n_in_gst_treatment + return super()._onchange_partner_id() + + @api.model + def _l10n_in_get_indian_state(self, partner): + """In tax return filing, If customer is not Indian in that case place of supply is must set to Other Territory. + So we set Other Territory in l10n_in_state_id when customer(partner) is not Indian + Also we raise if state is not set in Indian customer. + State is big role under GST because tax type is depend on.for more information check this https://www.cbic.gov.in/resources//htdocs-cbec/gst/Integrated%20goods%20&%20Services.pdf""" + if partner.country_id and partner.country_id.code == 'IN' and not partner.state_id: + raise ValidationError(_("State is missing from address in '%s'. First set state after post this invoice again.", partner.name)) + elif partner.country_id and partner.country_id.code != 'IN': + return self.env.ref('l10n_in.state_in_ot') + return partner.state_id + + + @api.model + def _get_tax_grouping_key_from_tax_line(self, tax_line): + # OVERRIDE to group taxes also by product. + res = super()._get_tax_grouping_key_from_tax_line(tax_line) + if tax_line.move_id.journal_id.company_id.country_id.code == 'IN': + res['product_id'] = tax_line.product_id.id + res['product_uom_id'] = tax_line.product_uom_id + return res + + @api.model + def _get_tax_grouping_key_from_base_line(self, base_line, tax_vals): + # OVERRIDE to group taxes also by product. + res = super()._get_tax_grouping_key_from_base_line(base_line, tax_vals) + if base_line.move_id.journal_id.company_id.country_id.code == 'IN': + res['product_id'] = base_line.product_id.id + res['product_uom_id'] = base_line.product_uom_id + return res + + @api.model + def _get_tax_key_for_group_add_base(self, line): + # DEPRECATED: TO BE REMOVED IN MASTER + tax_key = super(AccountMove, self)._get_tax_key_for_group_add_base(line) + + tax_key += [ + line.product_id.id, + line.product_uom_id, + ] + return tax_key + + def _l10n_in_get_shipping_partner(self): + """Overwrite in sale""" + self.ensure_one() + return self.partner_id + + @api.model + def _l10n_in_get_shipping_partner_gstin(self, shipping_partner): + """Overwrite in sale""" + return shipping_partner.vat + + def _post(self, soft=True): + """Use journal type to define document type because not miss state in any entry including POS entry""" + posted = super()._post(soft) + gst_treatment_name_mapping = {k: v for k, v in + self._fields['l10n_in_gst_treatment']._description_selection(self.env)} + for move in posted.filtered(lambda m: m.l10n_in_company_country_code == 'IN'): + """Check state is set in company/sub-unit""" + company_unit_partner = move.journal_id.l10n_in_gstin_partner_id or move.journal_id.company_id + if not company_unit_partner.state_id: + raise ValidationError(_( + "State is missing from your company/unit %(company_name)s (%(company_id)s).\nFirst set state in your company/unit.", + company_name=company_unit_partner.name, + company_id=company_unit_partner.id + )) + elif self.journal_id.type == 'purchase': + move.l10n_in_state_id = company_unit_partner.state_id + + shipping_partner = move._l10n_in_get_shipping_partner() + # In case of shipping address does not have GSTN then also check customer(partner_id) GSTN + # This happens when Bill-to Ship-to transaction where shipping(Ship-to) address is unregistered and customer(Bill-to) is registred. + move.l10n_in_gstin = move._l10n_in_get_shipping_partner_gstin(shipping_partner) or move.partner_id.vat + if not move.l10n_in_gstin and move.l10n_in_gst_treatment in ['regular', 'composition', 'special_economic_zone', 'deemed_export']: + raise ValidationError(_( + "Partner %(partner_name)s (%(partner_id)s) GSTIN is required under GST Treatment %(name)s", + partner_name=shipping_partner.name, + partner_id=shipping_partner.id, + name=gst_treatment_name_mapping.get(move.l10n_in_gst_treatment) + )) + if self.journal_id.type == 'sale': + move.l10n_in_state_id = self._l10n_in_get_indian_state(shipping_partner) + if not move.l10n_in_state_id: + move.l10n_in_state_id = self._l10n_in_get_indian_state(move.partner_id) + #still state is not set then assumed that transaction is local like PoS so set state of company unit + if not move.l10n_in_state_id: + move.l10n_in_state_id = company_unit_partner.state_id + return posted diff --git a/addons/l10n_in/models/chart_template.py b/addons/l10n_in/models/chart_template.py new file mode 100644 index 00000000..cb18bb75 --- /dev/null +++ b/addons/l10n_in/models/chart_template.py @@ -0,0 +1,29 @@ +# -*- coding: utf-8 -*- +# Part of Odoo. See LICENSE file for full copyright and licensing details. + +from odoo import api, fields, models, _ + + +class AccountChartTemplate(models.Model): + _inherit = 'account.chart.template' + + def _prepare_all_journals(self, acc_template_ref, company, journals_dict=None): + res = super(AccountChartTemplate, self)._prepare_all_journals(acc_template_ref, company, journals_dict=journals_dict) + if self == self.env.ref('l10n_in.indian_chart_template_standard'): + for journal in res: + if journal.get('type') in ('sale','purchase'): + journal['l10n_in_gstin_partner_id'] = company.partner_id.id + if journal['code'] == 'INV': + journal['name'] = _('Tax Invoices') + return res + +class AccountTaxTemplate(models.Model): + _inherit = 'account.tax.template' + + l10n_in_reverse_charge = fields.Boolean("Reverse charge", help="Tick this if this tax is reverse charge. Only for Indian accounting") + + def _get_tax_vals(self, company, tax_template_to_tax): + val = super(AccountTaxTemplate, self)._get_tax_vals(company, tax_template_to_tax) + if self.tax_group_id: + val['l10n_in_reverse_charge'] = self.l10n_in_reverse_charge + return val diff --git a/addons/l10n_in/models/port_code.py b/addons/l10n_in/models/port_code.py new file mode 100644 index 00000000..dfd54f34 --- /dev/null +++ b/addons/l10n_in/models/port_code.py @@ -0,0 +1,19 @@ +# -*- coding: utf-8 -*- +# Part of Odoo. See LICENSE file for full copyright and licensing details. + +from odoo import fields, models + + +class L10nInPortCode(models.Model): + """Port code must be mentioned in export and import of goods under GST.""" + _name = 'l10n_in.port.code' + _description = "Indian port code" + _rec_name = 'code' + + code = fields.Char(string="Port Code", required=True) + name = fields.Char(string="Port", required=True) + state_id = fields.Many2one('res.country.state', string="State") + + _sql_constraints = [ + ('code_uniq', 'unique (code)', 'The Port Code must be unique!') + ] diff --git a/addons/l10n_in/models/product_template.py b/addons/l10n_in/models/product_template.py new file mode 100644 index 00000000..6250fac2 --- /dev/null +++ b/addons/l10n_in/models/product_template.py @@ -0,0 +1,11 @@ +# -*- coding: utf-8 -*- +# Part of Odoo. See LICENSE file for full copyright and licensing details. + +from odoo import models, fields + + +class ProductTemplate(models.Model): + _inherit = 'product.template' + + l10n_in_hsn_code = fields.Char(string="HSN/SAC Code", help="Harmonized System Nomenclature/Services Accounting Code") + l10n_in_hsn_description = fields.Char(string="HSN/SAC Description", help="HSN/SAC description is required if HSN/SAC code is not provided.") diff --git a/addons/l10n_in/models/res_config_settings.py b/addons/l10n_in/models/res_config_settings.py new file mode 100644 index 00000000..11a58d95 --- /dev/null +++ b/addons/l10n_in/models/res_config_settings.py @@ -0,0 +1,10 @@ +# -*- coding: utf-8 -*- +# Part of Odoo. See LICENSE file for full copyright and licensing details. + +from odoo import api, fields, models + + +class ResConfigSettings(models.TransientModel): + _inherit = 'res.config.settings' + + group_l10n_in_reseller = fields.Boolean(implied_group='l10n_in.group_l10n_in_reseller', string="Manage Reseller(E-Commerce)") diff --git a/addons/l10n_in/models/res_country_state.py b/addons/l10n_in/models/res_country_state.py new file mode 100644 index 00000000..6cb495a7 --- /dev/null +++ b/addons/l10n_in/models/res_country_state.py @@ -0,0 +1,10 @@ +# -*- coding: utf-8 -*- +# Part of Odoo. See LICENSE file for full copyright and licensing details. + +from odoo import fields, models + + +class CountryState(models.Model): + _inherit = 'res.country.state' + + l10n_in_tin = fields.Char('TIN Number', size=2, help="TIN number-first two digits") diff --git a/addons/l10n_in/models/res_partner.py b/addons/l10n_in/models/res_partner.py new file mode 100644 index 00000000..f14e3953 --- /dev/null +++ b/addons/l10n_in/models/res_partner.py @@ -0,0 +1,46 @@ +# -*- coding: utf-8 -*- +# Part of Odoo. See LICENSE file for full copyright and licensing details. + +from odoo import api, fields, models, _ + + +class ResPartner(models.Model): + _inherit = 'res.partner' + + l10n_in_gst_treatment = fields.Selection([ + ('regular', 'Registered Business - Regular'), + ('composition', 'Registered Business - Composition'), + ('unregistered', 'Unregistered Business'), + ('consumer', 'Consumer'), + ('overseas', 'Overseas'), + ('special_economic_zone', 'Special Economic Zone'), + ('deemed_export', 'Deemed Export'), + ], string="GST Treatment") + + @api.onchange('company_type') + def onchange_company_type(self): + res = super().onchange_company_type() + if self.country_id and self.country_id.code == 'IN': + self.l10n_in_gst_treatment = (self.company_type == 'company') and 'regular' or 'consumer' + return res + + @api.onchange('country_id') + def _onchange_country_id(self): + res = super()._onchange_country_id() + if self.country_id and self.country_id.code != 'IN': + self.l10n_in_gst_treatment = 'overseas' + elif self.country_id and self.country_id.code == 'IN': + self.l10n_in_gst_treatment = (self.company_type == 'company') and 'regular' or 'consumer' + return res + + @api.onchange('vat') + def onchange_vat(self): + if self.vat and self.check_vat_in(self.vat): + state_id = self.env['res.country.state'].search([('l10n_in_tin', '=', self.vat[:2])], limit=1) + if state_id: + self.state_id = state_id + + @api.model + def _commercial_fields(self): + res = super()._commercial_fields() + return res + ['l10n_in_gst_treatment'] diff --git a/addons/l10n_in/models/uom_uom.py b/addons/l10n_in/models/uom_uom.py new file mode 100644 index 00000000..b9b3fcc5 --- /dev/null +++ b/addons/l10n_in/models/uom_uom.py @@ -0,0 +1,11 @@ +# -*- coding: utf-8 -*- +# Part of Odoo. See LICENSE file for full copyright and licensing details. + +from odoo import fields, models + + +class UoM(models.Model): + _inherit = "uom.uom" + + # As per GST Rules you need to Specify UQC given by GST. + l10n_in_code = fields.Char("Indian GST UQC", help="Unique Quantity Code (UQC) under GST") diff --git a/addons/l10n_in/report/__init__.py b/addons/l10n_in/report/__init__.py new file mode 100644 index 00000000..528be7c1 --- /dev/null +++ b/addons/l10n_in/report/__init__.py @@ -0,0 +1,7 @@ +# -*- coding: utf-8 -*- +# Part of Odoo. See LICENSE file for full copyright and licensing details. + +from . import account_invoice_report +from . import account_payment_report +from . import hsn_gst_report +from . import exempted_gst_report diff --git a/addons/l10n_in/report/account_invoice_report.py b/addons/l10n_in/report/account_invoice_report.py new file mode 100644 index 00000000..59a86695 --- /dev/null +++ b/addons/l10n_in/report/account_invoice_report.py @@ -0,0 +1,325 @@ +# -*- coding: utf-8 -*- +# Part of Odoo. See LICENSE file for full copyright and licensing details. + +from odoo import api, fields, models, tools + + +class L10nInAccountInvoiceReport(models.Model): + _name = "l10n_in.account.invoice.report" + _description = "Account Invoice Statistics" + _auto = False + _order = 'date desc' + + account_move_id = fields.Many2one('account.move', string="Account Move") + company_id = fields.Many2one('res.company', string="Company") + date = fields.Date(string="Accounting Date") + name = fields.Char(string="Invoice Number") + partner_id = fields.Many2one('res.partner', string="Customer") + is_reverse_charge = fields.Char("Reverse Charge") + l10n_in_gst_treatment = fields.Selection([ + ('regular', 'Registered Business - Regular'), + ('composition', 'Registered Business - Composition'), + ('unregistered', 'Unregistered Business'), + ('consumer', 'Consumer'), + ('overseas', 'Overseas'), + ('special_economic_zone', 'Special Economic Zone'), + ('deemed_export', 'Deemed Export'), + ], string="GST Treatment") + journal_id = fields.Many2one('account.journal', string="Journal") + state = fields.Selection([('draft', 'Unposted'), ('posted', 'Posted')], string='Status') + igst_amount = fields.Float(string="IGST Amount") + cgst_amount = fields.Float(string="CGST Amount") + sgst_amount = fields.Float(string="SGST Amount") + cess_amount = fields.Float(string="Cess Amount") + price_total = fields.Float(string='Total Without Tax') + total = fields.Float(string="Invoice Total") + reversed_entry_id = fields.Many2one('account.move', string="Refund Invoice", help="From where this Refund is created") + shipping_bill_number = fields.Char(string="Shipping Bill Number") + shipping_bill_date = fields.Date(string="Shipping Bill Date") + shipping_port_code_id = fields.Many2one('l10n_in.port.code', string='Shipping port code') + ecommerce_partner_id = fields.Many2one('res.partner', string="E-commerce") + move_type = fields.Selection(selection=[ + ('entry', 'Journal Entry'), + ('out_invoice', 'Customer Invoice'), + ('out_refund', 'Customer Credit Note'), + ('in_invoice', 'Vendor Bill'), + ('in_refund', 'Vendor Credit Note'), + ('out_receipt', 'Sales Receipt'), + ('in_receipt', 'Purchase Receipt')]) + partner_vat = fields.Char(string="Customer GSTIN") + ecommerce_vat = fields.Char(string="E-commerce GSTIN") + tax_rate = fields.Float(string="Rate") + place_of_supply = fields.Char(string="Place of Supply") + is_pre_gst = fields.Char(string="Is Pre GST") + is_ecommerce = fields.Char(string="Is E-commerce") + b2cl_is_ecommerce = fields.Char(string="B2CL Is E-commerce") + b2cs_is_ecommerce = fields.Char(string="B2CS Is E-commerce") + supply_type = fields.Char(string="Supply Type") + export_type = fields.Char(string="Export Type") # String from GSTR column. + refund_export_type = fields.Char(string="UR Type") # String from GSTR column. + b2b_type = fields.Char(string="B2B Invoice Type") + refund_invoice_type = fields.Char(string="Document Type") + gst_format_date = fields.Char(string="Formated Date") + gst_format_refund_date = fields.Char(string="Formated Refund Date") + gst_format_shipping_bill_date = fields.Char(string="Formated Shipping Bill Date") + tax_id = fields.Many2one('account.tax', string="Tax") + + def _select(self): + select_str = """ + SELECT min(sub.id) as id, + sub.move_id, + sub.account_move_id, + sub.name, + sub.state, + sub.partner_id, + sub.date, + sub.l10n_in_gst_treatment, + sub.ecommerce_partner_id, + sub.shipping_bill_number, + sub.shipping_bill_date, + sub.shipping_port_code_id, + sub.total * sub.b2cs_refund_sign as total, + sub.journal_id, + sub.company_id, + sub.move_type, + sub.reversed_entry_id, + sub.partner_vat, + sub.ecommerce_vat, + sub.tax_rate as tax_rate, + (CASE WHEN count(sub.is_reverse_charge) > 0 + THEN 'Y' + ELSE 'N' + END) AS is_reverse_charge, + sub.place_of_supply, + sub.is_pre_gst, + sub.is_ecommerce, + sub.b2cl_is_ecommerce, + sub.b2cs_is_ecommerce, + sub.supply_type, + sub.export_type, + sub.refund_export_type, + sub.b2b_type, + sub.refund_invoice_type, + sub.gst_format_date, + sub.gst_format_refund_date, + sub.gst_format_shipping_bill_date, + sum(sub.igst_amount) * sub.amount_sign * sub.b2cs_refund_sign AS igst_amount, + sum(sub.cgst_amount) * sub.amount_sign * sub.b2cs_refund_sign AS cgst_amount, + sum(sub.sgst_amount) * sub.amount_sign * sub.b2cs_refund_sign AS sgst_amount, + avg(sub.cess_amount) * sub.amount_sign * sub.b2cs_refund_sign AS cess_amount, + sum(sub.price_total) * sub.amount_sign * sub.b2cs_refund_sign AS price_total, + sub.tax_id + """ + return select_str + + def _sub_select(self): + sub_select_str = """ + SELECT aml.id AS id, + aml.move_id, + aml.partner_id, + am.id AS account_move_id, + am.name, + am.state, + am.date, + am.l10n_in_gst_treatment AS l10n_in_gst_treatment, + am.l10n_in_reseller_partner_id AS ecommerce_partner_id, + am.l10n_in_shipping_bill_number AS shipping_bill_number, + am.l10n_in_shipping_bill_date AS shipping_bill_date, + am.l10n_in_shipping_port_code_id AS shipping_port_code_id, + ABS(am.amount_total_signed) AS total, + am.journal_id, + aj.company_id, + am.move_type AS move_type, + am.reversed_entry_id AS reversed_entry_id, + am.l10n_in_gstin AS partner_vat, + CASE WHEN rp.vat IS NULL THEN '' ELSE rp.vat END AS ecommerce_vat, + (CASE WHEN at.l10n_in_reverse_charge = True + THEN True + ELSE NULL + END) AS is_reverse_charge, + (CASE WHEN ps.l10n_in_tin IS NOT NULL + THEN concat(ps.l10n_in_tin,'-',ps.name) + WHEN ps.id IS NULL and cps.l10n_in_tin IS NOT NULL + THEN concat(cps.l10n_in_tin,'-',cps.name) + ELSE '' + END) AS place_of_supply, + (CASE WHEN am.move_type in ('out_refund', 'in_refund') and refund_am.date <= to_date('2017-07-01', 'YYYY-MM-DD') + THEN 'Y' + ELSE 'N' + END) as is_pre_gst, + + (CASE WHEN am.l10n_in_reseller_partner_id IS NOT NULL + THEN 'Y' + ELSE 'N' + END) as is_ecommerce, + (CASE WHEN am.l10n_in_reseller_partner_id IS NOT NULL + THEN 'Y' + ELSE 'N' + END) as b2cl_is_ecommerce, + (CASE WHEN am.l10n_in_reseller_partner_id IS NOT NULL + THEN 'E' + ELSE 'OE' + END) as b2cs_is_ecommerce, + (CASE WHEN am.l10n_in_state_id = cp.state_id or p.id IS NULL + THEN 'Intra State' + WHEN am.l10n_in_state_id != cp.state_id and p.id IS NOT NULL + THEN 'Inter State' + END) AS supply_type, + (CASE WHEN am.l10n_in_gst_treatment in ('deemed_export', 'overseas') and am.amount_tax > 0.00 + THEN 'EXPWP' + WHEN am.l10n_in_gst_treatment in ('deemed_export', 'overseas') and am.amount_tax <= 0.00 + THEN 'EXPWOP' + ELSE '' + END) AS export_type, + (CASE WHEN am.l10n_in_gst_treatment in ('deemed_export', 'overseas') and am.amount_tax > 0.00 + THEN 'EXPWP' + WHEN am.l10n_in_gst_treatment in ('deemed_export', 'overseas') and am.amount_tax <= 0.00 + THEN 'EXPWOP' + ELSE 'B2CL' + END) AS refund_export_type, + (CASE WHEN am.l10n_in_gst_treatment = 'regular' + THEN 'Regular' + WHEN am.l10n_in_gst_treatment = 'deemed_export' + THEN 'Deemed' + WHEN am.l10n_in_gst_treatment = 'overseas' and am.amount_tax > 0.00 + THEN 'Export with IGST' + WHEN am.l10n_in_gst_treatment = 'special_economic_zone' and am.amount_tax > 0.00 + THEN 'SEZ with IGST payment' + WHEN am.l10n_in_gst_treatment = 'special_economic_zone' and am.amount_tax <= 0.00 + THEN 'SEZ without IGST payment' + END) AS b2b_type, + (CASE WHEN am.move_type = 'out_refund' + THEN 'C' + WHEN am.move_type = 'in_refund' + THEN 'D' + ELSE '' + END) as refund_invoice_type, + (CASE WHEN am.date IS NOT NULL + THEN TO_CHAR(am.date, 'DD-MON-YYYY') + ELSE '' + END) as gst_format_date, + (CASE WHEN refund_am.date IS NOT NULL + THEN TO_CHAR(refund_am.date, 'DD-MON-YYYY') + ELSE '' + END) as gst_format_refund_date, + (CASE WHEN am.l10n_in_shipping_bill_date IS NOT NULL + THEN TO_CHAR(am.l10n_in_shipping_bill_date, 'DD-MON-YYYY') + ELSE '' + END) as gst_format_shipping_bill_date, + CASE WHEN tag_rep_ln.account_tax_report_line_id IN + (SELECT res_id FROM ir_model_data WHERE module='l10n_in' AND name in ('tax_report_line_igst', 'tax_report_line_igst_rc')) + THEN aml.balance + ELSE 0 + END AS igst_amount, + CASE WHEN tag_rep_ln.account_tax_report_line_id IN + (SELECT res_id FROM ir_model_data WHERE module='l10n_in' AND name in ('tax_report_line_cgst', 'tax_report_line_cgst_rc')) + THEN aml.balance + ELSE 0 + END AS cgst_amount, + CASE WHEN tag_rep_ln.account_tax_report_line_id IN + (SELECT res_id FROM ir_model_data WHERE module='l10n_in' AND name in ('tax_report_line_sgst', 'tax_report_line_sgst_rc')) + THEN aml.balance + ELSE 0 + END AS sgst_amount, + (SELECT sum(temp_aml.balance) from account_move_line temp_aml + JOIN account_account_tag_account_move_line_rel aat_aml_rel_temp ON aat_aml_rel_temp.account_move_line_id = temp_aml.id + JOIN account_account_tag aat_temp ON aat_temp.id = aat_aml_rel_temp.account_account_tag_id + JOIN account_tax_report_line_tags_rel tag_rep_ln_temp ON aat_temp.id = tag_rep_ln_temp.account_account_tag_id + where temp_aml.move_id = aml.move_id and temp_aml.product_id = aml.product_id + and tag_rep_ln_temp.account_tax_report_line_id IN (SELECT res_id FROM ir_model_data WHERE module='l10n_in' AND name in ('tax_report_line_cess', 'tax_report_line_cess_rc')) + ) AS cess_amount, + CASE WHEN tag_rep_ln.account_tax_report_line_id IN + (SELECT res_id FROM ir_model_data WHERE module='l10n_in' AND name in ('tax_report_line_sgst', 'tax_report_line_sgst_rc')) + THEN NULL + ELSE (CASE WHEN aml.tax_base_amount <> 0 THEN aml.tax_base_amount * (CASE WHEN aml.balance < 0 THEN -1 ELSE 1 END) ELSE NULL END) + END AS price_total, + (CASE WHEN (aj.type = 'sale' AND am.move_type != 'out_refund') or (aj.type = 'purchase' AND at.l10n_in_reverse_charge AND am.move_type != 'in_refund') THEN -1 ELSE 1 END) AS amount_sign, + (CASE WHEN am.move_type in ('in_refund','out_refund') + AND p.vat IS NULL + AND am.l10n_in_gst_treatment != 'overseas' + AND (ABS(am.amount_total_signed) <= 250000 OR + (ps.id = cp.state_id OR p.id IS NULL)) + THEN -1 + ELSE 1 END) AS b2cs_refund_sign, + (CASE WHEN atr.parent_tax IS NOT NULL THEN atr.parent_tax + ELSE at.id END) AS tax_id, + (CASE WHEN atr.parent_tax IS NOT NULL THEN parent_at.amount + ELSE at.amount END) AS tax_rate + """ + return sub_select_str + + def _from(self): + from_str = """ + FROM account_move_line aml + JOIN account_move am ON am.id = aml.move_id + JOIN account_journal aj ON aj.id = am.journal_id + JOIN res_company c ON c.id = aj.company_id + LEFT JOIN account_tax at ON at.id = aml.tax_line_id + JOIN account_account_tag_account_move_line_rel aat_aml_rel ON aat_aml_rel.account_move_line_id = aml.id + JOIN account_account_tag aat ON aat.id = aat_aml_rel.account_account_tag_id + JOIN account_tax_report_line_tags_rel tag_rep_ln ON aat.id = tag_rep_ln.account_account_tag_id + LEFT JOIN res_partner cp ON cp.id = COALESCE(aj.l10n_in_gstin_partner_id, c.partner_id) + LEFT JOIN res_country_state cps ON cps.id = cp.state_id + LEFT JOIN account_move refund_am ON refund_am.id = am.reversed_entry_id + LEFT JOIN res_partner p ON p.id = aml.partner_id + LEFT JOIN res_country_state ps ON ps.id = am.l10n_in_state_id + LEFT JOIN res_partner rp ON rp.id = am.l10n_in_reseller_partner_id + LEFT JOIN account_tax_filiation_rel atr ON atr.child_tax = at.id + LEFT JOIN account_tax parent_at ON parent_at.id = atr.parent_tax + """ + return from_str + + def _where(self): + return """ + WHERE am.state = 'posted' + AND tag_rep_ln.account_tax_report_line_id in (SELECT res_id FROM ir_model_data WHERE module='l10n_in' AND name in ('tax_report_line_igst', 'tax_report_line_cgst', 'tax_report_line_sgst', 'tax_report_line_zero_rated', 'tax_report_line_igst_rc', 'tax_report_line_cgst_rc', 'tax_report_line_sgst_rc')) + """ + + def _group_by(self): + group_by_str = """ + GROUP BY sub.move_id, + sub.account_move_id, + sub.name, + sub.state, + sub.partner_id, + sub.date, + sub.l10n_in_gst_treatment, + sub.ecommerce_partner_id, + sub.shipping_bill_number, + sub.shipping_bill_date, + sub.shipping_port_code_id, + sub.total, + sub.journal_id, + sub.company_id, + sub.move_type, + sub.reversed_entry_id, + sub.partner_vat, + sub.ecommerce_vat, + sub.place_of_supply, + sub.is_pre_gst, + sub.is_ecommerce, + sub.b2cl_is_ecommerce, + sub.b2cs_is_ecommerce, + sub.supply_type, + sub.export_type, + sub.refund_export_type, + sub.b2b_type, + sub.refund_invoice_type, + sub.gst_format_date, + sub.gst_format_refund_date, + sub.gst_format_shipping_bill_date, + sub.amount_sign, + sub.tax_id, + sub.tax_rate, + sub.b2cs_refund_sign + """ + return group_by_str + + def init(self): + tools.drop_view_if_exists(self.env.cr, self._table) + self.env.cr.execute("""CREATE or REPLACE VIEW %s AS ( + %s + FROM ( + %s %s %s + ) AS sub %s)""" % (self._table, self._select(), self._sub_select(), + self._from(), self._where(), self._group_by())) diff --git a/addons/l10n_in/report/account_payment_report.py b/addons/l10n_in/report/account_payment_report.py new file mode 100644 index 00000000..db02965b --- /dev/null +++ b/addons/l10n_in/report/account_payment_report.py @@ -0,0 +1,196 @@ +# -*- coding:utf-8 -*- +#az Part of Odoo. See LICENSE file for full copyright and licensing details. + +from odoo import api, fields, models, tools + + +class L10nInPaymentReport(models.AbstractModel): + _name = "l10n_in.payment.report" + _description = "Indian accounting payment report" + + account_move_id = fields.Many2one('account.move', string="Account Move") + payment_id = fields.Many2one('account.payment', string='Payment') + currency_id = fields.Many2one('res.currency', string="Currency") + amount = fields.Float(string="Amount") + payment_amount = fields.Float(string="Payment Amount") + partner_id = fields.Many2one('res.partner', string="Customer") + payment_type = fields.Selection([('outbound', 'Send Money'), ('inbound', 'Receive Money')], string='Payment Type') + journal_id = fields.Many2one('account.journal', string="Journal") + company_id = fields.Many2one(related="journal_id.company_id", string="Company") + place_of_supply = fields.Char(string="Place of Supply") + supply_type = fields.Char(string="Supply Type") + + l10n_in_tax_id = fields.Many2one('account.tax', string="Tax") + tax_rate = fields.Float(string="Rate") + igst_amount = fields.Float(compute="_compute_tax_amount", string="IGST amount") + cgst_amount = fields.Float(compute="_compute_tax_amount", string="CGST amount") + sgst_amount = fields.Float(compute="_compute_tax_amount", string="SGST amount") + cess_amount = fields.Float(compute="_compute_tax_amount", string="CESS amount") + gross_amount = fields.Float(compute="_compute_tax_amount", string="Gross advance") + + def _compute_l10n_in_tax(self, taxes, price_unit, currency=None, quantity=1.0, product=None, partner=None): + """common method to compute gst tax amount base on tax group""" + res = {'igst_amount': 0.0, 'sgst_amount': 0.0, 'cgst_amount': 0.0, 'cess_amount': 0.0} + AccountTaxRepartitionLine = self.env['account.tax.repartition.line'] + tax_report_line_igst = self.env.ref('l10n_in.tax_report_line_igst', False) + tax_report_line_cgst = self.env.ref('l10n_in.tax_report_line_cgst', False) + tax_report_line_sgst = self.env.ref('l10n_in.tax_report_line_sgst', False) + tax_report_line_cess = self.env.ref('l10n_in.tax_report_line_cess', False) + filter_tax = taxes.filtered(lambda t: t.type_tax_use != 'none') + tax_compute = filter_tax.compute_all(price_unit, currency=currency, quantity=quantity, product=product, partner=partner) + for tax_data in tax_compute['taxes']: + tax_report_lines = AccountTaxRepartitionLine.browse(tax_data['tax_repartition_line_id']).mapped('tag_ids.tax_report_line_ids') + if tax_report_line_sgst in tax_report_lines: + res['sgst_amount'] += tax_data['amount'] + if tax_report_line_cgst in tax_report_lines: + res['cgst_amount'] += tax_data['amount'] + if tax_report_line_igst in tax_report_lines: + res['igst_amount'] += tax_data['amount'] + if tax_report_line_cess in tax_report_lines: + res['cess_amount'] += tax_data['amount'] + res.update(tax_compute) + return res + + #TO BE OVERWRITTEN + @api.depends('currency_id') + def _compute_tax_amount(self): + """Calculate tax amount base on default tax set in company""" + + def _select(self): + return """SELECT aml.id AS id, + aml.move_id as account_move_id, + ap.id AS payment_id, + ap.payment_type, + tax.id as l10n_in_tax_id, + tax.amount AS tax_rate, + am.partner_id, + am.amount_total AS payment_amount, + am.journal_id, + aml.currency_id, + (CASE WHEN ps.l10n_in_tin IS NOT NULL + THEN concat(ps.l10n_in_tin,'-',ps.name) + WHEN p.id IS NULL and cps.l10n_in_tin IS NOT NULL + THEN concat(cps.l10n_in_tin,'-',cps.name) + ELSE '' + END) AS place_of_supply, + (CASE WHEN ps.id = cp.state_id or p.id IS NULL + THEN 'Intra State' + WHEN ps.id != cp.state_id and p.id IS NOT NULL + THEN 'Inter State' + END) AS supply_type""" + + def _from(self): + return """FROM account_move_line aml + JOIN account_move am ON am.id = aml.move_id + JOIN account_payment ap ON ap.id = aml.payment_id + JOIN account_account AS ac ON ac.id = aml.account_id + JOIN account_journal AS aj ON aj.id = am.journal_id + JOIN res_company AS c ON c.id = aj.company_id + JOIN account_tax AS tax ON tax.id = ( + CASE WHEN ap.payment_type = 'inbound' + THEN c.account_sale_tax_id + ELSE c.account_purchase_tax_id END) + JOIN res_partner p ON p.id = aml.partner_id + LEFT JOIN res_country_state ps ON ps.id = p.state_id + LEFT JOIN res_partner cp ON cp.id = COALESCE(aj.l10n_in_gstin_partner_id, c.partner_id) + LEFT JOIN res_country_state cps ON cps.id = cp.state_id + """ + + def _where(self): + return """WHERE aml.payment_id IS NOT NULL + AND tax.tax_group_id in (SELECT res_id FROM ir_model_data WHERE module='l10n_in' AND name in ('igst_group','gst_group')) + AND ac.internal_type IN ('receivable', 'payable') AND am.state = 'posted'""" + + def init(self): + tools.drop_view_if_exists(self.env.cr, self._table) + self.env.cr.execute("""CREATE or REPLACE VIEW %s AS ( + %s %s %s)""" % (self._table, self._select(), self._from(), self._where())) + + +class AdvancesPaymentReport(models.Model): + _name = "l10n_in.advances.payment.report" + _inherit = 'l10n_in.payment.report' + _description = "Advances Payment Analysis" + _auto = False + + date = fields.Date(string="Payment Date") + reconcile_amount = fields.Float(string="Reconcile amount in Payment month") + + @api.depends('payment_amount', 'reconcile_amount', 'currency_id') + def _compute_tax_amount(self): + """Calculate tax amount base on default tax set in company""" + account_move_line = self.env['account.move.line'] + for record in self: + base_amount = record.payment_amount - record.reconcile_amount + taxes_data = self._compute_l10n_in_tax( + taxes=record.l10n_in_tax_id, + price_unit=base_amount, + currency=record.currency_id or None, + quantity=1, + partner=record.partner_id or None) + record.igst_amount = taxes_data['igst_amount'] + record.cgst_amount = taxes_data['cgst_amount'] + record.sgst_amount = taxes_data['sgst_amount'] + record.cess_amount = taxes_data['cess_amount'] + record.gross_amount = taxes_data['total_excluded'] + + def _select(self): + select_str = super(AdvancesPaymentReport, self)._select() + select_str += """, + am.date as date, + (SELECT sum(amount) FROM account_partial_reconcile AS apr + WHERE (apr.credit_move_id = aml.id OR apr.debit_move_id = aml.id) + AND (to_char(apr.max_date, 'MM-YYYY') = to_char(aml.date, 'MM-YYYY')) + ) AS reconcile_amount, + (am.amount_total - (SELECT (CASE WHEN SUM(amount) IS NULL THEN 0 ELSE SUM(amount) END) FROM account_partial_reconcile AS apr + WHERE (apr.credit_move_id = aml.id OR apr.debit_move_id = aml.id) + AND (to_char(apr.max_date, 'MM-YYYY') = to_char(aml.date, 'MM-YYYY')) + )) AS amount""" + return select_str + + +class L10nInAdvancesPaymentAdjustmentReport(models.Model): + _name = "l10n_in.advances.payment.adjustment.report" + _inherit = 'l10n_in.payment.report' + _description = "Advances Payment Adjustment Analysis" + _auto = False + + date = fields.Date('Reconcile Date') + + @api.depends('amount', 'currency_id', 'partner_id') + def _compute_tax_amount(self): + account_move_line = self.env['account.move.line'] + for record in self: + taxes_data = self._compute_l10n_in_tax( + taxes=record.l10n_in_tax_id, + price_unit=record.amount, + currency=record.currency_id or None, + quantity=1, + partner=record.partner_id or None) + record.igst_amount = taxes_data['igst_amount'] + record.cgst_amount = taxes_data['cgst_amount'] + record.sgst_amount = taxes_data['sgst_amount'] + record.cess_amount = taxes_data['cess_amount'] + record.gross_amount = taxes_data['total_excluded'] + + def _select(self): + select_str = super(L10nInAdvancesPaymentAdjustmentReport, self)._select() + select_str += """, + apr.max_date AS date, + apr.amount AS amount + """ + return select_str + + def _from(self): + from_str = super(L10nInAdvancesPaymentAdjustmentReport, self)._from() + from_str += """ + JOIN account_partial_reconcile apr ON apr.credit_move_id = aml.id OR apr.debit_move_id = aml.id + """ + return from_str + + def _where(self): + where_str = super(L10nInAdvancesPaymentAdjustmentReport, self)._where() + where_str += """ + AND (apr.max_date > aml.date) + """ + return where_str diff --git a/addons/l10n_in/report/exempted_gst_report.py b/addons/l10n_in/report/exempted_gst_report.py new file mode 100644 index 00000000..661a5c08 --- /dev/null +++ b/addons/l10n_in/report/exempted_gst_report.py @@ -0,0 +1,95 @@ +# -*- coding: utf-8 -*- +# Part of Odoo. See LICENSE file for full copyright and licensing details. + +from odoo import api, fields, models, tools + + +class L10nInExemptedReport(models.Model): + _name = "l10n_in.exempted.report" + _description = "Exempted Gst Supplied Statistics" + _auto = False + + account_move_id = fields.Many2one('account.move', string="Account Move") + partner_id = fields.Many2one('res.partner', string="Customer") + out_supply_type = fields.Char(string="Outward Supply Type") + in_supply_type = fields.Char(string="Inward Supply Type") + nil_rated_amount = fields.Float("Nil rated supplies") + exempted_amount = fields.Float("Exempted") + non_gst_supplies = fields.Float("Non GST Supplies") + date = fields.Date("Date") + company_id = fields.Many2one('res.company', string="Company") + journal_id = fields.Many2one('account.journal', string="Journal") + + def _select(self): + select_str = """SELECT aml.id AS id, + aml.partner_id AS partner_id, + am.date, + aml.balance * (CASE WHEN aj.type = 'sale' THEN -1 ELSE 1 END) AS price_total, + am.journal_id, + aj.company_id, + aml.move_id as account_move_id, + + (CASE WHEN p.state_id = cp.state_id + THEN (CASE WHEN p.vat IS NOT NULL + THEN 'Intra-State supplies to registered persons' + ELSE 'Intra-State supplies to unregistered persons' + END) + WHEN p.state_id != cp.state_id + THEN (CASE WHEN p.vat IS NOT NULL + THEN 'Inter-State supplies to registered persons' + ELSE 'Inter-State supplies to unregistered persons' + END) + END) AS out_supply_type, + (CASE WHEN p.state_id = cp.state_id + THEN 'Intra-State supplies' + WHEN p.state_id != cp.state_id + THEN 'Inter-State supplies' + END) AS in_supply_type, + + (CASE WHEN ( + SELECT MAX(account_tax_id) FROM account_move_line_account_tax_rel + JOIN account_tax at ON at.id = account_tax_id + WHERE account_move_line_id = aml.id AND at.tax_group_id IN + ((SELECT res_id FROM ir_model_data WHERE module='l10n_in' AND name='nil_rated_group')) + ) IS NOT NULL + THEN aml.balance * (CASE WHEN aj.type = 'sale' THEN -1 ELSE 1 END) + ELSE 0 + END) AS nil_rated_amount, + + (CASE WHEN ( + SELECT MAX(account_tax_id) FROM account_move_line_account_tax_rel + JOIN account_tax at ON at.id = account_tax_id + WHERE account_move_line_id = aml.id AND at.tax_group_id IN + ((SELECT res_id FROM ir_model_data WHERE module='l10n_in' AND name='exempt_group')) + ) IS NOT NULL + THEN aml.balance * (CASE WHEN aj.type = 'sale' THEN -1 ELSE 1 END) + ELSE 0 + END) AS exempted_amount, + + (CASE WHEN ( + SELECT MAX(account_tax_id) FROM account_move_line_account_tax_rel + WHERE account_move_line_id = aml.id + ) IS NULL + THEN aml.balance * (CASE WHEN aj.type = 'sale' THEN -1 ELSE 1 END) + ELSE 0 + END) AS non_gst_supplies + """ + return select_str + + def _from(self): + from_str = """FROM account_move_line aml + JOIN account_move am ON am.id = aml.move_id + JOIN account_account aa ON aa.id = aml.account_id + JOIN account_journal aj ON aj.id = am.journal_id + JOIN res_company c ON c.id = aj.company_id + LEFT JOIN res_partner cp ON cp.id = COALESCE(aj.l10n_in_gstin_partner_id, c.partner_id) + LEFT JOIN res_partner p ON p.id = am.partner_id + LEFT JOIN res_country pc ON pc.id = p.country_id + WHERE aa.internal_type = 'other' and aml.tax_line_id IS NULL + """ + return from_str + + def init(self): + tools.drop_view_if_exists(self.env.cr, self._table) + self._cr.execute("""CREATE OR REPLACE VIEW %s AS (%s %s)""" % ( + self._table, self._select(), self._from())) diff --git a/addons/l10n_in/report/hsn_gst_report.py b/addons/l10n_in/report/hsn_gst_report.py new file mode 100644 index 00000000..2d121a5b --- /dev/null +++ b/addons/l10n_in/report/hsn_gst_report.py @@ -0,0 +1,112 @@ +# -*- coding: utf-8 -*- +# Part of Odoo. See LICENSE file for full copyright and licensing details. + +from odoo import api, fields, models, tools + + +class L10nInProductHsnReport(models.Model): + _name = "l10n_in.product.hsn.report" + _description = "Product HSN Statistics" + _auto = False + _order = 'date desc' + + account_move_id = fields.Many2one('account.move', string="Account Move") + partner_id = fields.Many2one('res.partner', string="Customer") + product_id = fields.Many2one("product.product", string="Product") + uom_id = fields.Many2one('uom.uom', string="UOM") + quantity = fields.Float(string="Product Qty") + date = fields.Date(string="Date") + price_total = fields.Float(string='Taxable Value') + total = fields.Float(string="Total Value") + igst_amount = fields.Float(string="Integrated Tax Amount") + cgst_amount = fields.Float(string="Central Tax Amount") + sgst_amount = fields.Float(string="State/UT Tax Amount") + cess_amount = fields.Float(string="Cess Amount") + company_id = fields.Many2one('res.company', string="Company") + journal_id = fields.Many2one('account.journal', string="Journal") + + hsn_code = fields.Char(string="HSN") + hsn_description = fields.Char(string="HSN description") + + l10n_in_uom_code = fields.Char(string="UQC") + + def _select(self): + select_str = """SELECT aml.id AS id, + aml.move_id AS account_move_id, + aml.partner_id AS partner_id, + aml.product_id, + aml.product_uom_id AS uom_id, + am.date, + am.journal_id, + aj.company_id, + CASE WHEN pt.l10n_in_hsn_code IS NULL THEN '' ELSE pt.l10n_in_hsn_code END AS hsn_code, + CASE WHEN pt.l10n_in_hsn_description IS NULL THEN '' ELSE pt.l10n_in_hsn_description END AS hsn_description, + CASE WHEN uom.l10n_in_code IS NULL THEN '' ELSE uom.l10n_in_code END AS l10n_in_uom_code, + CASE WHEN tag_rep_ln.account_tax_report_line_id IN + (SELECT res_id FROM ir_model_data WHERE module='l10n_in' AND name in ('tax_report_line_sgst', 'tax_report_line_sgst_rc')) OR at.l10n_in_reverse_charge = True + THEN 0 + ELSE aml.quantity + END * (CASE WHEN am.move_type in ('in_refund','out_refund') THEN -1 ELSE 1 END) + AS quantity, + CASE WHEN tag_rep_ln.account_tax_report_line_id IN + (SELECT res_id FROM ir_model_data WHERE module='l10n_in' AND name in ('tax_report_line_igst', 'tax_report_line_igst_rc')) + THEN aml.balance * (CASE WHEN aj.type = 'sale' and am.move_type != 'out_refund' THEN -1 ELSE 1 END) + ELSE 0 + END * (CASE WHEN am.move_type in ('in_refund','out_refund') THEN -1 ELSE 1 END) + AS igst_amount, + CASE WHEN tag_rep_ln.account_tax_report_line_id IN + (SELECT res_id FROM ir_model_data WHERE module='l10n_in' AND name in ('tax_report_line_cgst', 'tax_report_line_cgst_rc')) + THEN aml.balance * (CASE WHEN aj.type = 'sale' and am.move_type != 'out_refund' THEN -1 ELSE 1 END) + ELSE 0 + END * (CASE WHEN am.move_type in ('in_refund','out_refund') THEN -1 ELSE 1 END) + AS cgst_amount, + CASE WHEN tag_rep_ln.account_tax_report_line_id IN + (SELECT res_id FROM ir_model_data WHERE module='l10n_in' AND name in ('tax_report_line_sgst', 'tax_report_line_sgst_rc')) + THEN aml.balance * (CASE WHEN aj.type = 'sale' and am.move_type != 'out_refund' THEN -1 ELSE 1 END) + ELSE 0 + END * (CASE WHEN am.move_type in ('in_refund','out_refund') THEN -1 ELSE 1 END) + AS sgst_amount, + CASE WHEN tag_rep_ln.account_tax_report_line_id IN + (SELECT res_id FROM ir_model_data WHERE module='l10n_in' AND name in ('tax_report_line_cess', 'tax_report_line_cess_rc')) + THEN aml.balance * (CASE WHEN aj.type = 'sale' and am.move_type != 'out_refund' THEN -1 ELSE 1 END) + ELSE 0 + END * (CASE WHEN am.move_type in ('in_refund','out_refund') THEN -1 ELSE 1 END) + AS cess_amount, + CASE WHEN tag_rep_ln.account_tax_report_line_id IN + (SELECT res_id FROM ir_model_data WHERE module='l10n_in' AND name in ('tax_report_line_sgst', 'tax_report_line_sgst_rc')) + THEN 0 + ELSE (CASE WHEN aml.tax_line_id IS NOT NULL THEN aml.tax_base_amount ELSE aml.balance * (CASE WHEN aj.type = 'sale' THEN -1 ELSE 1 END) END) + END * (CASE WHEN am.move_type in ('in_refund','out_refund') THEN -1 ELSE 1 END) + AS price_total, + ((CASE WHEN tag_rep_ln.account_tax_report_line_id IN + (SELECT res_id FROM ir_model_data WHERE module='l10n_in' AND name in ('tax_report_line_sgst', 'tax_report_line_sgst_rc')) + THEN 0 + ELSE (CASE WHEN aml.tax_line_id IS NOT NULL THEN aml.tax_base_amount ELSE 1 END) + END) + (aml.balance * (CASE WHEN aj.type = 'sale' and am.move_type != 'out_refund' THEN -1 ELSE 1 END)) + )* (CASE WHEN am.move_type in ('in_refund','out_refund') THEN -1 ELSE 1 END) + AS total + """ + return select_str + + def _from(self): + from_str = """FROM account_move_line aml + JOIN account_move am ON am.id = aml.move_id + JOIN account_account aa ON aa.id = aml.account_id + JOIN account_journal aj ON aj.id = am.journal_id + JOIN product_product pp ON pp.id = aml.product_id + JOIN product_template pt ON pt.id = pp.product_tmpl_id + LEFT JOIN account_tax at ON at.id = aml.tax_line_id + LEFT JOIN account_account_tag_account_move_line_rel aat_aml_rel ON aat_aml_rel.account_move_line_id = aml.id + LEFT JOIN account_account_tag aat ON aat.id = aat_aml_rel.account_account_tag_id + LEFT JOIN account_tax_report_line_tags_rel tag_rep_ln ON aat.id = tag_rep_ln.account_account_tag_id + LEFT JOIN account_move_line_account_tax_rel mt ON mt.account_move_line_id = aml.id + LEFT JOIN uom_uom uom ON uom.id = aml.product_uom_id + WHERE aa.internal_type = 'other' AND (aml.tax_line_id IS NOT NULL OR mt.account_tax_id IS NULL) + AND am.state = 'posted' + """ + return from_str + + def init(self): + tools.drop_view_if_exists(self.env.cr, self._table) + self.env.cr.execute("""CREATE OR REPLACE VIEW %s AS (%s %s)""" % ( + self._table, self._select(), self._from())) diff --git a/addons/l10n_in/security/ir.model.access.csv b/addons/l10n_in/security/ir.model.access.csv new file mode 100644 index 00000000..6fcc8f29 --- /dev/null +++ b/addons/l10n_in/security/ir.model.access.csv @@ -0,0 +1,8 @@ +id,name,model_id:id,group_id:id,perm_read,perm_write,perm_create,perm_unlink +access_port_code_user,port.code.user,model_l10n_in_port_code,base.group_user,1,0,0,0 +access_port_code_account_manager,port.code.user,model_l10n_in_port_code,account.group_account_manager,1,1,1,1 +access_l10n_in_account_invoice_report,l10n.in.account.invoice.report.user,model_l10n_in_account_invoice_report,,1,0,0,0 +access_l10n_in_advances_payment_report,l10n.in.account.move.user.report,model_l10n_in_advances_payment_report,,1,0,0,0 +access_l10n_in_advances_payment_adjustment_report,l10n_in.advances.payment.adjustment.report.user,model_l10n_in_advances_payment_adjustment_report,,1,0,0,0 +access_l10n_in_product_hsn_report,l10n.in.product.hsn.report.user,model_l10n_in_product_hsn_report,,1,0,0,0 +access_l10n_in_exempted_report,l10n_in.exempted.report.user,model_l10n_in_exempted_report,,1,0,0,0 diff --git a/addons/l10n_in/security/l10n_in_security.xml b/addons/l10n_in/security/l10n_in_security.xml new file mode 100644 index 00000000..f474eb98 --- /dev/null +++ b/addons/l10n_in/security/l10n_in_security.xml @@ -0,0 +1,7 @@ +<?xml version="1.0" encoding="utf-8"?> +<odoo> + <record model="res.groups" id="group_l10n_in_reseller"> + <field name="name">Manage Reseller(E-Commerce)</field> + <field name="category_id" ref="base.module_category_hidden"/> + </record> +</odoo> diff --git a/addons/l10n_in/static/description/icon.png b/addons/l10n_in/static/description/icon.png Binary files differnew file mode 100644 index 00000000..d463901f --- /dev/null +++ b/addons/l10n_in/static/description/icon.png diff --git a/addons/l10n_in/views/account_invoice_views.xml b/addons/l10n_in/views/account_invoice_views.xml new file mode 100644 index 00000000..f2f55f34 --- /dev/null +++ b/addons/l10n_in/views/account_invoice_views.xml @@ -0,0 +1,33 @@ +<?xml version="1.0" encoding="utf-8"?> +<odoo> + <record id="invoice_form_inherit_l10n_in" model="ir.ui.view"> + <field name="name">account.move.form.inherit.l10n.in</field> + <field name="model">account.move</field> + <field name="inherit_id" ref="account.view_move_form"/> + <field name="arch" type="xml"> + <xpath expr="//field[@name='ref']" position="after"> + <field name="l10n_in_company_country_code" invisible="1"/> + <field name="l10n_in_gst_treatment" + attrs="{'invisible': ['|', ('l10n_in_company_country_code', '!=', 'IN'), ('move_type', '=', 'entry')], 'required': [('l10n_in_company_country_code', '=', 'IN'), ('move_type', '!=', 'entry')]}"/> + </xpath> + <xpath expr="//page[@id='other_tab']/group[@id='other_tab_group']" position="after"> + <group string="Export India" attrs="{'invisible': ['|', ('l10n_in_gst_treatment', 'not in', ['overseas', 'deemed_export']), ('move_type', 'not in', ['out_invoice', 'out_refund'])]}"> + <field name="l10n_in_shipping_bill_number"/> + <field name="l10n_in_shipping_bill_date"/> + <field name="l10n_in_shipping_port_code_id"/> + </group> + <group string="Import India" attrs="{'invisible': ['|', ('l10n_in_gst_treatment', 'not in', ['overseas', 'special_economic_zone']), ('move_type', 'not in', ['in_invoice', 'in_refund'])]}"> + <field name="l10n_in_shipping_bill_number" string="Bill of Entry Number"/> + <field name="l10n_in_shipping_bill_date" string="Bill of Entry Date"/> + <field name="l10n_in_shipping_port_code_id"/> + </group> + </xpath> + <xpath expr="//field[@name='partner_id']" position="after"> + <field name="l10n_in_reseller_partner_id" + groups="l10n_in.group_l10n_in_reseller" + attrs="{'invisible': ['|', '|',('move_type', 'not in', ('out_invoice', 'out_refund')), ('l10n_in_company_country_code', '!=', 'IN'), ('move_type', '=', 'entry')]}" + /> + </xpath> + </field> + </record> +</odoo> diff --git a/addons/l10n_in/views/account_journal_views.xml b/addons/l10n_in/views/account_journal_views.xml new file mode 100644 index 00000000..34e47136 --- /dev/null +++ b/addons/l10n_in/views/account_journal_views.xml @@ -0,0 +1,19 @@ +<?xml version="1.0" encoding="utf-8"?> +<odoo> + <record id="view_account_journal_form_inherit_l10n_in" model="ir.ui.view"> + <field name="name">account.journal.form.inherit.l10n.in</field> + <field name="model">account.journal</field> + <field name="inherit_id" ref="account.view_account_journal_form"/> + <field name="arch" type="xml"> + <field name='profit_account_id' position="attributes"> + <attribute name="attrs">{'invisible': ['|', '&', ('country_code', '!=', 'IN'), ('type', '!=', 'cash'), '&', ('country_code', '=', 'IN'), ('type', 'not in', ['bank', 'cash', 'sale', 'purchase'])]}</attribute> + </field> + <field name='loss_account_id' position="attributes"> + <attribute name="attrs">{'invisible': ['|', '&', ('country_code', '!=', 'IN'), ('type', '!=', 'cash'), '&', ('country_code', '=', 'IN'), ('type', 'not in', ['bank', 'cash', 'sale', 'purchase'])]}</attribute> + </field> + <field name="company_id" position="after"> + <field name="l10n_in_gstin_partner_id" context="{'show_vat':True}" options='{"no_create": True,"always_reload": True}'/> + </field> + </field> + </record> +</odoo> diff --git a/addons/l10n_in/views/account_tax_views.xml b/addons/l10n_in/views/account_tax_views.xml new file mode 100644 index 00000000..a108bda3 --- /dev/null +++ b/addons/l10n_in/views/account_tax_views.xml @@ -0,0 +1,13 @@ +<?xml version="1.0" encoding="utf-8"?> +<odoo> + <record id="view_tax_form_inherit_l10n_in" model="ir.ui.view"> + <field name="name">account.tax.form.inherit.l10n.in</field> + <field name="model">account.tax</field> + <field name="inherit_id" ref="account.view_tax_form"/> + <field name="arch" type="xml"> + <field name="include_base_amount" position="after"> + <field name="l10n_in_reverse_charge" attrs="{'invisible':[('amount_type','=', 'group')]}"/> + </field> + </field> + </record> +</odoo> diff --git a/addons/l10n_in/views/port_code_views.xml b/addons/l10n_in/views/port_code_views.xml new file mode 100644 index 00000000..68c20ef5 --- /dev/null +++ b/addons/l10n_in/views/port_code_views.xml @@ -0,0 +1,48 @@ +<?xml version="1.0" encoding="utf-8"?> +<odoo> + + <record id="l10n_in_port_code_form_view" model="ir.ui.view"> + <field name="name">l10n_in.port.code.form</field> + <field name="model">l10n_in.port.code</field> + <field name="arch" type="xml"> + <form string="India Port Code"> + <group> + <group> + <field name="name"/> + <field name="code"/> + </group> + <group> + <field name="state_id"/> + </group> + </group> + </form> + </field> + </record> + + <record id="l10n_in_port_code_tree_view" model="ir.ui.view"> + <field name="name">l10n_in.port.code.tree</field> + <field name="model">l10n_in.port.code</field> + <field name="arch" type="xml"> + <tree string="India Port Code"> + <field name="name"/> + <field name="code"/> + <field name="state_id"/> + </tree> + </field> + </record> + + <record id="l10n_in_port_code_search_view" model="ir.ui.view"> + <field name="name">l10n_in.port.code.search</field> + <field name="model">l10n_in.port.code</field> + <field name="arch" type="xml"> + <search string="India Port Code"> + <field name="name" string="Port" filter_domain="['|',('name', 'ilike', self),('code', 'ilike', self)]"/> + <field name="state_id"/> + <group expand="0" string="Group By"> + <filter string="State" name="state" domain="[]" context="{'group_by': 'state_id'}"/> + </group> + </search> + </field> + </record> + +</odoo> diff --git a/addons/l10n_in/views/product_template_view.xml b/addons/l10n_in/views/product_template_view.xml new file mode 100644 index 00000000..7e632ee8 --- /dev/null +++ b/addons/l10n_in/views/product_template_view.xml @@ -0,0 +1,16 @@ +<?xml version="1.0" encoding="utf-8"?> +<odoo> + + <record model="ir.ui.view" id="l10n_in.product_template_hsn_code"> + <field name="name">l10n_in.product.template.form.hsn_code</field> + <field name="model">product.template</field> + <field name="inherit_id" ref="product.product_template_form_view"/> + <field name="arch" type="xml"> + <field name="categ_id" position="after"> + <field name="l10n_in_hsn_code"/> + <field name="l10n_in_hsn_description"/> + </field> + </field> + </record> + +</odoo> diff --git a/addons/l10n_in/views/report_invoice.xml b/addons/l10n_in/views/report_invoice.xml new file mode 100644 index 00000000..f77aa013 --- /dev/null +++ b/addons/l10n_in/views/report_invoice.xml @@ -0,0 +1,56 @@ +<?xml version="1.0" encoding="utf-8"?> +<odoo> + <template id="l10n_in_report_invoice_document_inherit" inherit_id="account.report_invoice_document"> + + <xpath expr="//span[@t-field='o.partner_id.vat']" position="attributes"> + <attribute name="t-if">o.company_id.country_id.code != 'IN'</attribute> + </xpath> + <xpath expr="//span[@t-field='o.partner_id.vat']" position="after"> + <span t-field="o.l10n_in_gstin" t-if="o.company_id.country_id.code == 'IN'"/> + </xpath> + <xpath expr="//t[@t-set='address']" position="inside"> + <t t-if="o.company_id.country_id.code == 'IN' and o.l10n_in_state_id" class="mt16"> + <t t-if="o.move_type in ('in_invoice', 'in_refund')"> + Destination of supply: <span t-esc="o.l10n_in_state_id.name"/> + </t> + <t t-if="o.move_type in ('out_invoice', 'out_refund')"> + Place of supply: <span t-esc="o.l10n_in_state_id.name"/> + </t> + </t> + </xpath> + <xpath expr="//p[@t-if='o.narration']" position="before"> + <t t-if="o.company_id.country_id.code == 'IN'"> + <p id="total_in_words" class="mb16"> + <strong>Total (In Words): </strong> + <span t-field="o.amount_total_words"/> + </p> + </t> + </xpath> + + <xpath expr="//table[@name='invoice_line_table']/thead/tr/th[1]" position="after"> + <t t-if="o.company_id.country_id.code == 'IN'"> + <th>HSN/SAC</th> + </t> + </xpath> + + <xpath expr="//t[@name='account_invoice_line_accountable']/td[1]" position="after"> + <td t-if="o.company_id.country_id.code == 'IN'"> + <span t-if="line.product_id.l10n_in_hsn_code" t-field="line.product_id.l10n_in_hsn_code"></span> + </td> + </xpath> + + <xpath expr="//h2" position="replace"> + <h2> + <span t-if="o.move_type == 'out_invoice' and o.state == 'open'" t-field="o.journal_id.name"/> + <span t-if="o.move_type == 'out_invoice' and o.state == 'draft'">Draft <span t-field="o.journal_id.name"/></span> + <span t-if="o.move_type == 'out_invoice' and o.state == 'cancel'">Cancelled <span t-field="o.journal_id.name"/></span> + <span t-if="o.move_type == 'out_refund'">Credit Note</span> + <span t-if="o.move_type == 'in_refund'">Vendor Credit Note</span> + <span t-if="o.move_type == 'in_invoice'">Vendor Bill</span> + <span t-field="o.name"/> + </h2> + </xpath> + + </template> + +</odoo> diff --git a/addons/l10n_in/views/report_template.xml b/addons/l10n_in/views/report_template.xml new file mode 100644 index 00000000..3786d1f1 --- /dev/null +++ b/addons/l10n_in/views/report_template.xml @@ -0,0 +1,38 @@ +<?xml version="1.0" encoding="utf-8"?> +<odoo> + <!-- get vat from journal_id for all layout --> + <template id="l10n_in_external_layout" inherit_id="web.external_layout"> + <xpath expr="//t[@t-if='company.external_report_layout_id']" position="before"> + <t t-if="o and 'journal_id' in o and company.country_id.code == 'IN'"> + <t t-set="vat" t-value="o.journal_id.l10n_in_gstin_partner_id.vat"/> + </t> + <t t-elif="o and 'l10n_in_journal_id' in o and company.country_id.code == 'IN'"> + <t t-set="vat" t-value="o.l10n_in_journal_id.l10n_in_gstin_partner_id.vat"/> + </t> + </xpath> + </template> + + <template id="l10n_in_external_layout_standard" inherit_id="web.external_layout_standard"> + <xpath expr="//li[@t-if='company.vat']" position="replace"> + <li t-if="vat or company.vat" class="list-inline-item d-inline"><t t-esc="company.country_id.vat_label or 'Tax ID'"/>: <span t-esc="vat or company.vat"/></li> + </xpath> + </template> + + <template id="l10n_in_external_layout_clean" inherit_id="web.external_layout_clean"> + <xpath expr="//li[@t-if='company.vat']" position="replace"> + <li t-if="vat or company.vat"><t t-esc="company.country_id.vat_label or 'Tax ID'"/>: <span t-esc="vat or company.vat"/></li> + </xpath> + </template> + + <template id="l10n_in_external_layout_boxed" inherit_id="web.external_layout_boxed"> + <xpath expr="//li[@t-if='company.vat']" position="replace"> + <li t-if="vat or company.vat" class="list-inline-item"><t t-esc="company.country_id.vat_label or 'Tax ID'"/>: <span t-esc="vat or company.vat"/></li> + </xpath> + </template> + + <template id="l10n_in_external_layout_background" inherit_id="web.external_layout_background"> + <xpath expr="//li[@t-if='company.vat']" position="replace"> + <li t-if="vat or company.vat" class="list-inline-item"><i class="fa fa-building-o" role="img" aria-label="Fiscal number"/><t t-esc="company.country_id.vat_label or 'Tax ID'"/>: <span t-esc="vat or company.vat"/></li> + </xpath> + </template> +</odoo>
\ No newline at end of file diff --git a/addons/l10n_in/views/res_company_view.xml b/addons/l10n_in/views/res_company_view.xml new file mode 100644 index 00000000..abbf8d4c --- /dev/null +++ b/addons/l10n_in/views/res_company_view.xml @@ -0,0 +1,16 @@ +<?xml version="1.0" encoding="utf-8"?> +<odoo> + + <record id="l10n_in_view_company_form" model="ir.ui.view"> + <field name="name">l10n.in.view.company.form</field> + <field name="model">res.company</field> + <field name="priority" eval="100"/> + <field name="inherit_id" ref="base.view_company_form"/> + <field name="arch" type="xml"> + <xpath expr="//field[@name='vat']" position="attributes"> + <attribute name="string" attrs="{'invisible': [('country_code', '!=', 'IN')]}">GSTIN</attribute> + </xpath> + </field> + </record> + +</odoo> diff --git a/addons/l10n_in/views/res_config_settings_views.xml b/addons/l10n_in/views/res_config_settings_views.xml new file mode 100644 index 00000000..5b4208cd --- /dev/null +++ b/addons/l10n_in/views/res_config_settings_views.xml @@ -0,0 +1,26 @@ +<?xml version="1.0" encoding="utf-8"?> +<odoo> + <record id="res_config_settings_view_form_inherit_l10n_in" model="ir.ui.view"> + <field name="name">res.config.settings.form.inherit.l10n_in</field> + <field name="model">res.config.settings</field> + <field name="inherit_id" ref="account.res_config_settings_view_form"/> + <field name="arch" type="xml"> + <div id="invoicing_settings" position="inside"> + <div class="col-xs-12 col-md-6 o_setting_box" + name="ecommerce_reseller_setting" + title="Manage Reseller(E-Commerce)" + attrs="{'invisible': [('country_code', '!=', 'IN')]}"> + <div class="o_setting_left_pane"> + <field name="group_l10n_in_reseller"/> + </div> + <div class="o_setting_right_pane" name="l10n_eu_service_right_pane"> + <label for="group_l10n_in_reseller"/> + <div class="text-muted"> + Use this if setup with Reseller(E-Commerce). + </div> + </div> + </div> + </div> + </field> + </record> +</odoo> diff --git a/addons/l10n_in/views/res_country_state_view.xml b/addons/l10n_in/views/res_country_state_view.xml new file mode 100644 index 00000000..bdac8ff6 --- /dev/null +++ b/addons/l10n_in/views/res_country_state_view.xml @@ -0,0 +1,15 @@ +<?xml version="1.0" encoding="utf-8"?> +<odoo> + + <record id="l10n_in_view_country_state_form_inherit" model="ir.ui.view"> + <field name="name">l10n.in.res.country.state.form.inhert</field> + <field name="model">res.country.state</field> + <field name="inherit_id" ref="base.view_country_state_form"/> + <field name="arch" type="xml"> + <field name="code" position="after"> + <field name="l10n_in_tin"/> + </field> + </field> + </record> + +</odoo> diff --git a/addons/l10n_in/views/res_partner_views.xml b/addons/l10n_in/views/res_partner_views.xml new file mode 100644 index 00000000..98e112c0 --- /dev/null +++ b/addons/l10n_in/views/res_partner_views.xml @@ -0,0 +1,17 @@ +<?xml version="1.0" encoding="utf-8"?> +<odoo> + <record id="l10n_in_view_partner_form" model="ir.ui.view"> + <field name="name">l10n.in.res.partner.vat.inherit</field> + <field name="model">res.partner</field> + <field name="priority" eval="100"/> + <field name="inherit_id" ref="base.view_partner_form"/> + <field name="arch" type="xml"> + <xpath expr="//field[@name='vat']" position="attributes"> + <attribute name="attrs">{'required':[('l10n_in_gst_treatment', 'in', ['regular', 'composition', 'special_economic_zone', 'deemed_export'])], 'readonly': [('parent_id', '!=', False)]}</attribute> + </xpath> + <xpath expr="//field[@name='vat']" position="before"> + <field name="l10n_in_gst_treatment" attrs="{'readonly': [('parent_id', '!=', False)]}"/> + </xpath> + </field> + </record> +</odoo> diff --git a/addons/l10n_in/views/uom_uom_views.xml b/addons/l10n_in/views/uom_uom_views.xml new file mode 100644 index 00000000..237ce736 --- /dev/null +++ b/addons/l10n_in/views/uom_uom_views.xml @@ -0,0 +1,13 @@ +<?xml version="1.0" encoding="utf-8"?> +<odoo> + <record id="product_uom_form_view_inherit_l10n_in" model="ir.ui.view"> + <field name="name">uom.uom.form</field> + <field name="model">uom.uom</field> + <field name="inherit_id" ref="uom.product_uom_form_view"/> + <field name="arch" type="xml"> + <xpath expr="//field[@name='category_id']" position="after"> + <field name="l10n_in_code"/> + </xpath> + </field> + </record> +</odoo> |
