58 lines
1.4 KiB
Python
58 lines
1.4 KiB
Python
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)
|