AR/AP report cleanup
This commit is contained in:
parent
99be941e7b
commit
7dbcee87af
@ -8,7 +8,6 @@ from erpnext.accounts.report.accounts_receivable.accounts_receivable import Rece
|
|||||||
def execute(filters=None):
|
def execute(filters=None):
|
||||||
args = {
|
args = {
|
||||||
"party_type": "Supplier",
|
"party_type": "Supplier",
|
||||||
"dr_or_cr": "credit",
|
|
||||||
"naming_by": ["Buying Settings", "supp_master_name"],
|
"naming_by": ["Buying Settings", "supp_master_name"],
|
||||||
}
|
}
|
||||||
return ReceivablePayableReport(filters).run(args)
|
return ReceivablePayableReport(filters).run(args)
|
||||||
|
@ -33,8 +33,8 @@ class ReceivablePayableReport(object):
|
|||||||
columns += [_("Invoiced Amount") + ":Currency:100", _("Paid Amount") + ":Currency:100",
|
columns += [_("Invoiced Amount") + ":Currency:100", _("Paid Amount") + ":Currency:100",
|
||||||
_("Outstanding Amount") + ":Currency:100", _("Age") + ":Int:50",
|
_("Outstanding Amount") + ":Currency:100", _("Age") + ":Int:50",
|
||||||
"0-" + self.filters.range1 + ":Currency:100",
|
"0-" + self.filters.range1 + ":Currency:100",
|
||||||
self.filters.range1 + "-" + self.filters.range2 + ":Currency:100",
|
self.filters.range1 + "-" + self.filters.range2 + ":Currency:100",
|
||||||
self.filters.range2 + "-" + self.filters.range3 + ":Currency:100",
|
self.filters.range2 + "-" + self.filters.range3 + ":Currency:100",
|
||||||
self.filters.range3 + _("-Above") + ":Currency:100"
|
self.filters.range3 + _("-Above") + ":Currency:100"
|
||||||
]
|
]
|
||||||
|
|
||||||
@ -49,36 +49,47 @@ class ReceivablePayableReport(object):
|
|||||||
def get_data(self, party_naming_by, args):
|
def get_data(self, party_naming_by, args):
|
||||||
from erpnext.accounts.utils import get_currency_precision
|
from erpnext.accounts.utils import get_currency_precision
|
||||||
currency_precision = get_currency_precision() or 2
|
currency_precision = get_currency_precision() or 2
|
||||||
data = []
|
|
||||||
dr_or_cr = "debit" if args.get("party_type") == "Customer" else "credit"
|
dr_or_cr = "debit" if args.get("party_type") == "Customer" else "credit"
|
||||||
|
|
||||||
voucher_details = self.get_voucher_details()
|
voucher_details = self.get_voucher_details()
|
||||||
|
|
||||||
future_vouchers = self.get_entries_after(self.filters.report_date, args.get("party_type"))
|
future_vouchers = self.get_entries_after(self.filters.report_date, args.get("party_type"))
|
||||||
|
|
||||||
|
data = []
|
||||||
for gle in self.get_entries_till(self.filters.report_date, args.get("party_type")):
|
for gle in self.get_entries_till(self.filters.report_date, args.get("party_type")):
|
||||||
if self.is_receivable_or_payable(gle, dr_or_cr, future_vouchers):
|
if self.is_receivable_or_payable(gle, dr_or_cr, future_vouchers):
|
||||||
outstanding_amount = self.get_outstanding_amount(gle, self.filters.report_date, dr_or_cr)
|
outstanding_amount = self.get_outstanding_amount(gle, self.filters.report_date, dr_or_cr)
|
||||||
if abs(outstanding_amount) > 0.1/10**currency_precision:
|
if abs(outstanding_amount) > 0.1/10**currency_precision:
|
||||||
due_date = voucher_details.get("voucher_no", {}).get("due_date", "")
|
|
||||||
invoiced_amount = gle.get(dr_or_cr) if (gle.get(dr_or_cr) > 0) else 0
|
|
||||||
paid_amt = invoiced_amount - outstanding_amount
|
|
||||||
entry_date = due_date if self.filters.ageing_based_on == "Due Date" else gle.posting_date
|
|
||||||
row = [gle.posting_date, gle.party]
|
row = [gle.posting_date, gle.party]
|
||||||
|
|
||||||
|
# customer / supplier name
|
||||||
if party_naming_by == "Naming Series":
|
if party_naming_by == "Naming Series":
|
||||||
row += [self.get_party_name(gle.party_type, gle.party)]
|
row += [self.get_party_name(gle.party_type, gle.party)]
|
||||||
|
|
||||||
|
# get due date
|
||||||
|
due_date = voucher_details.get(gle.voucher_no, {}).get("due_date", "")
|
||||||
|
|
||||||
row += [gle.voucher_type, gle.voucher_no, due_date]
|
row += [gle.voucher_type, gle.voucher_no, due_date]
|
||||||
|
|
||||||
|
# get supplier bill details
|
||||||
if args.get("party_type") == "Supplier":
|
if args.get("party_type") == "Supplier":
|
||||||
row += [
|
row += [
|
||||||
voucher_details.get("voucher_no", {}).get("bill_no", ""),
|
voucher_details.get(gle.voucher_no, {}).get("bill_no", ""),
|
||||||
voucher_details.get("voucher_no", {}).get("bill_date", "")
|
voucher_details.get(gle.voucher_no, {}).get("bill_date", "")
|
||||||
]
|
]
|
||||||
|
|
||||||
row += [invoiced_amount, paid_amt, outstanding_amount] + \
|
# invoiced and paid amounts
|
||||||
get_ageing_data(cint(self.filters.range1), cint(self.filters.range2), \
|
invoiced_amount = gle.get(dr_or_cr) if (gle.get(dr_or_cr) > 0) else 0
|
||||||
|
paid_amt = invoiced_amount - outstanding_amount
|
||||||
|
row += [invoiced_amount, paid_amt, outstanding_amount]
|
||||||
|
|
||||||
|
# ageing data
|
||||||
|
entry_date = due_date if self.filters.ageing_based_on == "Due Date" else gle.posting_date
|
||||||
|
row += get_ageing_data(cint(self.filters.range1), cint(self.filters.range2),
|
||||||
cint(self.filters.range3), self.age_as_on, entry_date, outstanding_amount)
|
cint(self.filters.range3), self.age_as_on, entry_date, outstanding_amount)
|
||||||
|
|
||||||
|
# customer territory / supplier type
|
||||||
if args.get("party_type") == "Customer":
|
if args.get("party_type") == "Customer":
|
||||||
row += [self.get_territory(gle.party), gle.remarks]
|
row += [self.get_territory(gle.party), gle.remarks]
|
||||||
if args.get("party_type") == "Supplier":
|
if args.get("party_type") == "Supplier":
|
||||||
@ -199,7 +210,6 @@ class ReceivablePayableReport(object):
|
|||||||
def execute(filters=None):
|
def execute(filters=None):
|
||||||
args = {
|
args = {
|
||||||
"party_type": "Customer",
|
"party_type": "Customer",
|
||||||
# "dr_or_cr": "debit",
|
|
||||||
"naming_by": ["Selling Settings", "cust_master_name"],
|
"naming_by": ["Selling Settings", "cust_master_name"],
|
||||||
}
|
}
|
||||||
return ReceivablePayableReport(filters).run(args)
|
return ReceivablePayableReport(filters).run(args)
|
||||||
|
@ -276,6 +276,12 @@ def get_data():
|
|||||||
"name": "Pending SO Items For Purchase Request",
|
"name": "Pending SO Items For Purchase Request",
|
||||||
"doctype": "Sales Order"
|
"doctype": "Sales Order"
|
||||||
},
|
},
|
||||||
|
{
|
||||||
|
"type": "report",
|
||||||
|
"is_query_report": True,
|
||||||
|
"name": "Customer Credit Balance",
|
||||||
|
"doctype": "Customer"
|
||||||
|
},
|
||||||
]
|
]
|
||||||
},
|
},
|
||||||
]
|
]
|
||||||
|
Loading…
x
Reference in New Issue
Block a user