fix: 供销协议折扣明细直接用product.providerid过滤

product.providerid已直接存储供应商ID,不再需要JOIN product_resource_supplier
This commit is contained in:
yumoqing 2026-07-13 14:58:50 +08:00
parent f5794c9348
commit 44042b80dd
2 changed files with 10 additions and 14 deletions

View File

@ -995,39 +995,35 @@ async def get_agreement_discount_items(request):
async def get_contract_discount_items(request):
"""Return products with discount status for a supply contract.
Products link to suppliers via: product resource_ref_id
product_resource_supplier.supplier_org_id.
Filters products where product.providerid matches the contract's supplier_id.
"""
params_kw = getattr(request._run_ns, 'params_kw', {}) or {}
contract_id = params_kw.get('contract_id') or params_kw.get('id')
if not contract_id:
return []
env = request._run_ns
# Get supplier orgid from contract
supplier_orgid = None
# Get supplier_id from contract
supplier_id = None
async with get_sor_context(env, 'supplychain') as sor:
rows = await sor.sqlExe(
"SELECT s.orgid FROM suppliers s "
"JOIN supply_contracts sc ON sc.supplier_id = s.id "
"WHERE sc.id = ${cid}$",
"SELECT supplier_id FROM supply_contracts WHERE id = ${cid}$",
{'cid': contract_id}
)
if rows:
supplier_orgid = rows[0].orgid
if not supplier_orgid:
supplier_id = rows[0].supplier_id
if not supplier_id:
return []
# Get products from sage — join through product_resource_supplier
# Get products from sage — filter by providerid = supplier_id
products = []
async with get_sor_context(env, 'sage') as sor:
rows = await sor.sqlExe(
"SELECT DISTINCT p.id as productid, p.product_name, p.product_code, "
"SELECT p.id as productid, p.product_name, p.product_code, "
"p.price as sale_price, pc.id as category_id, pc.name as category_name "
"FROM product p "
"JOIN product_resource_supplier prs ON p.resource_ref_id = prs.product_resource_id "
"LEFT JOIN product_category pc ON p.category_id = pc.id "
"WHERE p.status = '1' AND prs.supplier_org_id = ${oid}$ AND prs.status = '1' "
"WHERE p.status = '1' AND p.providerid = ${sid}$ "
"ORDER BY pc.sort_order, pc.name, p.sort_order, p.product_name",
{'oid': supplier_orgid}
{'sid': supplier_id}
)
for r in rows:
products.append({