62 lines
2.3 KiB
Plaintext
62 lines
2.3 KiB
Plaintext
# -*- coding: utf-8 -*-
|
|
"""财务结算单详情查询。"""
|
|
|
|
DBNAME = 'kboss'
|
|
|
|
|
|
def _parse_page(ns, default_page=1, default_size=100, max_size=500):
|
|
try:
|
|
current_page = int(ns.get('current_page', default_page) or default_page)
|
|
except (TypeError, ValueError):
|
|
current_page = default_page
|
|
try:
|
|
page_size = int(ns.get('page_size', default_size) or default_size)
|
|
except (TypeError, ValueError):
|
|
page_size = default_size
|
|
current_page = max(1, current_page)
|
|
page_size = max(1, min(page_size, max_size))
|
|
return current_page, page_size, (current_page - 1) * page_size
|
|
|
|
|
|
async def finance_settlement_detail(ns={}):
|
|
settlement_id = ns.get('settlement_id') or ns.get('id')
|
|
if not settlement_id:
|
|
return {'status': False, 'msg': '缺少 settlement_id'}
|
|
current_page, page_size, offset = _parse_page(ns)
|
|
db = DBPools()
|
|
async with db.sqlorContext(DBNAME) as sor:
|
|
try:
|
|
rows = await sor.R('finance_settlement', {'id': settlement_id, 'del_flg': '0'})
|
|
if not rows:
|
|
return {'status': False, 'msg': '结算单不存在'}
|
|
count_rows = await sor.sqlExe("""
|
|
SELECT COUNT(*) AS total_count
|
|
FROM finance_settlement_detail
|
|
WHERE settlement_id=${settlement_id}$ AND del_flg='0'
|
|
""", {'settlement_id': settlement_id})
|
|
total_count = count_rows[0]['total_count'] if count_rows else 0
|
|
detail_rows = await sor.sqlExe("""
|
|
SELECT *
|
|
FROM finance_settlement_detail
|
|
WHERE settlement_id=${settlement_id}$ AND del_flg='0'
|
|
ORDER BY bill_date DESC, create_at DESC
|
|
LIMIT %d OFFSET %d
|
|
""" % (page_size, offset), {'settlement_id': settlement_id})
|
|
return {
|
|
'status': True,
|
|
'msg': 'ok',
|
|
'data': {
|
|
'settlement': rows[0],
|
|
'detail_total_count': total_count,
|
|
'current_page': current_page,
|
|
'page_size': page_size,
|
|
'items': detail_rows,
|
|
},
|
|
}
|
|
except Exception as e:
|
|
return {'status': False, 'msg': '查询结算单详情失败, %s' % str(e)}
|
|
|
|
|
|
ret = await finance_settlement_detail(params_kw)
|
|
return ret
|