discount/wwwroot/discount_setting/save_discount.dspy

61 lines
2.4 KiB
Plaintext
Raw Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

# Upsert折扣明细对比old_discount和discount不同才更新
# 参数: discountid, productid, discount, old_discount, detail_id(可选)
result = {'widgettype': 'Message', 'options': {'title': 'Error', 'message': 'Invalid', 'type': 'error'}}
try:
discountid = params_kw.get('discountid')
productid = params_kw.get('productid')
discount_val = params_kw.get('discount')
old_discount = params_kw.get('old_discount')
detail_id = params_kw.get('detail_id')
if not discountid or not productid:
raise Exception('缺少必要参数: discountid, productid')
# 对比新旧值,相同则跳过
if discount_val is not None and old_discount is not None:
try:
if float(discount_val) == float(old_discount):
result = {'widgettype': 'Message', 'options': {'title': 'Success', 'message': '折扣未变化', 'type': 'success'}}
return result
except:
pass
user_orgid = await get_userorgid()
dbname = get_module_dbname('discount')
# discount为0或空时如果已有记录则删除
if not discount_val or float(discount_val) == 0:
if detail_id:
async with DBPools().sqlorContext(dbname) as sor:
await sor.D('discount_detail', {'id': detail_id})
result = {'widgettype': 'Message', 'options': {'title': 'Success', 'message': '折扣已清除', 'type': 'success'}}
else:
result = {'widgettype': 'Message', 'options': {'title': 'Success', 'message': 'ok', 'type': 'success'}}
return result
async with DBPools().sqlorContext(dbname) as sor:
if detail_id:
await sor.U('discount_detail', {
'id': detail_id,
'discount': float(discount_val)
})
else:
await sor.C('discount_detail', {
'id': getID(),
'discountid': discountid,
'resellerid': user_orgid,
'prodtypeid': None,
'productid': productid,
'discount': float(discount_val)
})
result = {'widgettype': 'Message', 'options': {'title': 'Success', 'message': '折扣保存成功', 'type': 'success'}}
except Exception as e:
debug(f'save_discount error: {format_exc()}')
result['options'] = {'title': 'Error', 'message': f'保存失败: {str(e)}', 'type': 'error'}
return result