diff --git a/erpnext/accounts/report/tax_detail/test_tax_detail.json b/erpnext/accounts/report/tax_detail/test_tax_detail.json
deleted file mode 100644
index e4903167cba..00000000000
--- a/erpnext/accounts/report/tax_detail/test_tax_detail.json
+++ /dev/null
@@ -1,840 +0,0 @@
-[
- {
- "account_manager": null,
- "accounts": [],
- "companies": [],
- "credit_limits": [],
- "customer_details": null,
- "customer_group": "All Customer Groups",
- "customer_name": "_Test Customer",
- "customer_pos_id": null,
- "customer_primary_address": null,
- "customer_primary_contact": null,
- "customer_type": "Company",
- "default_bank_account": null,
- "default_commission_rate": 0.0,
- "default_currency": null,
- "default_price_list": null,
- "default_sales_partner": null,
- "disabled": 0,
- "dn_required": 0,
- "docstatus": 0,
- "doctype": "Customer",
- "email_id": null,
- "gender": null,
- "image": null,
- "industry": null,
- "is_frozen": 0,
- "is_internal_customer": 0,
- "language": "en",
- "lead_name": null,
- "loyalty_program": null,
- "loyalty_program_tier": null,
- "market_segment": null,
- "mobile_no": null,
- "modified": "2021-02-15 05:18:03.624724",
- "name": "_Test Customer",
- "naming_series": "CUST-.YYYY.-",
- "pan": null,
- "parent": null,
- "parentfield": null,
- "parenttype": null,
- "payment_terms": null,
- "primary_address": null,
- "represents_company": "",
- "sales_team": [],
- "salutation": null,
- "so_required": 0,
- "tax_category": null,
- "tax_id": null,
- "tax_withholding_category": null,
- "territory": "All Territories",
- "website": null
- },{
- "accounts": [],
- "allow_purchase_invoice_creation_without_purchase_order": 0,
- "allow_purchase_invoice_creation_without_purchase_receipt": 0,
- "companies": [],
- "country": "United Kingdom",
- "default_bank_account": null,
- "default_currency": null,
- "default_price_list": null,
- "disabled": 0,
- "docstatus": 0,
- "doctype": "Supplier",
- "hold_type": "",
- "image": null,
- "is_frozen": 0,
- "is_internal_supplier": 0,
- "is_transporter": 0,
- "language": "en",
- "modified": "2021-03-31 16:47:10.109316",
- "name": "_Test Supplier",
- "naming_series": "SUP-.YYYY.-",
- "on_hold": 0,
- "pan": null,
- "parent": null,
- "parentfield": null,
- "parenttype": null,
- "payment_terms": null,
- "prevent_pos": 0,
- "prevent_rfqs": 0,
- "release_date": null,
- "represents_company": null,
- "supplier_details": null,
- "supplier_group": "Raw Material",
- "supplier_name": "_Test Supplier",
- "supplier_type": "Company",
- "tax_category": null,
- "tax_id": null,
- "tax_withholding_category": null,
- "warn_pos": 0,
- "warn_rfqs": 0,
- "website": null
- },{
- "account_currency": "GBP",
- "account_name": "Debtors",
- "account_number": "",
- "account_type": "Receivable",
- "balance_must_be": "",
- "company": "_T",
- "disabled": 0,
- "docstatus": 0,
- "doctype": "Account",
- "freeze_account": "No",
- "include_in_gross": 0,
- "inter_company_account": 0,
- "is_group": 0,
- "lft": 58,
- "modified": "2021-03-26 04:44:19.955468",
- "name": "Debtors - _T",
- "old_parent": null,
- "parent": null,
- "parent_account": "Application of Funds (Assets) - _T",
- "parentfield": null,
- "parenttype": null,
- "report_type": "Balance Sheet",
- "rgt": 59,
- "root_type": "Asset",
- "tax_rate": 0.0
- },{
- "account_currency": "GBP",
- "account_name": "Sales",
- "account_number": "",
- "account_type": "Income Account",
- "balance_must_be": "",
- "company": "_T",
- "disabled": 0,
- "docstatus": 0,
- "doctype": "Account",
- "freeze_account": "No",
- "include_in_gross": 0,
- "inter_company_account": 0,
- "is_group": 0,
- "lft": 291,
- "modified": "2021-03-26 04:50:21.697703",
- "name": "Sales - _T",
- "old_parent": null,
- "parent": null,
- "parent_account": "Income - _T",
- "parentfield": null,
- "parenttype": null,
- "report_type": "Profit and Loss",
- "rgt": 292,
- "root_type": "Income",
- "tax_rate": 0.0
- },{
- "account_currency": "GBP",
- "account_name": "VAT on Sales",
- "account_number": "",
- "account_type": "Tax",
- "balance_must_be": "",
- "company": "_T",
- "disabled": 0,
- "docstatus": 0,
- "doctype": "Account",
- "freeze_account": "No",
- "include_in_gross": 0,
- "inter_company_account": 0,
- "is_group": 0,
- "lft": 317,
- "modified": "2021-03-26 04:50:21.697703",
- "name": "VAT on Sales - _T",
- "old_parent": null,
- "parent": null,
- "parent_account": "Source of Funds (Liabilities) - _T",
- "parentfield": null,
- "parenttype": null,
- "report_type": "Balance Sheet",
- "rgt": 318,
- "root_type": "Liability",
- "tax_rate": 0.0
- },{
- "account_currency": "GBP",
- "account_name": "Cost of Goods Sold",
- "account_number": "",
- "account_type": "Cost of Goods Sold",
- "balance_must_be": "",
- "company": "_T",
- "disabled": 0,
- "docstatus": 0,
- "doctype": "Account",
- "freeze_account": "No",
- "include_in_gross": 0,
- "inter_company_account": 0,
- "is_group": 0,
- "lft": 171,
- "modified": "2021-03-26 04:44:19.994857",
- "name": "Cost of Goods Sold - _T",
- "old_parent": null,
- "parent": null,
- "parent_account": "Expenses - _T",
- "parentfield": null,
- "parenttype": null,
- "report_type": "Profit and Loss",
- "rgt": 172,
- "root_type": "Expense",
- "tax_rate": 0.0
- },{
- "account_currency": "GBP",
- "account_name": "VAT on Purchases",
- "account_number": "",
- "account_type": "Tax",
- "balance_must_be": "",
- "company": "_T",
- "disabled": 0,
- "docstatus": 0,
- "doctype": "Account",
- "freeze_account": "No",
- "include_in_gross": 0,
- "inter_company_account": 0,
- "is_group": 0,
- "lft": 80,
- "modified": "2021-03-26 04:44:19.961983",
- "name": "VAT on Purchases - _T",
- "old_parent": null,
- "parent": null,
- "parent_account": "Application of Funds (Assets) - _T",
- "parentfield": null,
- "parenttype": null,
- "report_type": "Balance Sheet",
- "rgt": 81,
- "root_type": "Asset",
- "tax_rate": 0.0
- },{
- "account_currency": "GBP",
- "account_name": "Creditors",
- "account_number": "",
- "account_type": "Payable",
- "balance_must_be": "",
- "company": "_T",
- "disabled": 0,
- "docstatus": 0,
- "doctype": "Account",
- "freeze_account": "No",
- "include_in_gross": 0,
- "inter_company_account": 0,
- "is_group": 0,
- "lft": 302,
- "modified": "2021-03-26 04:50:21.697703",
- "name": "Creditors - _T",
- "old_parent": null,
- "parent": null,
- "parent_account": "Source of Funds (Liabilities) - _T",
- "parentfield": null,
- "parenttype": null,
- "report_type": "Balance Sheet",
- "rgt": 303,
- "root_type": "Liability",
- "tax_rate": 0.0
- },{
- "additional_discount_percentage": 0.0,
- "address_display": null,
- "adjust_advance_taxes": 0,
- "advances": [],
- "against_expense_account": "Cost of Goods Sold - _T",
- "allocate_advances_automatically": 0,
- "amended_from": null,
- "apply_discount_on": "Grand Total",
- "apply_tds": 0,
- "auto_repeat": null,
- "base_discount_amount": 0.0,
- "base_grand_total": 511.68,
- "base_in_words": "GBP Five Hundred And Eleven and Sixty Eight Pence only.",
- "base_net_total": 426.4,
- "base_paid_amount": 0.0,
- "base_rounded_total": 511.68,
- "base_rounding_adjustment": 0.0,
- "base_taxes_and_charges_added": 85.28,
- "base_taxes_and_charges_deducted": 0.0,
- "base_total": 426.4,
- "base_total_taxes_and_charges": 85.28,
- "base_write_off_amount": 0.0,
- "bill_date": null,
- "bill_no": null,
- "billing_address": null,
- "billing_address_display": null,
- "buying_price_list": "Standard Buying",
- "cash_bank_account": null,
- "clearance_date": null,
- "company": "_T",
- "contact_display": null,
- "contact_email": null,
- "contact_mobile": null,
- "contact_person": null,
- "conversion_rate": 1.0,
- "cost_center": null,
- "credit_to": "Creditors - _T",
- "currency": "GBP",
- "disable_rounded_total": 0,
- "discount_amount": 0.0,
- "docstatus": 0,
- "doctype": "Purchase Invoice",
- "due_date": null,
- "from_date": null,
- "grand_total": 511.68,
- "group_same_items": 0,
- "hold_comment": null,
- "ignore_pricing_rule": 0,
- "in_words": "GBP Five Hundred And Eleven and Sixty Eight Pence only.",
- "inter_company_invoice_reference": null,
- "is_internal_supplier": 0,
- "is_opening": "No",
- "is_paid": 0,
- "is_return": 0,
- "is_subcontracted": 0,
- "items": [
- {
- "allow_zero_valuation_rate": 0,
- "amount": 426.4,
- "asset_category": null,
- "asset_location": null,
- "base_amount": 426.4,
- "base_net_amount": 426.4,
- "base_net_rate": 5.33,
- "base_price_list_rate": 5.33,
- "base_rate": 5.33,
- "base_rate_with_margin": 0.0,
- "batch_no": null,
- "bom": null,
- "brand": null,
- "conversion_factor": 0.0,
- "cost_center": "Main - _T",
- "deferred_expense_account": null,
- "description": "
",
- "discount_amount": 0.0,
- "discount_percentage": 0.0,
- "enable_deferred_expense": 0,
- "expense_account": "Cost of Goods Sold - _T",
- "from_warehouse": null,
- "image": null,
- "include_exploded_items": 0,
- "is_fixed_asset": 0,
- "is_free_item": 0,
- "item_code": null,
- "item_group": null,
- "item_name": "Widget Fluid 1Litre",
- "item_tax_amount": 0.0,
- "item_tax_rate": "{\"VAT on Purchases - _T\": 20.0}",
- "item_tax_template": null,
- "landed_cost_voucher_amount": 0.0,
- "manufacturer": null,
- "manufacturer_part_no": null,
- "margin_rate_or_amount": 0.0,
- "margin_type": "",
- "net_amount": 426.4,
- "net_rate": 5.33,
- "page_break": 0,
- "parent": null,
- "parentfield": "items",
- "parenttype": "Purchase Invoice",
- "po_detail": null,
- "pr_detail": null,
- "price_list_rate": 5.33,
- "pricing_rules": null,
- "project": null,
- "purchase_invoice_item": null,
- "purchase_order": null,
- "purchase_receipt": null,
- "qty": 80.0,
- "quality_inspection": null,
- "rate": 5.33,
- "rate_with_margin": 0.0,
- "received_qty": 0.0,
- "rejected_qty": 0.0,
- "rejected_serial_no": null,
- "rejected_warehouse": null,
- "rm_supp_cost": 0.0,
- "sales_invoice_item": null,
- "serial_no": null,
- "service_end_date": null,
- "service_start_date": null,
- "service_stop_date": null,
- "stock_qty": 0.0,
- "stock_uom": "Nos",
- "stock_uom_rate": 0.0,
- "total_weight": 0.0,
- "uom": "Nos",
- "valuation_rate": 0.0,
- "warehouse": null,
- "weight_per_unit": 0.0,
- "weight_uom": null
- }
- ],
- "language": "en",
- "letter_head": null,
- "mode_of_payment": null,
- "modified": "2021-04-03 03:33:09.180453",
- "name": null,
- "naming_series": "ACC-PINV-.YYYY.-",
- "net_total": 426.4,
- "on_hold": 0,
- "other_charges_calculation": "\n\t
\n\t\t\n\t\t\t\n\t\t\t\t\n\t\t\t\t\t\n\t\t\t\t\t\t| Item | \n\t\t\t\t\t\n\t\t\t\t\n\t\t\t\t\t\n\t\t\t\t\t\tTaxable Amount | \n\t\t\t\t\t\n\t\t\t\t\n\t\t\t\t\t\n\t\t\t\t\t\tVAT on Purchases | \n\t\t\t\t\t\n\t\t\t\t\n\t\t\t
\n\t\t\n\t\t\n\t\t\t\n\t\t\t\t\n\t\t\t\t\t| Widget Fluid 1Litre | \n\t\t\t\t\t\n\t\t\t\t\t\t\n\t\t\t\t\t\t\t\u00a3 426.40\n\t\t\t\t\t\t\n\t\t\t\t\t | \n\t\t\t\t\t\n\t\t\t\t\t\t\n\t\t\t\t\t\t\n\t\t\t\t\t\t\t\n\t\t\t\t\t\t\t\t\n\t\t\t\t\t\t\t\t\t(20.0%)\n\t\t\t\t\t\t\t\t\n\t\t\t\t\t\t\t\t\n\t\t\t\t\t\t\t\t\t\u00a3 85.28\n\t\t\t\t\t\t\t\t\n\t\t\t\t\t\t\t | \n\t\t\t\t\t\t\n\t\t\t\t\t\n\t\t\t\t
\n\t\t\t\n\t\t\n\t
\n
",
- "outstanding_amount": 511.68,
- "paid_amount": 0.0,
- "parent": null,
- "parentfield": null,
- "parenttype": null,
- "party_account_currency": "GBP",
- "payment_schedule": [],
- "payment_terms_template": null,
- "plc_conversion_rate": 1.0,
- "posting_date": null,
- "posting_time": "16:59:56.789522",
- "price_list_currency": "GBP",
- "pricing_rules": [],
- "project": null,
- "rejected_warehouse": null,
- "release_date": null,
- "remarks": "No Remarks",
- "represents_company": null,
- "return_against": null,
- "rounded_total": 511.68,
- "rounding_adjustment": 0.0,
- "scan_barcode": null,
- "select_print_heading": null,
- "set_from_warehouse": null,
- "set_posting_time": 0,
- "set_warehouse": null,
- "shipping_address": null,
- "shipping_address_display": "",
- "shipping_rule": null,
- "status": "Unpaid",
- "supplied_items": [],
- "supplier": "_Test Supplier",
- "supplier_address": null,
- "supplier_name": "_Test Supplier",
- "supplier_warehouse": "Stores - _T",
- "tax_category": null,
- "tax_id": null,
- "tax_withholding_category": null,
- "taxes": [
- {
- "account_head": "VAT on Purchases - _T",
- "add_deduct_tax": "Add",
- "base_tax_amount": 85.28,
- "base_tax_amount_after_discount_amount": 85.28,
- "base_total": 511.68,
- "category": "Total",
- "charge_type": "On Net Total",
- "cost_center": "Main - _T",
- "description": "VAT on Purchases",
- "included_in_print_rate": 0,
- "item_wise_tax_detail": "{\"Widget Fluid 1Litre\":[20.0,85.28]}",
- "parent": null,
- "parentfield": "taxes",
- "parenttype": "Purchase Invoice",
- "rate": 0.0,
- "row_id": null,
- "tax_amount": 85.28,
- "tax_amount_after_discount_amount": 85.28,
- "total": 511.68
- }
- ],
- "taxes_and_charges": null,
- "taxes_and_charges_added": 85.28,
- "taxes_and_charges_deducted": 0.0,
- "tc_name": null,
- "terms": null,
- "title": "_Purchase Invoice",
- "to_date": null,
- "total": 426.4,
- "total_advance": 0.0,
- "total_net_weight": 0.0,
- "total_qty": 80.0,
- "total_taxes_and_charges": 85.28,
- "unrealized_profit_loss_account": null,
- "update_stock": 0,
- "write_off_account": null,
- "write_off_amount": 0.0,
- "write_off_cost_center": null
- },{
- "account_for_change_amount": null,
- "additional_discount_percentage": 0.0,
- "address_display": null,
- "advances": [],
- "against_income_account": "Sales - _T",
- "allocate_advances_automatically": 0,
- "amended_from": null,
- "apply_discount_on": "Grand Total",
- "auto_repeat": null,
- "base_change_amount": 0.0,
- "base_discount_amount": 0.0,
- "base_grand_total": 868.25,
- "base_in_words": "GBP Eight Hundred And Sixty Eight and Twenty Five Pence only.",
- "base_net_total": 825.0,
- "base_paid_amount": 0.0,
- "base_rounded_total": 868.25,
- "base_rounding_adjustment": 0.0,
- "base_total": 825.0,
- "base_total_taxes_and_charges": 43.25,
- "base_write_off_amount": 0.0,
- "c_form_applicable": "No",
- "c_form_no": null,
- "campaign": null,
- "cash_bank_account": null,
- "change_amount": 0.0,
- "commission_rate": 0.0,
- "company": "_T",
- "company_address": null,
- "company_address_display": null,
- "company_tax_id": null,
- "contact_display": null,
- "contact_email": null,
- "contact_mobile": null,
- "contact_person": null,
- "conversion_rate": 1.0,
- "cost_center": null,
- "currency": "GBP",
- "customer": "_Test Customer",
- "customer_address": null,
- "customer_group": "All Customer Groups",
- "customer_name": "_Test Customer",
- "debit_to": "Debtors - _T",
- "discount_amount": 0.0,
- "docstatus": 0,
- "doctype": "Sales Invoice",
- "due_date": null,
- "from_date": null,
- "grand_total": 868.25,
- "group_same_items": 0,
- "ignore_pricing_rule": 0,
- "in_words": "GBP Eight Hundred And Sixty Eight and Twenty Five Pence only.",
- "inter_company_invoice_reference": null,
- "is_consolidated": 0,
- "is_discounted": 0,
- "is_internal_customer": 0,
- "is_opening": "No",
- "is_pos": 0,
- "is_return": 0,
- "items": [
- {
- "actual_batch_qty": 0.0,
- "actual_qty": 0.0,
- "allow_zero_valuation_rate": 0,
- "amount": 200.0,
- "asset": null,
- "barcode": null,
- "base_amount": 200.0,
- "base_net_amount": 200.0,
- "base_net_rate": 50.0,
- "base_price_list_rate": 0.0,
- "base_rate": 50.0,
- "base_rate_with_margin": 0.0,
- "batch_no": null,
- "brand": null,
- "conversion_factor": 1.0,
- "cost_center": "Main - _T",
- "customer_item_code": null,
- "deferred_revenue_account": null,
- "delivered_by_supplier": 0,
- "delivered_qty": 0.0,
- "delivery_note": null,
- "description": "",
- "discount_amount": 0.0,
- "discount_percentage": 0.0,
- "dn_detail": null,
- "enable_deferred_revenue": 0,
- "expense_account": null,
- "finance_book": null,
- "image": null,
- "income_account": "Sales - _T",
- "incoming_rate": 0.0,
- "is_fixed_asset": 0,
- "is_free_item": 0,
- "item_code": null,
- "item_group": null,
- "item_name": "Dunlop tyres",
- "item_tax_rate": "{\"VAT on Sales - _T\": 20.0}",
- "item_tax_template": null,
- "margin_rate_or_amount": 0.0,
- "margin_type": "",
- "net_amount": 200.0,
- "net_rate": 50.0,
- "page_break": 0,
- "parent": null,
- "parentfield": "items",
- "parenttype": "Sales Invoice",
- "price_list_rate": 0.0,
- "pricing_rules": null,
- "project": null,
- "qty": 4.0,
- "quality_inspection": null,
- "rate": 50.0,
- "rate_with_margin": 0.0,
- "sales_invoice_item": null,
- "sales_order": null,
- "serial_no": null,
- "service_end_date": null,
- "service_start_date": null,
- "service_stop_date": null,
- "so_detail": null,
- "stock_qty": 4.0,
- "stock_uom": "Nos",
- "stock_uom_rate": 50.0,
- "target_warehouse": null,
- "total_weight": 0.0,
- "uom": "Nos",
- "warehouse": null,
- "weight_per_unit": 0.0,
- "weight_uom": null
- },
- {
- "actual_batch_qty": 0.0,
- "actual_qty": 0.0,
- "allow_zero_valuation_rate": 0,
- "amount": 65.0,
- "asset": null,
- "barcode": null,
- "base_amount": 65.0,
- "base_net_amount": 65.0,
- "base_net_rate": 65.0,
- "base_price_list_rate": 0.0,
- "base_rate": 65.0,
- "base_rate_with_margin": 0.0,
- "batch_no": null,
- "brand": null,
- "conversion_factor": 1.0,
- "cost_center": "Main - _T",
- "customer_item_code": null,
- "deferred_revenue_account": null,
- "delivered_by_supplier": 0,
- "delivered_qty": 0.0,
- "delivery_note": null,
- "description": "",
- "discount_amount": 0.0,
- "discount_percentage": 0.0,
- "dn_detail": null,
- "enable_deferred_revenue": 0,
- "expense_account": null,
- "finance_book": null,
- "image": null,
- "income_account": "Sales - _T",
- "incoming_rate": 0.0,
- "is_fixed_asset": 0,
- "is_free_item": 0,
- "item_code": "",
- "item_group": null,
- "item_name": "Continental tyres",
- "item_tax_rate": "{\"VAT on Sales - _T\": 5.0}",
- "item_tax_template": null,
- "margin_rate_or_amount": 0.0,
- "margin_type": "",
- "net_amount": 65.0,
- "net_rate": 65.0,
- "page_break": 0,
- "parent": null,
- "parentfield": "items",
- "parenttype": "Sales Invoice",
- "price_list_rate": 0.0,
- "pricing_rules": null,
- "project": null,
- "qty": 1.0,
- "quality_inspection": null,
- "rate": 65.0,
- "rate_with_margin": 0.0,
- "sales_invoice_item": null,
- "sales_order": null,
- "serial_no": null,
- "service_end_date": null,
- "service_start_date": null,
- "service_stop_date": null,
- "so_detail": null,
- "stock_qty": 1.0,
- "stock_uom": null,
- "stock_uom_rate": 65.0,
- "target_warehouse": null,
- "total_weight": 0.0,
- "uom": "Nos",
- "warehouse": null,
- "weight_per_unit": 0.0,
- "weight_uom": null
- },
- {
- "actual_batch_qty": 0.0,
- "actual_qty": 0.0,
- "allow_zero_valuation_rate": 0,
- "amount": 560.0,
- "asset": null,
- "barcode": null,
- "base_amount": 560.0,
- "base_net_amount": 560.0,
- "base_net_rate": 70.0,
- "base_price_list_rate": 0.0,
- "base_rate": 70.0,
- "base_rate_with_margin": 0.0,
- "batch_no": null,
- "brand": null,
- "conversion_factor": 1.0,
- "cost_center": "Main - _T",
- "customer_item_code": null,
- "deferred_revenue_account": null,
- "delivered_by_supplier": 0,
- "delivered_qty": 0.0,
- "delivery_note": null,
- "description": "",
- "discount_amount": 0.0,
- "discount_percentage": 0.0,
- "dn_detail": null,
- "enable_deferred_revenue": 0,
- "expense_account": null,
- "finance_book": null,
- "image": null,
- "income_account": "Sales - _T",
- "incoming_rate": 0.0,
- "is_fixed_asset": 0,
- "is_free_item": 0,
- "item_code": null,
- "item_group": null,
- "item_name": "Toyo tyres",
- "item_tax_rate": "{\"VAT on Sales - _T\": 0.0}",
- "item_tax_template": null,
- "margin_rate_or_amount": 0.0,
- "margin_type": "",
- "net_amount": 560.0,
- "net_rate": 70.0,
- "page_break": 0,
- "parent": null,
- "parentfield": "items",
- "parenttype": "Sales Invoice",
- "price_list_rate": 0.0,
- "pricing_rules": null,
- "project": null,
- "qty": 8.0,
- "quality_inspection": null,
- "rate": 70.0,
- "rate_with_margin": 0.0,
- "sales_invoice_item": null,
- "sales_order": null,
- "serial_no": null,
- "service_end_date": null,
- "service_start_date": null,
- "service_stop_date": null,
- "so_detail": null,
- "stock_qty": 8.0,
- "stock_uom": null,
- "stock_uom_rate": 70.0,
- "target_warehouse": null,
- "total_weight": 0.0,
- "uom": "Nos",
- "warehouse": null,
- "weight_per_unit": 0.0,
- "weight_uom": null
- }
- ],
- "language": "en",
- "letter_head": null,
- "loyalty_amount": 0.0,
- "loyalty_points": 0,
- "loyalty_program": null,
- "loyalty_redemption_account": null,
- "loyalty_redemption_cost_center": null,
- "modified": "2021-02-16 05:18:59.755144",
- "name": null,
- "naming_series": "ACC-SINV-.YYYY.-",
- "net_total": 825.0,
- "other_charges_calculation": "\n\t
\n\t\t\n\t\t\t\n\t\t\t\t\n\t\t\t\t\t\n\t\t\t\t\t\t| Item | \n\t\t\t\t\t\n\t\t\t\t\n\t\t\t\t\t\n\t\t\t\t\t\tTaxable Amount | \n\t\t\t\t\t\n\t\t\t\t\n\t\t\t\t\t\n\t\t\t\t\t\tVAT on Sales | \n\t\t\t\t\t\n\t\t\t\t\n\t\t\t
\n\t\t\n\t\t\n\t\t\t\n\t\t\t\t\n\t\t\t\t\t| Dunlop tyres | \n\t\t\t\t\t\n\t\t\t\t\t\t\n\t\t\t\t\t\t\t\u00a3 200.00\n\t\t\t\t\t\t\n\t\t\t\t\t | \n\t\t\t\t\t\n\t\t\t\t\t\t\n\t\t\t\t\t\t\n\t\t\t\t\t\t\t\n\t\t\t\t\t\t\t\t\n\t\t\t\t\t\t\t\t\t(20.0%)\n\t\t\t\t\t\t\t\t\n\t\t\t\t\t\t\t\t\n\t\t\t\t\t\t\t\t\t\u00a3 40.00\n\t\t\t\t\t\t\t\t\n\t\t\t\t\t\t\t | \n\t\t\t\t\t\t\n\t\t\t\t\t\n\t\t\t\t
\n\t\t\t\n\t\t\t\t\n\t\t\t\t\t| Continental tyres | \n\t\t\t\t\t\n\t\t\t\t\t\t\n\t\t\t\t\t\t\t\u00a3 65.00\n\t\t\t\t\t\t\n\t\t\t\t\t | \n\t\t\t\t\t\n\t\t\t\t\t\t\n\t\t\t\t\t\t\n\t\t\t\t\t\t\t\n\t\t\t\t\t\t\t\t\n\t\t\t\t\t\t\t\t\t(5.0%)\n\t\t\t\t\t\t\t\t\n\t\t\t\t\t\t\t\t\n\t\t\t\t\t\t\t\t\t\u00a3 3.25\n\t\t\t\t\t\t\t\t\n\t\t\t\t\t\t\t | \n\t\t\t\t\t\t\n\t\t\t\t\t\n\t\t\t\t
\n\t\t\t\n\t\t\t\t\n\t\t\t\t\t| Toyo tyres | \n\t\t\t\t\t\n\t\t\t\t\t\t\n\t\t\t\t\t\t\t\u00a3 560.00\n\t\t\t\t\t\t\n\t\t\t\t\t | \n\t\t\t\t\t\n\t\t\t\t\t\t\n\t\t\t\t\t\t\n\t\t\t\t\t\t\t\n\t\t\t\t\t\t\t\t\n\t\t\t\t\t\t\t\t\t(0.0%)\n\t\t\t\t\t\t\t\t\n\t\t\t\t\t\t\t\t\n\t\t\t\t\t\t\t\t\t\u00a3 0.00\n\t\t\t\t\t\t\t\t\n\t\t\t\t\t\t\t | \n\t\t\t\t\t\t\n\t\t\t\t\t\n\t\t\t\t
\n\t\t\t\n\t\t\n\t
\n
",
- "outstanding_amount": 868.25,
- "packed_items": [],
- "paid_amount": 0.0,
- "parent": null,
- "parentfield": null,
- "parenttype": null,
- "party_account_currency": "GBP",
- "payment_schedule": [],
- "payment_terms_template": null,
- "payments": [],
- "plc_conversion_rate": 1.0,
- "po_date": null,
- "po_no": "",
- "pos_profile": null,
- "posting_date": null,
- "posting_time": "5:19:02.994077",
- "price_list_currency": "GBP",
- "pricing_rules": [],
- "project": null,
- "redeem_loyalty_points": 0,
- "remarks": "No Remarks",
- "represents_company": "",
- "return_against": null,
- "rounded_total": 868.25,
- "rounding_adjustment": 0.0,
- "sales_partner": null,
- "sales_team": [],
- "scan_barcode": null,
- "select_print_heading": null,
- "selling_price_list": "Standard Selling",
- "set_posting_time": 0,
- "set_target_warehouse": null,
- "set_warehouse": null,
- "shipping_address": null,
- "shipping_address_name": "",
- "shipping_rule": null,
- "source": null,
- "status": "Overdue",
- "tax_category": "",
- "tax_id": null,
- "taxes": [
- {
- "account_head": "VAT on Sales - _T",
- "base_tax_amount": 43.25,
- "base_tax_amount_after_discount_amount": 43.25,
- "base_total": 868.25,
- "charge_type": "On Net Total",
- "cost_center": "Main - _T",
- "description": "VAT on Sales",
- "included_in_print_rate": 0,
- "item_wise_tax_detail": "{\"Dunlop tyres\":[20.0,40.0],\"Continental tyres\":[5.0,3.25],\"Toyo tyres\":[0.0,0.0]}",
- "parent": null,
- "parentfield": "taxes",
- "parenttype": "Sales Invoice",
- "rate": 0.0,
- "row_id": null,
- "tax_amount": 43.25,
- "tax_amount_after_discount_amount": 43.25,
- "total": 868.25
- }
- ],
- "taxes_and_charges": null,
- "tc_name": null,
- "terms": null,
- "territory": "All Territories",
- "timesheets": [],
- "title": "_Sales Invoice",
- "to_date": null,
- "total": 825.0,
- "total_advance": 0.0,
- "total_billing_amount": 0.0,
- "total_commission": 0.0,
- "total_net_weight": 0.0,
- "total_qty": 13.0,
- "total_taxes_and_charges": 43.25,
- "unrealized_profit_loss_account": null,
- "update_billed_amount_in_sales_order": 0,
- "update_stock": 0,
- "write_off_account": null,
- "write_off_amount": 0.0,
- "write_off_cost_center": null,
- "write_off_outstanding_amount_automatically": 0
- }
-]
diff --git a/erpnext/accounts/report/tax_detail/test_tax_detail.py b/erpnext/accounts/report/tax_detail/test_tax_detail.py
deleted file mode 100644
index 55ae32a2c6a..00000000000
--- a/erpnext/accounts/report/tax_detail/test_tax_detail.py
+++ /dev/null
@@ -1,220 +0,0 @@
-import datetime
-import json
-import os
-import unittest
-
-import frappe
-from frappe.utils import (
- add_to_date,
- get_first_day,
- get_last_day,
- get_year_ending,
- get_year_start,
- getdate,
-)
-
-from .tax_detail import filter_match, save_custom_report
-
-
-class TestTaxDetail(unittest.TestCase):
- def load_testdocs(self):
- from erpnext.accounts.utils import FiscalYearError, get_fiscal_year
-
- datapath, _ = os.path.splitext(os.path.realpath(__file__))
- with open(datapath + ".json") as fp:
- docs = json.load(fp)
-
- now = getdate()
- self.from_date = get_first_day(now)
- self.to_date = get_last_day(now)
-
- try:
- get_fiscal_year(now, company="_T")
- except FiscalYearError:
- docs = [
- {
- "companies": [
- {
- "company": "_T",
- "parent": "_Test Fiscal",
- "parentfield": "companies",
- "parenttype": "Fiscal Year",
- }
- ],
- "doctype": "Fiscal Year",
- "year": "_Test Fiscal",
- "year_end_date": get_year_ending(now),
- "year_start_date": get_year_start(now),
- },
- *docs,
- ]
-
- docs = [
- {
- "abbr": "_T",
- "company_name": "_T",
- "country": "United Kingdom",
- "default_currency": "GBP",
- "doctype": "Company",
- "name": "_T",
- },
- *docs,
- ]
-
- for doc in docs:
- try:
- db_doc = frappe.get_doc(doc)
- if "Invoice" in db_doc.doctype:
- db_doc.due_date = add_to_date(now, days=1)
- db_doc.insert()
- # Create GL Entries:
- db_doc.submit()
- else:
- db_doc.insert(ignore_if_duplicate=True)
- except frappe.exceptions.DuplicateEntryError:
- pass
-
- def load_defcols(self):
- self.company = frappe.get_doc("Company", "_T")
- custom_report = frappe.get_doc("Report", "Tax Detail")
- self.default_columns, _ = custom_report.run_query_report(
- filters={
- "from_date": "2021-03-01",
- "to_date": "2021-03-31",
- "company": self.company.name,
- "mode": "run",
- "report_name": "Tax Detail",
- },
- user=frappe.session.user,
- )
-
- def rm_testdocs(self):
- "Remove the Company and all data"
- from erpnext.setup.doctype.company.company import create_transaction_deletion_request
-
- create_transaction_deletion_request(self.company.name)
-
- def test_report(self):
- self.load_testdocs()
- self.load_defcols()
- report_name = save_custom_report(
- "Tax Detail",
- "_Test Tax Detail",
- json.dumps(
- {
- "columns": self.default_columns,
- "sections": {
- "Box1": {"Filter0": {"type": "filter", "filters": {"4": "VAT on Sales"}}},
- "Box2": {"Filter0": {"type": "filter", "filters": {"4": "Acquisition"}}},
- "Box3": {"Box1": {"type": "section"}, "Box2": {"type": "section"}},
- "Box4": {"Filter0": {"type": "filter", "filters": {"4": "VAT on Purchases"}}},
- "Box5": {"Box3": {"type": "section"}, "Box4": {"type": "section"}},
- "Box6": {"Filter0": {"type": "filter", "filters": {"3": "!=Tax", "4": "Sales"}}},
- "Box7": {"Filter0": {"type": "filter", "filters": {"2": "Expense", "3": "!=Tax"}}},
- "Box8": {
- "Filter0": {"type": "filter", "filters": {"3": "!=Tax", "4": "Sales", "12": "EU"}}
- },
- "Box9": {
- "Filter0": {
- "type": "filter",
- "filters": {"2": "Expense", "3": "!=Tax", "12": "EU"},
- }
- },
- },
- "show_detail": 1,
- }
- ),
- )
- data = frappe.desk.query_report.run(
- report_name,
- filters={
- "from_date": self.from_date,
- "to_date": self.to_date,
- "company": self.company.name,
- "mode": "run",
- "report_name": report_name,
- },
- user=frappe.session.user,
- )
-
- self.assertListEqual(data.get("columns"), self.default_columns)
- expected = (
- ("Box1", 43.25),
- ("Box2", 0.0),
- ("Box3", 43.25),
- ("Box4", -85.28),
- ("Box5", -42.03),
- ("Box6", 825.0),
- ("Box7", -426.40),
- ("Box8", 0.0),
- ("Box9", 0.0),
- )
- exrow = iter(expected)
- for row in data.get("result"):
- if row.get("voucher_no") and not row.get("posting_date"):
- label, value = next(exrow)
- self.assertDictEqual(row, {"voucher_no": label, "amount": value})
- self.assertListEqual(
- data.get("report_summary"),
- [{"label": label, "datatype": "Currency", "value": value} for label, value in expected],
- )
-
- self.rm_testdocs()
-
- def test_filter_match(self):
- # None - treated as -inf number except range
- self.assertTrue(filter_match(None, "!="))
- self.assertTrue(filter_match(None, "<"))
- self.assertTrue(filter_match(None, "3.4"))
- self.assertFalse(filter_match(None, " <"))
- self.assertFalse(filter_match(None, "ew"))
- self.assertFalse(filter_match(None, " "))
- self.assertFalse(filter_match(None, " f :"))
-
- # Numbers
- self.assertTrue(filter_match(3.4, "3.4"))
- self.assertTrue(filter_match(3.4, ".4"))
- self.assertTrue(filter_match(3.4, "3"))
- self.assertTrue(filter_match(-3.4, "< -3"))
- self.assertTrue(filter_match(-3.4, "> -4"))
- self.assertTrue(filter_match(3.4, "= 3.4 "))
- self.assertTrue(filter_match(3.4, "!=4.5"))
- self.assertTrue(filter_match(3.4, " 3 : 4 "))
- self.assertTrue(filter_match(0.0, " : "))
- self.assertFalse(filter_match(3.4, "=4.5"))
- self.assertFalse(filter_match(3.4, " = 3.4 "))
- self.assertFalse(filter_match(3.4, "!=3.4"))
- self.assertFalse(filter_match(3.4, ">6"))
- self.assertFalse(filter_match(3.4, "<-4.5"))
- self.assertFalse(filter_match(3.4, "4.5"))
- self.assertFalse(filter_match(3.4, "5:9"))
-
- # Strings
- self.assertTrue(filter_match("ACC-SINV-2021-00001", "SINV"))
- self.assertTrue(filter_match("ACC-SINV-2021-00001", "sinv"))
- self.assertTrue(filter_match("ACC-SINV-2021-00001", "-2021"))
- self.assertTrue(filter_match(" ACC-SINV-2021-00001", " acc"))
- self.assertTrue(filter_match("ACC-SINV-2021-00001", "=2021"))
- self.assertTrue(filter_match("ACC-SINV-2021-00001", "!=zz"))
- self.assertTrue(filter_match("ACC-SINV-2021-00001", "< zzz "))
- self.assertTrue(filter_match("ACC-SINV-2021-00001", " : sinv "))
- self.assertFalse(filter_match("ACC-SINV-2021-00001", " sinv :"))
- self.assertFalse(filter_match("ACC-SINV-2021-00001", " acc"))
- self.assertFalse(filter_match("ACC-SINV-2021-00001", "= 2021 "))
- self.assertFalse(filter_match("ACC-SINV-2021-00001", "!=sinv"))
- self.assertFalse(filter_match("ACC-SINV-2021-00001", " >"))
- self.assertFalse(filter_match("ACC-SINV-2021-00001", ">aa"))
- self.assertFalse(filter_match("ACC-SINV-2021-00001", " <"))
- self.assertFalse(filter_match("ACC-SINV-2021-00001", "< "))
- self.assertFalse(filter_match("ACC-SINV-2021-00001", " ="))
- self.assertFalse(filter_match("ACC-SINV-2021-00001", "="))
-
- # Date - always match
- self.assertTrue(filter_match(datetime.date(2021, 3, 19), " kdsjkldfs "))
diff --git a/erpnext/accounts/test/test_reports.py b/erpnext/accounts/test/test_reports.py
index 9496a1aa664..c2e10f8fd47 100644
--- a/erpnext/accounts/test/test_reports.py
+++ b/erpnext/accounts/test/test_reports.py
@@ -29,10 +29,6 @@ REPORT_FILTER_TEST_CASES: list[tuple[ReportName, ReportFilters]] = [
("Sales Register", {}),
("Sales Register", {"item_group": "All Item Groups"}),
("Purchase Register", {}),
- (
- "Tax Detail",
- {"mode": "run", "report_name": "Tax Detail"},
- ),
]
OPTIONAL_FILTERS = {}