supplychain/wwwroot/api/query_dist_discount.dspy

60 lines
2.4 KiB
Plaintext

user_orgid = await get_userorgid()
dbname = get_module_dbname('supplychain')
sub_distributor_id = params_kw.get("sub_distributor_id")
productid = params_kw.get("productid")
prodtypeid = params_kw.get("prodtypeid")
if not sub_distributor_id or not productid:
return json.dumps({"status": "error", "message": "缺少sub_distributor_id或productid参数"})
db = DBPools()
async with db.sqlorContext(dbname) as sor:
sql = """SELECT dai.id, dai.agreement_id, dai.discount, dai.settlement_price,
da.agreement_code, da.agreement_name
FROM distribution_agreement_items dai
JOIN distribution_agreements da ON dai.agreement_id = da.id
WHERE dai.resellerid = ${resellerid}$
AND da.sub_distributor_id = ${sub_distributor_id}$
AND da.status = '1'
AND da.start_date <= CURDATE()
AND (da.end_date IS NULL OR da.end_date >= CURDATE())
AND dai.productid = ${productid}$
ORDER BY da.start_date DESC"""
recs = await sor.sqlExe(sql, {"resellerid": user_orgid,
"sub_distributor_id": sub_distributor_id,
"productid": productid})
if not recs and prodtypeid:
sql = """SELECT dai.id, dai.agreement_id, dai.discount, dai.settlement_price,
da.agreement_code, da.agreement_name
FROM distribution_agreement_items dai
JOIN distribution_agreements da ON dai.agreement_id = da.id
WHERE dai.resellerid = ${resellerid}$
AND da.sub_distributor_id = ${sub_distributor_id}$
AND da.status = '1'
AND da.start_date <= CURDATE()
AND (da.end_date IS NULL OR da.end_date >= CURDATE())
AND dai.prodtypeid = ${prodtypeid}$
ORDER BY da.start_date DESC"""
recs = await sor.sqlExe(sql, {"resellerid": user_orgid,
"sub_distributor_id": sub_distributor_id,
"prodtypeid": prodtypeid})
if not recs:
sql = """SELECT id as agreement_id, agreement_code, agreement_name,
default_discount as discount, NULL as settlement_price
FROM distribution_agreements
WHERE resellerid = ${resellerid}$
AND sub_distributor_id = ${sub_distributor_id}$
AND status = '1'
AND start_date <= CURDATE()
AND (end_date IS NULL OR end_date >= CURDATE())
ORDER BY start_date DESC"""
recs = await sor.sqlExe(sql, {"resellerid": user_orgid,
"sub_distributor_id": sub_distributor_id})
result = [dict(r) for r in recs] if recs else []
return json.dumps({"status": "ok", "data": result})