from .const import * from datetime import datetime from appPublic.uniqueID import getID from sqlor.dbpools import DBPools async def _order2bill(sor, orderid): sql = """select og.orderid, og.id as ordergoodsid, o.customerid, o.order_date, o.business_op, o.provider_orderid, og.productid, og.quantity, og.providerid, og.list_price, og.discount, og.price, og.amount from bz_order o, order_goods og where o.id = og.orderid and o.id = ${id}$ and o.order_status = '0' """ recs = await sor.sqlExe(sql, {'id':orderid}) if len(recs) == 0: return for r in recs: ns = { 'id':getID(), 'customerid':r['customerid'], 'ordergoodsid':r['ordergoodsid'], 'orderid':r['orderid'], 'business_op':r['business_op'], 'provider_amt':r['list_price'] * r['quantity'], 'quantity':r['quantity'], 'amount':r['amount'], 'bill_date':r['order_date'], 'bill_timestamp':datetime.now(), 'bill_state':'0', 'productid':r['productid'], 'providerid':r['providerid'], 'provider_billid':None, 'create_at':datetime.now(), 'resourceid':None } await sor.C('bill', ns) await sor.U('bz_order', {'id':orderid, 'order_status':'1'}) async def order2bill(orderid, sor=None): if sor is None: db = DBPools() async with db.sqlorContext(DBNAME) as sor: await _order2bill(sor, orderid) else: await _order2bill(sor, orderid)