mirror of
https://github.com/frappe/erpnext.git
synced 2026-08-30 23:18:02 +00:00
fix: adapt to query builder
Signed-off-by: Akhil Narang <me@akhilnarang.dev>
This commit is contained in:
@@ -323,22 +323,24 @@ def get_returned_qty_map_for_row(return_against, party, row_name, doctype):
|
||||
party_type = "customer"
|
||||
|
||||
fields = [
|
||||
f"sum(abs(`tab{child_doctype}`.qty)) as qty",
|
||||
{"SUM": [{"ABS": f"`tab{child_doctype}`.qty"}], "as": "qty"},
|
||||
]
|
||||
|
||||
if doctype != "Subcontracting Receipt":
|
||||
fields += [
|
||||
f"sum(abs(`tab{child_doctype}`.stock_qty)) as stock_qty",
|
||||
{"SUM": [{"ABS": f"`tab{child_doctype}`.stock_qty"}], "as": "stock_qty"},
|
||||
]
|
||||
|
||||
if doctype in ("Purchase Receipt", "Purchase Invoice", "Subcontracting Receipt"):
|
||||
fields += [
|
||||
f"sum(abs(`tab{child_doctype}`.rejected_qty)) as rejected_qty",
|
||||
f"sum(abs(`tab{child_doctype}`.received_qty)) as received_qty",
|
||||
{"SUM": [{"ABS": f"`tab{child_doctype}`.rejected_qty"}], "as": "rejected_qty"},
|
||||
{"SUM": [{"ABS": f"`tab{child_doctype}`.received_qty"}], "as": "received_qty"},
|
||||
]
|
||||
|
||||
if doctype == "Purchase Receipt":
|
||||
fields += [f"sum(abs(`tab{child_doctype}`.received_stock_qty)) as received_stock_qty"]
|
||||
fields += [
|
||||
{"SUM": [{"ABS": f"`tab{child_doctype}`.received_stock_qty"}], "as": "received_stock_qty"}
|
||||
]
|
||||
|
||||
# Used retrun against and supplier and is_retrun because there is an index added for it
|
||||
data = frappe.get_all(
|
||||
|
||||
@@ -563,11 +563,14 @@ class StatusUpdater(Document):
|
||||
fields=[target_ref_field, target_field],
|
||||
)
|
||||
|
||||
sum_ref = sum(abs(record[target_ref_field]) for record in child_records)
|
||||
# For operator dicts, the alias is in the "as" key; for strings, use the field name directly
|
||||
ref_key = target_ref_field.get("as") if isinstance(target_ref_field, dict) else target_ref_field
|
||||
|
||||
sum_ref = sum(abs(record[ref_key]) for record in child_records)
|
||||
|
||||
if sum_ref > 0:
|
||||
percentage = round(
|
||||
sum(min(abs(record[target_field]), abs(record[target_ref_field])) for record in child_records)
|
||||
sum(min(abs(record[target_field]), abs(record[ref_key])) for record in child_records)
|
||||
/ sum_ref
|
||||
* 100,
|
||||
6,
|
||||
|
||||
@@ -1320,7 +1320,7 @@ class StockController(AccountsController):
|
||||
total_returned += flt(item.returned_qty * item.rate)
|
||||
|
||||
if total_returned < total_amount:
|
||||
target_ref_field = "(amount - (returned_qty * rate))"
|
||||
target_ref_field = {"SUB": ["amount", {"MUL": ["returned_qty", "rate"]}], "as": "ref_amount"}
|
||||
|
||||
self._update_percent_field(
|
||||
{
|
||||
|
||||
@@ -292,7 +292,7 @@ class SubcontractingController(StockController):
|
||||
):
|
||||
for row in frappe.get_all(
|
||||
f"{self.subcontract_data.order_doctype} Item",
|
||||
fields=["item_code", "(qty - received_qty) as qty", "parent", "name"],
|
||||
fields=["item_code", {"SUB": ["qty", "received_qty"], "as": "qty"}, "parent", "name"],
|
||||
filters={"docstatus": 1, "parent": ("in", self.subcontract_orders)},
|
||||
):
|
||||
self.qty_to_be_received[(row.item_code, row.parent)] += row.qty
|
||||
@@ -553,7 +553,9 @@ class SubcontractingController(StockController):
|
||||
data = []
|
||||
|
||||
doctype = "BOM Item" if not exploded_item else "BOM Explosion Item"
|
||||
fields = [f"`tab{doctype}`.`stock_qty` / `tabBOM`.`quantity` as qty_consumed_per_unit"]
|
||||
fields = [
|
||||
{"DIV": [f"`tab{doctype}`.`stock_qty`", "`tabBOM`.`quantity`"], "as": "qty_consumed_per_unit"}
|
||||
]
|
||||
|
||||
alias_dict = {
|
||||
"item_code": "rm_item_code",
|
||||
|
||||
@@ -328,7 +328,7 @@ class TestItemWiseInventoryAccount(IntegrationTestCase):
|
||||
"voucher_no": pr.name,
|
||||
"item_code": ("in", items),
|
||||
},
|
||||
fields=["sum(stock_value_difference) as value"],
|
||||
fields=[{"SUM": "stock_value_difference", "as": "value"}],
|
||||
)
|
||||
|
||||
gl_value = frappe.db.get_value(
|
||||
@@ -435,7 +435,7 @@ class TestItemWiseInventoryAccount(IntegrationTestCase):
|
||||
sle_value = frappe.get_all(
|
||||
"Stock Ledger Entry",
|
||||
filters={"voucher_type": "Delivery Note", "voucher_no": dn.name, "item_code": ("in", items)},
|
||||
fields=["sum(stock_value_difference) as value"],
|
||||
fields=[{"SUM": "stock_value_difference", "as": "value"}],
|
||||
)
|
||||
|
||||
gl_value = (
|
||||
|
||||
Reference in New Issue
Block a user