汇总近期业务改动:催缴菜单与后端、样本信息快捷登记与进度、运费关联、客户档案扩展、协议优惠/期次与押金划转,并同步 SQL 迁移与管理端页面收敛。 Co-authored-by: Cursor <cursoragent@cursor.com>
95 lines
3.3 KiB
Python
95 lines
3.3 KiB
Python
"""单期展示摘要:已缴合计、首笔日期、欠缴、方式、财务审核码"""
|
|
|
|
from decimal import Decimal
|
|
import unittest
|
|
|
|
from app.services.sample_payment_period_summary import summarize_period
|
|
|
|
|
|
class TestPeriodSummary(unittest.TestCase):
|
|
def test_empty_transfers(self):
|
|
r = summarize_period(
|
|
due_amount=Decimal("1000"),
|
|
transfers=[],
|
|
)
|
|
self.assertEqual(r["displayPaidAmount"], Decimal("0"))
|
|
self.assertEqual(r["arrearsAmount"], Decimal("1000"))
|
|
self.assertEqual(r["payDate"], "")
|
|
self.assertEqual(r["payTypeSummary"], "")
|
|
self.assertEqual(r["financeAudit"], "dfj")
|
|
|
|
def test_dfj_counts_as_display_paid(self):
|
|
r = summarize_period(
|
|
due_amount=Decimal("1000"),
|
|
transfers=[
|
|
{
|
|
"transferAmount": Decimal("400"),
|
|
"transferType": "wxzz",
|
|
"transferTime": "2026-04-19 10:00:00",
|
|
"payStatus": "dfj",
|
|
}
|
|
],
|
|
)
|
|
self.assertEqual(r["displayPaidAmount"], Decimal("400"))
|
|
self.assertEqual(r["arrearsAmount"], Decimal("600"))
|
|
self.assertEqual(r["payDate"], "2026-04-19")
|
|
|
|
def test_multi_transfer_summary(self):
|
|
r = summarize_period(
|
|
due_amount=Decimal("5000"),
|
|
transfers=[
|
|
{
|
|
"transferAmount": Decimal("3000"),
|
|
"transferType": "wxzz",
|
|
"transferTime": "2026-04-19 10:11:00",
|
|
"payStatus": "yjf",
|
|
},
|
|
{
|
|
"transferAmount": Decimal("2000"),
|
|
"transferType": "yhkzz",
|
|
"transferTime": "2026-04-20 09:40:00",
|
|
"payStatus": "yjf",
|
|
},
|
|
],
|
|
)
|
|
self.assertEqual(r["displayPaidAmount"], Decimal("5000"))
|
|
self.assertEqual(r["payDate"], "2026-04-19")
|
|
self.assertEqual(r["arrearsAmount"], Decimal("0"))
|
|
self.assertEqual(r["payTypeSummary"], "多笔")
|
|
self.assertEqual(r["financeAudit"], "yjf")
|
|
|
|
def test_pay_date_is_first_transfer_not_latest(self):
|
|
r = summarize_period(
|
|
due_amount=Decimal("5000"),
|
|
transfers=[
|
|
{
|
|
"transferAmount": Decimal("3000"),
|
|
"transferType": "wxzz",
|
|
"transferTime": "2026-04-19 10:11:00",
|
|
"payStatus": "yjf",
|
|
},
|
|
{
|
|
"transferAmount": Decimal("2000"),
|
|
"transferType": "yhkzz",
|
|
"transferTime": "2026-04-20 09:40:00",
|
|
"payStatus": "yjf",
|
|
},
|
|
],
|
|
)
|
|
self.assertEqual(r["payDate"], "2026-04-19")
|
|
|
|
def test_confirming_wins(self):
|
|
r = summarize_period(
|
|
due_amount=Decimal("4960"),
|
|
transfers=[
|
|
{
|
|
"transferAmount": Decimal("2000"),
|
|
"transferType": "pos",
|
|
"transferTime": "2026-06-18 15:20:00",
|
|
"payStatus": "jfqrz",
|
|
}
|
|
],
|
|
)
|
|
self.assertEqual(r["displayPaidAmount"], Decimal("2000"))
|
|
self.assertEqual(r["financeAudit"], "jfqrz")
|