From 669c491f938f0f5979e22fd0871f23420db707ec Mon Sep 17 00:00:00 2001 From: Hermes Agent Date: Wed, 17 Jun 2026 15:04:32 +0800 Subject: [PATCH] =?UTF-8?q?fix:=20=E4=BE=9B=E9=94=80=E5=8D=8F=E8=AE=AECRUD?= =?UTF-8?q?=E8=87=AA=E5=8A=A8=E7=94=9F=E6=88=90=E5=90=88=E5=90=8C=E7=BC=96?= =?UTF-8?q?=E5=8F=B7+=E7=BA=A7=E8=81=94=E5=88=A0=E9=99=A4=E6=98=8E?= =?UTF-8?q?=E7=BB=86?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit - add_supply_contracts.dspy: 自动生成contract_code(SC-YYYYMMDD-NNNN) - add_supply_contracts.dspy: 自动填充created_by/created_at/updated_at - delete_supply_contracts.dspy: 删除协议时级联删除产品折扣明细 --- .../add_supply_contracts.dspy | 15 +++++++++++++++ .../delete_supply_contracts.dspy | 2 ++ 2 files changed, 17 insertions(+) diff --git a/wwwroot/supply_contracts_list/add_supply_contracts.dspy b/wwwroot/supply_contracts_list/add_supply_contracts.dspy index 8ad870e..bfceae1 100644 --- a/wwwroot/supply_contracts_list/add_supply_contracts.dspy +++ b/wwwroot/supply_contracts_list/add_supply_contracts.dspy @@ -24,6 +24,21 @@ if not userorgid: } ns['resellerid'] = userorgid +# Auto-generate contract_code if not provided +if not ns.get('contract_code'): + from datetime import datetime as _dt + _prefix = f"SC-{_dt.now().strftime('%Y%m%d')}" + async with DBPools().sqlorContext(get_module_dbname('supplychain')) as _sor: + _recs = await _sor.sqlExe( + "SELECT COUNT(*) as cnt FROM supply_contracts WHERE resellerid = ${rid}$ AND contract_code LIKE ${p}$", + {"rid": userorgid, "p": _prefix + "%"} + ) + _seq = (_recs[0].cnt if _recs else 0) + 1 + ns['contract_code'] = f"{_prefix}-{_seq:04d}" +ns['created_by'] = userorgid +ns['created_at'] = timestampstr() +ns['updated_at'] = timestampstr() + db = DBPools() dbname = get_module_dbname('supplychain') async with db.sqlorContext(dbname) as sor: diff --git a/wwwroot/supply_contracts_list/delete_supply_contracts.dspy b/wwwroot/supply_contracts_list/delete_supply_contracts.dspy index bbf6bb1..e77ec25 100644 --- a/wwwroot/supply_contracts_list/delete_supply_contracts.dspy +++ b/wwwroot/supply_contracts_list/delete_supply_contracts.dspy @@ -21,6 +21,8 @@ ns['resellerid'] = userorgid db = DBPools() dbname = get_module_dbname('supplychain') async with db.sqlorContext(dbname) as sor: + # Cascade delete contract items first + await sor.D('supply_contract_items', {'contract_id': params_kw['id'], 'resellerid': userorgid}) r = await sor.D('supply_contracts', ns) debug('delete success'); return {