feat(backend): add Remittance + CasAdjustment ORM models
This commit is contained in:
@@ -9,7 +9,7 @@ from decimal import Decimal
|
||||
import pytest
|
||||
|
||||
from cyclone import db
|
||||
from cyclone.db import Base, Batch, Claim, ClaimState
|
||||
from cyclone.db import Base, Batch, CasAdjustment, Claim, ClaimState, Remittance
|
||||
|
||||
|
||||
@pytest.fixture(autouse=True)
|
||||
@@ -155,3 +155,64 @@ def test_batch_cascade_delete_drops_claims():
|
||||
with db.SessionLocal()() as s:
|
||||
assert s.get(Batch, "b1") is None
|
||||
assert s.get(Claim, "CLM-1") is None
|
||||
|
||||
|
||||
def test_create_and_query_remittance():
|
||||
with db.SessionLocal()() as s:
|
||||
s.add(Batch(
|
||||
id="b1", kind="835", input_filename="x",
|
||||
parsed_at=datetime(2026, 6, 19, tzinfo=timezone.utc),
|
||||
))
|
||||
r = Remittance(
|
||||
id="CLP-1",
|
||||
batch_id="b1",
|
||||
payer_claim_control_number="CLP-1",
|
||||
status_code="1",
|
||||
total_charge=Decimal("124.00"),
|
||||
total_paid=Decimal("124.00"),
|
||||
received_at=datetime(2026, 6, 19, tzinfo=timezone.utc),
|
||||
service_date=date(2026, 6, 1),
|
||||
is_reversal=False,
|
||||
)
|
||||
s.add(r)
|
||||
s.commit()
|
||||
|
||||
with db.SessionLocal()() as s:
|
||||
loaded = s.get(Remittance, "CLP-1")
|
||||
assert loaded is not None
|
||||
assert loaded.status_code == "1"
|
||||
assert loaded.total_paid == Decimal("124.00")
|
||||
assert loaded.is_reversal is False
|
||||
assert loaded.adjustment_amount == Decimal("0") # default
|
||||
|
||||
|
||||
def test_cas_adjustment_aggregation():
|
||||
"""Sum of CAS rows for a Remittance equals expected total."""
|
||||
with db.SessionLocal()() as s:
|
||||
s.add(Batch(
|
||||
id="b1", kind="835", input_filename="x",
|
||||
parsed_at=datetime(2026, 6, 19, tzinfo=timezone.utc),
|
||||
))
|
||||
r = Remittance(
|
||||
id="CLP-1", batch_id="b1",
|
||||
payer_claim_control_number="CLP-1", status_code="1",
|
||||
total_charge=Decimal("124.00"), total_paid=Decimal("62.00"),
|
||||
received_at=datetime(2026, 6, 19, tzinfo=timezone.utc),
|
||||
)
|
||||
s.add(r)
|
||||
s.flush()
|
||||
s.add_all([
|
||||
CasAdjustment(remittance_id="CLP-1", group_code="CO", reason_code="45",
|
||||
amount=Decimal("30.00")),
|
||||
CasAdjustment(remittance_id="CLP-1", group_code="PR", reason_code="1",
|
||||
amount=Decimal("32.00")),
|
||||
])
|
||||
s.commit()
|
||||
|
||||
from sqlalchemy import select, func
|
||||
with db.SessionLocal()() as s:
|
||||
total = s.execute(
|
||||
select(func.sum(CasAdjustment.amount))
|
||||
.where(CasAdjustment.remittance_id == "CLP-1")
|
||||
).scalar_one()
|
||||
assert total == Decimal("62.00")
|
||||
|
||||
Reference in New Issue
Block a user