salescrm/b/provider_settle/send_apv.dspy
2025-10-27 15:50:44 +08:00

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