discount/wwwroot/api/discount_create.dspy

55 lines
2.2 KiB
Plaintext

result = {'widgettype': 'Message', 'options': {'title': 'Error', 'message': 'Invalid', 'type': 'error', 'timeout': 3}}
try:
user_orgid = (await get_userorgid()) or '0'
customerid = params_kw.get('customerid')
if not customerid:
result = {'widgettype': 'Error', 'options': {'title': '参数错误', 'message': '请选择客户后再创建折扣方案', 'timeout': 5}}
return result
dbname = get_module_dbname('discount')
data = dict(params_kw)
discountid = getID()
data['id'] = discountid
data['resellerid'] = user_orgid
data['customerid'] = customerid
async with DBPools().sqlorContext(dbname) as sor:
# Find default discount plan (all users)
default_sql = """
SELECT id FROM discount
WHERE resellerid = ${resellerid}$ AND customerid IS NULL
ORDER BY enabled_date DESC LIMIT 1
"""
default_recs = await sor.sqlExe(default_sql, {'resellerid': user_orgid})
if not default_recs:
result = {'widgettype': 'Error', 'options': {'title': '创建失败', 'message': '系统中没有全部用户的默认折扣方案,请先创建默认方案', 'timeout': 5}}
return result
await sor.C('discount', data)
# Copy default discount details to this customer's plan
default_discountid = default_recs[0].id
detail_sql = "SELECT * FROM discount_detail WHERE discountid = ${did}$"
details = await sor.sqlExe(detail_sql, {'did': default_discountid})
for d in details or []:
await sor.C('discount_detail', {
'id': getID(),
'discountid': discountid,
'resellerid': user_orgid,
'prodtypeid': d.prodtypeid,
'productid': d.productid,
'discount': d.discount,
})
result = {'widgettype': 'Message', 'options': {'title': 'Success', 'message': '折扣方案创建成功,已复制默认产品折扣', 'type': 'success', 'timeout': 3}}
except Exception as e:
debug(f'discount_create error: {format_exc()}')
result['options'] = {'title': 'Error', 'message': f'创建失败: {str(e)}', 'type': 'error', 'timeout': 5}
return result