71 lines
2.6 KiB
Plaintext
71 lines
2.6 KiB
Plaintext
# -*- coding: utf-8 -*-
|
|
"""财务结算单列表查询。"""
|
|
|
|
DBNAME = 'kboss'
|
|
|
|
|
|
def _parse_page(ns, default_page=1, default_size=20, max_size=200):
|
|
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_list(ns={}):
|
|
accounting_orgid = ns.get('accounting_orgid')
|
|
if not accounting_orgid:
|
|
return {'status': False, 'msg': '缺少 accounting_orgid'}
|
|
current_page, page_size, offset = _parse_page(ns)
|
|
conditions = ["accounting_orgid=${accounting_orgid}$", "del_flg='0'"]
|
|
params = {'accounting_orgid': accounting_orgid}
|
|
for key in ('counterparty_type', 'counterparty_orgid', 'status', 'period_type'):
|
|
if ns.get(key):
|
|
conditions.append('%s=${%s}$' % (key, key))
|
|
params[key] = ns[key]
|
|
if ns.get('start_date'):
|
|
conditions.append('period_end >= ${start_date}$')
|
|
params['start_date'] = ns['start_date']
|
|
if ns.get('end_date'):
|
|
conditions.append('period_start <= ${end_date}$')
|
|
params['end_date'] = ns['end_date']
|
|
where_sql = ' AND '.join(conditions)
|
|
db = DBPools()
|
|
async with db.sqlorContext(DBNAME) as sor:
|
|
try:
|
|
count_rows = await sor.sqlExe(
|
|
'SELECT COUNT(*) AS total_count FROM finance_settlement WHERE %s' % where_sql,
|
|
params,
|
|
)
|
|
total_count = count_rows[0]['total_count'] if count_rows else 0
|
|
sql = """
|
|
SELECT *
|
|
FROM finance_settlement
|
|
WHERE %s
|
|
ORDER BY period_end DESC, create_at DESC
|
|
LIMIT %d OFFSET %d
|
|
""" % (where_sql, page_size, offset)
|
|
rows = await sor.sqlExe(sql, params)
|
|
return {
|
|
'status': True,
|
|
'msg': 'ok',
|
|
'data': {
|
|
'total_count': total_count,
|
|
'current_page': current_page,
|
|
'page_size': page_size,
|
|
'items': rows,
|
|
},
|
|
}
|
|
except Exception as e:
|
|
return {'status': False, 'msg': '查询结算单失败, %s' % str(e)}
|
|
|
|
|
|
ret = await finance_settlement_list(params_kw)
|
|
return ret
|