HEL-206: 修正公司间期末余额方向为转出=应收增加

翻转 _pair_net_change 符号,与往来层/页面口径一致;同步修正旧断言并新增期初200+转出100=期末300的双边守恒与浏览器方向冒烟。

Co-authored-by: Cursor <cursoragent@cursor.com>
Co-authored-by: multica-agent <github@multica.ai>
This commit is contained in:
总工
2026-08-27 17:49:56 +00:00
co-authored by Cursor multica-agent
parent fe6b4e59ec
commit 2fb1f2b462
3 changed files with 474 additions and 4 deletions
+53 -2
View File
@@ -470,8 +470,59 @@ class BalanceBasisTests(CalculationBase):
balance = calculation.compute_pair_balance(
self.connection, self.company_a, self.company_b, cutoff="2026-01-31"
)
self.assertEqual("-80.00", balance["net_change"])
self.assertEqual("-80.00", balance["closing"])
# 甲转出 80 → 应收方向为正
self.assertEqual("80.00", balance["net_change"])
self.assertEqual("80.00", balance["closing"])
def test_opening_plus_outflow_increases_receivable(self) -> None:
"""期初应收 200 + 本期转出垫付 100 → 期末应收 300;乙方对称为应付 300。"""
from test_matching import MatchingBase
item = calculation.create_opening_balance(
self.connection, self.company_a, self.company_b, "200", "期初应收", self.admin
)
calculation.confirm_opening_balance(
self.connection, item["id"], "确认", self.admin
)
helper = object.__new__(MatchingBase)
helper.connection = self.connection
row_a = helper.add_row(
self.company_a,
own_account="6222000000000001",
cp_account="6222000000000002",
expense="100.00",
at="2026-01-15T10:00:00",
)
matching.reconcile_rows(self.connection, [row_a])
row_b = helper.add_row(
self.company_b,
own_account="6222000000000002",
cp_account="6222000000000001",
income="100.00",
at="2026-01-15T11:00:00",
)
matching.reconcile_rows(self.connection, [row_b])
bal_a = calculation.compute_pair_balance(
self.connection, self.company_a, self.company_b, cutoff="2026-01-31"
)
self.assertEqual("full", bal_a["basis"])
self.assertEqual("200", bal_a["opening"])
self.assertEqual("100.00", bal_a["net_change"])
self.assertEqual("300.00", bal_a["closing"])
bal_b = calculation.compute_pair_balance(
self.connection, self.company_b, self.company_a, cutoff="2026-01-31"
)
self.assertEqual("full", bal_b["basis"])
self.assertEqual("-200", bal_b["opening"])
self.assertEqual("-100.00", bal_b["net_change"])
self.assertEqual("-300.00", bal_b["closing"])
# 双边守恒
self.assertEqual(
Decimal(bal_a["closing"]) + Decimal(bal_b["closing"]),
Decimal("0"),
)
class CalculationApiTests(unittest.TestCase):