CTM Calculators: Add PS billing milestones, Adjust Genesys RAMP
This commit is contained in:
@@ -41,6 +41,10 @@ def test_ramp_zeroes_year_one_licences():
|
||||
2028: 4_300_000.0}
|
||||
assert a4.licence_costs_by_year(0)[2026] == 4_300_000.0
|
||||
assert a4.licence_costs_by_year(18)[2027] == pytest.approx(4_300_000 * 6 / 12)
|
||||
# The order form's ramp is 6 months — licences bill from July 2026.
|
||||
assert a4.DEFAULT_RAMP_MONTHS == 6
|
||||
assert a4.licence_costs_by_year() == {2026: 2_150_000.0, 2027: 4_300_000.0,
|
||||
2028: 4_300_000.0}
|
||||
|
||||
|
||||
def test_current_state_run_off():
|
||||
@@ -113,3 +117,21 @@ def test_contracted_overlays_verbatim():
|
||||
assert a4.TCO_VERBATIM["ccaas_annual"] == 4_300_000 # deck record intact
|
||||
assert a4.tco("current_annual") == a4.TCO_VERBATIM["current_annual"]
|
||||
assert a4.licence_costs_by_year(12, a4.tco("ccaas_annual"))[2027] == 3_200_000
|
||||
|
||||
|
||||
def test_sow_milestones_and_managed_services():
|
||||
assert a4.PS_CONTRACTED_TOTAL == pytest.approx(2_025_446.48)
|
||||
for m in a4.PS_MILESTONES: # amounts match the shares
|
||||
assert m["amount"] == pytest.approx(m["share"] * a4.PS_CONTRACTED_TOTAL,
|
||||
abs=0.01)
|
||||
ps = a4.ps_costs_by_year(contracted=True) # 50/50 across 2026-27
|
||||
assert ps[2026] == pytest.approx(607_633.94 + 405_089.30 + 167_000)
|
||||
assert ps[2027] == pytest.approx(607_633.94 + 405_089.30)
|
||||
assert ps[2028] == 0.0
|
||||
# The deck's verbatim year-1 lump stays intact for the as-pitched frame.
|
||||
assert a4.ps_costs_by_year() == {2026: 2_567_000, 2027: 0.0, 2028: 0.0}
|
||||
# Managed services bill from the month after MCX go-live (Sep 30 → Oct).
|
||||
ms = a4.managed_services_by_year()
|
||||
assert ms[2026] == pytest.approx(410_918.40 * 3 / 12)
|
||||
assert ms[2027] == pytest.approx(410_918.40)
|
||||
assert ms[2028] == pytest.approx(410_918.40)
|
||||
|
||||
Reference in New Issue
Block a user