refactor: filter only immediate upcoming payment term for each SO (#33923)
* fix: ignore closed or 'on hold' orders * refactor: filter immediate upcoming term --------- Co-authored-by: Deepesh Garg <deepeshgarg6@gmail.com>
This commit is contained in:
parent
e5a2b15fba
commit
192a3395a5
@ -103,6 +103,11 @@ function get_filters() {
|
||||
return options
|
||||
}
|
||||
},
|
||||
{
|
||||
"fieldname":"only_immediate_upcoming_term",
|
||||
"label": __("Show only the Immediate Upcoming Term"),
|
||||
"fieldtype": "Check",
|
||||
},
|
||||
]
|
||||
return filters;
|
||||
}
|
||||
|
@ -4,6 +4,7 @@
|
||||
import frappe
|
||||
from frappe import _, qb, query_builder
|
||||
from frappe.query_builder import Criterion, functions
|
||||
from frappe.utils.dateutils import getdate
|
||||
|
||||
|
||||
def get_columns():
|
||||
@ -208,6 +209,7 @@ def get_so_with_invoices(filters):
|
||||
)
|
||||
.where(
|
||||
(so.docstatus == 1)
|
||||
& (so.status.isin(["To Deliver and Bill", "To Bill"]))
|
||||
& (so.payment_terms_template != "NULL")
|
||||
& (so.company == conditions.company)
|
||||
& (so.transaction_date[conditions.start_date : conditions.end_date])
|
||||
@ -291,6 +293,18 @@ def filter_on_calculated_status(filters, sales_orders):
|
||||
return sales_orders
|
||||
|
||||
|
||||
def filter_for_immediate_upcoming_term(filters, sales_orders):
|
||||
if filters.only_immediate_upcoming_term and sales_orders:
|
||||
immediate_term_found = set()
|
||||
filtered_data = []
|
||||
for order in sales_orders:
|
||||
if order.name not in immediate_term_found and order.due_date > getdate():
|
||||
filtered_data.append(order)
|
||||
immediate_term_found.add(order.name)
|
||||
return filtered_data
|
||||
return sales_orders
|
||||
|
||||
|
||||
def execute(filters=None):
|
||||
columns = get_columns()
|
||||
sales_orders, so_invoices = get_so_with_invoices(filters)
|
||||
@ -298,6 +312,8 @@ def execute(filters=None):
|
||||
|
||||
sales_orders = filter_on_calculated_status(filters, sales_orders)
|
||||
|
||||
sales_orders = filter_for_immediate_upcoming_term(filters, sales_orders)
|
||||
|
||||
prepare_chart(sales_orders)
|
||||
|
||||
data = sales_orders
|
||||
|
Loading…
Reference in New Issue
Block a user