Skip to content

feat(pricing): drop flat fee, add 19% German VAT#30

Merged
max-tet merged 2 commits into
mainfrom
pricing-vat
Jun 9, 2026
Merged

feat(pricing): drop flat fee, add 19% German VAT#30
max-tet merged 2 commits into
mainfrom
pricing-vat

Conversation

@ClaydeCode

@ClaydeCode ClaydeCode commented Jun 8, 2026

Copy link
Copy Markdown
Contributor

What

Mirrors the backend pricing change in the Subscribe-card price helper:

old:  (vmCost + volumeSizeGb*0.04 + 3.00) * 1.5
new:  (vmCost + volumeSizeGb*0.04) * 1.5 * 1.19
  • Removes the flat €3.00 (was a revenue share, not management cost).
  • Adds 19% German VAT (VAT_MULTIPLIER = 1.19). Displayed price is now gross.
  • Drops the now-unused MANAGEMENT_COST_EUR constant.

Only affects the Subscribe / Reactivate button label for not-yet-subscribed shards. Active/grace subscribers still render the controller-supplied price_cents and stay grandfathered.

Sibling PRs (same change, must merge together)

Tests

vue-cli-service test:unit14 passed incl pricing.spec.js (4 expected values recomputed: xs+20=€11.25, s+30=€21.78, m+250=€53.19, xl+400=€210.63).

Recommended reading order

  1. src/lib/pricing.js — the formula + constants
  2. tests/unit/pricing.spec.js — pinned expected values

🤖 Generated with Claude Code


2nd commit — VAT transparency

Adds a muted incl. 19% VAT (€X.XX) line under the active-plan price and the pending-upgrade price in the subscription card (Settings.vue), using Bootstrap's text-muted small. The gross price stays prominent.

New vatAmountEur(grossCents) helper in pricing.js = gross - round(gross/1.19), with unit tests (4 cases). vue-cli-service test:unit → 18 passed; lint clean.

Pricing formula changes from
  (vm_base + disk_gb*0.04 + 3.00) * 1.5
to
  (vm_base + disk_gb*0.04) * 1.5 * 1.19

The flat 3.00 EUR was a revenue share, not a management cost, and is
removed. The displayed price is now gross, including 19% German VAT.

Only affects the Subscribe / Reactivate button label for not-yet-
subscribed shards; active and grace subscribers still render the
controller-supplied price_cents and stay grandfathered.

Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
Adds a muted, smaller "incl. 19% VAT (€X.XX)" line under the active-plan
price and the pending-upgrade price in the subscription card. Shows the
VAT share of the gross price; the gross figure stays prominent.

New vatAmountEur() helper in pricing.js (gross - round(gross/1.19)),
covered by unit tests.

Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
@max-tet max-tet merged commit 96d53b4 into main Jun 9, 2026
2 checks passed
@max-tet max-tet deleted the pricing-vat branch June 9, 2026 07:05
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

2 participants