fix: posting_date to posting_datetime in stock related queries
(cherry picked from commit e61ab48145)
# Conflicts:
# erpnext/stock/report/batch_wise_balance_history/batch_wise_balance_history.py
# erpnext/stock/report/stock_ledger/stock_ledger.py
This commit is contained in:
committed by
Mergify
parent
39e82dfbc1
commit
bf3d68e76d
@@ -134,7 +134,65 @@ def get_stock_ledger_entries(filters):
|
||||
if filters.get(field):
|
||||
query = query.where(sle[field] == filters.get(field))
|
||||
|
||||
<<<<<<< HEAD
|
||||
return query
|
||||
=======
|
||||
if filters.start_from:
|
||||
query = query.where(sle.posting_datetime > get_datetime(filters.start_from))
|
||||
|
||||
return query.run(as_dict=True) or []
|
||||
|
||||
|
||||
def get_stock_ledger_entries_for_batch_bundle(filters):
|
||||
sle = frappe.qb.DocType("Stock Ledger Entry")
|
||||
batch_package = frappe.qb.DocType("Serial and Batch Entry")
|
||||
|
||||
to_date = get_datetime(filters.to_date + " 23:59:59")
|
||||
|
||||
query = (
|
||||
frappe.qb.from_(sle)
|
||||
.inner_join(batch_package)
|
||||
.on(batch_package.parent == sle.serial_and_batch_bundle)
|
||||
.select(
|
||||
sle.item_code,
|
||||
sle.warehouse,
|
||||
batch_package.batch_no,
|
||||
sle.posting_date,
|
||||
fn.Sum(batch_package.qty).as_("actual_qty"),
|
||||
)
|
||||
.where(
|
||||
(sle.docstatus < 2)
|
||||
& (sle.is_cancelled == 0)
|
||||
& (sle.has_batch_no == 1)
|
||||
& (sle.posting_datetime <= to_date)
|
||||
)
|
||||
.groupby(sle.voucher_no, batch_package.batch_no, batch_package.warehouse)
|
||||
.orderby(sle.item_code, sle.warehouse)
|
||||
)
|
||||
|
||||
query = apply_warehouse_filter(query, sle, filters)
|
||||
if filters.warehouse_type and not filters.warehouse:
|
||||
warehouses = frappe.get_all(
|
||||
"Warehouse",
|
||||
filters={"warehouse_type": filters.warehouse_type, "is_group": 0},
|
||||
pluck="name",
|
||||
)
|
||||
|
||||
if warehouses:
|
||||
query = query.where(sle.warehouse.isin(warehouses))
|
||||
|
||||
for field in ["item_code", "batch_no", "company"]:
|
||||
if filters.get(field):
|
||||
if field == "batch_no":
|
||||
query = query.where(batch_package[field] == filters.get(field))
|
||||
else:
|
||||
query = query.where(sle[field] == filters.get(field))
|
||||
|
||||
if filters.start_from:
|
||||
query = query.where(sle.posting_date > getdate(filters.start_from))
|
||||
|
||||
return query.run(as_dict=True) or []
|
||||
>>>>>>> e61ab48145 (fix: posting_date to posting_datetime in stock related queries)
|
||||
|
||||
|
||||
def get_item_warehouse_batch_map(filters, float_precision):
|
||||
|
||||
@@ -6,7 +6,7 @@ from operator import itemgetter
|
||||
|
||||
import frappe
|
||||
from frappe import _
|
||||
from frappe.utils import cint, date_diff, flt
|
||||
from frappe.utils import cint, date_diff, flt, get_datetime
|
||||
|
||||
from erpnext.stock.doctype.serial_no.serial_no import get_serial_nos
|
||||
|
||||
@@ -387,6 +387,7 @@ class FIFOSlots:
|
||||
def __get_stock_ledger_entries(self) -> list[dict]:
|
||||
sle = frappe.qb.DocType("Stock Ledger Entry")
|
||||
item = self.__get_item_query() # used as derived table in sle query
|
||||
to_date = get_datetime(self.filters.get("to_date") + " 23:59:59")
|
||||
|
||||
sle_query = (
|
||||
frappe.qb.from_(sle)
|
||||
@@ -411,7 +412,7 @@ class FIFOSlots:
|
||||
.where(
|
||||
(sle.item_code == item.name)
|
||||
& (sle.company == self.filters.get("company"))
|
||||
& (sle.posting_date <= self.filters.get("to_date"))
|
||||
& (sle.posting_datetime <= to_date)
|
||||
& (sle.is_cancelled != 1)
|
||||
)
|
||||
)
|
||||
@@ -428,7 +429,7 @@ class FIFOSlots:
|
||||
if warehouses:
|
||||
sle_query = sle_query.where(sle.warehouse.isin(warehouses))
|
||||
|
||||
sle_query = sle_query.orderby(sle.posting_date, sle.posting_time, sle.creation, sle.actual_qty)
|
||||
sle_query = sle_query.orderby(sle.posting_datetime, sle.creation)
|
||||
|
||||
return sle_query.run(as_dict=True, as_iterator=True)
|
||||
|
||||
|
||||
@@ -4,8 +4,13 @@
|
||||
|
||||
import frappe
|
||||
from frappe import _
|
||||
<<<<<<< HEAD
|
||||
from frappe.query_builder.functions import CombineDatetime
|
||||
from frappe.utils import cint, flt
|
||||
=======
|
||||
from frappe.query_builder.functions import CombineDatetime, Sum
|
||||
from frappe.utils import cint, flt, get_datetime
|
||||
>>>>>>> e61ab48145 (fix: posting_date to posting_datetime in stock related queries)
|
||||
|
||||
from erpnext.stock.doctype.inventory_dimension.inventory_dimension import get_inventory_dimensions
|
||||
from erpnext.stock.doctype.serial_no.serial_no import get_serial_nos
|
||||
@@ -264,6 +269,9 @@ def get_columns(filters):
|
||||
|
||||
|
||||
def get_stock_ledger_entries(filters, items):
|
||||
from_date = get_datetime(filters.from_date + " 00:00:00")
|
||||
to_date = get_datetime(filters.to_date + " 23:59:59")
|
||||
|
||||
sle = frappe.qb.DocType("Stock Ledger Entry")
|
||||
query = (
|
||||
frappe.qb.from_(sle)
|
||||
@@ -286,12 +294,8 @@ def get_stock_ledger_entries(filters, items):
|
||||
sle.serial_no,
|
||||
sle.project,
|
||||
)
|
||||
.where(
|
||||
(sle.docstatus < 2)
|
||||
& (sle.is_cancelled == 0)
|
||||
& (sle.posting_date[filters.from_date : filters.to_date])
|
||||
)
|
||||
.orderby(CombineDatetime(sle.posting_date, sle.posting_time))
|
||||
.where((sle.docstatus < 2) & (sle.is_cancelled == 0) & (sle.posting_datetime[from_date:to_date]))
|
||||
.orderby(sle.posting_datetime)
|
||||
.orderby(sle.creation)
|
||||
)
|
||||
|
||||
|
||||
Reference in New Issue
Block a user