From 927ee954acf0dd8d35d61e1e1e3a6c3811e4607c Mon Sep 17 00:00:00 2001 From: ymq Date: Wed, 26 Aug 2026 16:54:55 +0800 Subject: [PATCH] =?UTF-8?q?fix(calculate=5Fsale=5Famounts):=20SQL=20?= =?UTF-8?q?=E8=A1=A5=E3=80=8C=E4=BA=A7=E5=93=81=E7=B2=BE=E7=A1=AE+?= =?UTF-8?q?=E7=B1=BB=E5=88=AB=E9=BB=98=E8=AE=A4=E3=80=8D=E5=8C=B9=E9=85=8D?= =?UTF-8?q?=E5=88=86=E6=94=AF?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit 原 SQL 只覆盖: (类别+产品精确)/(类别精确+产品默认)/(全默认), 缺「产品精确+类别为NULL」,导致只填 productid 不填 prodtypeid 的折扣查不到, supply_discount 回落到 default_discount=1.0。补第3优先级。 --- supplychain/init.py | 8 ++++++-- 1 file changed, 6 insertions(+), 2 deletions(-) diff --git a/supplychain/init.py b/supplychain/init.py index 2ed83c3..17a460f 100644 --- a/supplychain/init.py +++ b/supplychain/init.py @@ -664,11 +664,13 @@ WHERE resellerid = ${resellerid}$ WHERE contract_id = ${contract_id}$ AND ((prodtypeid = ${prodtypeid}$ AND productid = ${productid}$) OR (prodtypeid = ${prodtypeid}$ AND productid IS NULL) + OR (prodtypeid IS NULL AND productid = ${productid}$) OR (prodtypeid IS NULL AND productid IS NULL)) ORDER BY CASE WHEN prodtypeid IS NOT NULL AND productid IS NOT NULL THEN 1 WHEN prodtypeid IS NOT NULL AND productid IS NULL THEN 2 - ELSE 3 END + WHEN prodtypeid IS NULL AND productid IS NOT NULL THEN 3 + ELSE 4 END LIMIT 1""" recs_sci = await sor.sqlExe(sql_sci, { "contract_id": contract_id, @@ -705,11 +707,13 @@ WHERE resellerid = ${resellerid}$ WHERE agreement_id = ${agreement_id}$ AND ((prodtypeid = ${prodtypeid}$ AND productid = ${productid}$) OR (prodtypeid = ${prodtypeid}$ AND productid IS NULL) + OR (prodtypeid IS NULL AND productid = ${productid}$) OR (prodtypeid IS NULL AND productid IS NULL)) ORDER BY CASE WHEN prodtypeid IS NOT NULL AND productid IS NOT NULL THEN 1 WHEN prodtypeid IS NOT NULL AND productid IS NULL THEN 2 - ELSE 3 END + WHEN prodtypeid IS NULL AND productid IS NOT NULL THEN 3 + ELSE 4 END LIMIT 1""" recs_dai = await sor.sqlExe(sql_dai, { "agreement_id": agreement_id,