88 lines
2.5 KiB
Plaintext
88 lines
2.5 KiB
Plaintext
|
|
ns = params_kw.copy()
|
|
ns['page'] = ns.get('page') or 1
|
|
ns['sort'] = ns.get('sort') or 'sale_date'
|
|
|
|
date_start = ns.get('date_start', '')
|
|
date_end = ns.get('date_end', '')
|
|
sub_reseller_id = ns.get('sub_reseller_id', '')
|
|
settlement_status = ns.get('settlement_status', '')
|
|
|
|
sc_dbname = get_module_dbname('supplychain')
|
|
userorgid = await get_userorgid()
|
|
|
|
# 查询supplychain_accounting中该分销商的记录, 关联sales_ledger结算状态
|
|
where = "WHERE sa.resellerid = ${userorgid}$"
|
|
sql_params = {'userorgid': userorgid}
|
|
|
|
if date_start:
|
|
where += " AND sa.sale_date >= ${date_start}$"
|
|
sql_params['date_start'] = date_start
|
|
if date_end:
|
|
where += " AND sa.sale_date <= ${date_end}$"
|
|
sql_params['date_end'] = date_end
|
|
if sub_reseller_id:
|
|
where += " AND sa.sub_distributor_id = ${sub_reseller_id}$"
|
|
sql_params['sub_reseller_id'] = sub_reseller_id
|
|
|
|
sql = f"""
|
|
SELECT
|
|
sa.id,
|
|
sa.sub_distributor_id,
|
|
sr.sub_reseller_name as sub_reseller_id_text,
|
|
sa.sale_date,
|
|
sa.sale_date as settlement_period,
|
|
p.name as product_name,
|
|
sa.productid,
|
|
sa.quantity,
|
|
sa.dist_amount as amount,
|
|
sa.supply_amount,
|
|
COALESCE(sl.settlement_status, '0') as settlement_status,
|
|
sa.source_type,
|
|
sa.source_id
|
|
FROM supplychain_accounting sa
|
|
LEFT JOIN product p ON sa.productid = p.id COLLATE utf8mb4_unicode_ci
|
|
LEFT JOIN sub_resellers sr ON sa.sub_distributor_id = sr.id COLLATE utf8mb4_unicode_ci
|
|
LEFT JOIN sales_ledger sl ON sl.productid = sa.productid COLLATE utf8mb4_unicode_ci
|
|
AND sl.sub_reseller_id = sa.sub_distributor_id COLLATE utf8mb4_unicode_ci
|
|
AND sl.sale_date = sa.sale_date
|
|
{where}
|
|
ORDER BY sa.sale_date DESC, sa.id
|
|
"""
|
|
|
|
if settlement_status:
|
|
sql = f"""
|
|
SELECT * FROM ({sql}) t WHERE t.settlement_status = ${settlement_status}$
|
|
"""
|
|
sql_params['settlement_status'] = settlement_status
|
|
|
|
db = DBPools()
|
|
async with db.sqlorContext(sc_dbname) as sor:
|
|
recs = await sor.sqlExe(sql, sql_params)
|
|
|
|
rows = []
|
|
for r in (recs or []):
|
|
rows.append({
|
|
'id': r.id,
|
|
'sub_reseller_id': r.sub_distributor_id or '',
|
|
'sub_reseller_id_text': r.sub_reseller_id_text or '',
|
|
'settlement_period': str(r.sale_date or ''),
|
|
'product_name': r.product_name or '',
|
|
'amount': float(r.amount or 0),
|
|
'settlement_status': r.settlement_status or '0',
|
|
'settlement_date': '',
|
|
'payment_method': '',
|
|
'reference_no': r.source_id or '',
|
|
'remark': r.source_type or '',
|
|
'created_at': str(r.sale_date or '')
|
|
})
|
|
|
|
total = len(rows)
|
|
debug(f'get_reseller_settlement: {total} records')
|
|
|
|
return json.dumps({
|
|
'success': True,
|
|
'total': total,
|
|
'rows': rows
|
|
}, ensure_ascii=False, default=str)
|