async def price_guanli_jia(ns={}): """ 修改售价管理 :return: """ db = DBPools() async with db.sqlorContext('kboss') as sor: if ns.get('sor'): sor = ns.get('sor') try: # 按产品倒查who is provider who_is_provider_sql = """SELECT offer_orgid FROM saleprotocol WHERE bid_orgid = '%s' AND salemode = '2' 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'), ns.get('productid')) who_is_provider = (await sor.sqlExe(who_is_provider_sql, {}))[0]['offer_orgid'] # 查找供应商协议id ns_provider_price = { 'offer_orgid': who_is_provider, 'bid_orgid': ns.get('bid_orgid'), 'salemode': '2', 'del_flg': '0' } provider_protocol_id = (await sor.R('saleprotocol', ns_provider_price))[0]['id'] # 查找供应商给的底价 if provider_protocol_id: provider_price_find = { 'protocolid': provider_protocol_id, 'providerid': ns.get('providerid'), 'productid': ns.get('productid'), 'del_flg': '0' } provider_price = (await sor.R('product_salemode', provider_price_find))[0]['price'] provider_unit = (await sor.R('product_salemode', provider_price_find))[0]['unit'] if not provider_price: return { 'status': False, 'msg': '获取不到供应商的底价' } if float(provider_price) >= float(ns.get('price')): return { 'status': False, 'msg': '客户售价不能低于供应商底价' } # 首先查找协议是否已经存在 ns_shoujia = { 'offer_orgid': ns.get('bid_orgid'), 'bid_orgid': '*', 'salemode': '2', 'del_flg': '0' } shoujia_res_li = await sor.R('saleprotocol', ns_shoujia) if shoujia_res_li: protocolid = shoujia_res_li[0]['id'] else: # 协议表不存在 就创建 ns_zhubiao = { 'id': uuid(), 'offer_orgid': ns.get('bid_orgid'), 'bid_orgid': '*', 'salemode': '2', 'start_date': '2010-10-01', 'end_date': '2099-10-01' } await sor.C('saleprotocol', ns_zhubiao) protocolid = ns_zhubiao['id'] # 判断该协议下这个产品是否已经存在 ns_zibiao_exist = { 'protocolid': protocolid, 'providerid': ns.get('providerid'), 'productid': ns.get('productid'), 'del_flg': '0' } exists_res_li = await sor.R('product_salemode', ns_zibiao_exist) # 如果已经存在就更新 if exists_res_li: zi_biao_id = exists_res_li[0]['id'] ns_zibiao_update = { 'id': zi_biao_id, 'protocolid': protocolid, 'providerid': ns.get('providerid'), 'productid': ns.get('productid'), 'price': ns.get('price'), 'unit': provider_unit } await sor.U('product_salemode', ns_zibiao_update) else: # 根据protocolid创建售价 ns_zibiao_shoujia = { 'id': uuid(), 'protocolid': protocolid, 'providerid': ns.get('providerid'), 'productid': ns.get('productid'), 'price': ns.get('price'), 'unit': provider_unit } await sor.C('product_salemode', ns_zibiao_shoujia) return { 'status': True, 'msg': '创建售价成功' } except Exception as e: raise e return { 'status': False, 'msg': '创建售价失败' } ret = await price_guanli_jia(params_kw) return ret