fix: fix column name + ensure dspy now returns CRUD page after create

- sub_resellers column is sub_reseller_name (not sub_dist_name)
- After ensure, return UrlWidget loading CRUD list filtered by id
- Popup size increased for CRUD page viewing
This commit is contained in:
yumoqing 2026-07-10 11:11:21 +08:00
parent 7fa70b9a24
commit 0c718cf461
4 changed files with 84 additions and 106 deletions

View File

@ -1,4 +1,4 @@
"""Check if a distribution_agreement exists for sub_reseller_id. If not, create one."""
"""Check/create distribution_agreement for sub_reseller_id, then show CRUD page."""
sub_reseller_id = params_kw.get('sub_reseller_id')
if not sub_reseller_id:
return {'widgettype': 'Error', 'options': {'title': 'Error', 'message': 'Missing sub_reseller_id', 'timeout': 3}}
@ -11,27 +11,16 @@ dbname = get_module_dbname('supplychain')
async with DBPools().sqlorContext(dbname) as sor:
# Check existing
recs = await sor.sqlExe(
'SELECT id, agreement_code, agreement_name FROM distribution_agreements WHERE sub_reseller_id = ${sid}$ AND resellerid = ${rid}$ AND status = ${st}$',
'SELECT id FROM distribution_agreements WHERE sub_reseller_id = ${sid}$ AND resellerid = ${rid}$ AND status = ${st}$',
{'sid': sub_reseller_id, 'rid': userorgid, 'st': '1'}
)
if recs:
r = recs[0]
return {
'widgettype': 'Message',
'options': {
'title': '协议已存在',
'message': f'分销协议 {r.agreement_code} {r.agreement_name} 已存在',
'type': 'success',
'timeout': 3
}
}
# Get sub_reseller info for name
if not recs:
# Get sub_reseller name
sub = await sor.sqlExe(
'SELECT sub_dist_name FROM sub_resellers WHERE id = ${sid}$',
'SELECT sub_reseller_name FROM sub_resellers WHERE id = ${sid}$',
{'sid': sub_reseller_id}
)
sub_name = sub[0].sub_dist_name if sub else sub_reseller_id
sub_name = sub[0].sub_reseller_name if sub else sub_reseller_id
# Generate agreement_code
prefix = f"DA-{datetime.datetime.now().strftime('%Y%m%d')}"
@ -58,12 +47,12 @@ async with DBPools().sqlorContext(dbname) as sor:
'updated_at': now,
})
return {
'widgettype': 'Message',
# Return CRUD page embedded in popup
return {
'widgettype': 'UrlWidget',
'options': {
'title': '创建成功',
'message': f'已为{sub_name}创建分销协议 {agreement_code}',
'type': 'success',
'timeout': 5
}
'url': f'../distribution_agreements_list?sub_reseller_id={sub_reseller_id}',
'width': '100%',
'height': '100%'
}
}

View File

@ -1,4 +1,4 @@
"""Check if a supply_contract exists for supplier_id. If not, create one."""
"""Check/create supply_contract for supplier_id, then show CRUD page."""
supplier_id = params_kw.get('supplier_id')
if not supplier_id:
return {'widgettype': 'Error', 'options': {'title': 'Error', 'message': 'Missing supplier_id', 'timeout': 3}}
@ -11,21 +11,10 @@ dbname = get_module_dbname('supplychain')
async with DBPools().sqlorContext(dbname) as sor:
# Check existing
recs = await sor.sqlExe(
'SELECT id, contract_code, contract_name FROM supply_contracts WHERE supplier_id = ${sid}$ AND resellerid = ${rid}$ AND status = ${st}$',
'SELECT id FROM supply_contracts WHERE supplier_id = ${sid}$ AND resellerid = ${rid}$ AND status = ${st}$',
{'sid': supplier_id, 'rid': userorgid, 'st': '1'}
)
if recs:
r = recs[0]
return {
'widgettype': 'Message',
'options': {
'title': '协议已存在',
'message': f'供销协议 {r.contract_code} {r.contract_name} 已存在',
'type': 'success',
'timeout': 3
}
}
if not recs:
# Get supplier name
sub = await sor.sqlExe(
'SELECT supplier_name FROM suppliers WHERE id = ${sid}$',
@ -58,12 +47,12 @@ async with DBPools().sqlorContext(dbname) as sor:
'updated_at': now,
})
return {
'widgettype': 'Message',
# Return CRUD page embedded in popup
return {
'widgettype': 'UrlWidget',
'options': {
'title': '创建成功',
'message': f'已为{sup_name}创建供销协议 {contract_code}',
'type': 'success',
'timeout': 5
}
'url': f'../supply_contracts_list?supplier_id={supplier_id}',
'width': '100%',
'height': '100%'
}
}

View File

@ -325,8 +325,8 @@
"target": "PopupWindow",
"popup_options": {
"title": "分销协议",
"height": "200px",
"width": "400px"
"height": "80%",
"width": "85%"
},
"params_mapping": {
"mapping": {"id": "sub_reseller_id"},

View File

@ -457,8 +457,8 @@
"target": "PopupWindow",
"popup_options": {
"title": "供销协议",
"height": "200px",
"width": "400px"
"height": "80%",
"width": "85%"
},
"params_mapping": {
"mapping": {"id": "supplier_id"},