From a87e3fcb7c5ddd476fa492b5c22f18f2ba79556e Mon Sep 17 00:00:00 2001 From: Deepesh Garg Date: Sun, 28 Feb 2021 23:28:25 +0530 Subject: [PATCH] fix: TDS report cleanup --- .../doctype/payment_entry/payment_entry.py | 5 +- .../purchase_invoice/purchase_invoice.json | 21 +++++--- .../tds_payable_monthly.js | 19 +++----- .../tds_payable_monthly.py | 48 +++++++------------ 4 files changed, 42 insertions(+), 51 deletions(-) diff --git a/erpnext/accounts/doctype/payment_entry/payment_entry.py b/erpnext/accounts/doctype/payment_entry/payment_entry.py index 33eb6f2f26..c0feb44a7f 100644 --- a/erpnext/accounts/doctype/payment_entry/payment_entry.py +++ b/erpnext/accounts/doctype/payment_entry/payment_entry.py @@ -967,7 +967,7 @@ def split_invoices_based_on_payment_terms(outstanding_invoices): outstanding_invoices.pop(idx - 1) outstanding_invoices += invoice_ref_based_on_payment_terms[idx] - + return outstanding_invoices def get_orders_to_be_billed(posting_date, party_type, party, @@ -1411,6 +1411,9 @@ def get_payment_entry(dt, dn, party_amount=None, bank_account=None, bank_amount= }) pe.set_difference_amount() + if doc.doctype == 'Purchase Order' and doc.apply_tds: + pe.apply_tax_withholding_amount = 1 + return pe def get_bank_cash_account(doc, bank_account): diff --git a/erpnext/accounts/doctype/purchase_invoice/purchase_invoice.json b/erpnext/accounts/doctype/purchase_invoice/purchase_invoice.json index 36450a9255..7fef60cde1 100644 --- a/erpnext/accounts/doctype/purchase_invoice/purchase_invoice.json +++ b/erpnext/accounts/doctype/purchase_invoice/purchase_invoice.json @@ -127,7 +127,6 @@ "write_off_cost_center", "advances_section", "allocate_advances_automatically", - "adjust_advance_taxes", "get_advances", "advances", "payment_schedule_section", @@ -1492,7 +1491,9 @@ "in_standard_filter": 1, "label": "Status", "options": "\nDraft\nReturn\nDebit Note Issued\nSubmitted\nPaid\nUnpaid\nOverdue\nCancelled\nInternal Transfer", - "print_hide": 1 + "print_hide": 1, + "show_days": 1, + "show_seconds": 1 }, { "fieldname": "inter_company_invoice_reference", @@ -1501,7 +1502,9 @@ "no_copy": 1, "options": "Sales Invoice", "print_hide": 1, - "read_only": 1 + "read_only": 1, + "show_days": 1, + "show_seconds": 1 }, { "fieldname": "remarks", @@ -1633,7 +1636,9 @@ "fieldname": "unrealized_profit_loss_account", "fieldtype": "Link", "label": "Unrealized Profit / Loss Account", - "options": "Account" + "options": "Account", + "show_days": 1, + "show_seconds": 1 }, { "depends_on": "eval:doc.is_internal_supplier", @@ -1642,7 +1647,9 @@ "fieldname": "represents_company", "fieldtype": "Link", "label": "Represents Company", - "options": "Company" + "options": "Company", + "show_days": 1, + "show_seconds": 1 }, { "depends_on": "eval:doc.update_stock && doc.is_internal_supplier", @@ -1654,6 +1661,8 @@ "options": "Warehouse", "print_hide": 1, "print_width": "50px", + "show_days": 1, + "show_seconds": 1, "width": "50px" }, { @@ -1681,7 +1690,7 @@ "idx": 204, "is_submittable": 1, "links": [], - "modified": "2020-10-27 21:21:22.647349", + "modified": "2021-02-28 22:33:15.728392", "modified_by": "Administrator", "module": "Accounts", "name": "Purchase Invoice", diff --git a/erpnext/accounts/report/tds_payable_monthly/tds_payable_monthly.js b/erpnext/accounts/report/tds_payable_monthly/tds_payable_monthly.js index 011c29621a..72de318a48 100644 --- a/erpnext/accounts/report/tds_payable_monthly/tds_payable_monthly.js +++ b/erpnext/accounts/report/tds_payable_monthly/tds_payable_monthly.js @@ -70,13 +70,13 @@ frappe.query_reports["TDS Payable Monthly"] = { let supplier = frappe.query_report.get_filter_value('supplier'); if(!supplier) return; // return if no supplier selected - // filter order based on selected supplier - let orders = []; - frappe.query_report.order_data.map(d => { + // filter invoices based on selected supplier + let invoices = []; + frappe.query_report.invoice_data.map(d => { if(d.supplier==supplier) - orders.push(d.name) + invoices.push(d.name) }); - frappe.query_report.orders = orders; + frappe.query_report.invoices = invoices; frappe.query_report.refresh(); } }, @@ -104,21 +104,14 @@ frappe.query_reports["TDS Payable Monthly"] = { "method": "erpnext.accounts.report.tds_payable_monthly.tds_payable_monthly.get_tds_invoices_and_orders", callback: function(r) { let invoices = []; - let orders = []; - r.message.invoices.map(d => { + r.message.map(d => { invoices.push(d.name); }); - r.message.orders.map(d => { - orders.push(d.name); - }); - report["invoice_data"] = r.message.invoices; report["invoices"] = invoices; - report["order_data"] = r.message.orders; - report["invoices"] = orders; } }); } diff --git a/erpnext/accounts/report/tds_payable_monthly/tds_payable_monthly.py b/erpnext/accounts/report/tds_payable_monthly/tds_payable_monthly.py index 7ce61f4a28..5101e3d752 100644 --- a/erpnext/accounts/report/tds_payable_monthly/tds_payable_monthly.py +++ b/erpnext/accounts/report/tds_payable_monthly/tds_payable_monthly.py @@ -8,7 +8,6 @@ from frappe.utils import getdate def execute(filters=None): filters["invoices"] = frappe.cache().hget("invoices", frappe.session.user) - filters["orders"] = frappe.cache().hget("orders", frappe.session.user) validate_filters(filters) set_filters(filters) @@ -16,7 +15,7 @@ def execute(filters=None): payment_entries = get_payment_entires(filters) columns = get_columns(filters) - if not (filters.get("invoices") and filters.get('orders')): + if not filters.get("invoices"): return columns, [] res = get_result(filters, payment_entries) @@ -30,13 +29,9 @@ def validate_filters(filters): def set_filters(filters): invoices = [] - orders = [] if not filters.get("invoices"): - filters["invoices"] = get_tds_invoices_and_orders()['invoices'] - - if not filters.get("orders"): - filters["orders"] = get_tds_invoices_and_orders()['orders'] + filters["invoices"] = get_tds_invoices_and_orders() if filters.supplier and filters.purchase_invoice: for d in filters["invoices"]: @@ -50,24 +45,25 @@ def set_filters(filters): for d in filters["invoices"]: if d.name == filters.purchase_invoice: invoices.append(d) - - if filters.supplier and filters.purchase_order: - for d in filters.get("orders"): + elif filters.supplier and filters.purchase_order: + for d in filters.get("invoices"): if d.name == filters.purchase_order and d.supplier == filters.supplier: - orders.append(d) + invoices.append(d) elif filters.supplier and not filters.purchase_order: - for d in filters.get("orders"): + for d in filters.get("invoices"): if d.supplier == filters.supplier: - orders.append(d) + invoices.append(d) elif filters.purchase_order and not filters.supplier: for d in filters.get("invoices"): if d.name == filters.purchase_order: - orders.append(d) + print("$#$#$$#") + invoices.append(d) filters["invoices"] = invoices if invoices else filters["invoices"] - filters["orders"] = orders if orders else filters["orders"] filters.naming_series = frappe.db.get_single_value('Buying Settings', 'supp_master_name') + #print(filters.get('invoices')) + def get_result(filters, payment_entries): supplier_map, tds_docs = get_supplier_map(filters, payment_entries) documents = [d.get('name') for d in filters.get('invoices')] + [d.get('name') for d in payment_entries] @@ -115,7 +111,7 @@ def get_supplier_map(filters, payment_entries): # pre-fetch all distinct applicable tds docs supplier_map, tds_docs = {}, {} pan = "pan" if frappe.db.has_column("Supplier", "pan") else "tax_id" - supplier_list = [d.supplier for d in filters["invoices"]] + [d.supplier for d in filters["orders"]] + supplier_list = [d.supplier for d in filters["invoices"]] supplier_detail = frappe.db.get_all('Supplier', {"name": ["in", supplier_list]}, @@ -125,10 +121,6 @@ def get_supplier_map(filters, payment_entries): supplier_map[d.get("name")] = [k for k in supplier_detail if k.name == d.get("supplier")][0] - for d in filters["orders"]: - supplier_map[d.get("name")] = [k for k in supplier_detail - if k.name == d.get("supplier")][0] - for d in payment_entries: supplier_map[d.get("name")] = [k for k in supplier_detail if k.name == d.get("supplier")][0] @@ -248,12 +240,10 @@ def get_payment_entires(filters): 'apply_tax_withholding_amount': 1 } - if filters.get('purchase_order') or filters.get('purchase_invoice'): + if filters.get('purchase_invoice') or filters.get('purchase_order'): parent = frappe.db.get_all('Payment Entry Reference', - { - 'reference_name': ('in', [d.get('name') for d in filters.get('orders')] + - [d.get('name') for d in filters.get('invoices')]) - }, ['parent']) + { 'reference_name': ('in', [d.get('name') for d in filters.get('invoices')])}, ['parent']) + filter_dict.update({'name': ('in', [d.get('parent') for d in parent])}) payment_entries = frappe.get_all('Payment Entry', fields=['name', 'party_name as supplier'], @@ -273,13 +263,9 @@ def get_tds_invoices_and_orders(): orders = frappe.db.get_list("Purchase Order", {"supplier": ["in", suppliers]}, ["name", "supplier"]) + invoices = invoices + orders invoices = [d for d in invoices if d.supplier] - orders = [d for d in orders if d.supplier] frappe.cache().hset("invoices", frappe.session.user, invoices) - frappe.cache().hset("orders", frappe.session.user, invoices) - return { - 'invoices': invoices, - 'orders': orders - } + return invoices