Merge pull request #32347 from s-aga-r/refactor/stock/report/incorrect-stock-value

refactor: rewrite `Incorrect Stock Value Report` queries in `QB`
This commit is contained in:
Sagar Sharma 2022-09-26 17:09:40 +05:30 committed by GitHub
commit a80e8726e7
No known key found for this signature in database
GPG Key ID: 4AEE18F83AFDEB23

View File

@ -4,6 +4,8 @@
import frappe import frappe
from frappe import _ from frappe import _
from frappe.query_builder import Field
from frappe.query_builder.functions import Min, Timestamp
from frappe.utils import add_days, getdate, today from frappe.utils import add_days, getdate, today
import erpnext import erpnext
@ -28,7 +30,7 @@ def execute(filters=None):
def get_unsync_date(filters): def get_unsync_date(filters):
date = filters.from_date date = filters.from_date
if not date: if not date:
date = frappe.db.sql(""" SELECT min(posting_date) from `tabStock Ledger Entry`""") date = (frappe.qb.from_("Stock Ledger Entry").select(Min(Field("posting_date")))).run()
date = date[0][0] date = date[0][0]
if not date: if not date:
@ -54,22 +56,27 @@ def get_data(report_filters):
result = [] result = []
voucher_wise_dict = {} voucher_wise_dict = {}
data = frappe.db.sql( sle = frappe.qb.DocType("Stock Ledger Entry")
""" data = (
SELECT frappe.qb.from_(sle)
name, posting_date, posting_time, voucher_type, voucher_no, .select(
stock_value_difference, stock_value, warehouse, item_code sle.name,
FROM sle.posting_date,
`tabStock Ledger Entry` sle.posting_time,
WHERE sle.voucher_type,
posting_date sle.voucher_no,
= %s and company = %s sle.stock_value_difference,
and is_cancelled = 0 sle.stock_value,
ORDER BY timestamp(posting_date, posting_time) asc, creation asc sle.warehouse,
""", sle.item_code,
(from_date, report_filters.company), )
as_dict=1, .where(
) (sle.posting_date == from_date)
& (sle.company == report_filters.company)
& (sle.is_cancelled == 0)
)
.orderby(Timestamp(sle.posting_date, sle.posting_time), sle.creation)
).run(as_dict=True)
for d in data: for d in data:
voucher_wise_dict.setdefault((d.item_code, d.warehouse), []).append(d) voucher_wise_dict.setdefault((d.item_code, d.warehouse), []).append(d)