82 lines
3.1 KiB
Plaintext
82 lines
3.1 KiB
Plaintext
async def send_apv(ns={}):
|
|
"""
|
|
发起审批
|
|
:param ns:
|
|
:return:
|
|
"""
|
|
apv_data = {}
|
|
response = {"status": False}
|
|
try:
|
|
apv_data['orgid'] = ns['orgid']
|
|
apv_data['user_id'] = ns['user_id']
|
|
apv_data['business_name'] = ns['business_name']
|
|
apv_data['id'] = ns['id']
|
|
except Exception as e:
|
|
response["msg"] = f"发送审批参数错误:{e}"
|
|
return response
|
|
if len(ns['id']) == 0:
|
|
response['status'] = False
|
|
response["msg"] = f"请选择审批数据"
|
|
return response
|
|
get_provider_data = []
|
|
db = DBPools()
|
|
async with db.sqlorContext('kboss') as sor:
|
|
sql = "SELECT u.mobile FROM users u LEFT JOIN userrole ul ON u.id=ul.userid LEFT JOIN role r ON ul.roleid=r.id WHERE r.role='财务' AND u.orgid=${orgid}$ AND ul.del_flg=0 AND r.del_flg=0 AND u.del_flg=0"
|
|
phone = await sor.sqlExe(sql, {"orgid": apv_data['orgid']})
|
|
if not phone:
|
|
response["msg"] = f"未找到财务账号,orgid:{ns['orgid']}"
|
|
return response
|
|
else:
|
|
phone = phone[0]['mobile']
|
|
apv_business = await sor.R('apv_business', {'del_flg': '0', 'business_name': apv_data['business_name']})
|
|
if not apv_business:
|
|
response["msg"] = f"业务名称:{apv_data['business_name']}不存在"
|
|
return response
|
|
apv_data['business_id'] = apv_business[0]['id']
|
|
|
|
sql = "select * from provider_settle_data where id in ${id}$ and (status != 2 or status !=1)"
|
|
get_provider_data = await sor.sqlExe(sql, {"id": apv_data['id']})
|
|
if not get_provider_data:
|
|
response["msg"] = f"未找到该供应商结算数据"
|
|
return response
|
|
data = []
|
|
for i in get_provider_data:
|
|
m = i["money"] / 100
|
|
data.append(f" {i['name']}:{m}元 ")
|
|
|
|
form_component = {
|
|
"title": "",
|
|
"detail": {
|
|
"data": ','.join(data)
|
|
}
|
|
}
|
|
resp = await issue_approve(phone, apv_data["orgid"], apv_data["user_id"], apv_data["business_id"], form_component)
|
|
|
|
if resp['status']:
|
|
async with db.sqlorContext('kboss') as sor:
|
|
sql_data = {
|
|
"id": apv_data['id'],
|
|
"user_id": apv_data['user_id'],
|
|
"apv_id": resp['instanceId'],
|
|
"apv_start_time": datetime.datetime.now().strftime("%Y-%m-%d %H:%M:%S"),
|
|
"update_time": datetime.datetime.now().strftime("%Y-%m-%d %H:%M:%S"),
|
|
"status": -1
|
|
}
|
|
sql = "update provider_settle_data set user_id= ${user_id}$,apv_id = ${apv_id}$,apv_start_time = ${apv_start_time}$,update_time = ${update_time}$,status = ${status}$ where id in ${id}$"
|
|
num = await sor.sqlExe(sql, sql_data)
|
|
if num:
|
|
resp["status"] = True
|
|
resp["msg"] = f"发起审批成功,入库成功"
|
|
return resp
|
|
else:
|
|
resp["status"] = False
|
|
resp["msg"] = "发起审批成功,入库失败"
|
|
return resp
|
|
else:
|
|
resp["msg"] = "发起审批失败,{resp['msg']}"
|
|
return resp
|
|
|
|
|
|
ret = await send_apv(params_kw)
|
|
return ret
|