150 lines
6.3 KiB
Plaintext
150 lines
6.3 KiB
Plaintext
async def discount_guanli_jia(ns={}):
|
|
"""
|
|
折扣管理加
|
|
:return:
|
|
"""
|
|
# 折扣不能为空
|
|
discount_ = ns.get('discount')
|
|
# if (not discount_) or (float(discount_) == 0):
|
|
# return {
|
|
# 'status': False,
|
|
# 'msg': '折扣不能为空'
|
|
# }
|
|
user_orgid = ns.get('customerid')
|
|
db = DBPools()
|
|
async with db.sqlorContext('kboss') as sor:
|
|
try:
|
|
if ns.get('sor'):
|
|
sor = ns.get('sor')
|
|
# 首先查找协议是否已经存在
|
|
ns_discount = {
|
|
'offer_orgid': ns.get('bid_orgid'),
|
|
'bid_orgid': '*',
|
|
'salemode': '0',
|
|
'del_flg': '0'
|
|
}
|
|
if user_orgid:
|
|
ns_discount['bid_orgid'] = user_orgid
|
|
discount_res_li = await sor.R('saleprotocol', ns_discount)
|
|
if discount_res_li:
|
|
protocolid = discount_res_li[0]['id']
|
|
else:
|
|
# 协议表不存在 就创建
|
|
# 获取这个供应商给机构签的协议起始时间
|
|
qishi_time_li = await sor.R('saleprotocol', {'offer_orgid': ns.get('providerid'), 'bid_orgid': ns.get('bid_orgid')})
|
|
if qishi_time_li:
|
|
start_time, end_time = qishi_time_li[0]['start_date'], qishi_time_li[0]['end_date']
|
|
else:
|
|
start_time, end_time = '2010-10-01', '2099-10-01'
|
|
ns_zhubiao = {
|
|
'id': uuid(),
|
|
'offer_orgid': ns.get('bid_orgid'),
|
|
'bid_orgid': '*',
|
|
'salemode': '0',
|
|
'start_date': '2010-10-01',
|
|
'end_date': '2099-10-01'
|
|
}
|
|
if user_orgid:
|
|
ns_zhubiao['bid_orgid'] = user_orgid
|
|
await sor.C('saleprotocol', ns_zhubiao)
|
|
protocolid = ns_zhubiao['id']
|
|
|
|
# 如果productid是列表 循环
|
|
productidss = ns.get('productid')
|
|
if ',' in productidss:
|
|
productidss = productidss.replace('\"', '').split(',')
|
|
else:
|
|
productidss = [productidss.replace('\"', '')]
|
|
|
|
# 如果是中金 额外添加产品id *
|
|
# 获取中金id
|
|
jncs_li = await sor.R('organization', {'orgname': '中金超算', 'del_flg': '0'})
|
|
jscs_id = jncs_li[0].get('id') if jncs_li else None
|
|
if ns.get('providerid') == jscs_id:
|
|
productidss.append('*')
|
|
|
|
# 给某个供应商设置统一折扣 没有传productid
|
|
if not ns.get('productid'):
|
|
provider_id_prd_li = await sor.R('product', {'providerid': ns.get('providerid'), 'del_flg': '0'})
|
|
productidss = [item_id.get('id') for item_id in provider_id_prd_li]
|
|
|
|
# 按产品倒查who is provider
|
|
who_is_provider_sql = """SELECT offer_orgid FROM saleprotocol WHERE bid_orgid = '%s' AND salemode in ('0', '1') and
|
|
del_flg = '0' and id in (SELECT protocolid FROM product_salemode WHERE providerid = '%s' and
|
|
productid = '%s');""" % (ns.get('bid_orgid'), ns.get('providerid'), productidss[0])
|
|
who_is_provider = (await sor.sqlExe(who_is_provider_sql, {}))[0]['offer_orgid']
|
|
|
|
# 查找供应商协议id
|
|
ns_provider_discount = {
|
|
'offer_orgid': who_is_provider,
|
|
'bid_orgid': ns.get('bid_orgid'),
|
|
'salemode': '0',
|
|
'del_flg': '0'
|
|
}
|
|
provider_protocol_id_li = (await sor.R('saleprotocol', ns_provider_discount))
|
|
# 可能是回佣设置折扣
|
|
if provider_protocol_id_li:
|
|
provider_protocol_id = provider_protocol_id_li[0]['id']
|
|
else:
|
|
provider_protocol_id = 0
|
|
|
|
for productid in productidss:
|
|
# 判断是否已经存在
|
|
ns_zibiao_exist = {
|
|
'protocolid': protocolid,
|
|
'providerid': ns.get('providerid'),
|
|
'productid': productid,
|
|
'del_flg': '0'
|
|
}
|
|
|
|
# 查找供应商给的折扣
|
|
# if provider_protocol_id:
|
|
# provider_discount_find = {
|
|
# 'protocolid': provider_protocol_id,
|
|
# 'providerid': ns.get('providerid'),
|
|
# 'productid': productid,
|
|
# 'del_flg': '0'
|
|
# }
|
|
# provider_discount_li = await sor.R('product_salemode', provider_discount_find)
|
|
# if provider_discount_li:
|
|
# provider_discount = provider_discount_li[0]['discount']
|
|
# if float(provider_discount) > float(ns.get('discount')):
|
|
# return {
|
|
# 'status': False,
|
|
# 'msg': '客户折扣不能低于供应商折扣'
|
|
# }
|
|
|
|
res_exist_li = await sor.R('product_salemode', ns_zibiao_exist)
|
|
if res_exist_li:
|
|
zi_biao_id = res_exist_li[0]['id']
|
|
ns_zibiao_zhekou = {
|
|
'id': zi_biao_id,
|
|
'protocolid': protocolid,
|
|
'providerid': ns.get('providerid'),
|
|
'productid': productid,
|
|
'discount': ns.get('discount')
|
|
}
|
|
await sor.U('product_salemode', ns_zibiao_zhekou)
|
|
else:
|
|
# 根据protocolid创建折扣
|
|
ns_zibiao_zhekou = {
|
|
'id': uuid(),
|
|
'protocolid': protocolid,
|
|
'providerid': ns.get('providerid'),
|
|
'productid': productid,
|
|
'discount': ns.get('discount')
|
|
}
|
|
await sor.C('product_salemode', ns_zibiao_zhekou)
|
|
return {
|
|
'status': True,
|
|
'msg': '创建折扣成功'
|
|
}
|
|
except Exception as e:
|
|
raise e
|
|
return {
|
|
'status': False,
|
|
'msg': '创建折扣失败'
|
|
}
|
|
|
|
ret = await discount_guanli_jia(params_kw)
|
|
return ret |