mirror of
https://github.com/GSA/notifications-admin.git
synced 2026-05-28 09:59:59 -04:00
All paragraphs should have class="govuk-body", or be otherwise custom-styled. This commit adds some extra checks to our test fixture that looks for paragraphs that don’t have any styling. Our test coverage is pretty good, so this should check almost all pages, and prevent regressions. I’ve done this in such a way that it can be extended for other elements (e.g. links) in the future.
230 lines
9.7 KiB
HTML
230 lines
9.7 KiB
HTML
{% from "components/table.html" import mapping_table, row, text_field, field, row_heading %}
|
||
{% from "components/live-search.html" import live_search %}
|
||
{% from "components/details/macro.njk" import govukDetails %}
|
||
|
||
{% extends "content_template.html" %}
|
||
|
||
{% block per_page_title %}
|
||
Pricing
|
||
{% endblock %}
|
||
|
||
{% block content_column_content %}
|
||
|
||
<h1 class="heading-large">Pricing</h1>
|
||
<p class="govuk-body">To use GOV.UK Notify, there’s:</p>
|
||
<ul class="list list-bullet">
|
||
<li>no monthly charge</li>
|
||
<li>no setup fee</li>
|
||
<li>no procurement cost</li>
|
||
</ul>
|
||
|
||
<p class="govuk-body">
|
||
{% if not current_user.is_authenticated %}
|
||
<a class="govuk-link govuk-link--no-visited-state" href="{{ url_for('main.register') }}">Create an account</a> then add as many different services as you need to.</p>
|
||
{% else %}
|
||
You can add as many different services as you need to.
|
||
{% endif %}
|
||
</p>
|
||
|
||
<p class="govuk-body">When you add a new service it will start in <a class="govuk-link govuk-link--no-visited-state" href="{{ url_for('main.trial_mode_new') }}">trial mode</a>.</p>
|
||
|
||
<h2 class="heading-medium" id="emails">Emails</h2>
|
||
<p class="govuk-body">It’s free to send emails through Notify.</p>
|
||
|
||
<h2 class="heading-medium" id="text-messages">Text messages</h2>
|
||
<p class="govuk-body">Every service you add has an annual allowance of free text messages.</p>
|
||
<p class="govuk-body">If your organisation has more than one service on Notify, they each have a separate allowance.</p>
|
||
<p class="govuk-body">The allowance is:</p>
|
||
<ul class="list list-bullet">
|
||
<li>250,000 free text messages for central government services</li>
|
||
<li>25,000 free text messages for other public sector services</li>
|
||
</ul>
|
||
<p class="govuk-body">It costs 1.58 pence (plus VAT) for each text message you send after you've used your free allowance.</p>
|
||
<p class="govuk-body">See <a class="govuk-link govuk-link--no-visited-state" href="{{ url_for('main.how_to_pay') }}">how to pay</a>.
|
||
|
||
<h3 class="heading-small" id="long-text-messages">Long text messages</h3>
|
||
<p class="govuk-body">If a text message is longer than 160 characters (including spaces), it’ll be charged as more than one message:</p>
|
||
<div class="bottom-gutter-3-2">
|
||
{% call mapping_table(
|
||
caption='Text message pricing',
|
||
field_headings=['Message length', 'Charge'],
|
||
field_headings_visible=True,
|
||
caption_visible=False
|
||
) %}
|
||
{% for message_length, charge in [
|
||
('Up to 160 characters', '1 text message'),
|
||
('Up to 306 characters', '2 text messages'),
|
||
('Up to 459 characters', '3 text messages'),
|
||
('Up to 612 characters', '4 text messages'),
|
||
('Up to 765 characters', '5 text messages'),
|
||
('Up to 918 characters', '6 text messages'),
|
||
] %}
|
||
{% call row() %}
|
||
{{ text_field(message_length) }}
|
||
{{ text_field(charge) }}
|
||
{% endcall %}
|
||
{% endfor %}
|
||
{% endcall %}
|
||
</div>
|
||
<h3 class="heading-small" id="accents">Accents and accented characters</h3>
|
||
<p class="govuk-body">Some languages, such as Welsh, use accented characters.</p>
|
||
<p class="govuk-body">Text messages containing the following accented characters are charged at the normal rate: Ä, É, Ö, Ü, à, ä, é, è, ì, ò, ö, ù, ü.</p>
|
||
<p class="govuk-body">Using other accented characters can increase the cost of sending text messages.<p class="govuk-body">
|
||
{% set accentedChars %}
|
||
<div class="bottom-gutter-3-2">
|
||
{% call mapping_table(
|
||
caption='Accented characters that affect text message charges',
|
||
field_headings=['Character', 'Description'],
|
||
field_headings_visible=True,
|
||
caption_visible=False
|
||
) %}
|
||
{% for letter, description in [
|
||
('Â', 'Capital letter A with circumflex'),
|
||
('Á', 'Capital letter A with acute'),
|
||
('À', 'Capital letter A with grave'),
|
||
('Ê', 'Capital letter E with circumflex'),
|
||
('È', 'Capital letter E with grave'),
|
||
('Ë', 'Capital letter E with dieresis'),
|
||
('Î', 'Capital letter I with circumflex'),
|
||
('Í', 'Capital letter I with acute'),
|
||
('Ì', 'Capital letter I with grave'),
|
||
('Ï', 'Capital letter I with dieresis'),
|
||
('Ô', 'Capital letter O with circumflex'),
|
||
('Ó', 'Capital letter O with acute'),
|
||
('Ò', 'Capital letter O with grave'),
|
||
('Û', 'Capital letter U with circumflex'),
|
||
('Ú', 'Capital letter U with acute'),
|
||
('Ù', 'Capital letter U with grave'),
|
||
('Ŵ', 'Capital letter W with circumflex'),
|
||
('Ẃ', 'Capital letter W with acute'),
|
||
('Ẁ', 'Capital letter W with grave'),
|
||
('Ẅ', 'Capital letter W with dieresis'),
|
||
('Ŷ', 'Capital letter Y with circumflex'),
|
||
('Ý', 'Capital letter Y with acute'),
|
||
('Ỳ', 'Capital letter Y with grave'),
|
||
('Ÿ', 'Capital letter Y with dieresis'),
|
||
('â', 'Lower case letter a with circumflex'),
|
||
('á', 'Lower case letter a with acute'),
|
||
('ê', 'Lower case letter e with circumflex'),
|
||
('ë', 'Lower case letter e with dieresis'),
|
||
('î', 'Lower case letter i with circumflex'),
|
||
('í', 'Lower case letter i with acute'),
|
||
('ï', 'Lower case letter i with dieresis'),
|
||
('ô', 'Lower case letter o with circumflex'),
|
||
('ó', 'Lower case letter o with acute'),
|
||
('û', 'Lower case letter u with circumflex'),
|
||
('ú', 'Lower case letter u with acute'),
|
||
('ŵ', 'Lower case letter w with circumflex'),
|
||
('ẃ', 'Lower case letter w with acute'),
|
||
('ẁ', 'Lower case letter w with grave'),
|
||
('ẅ', 'Lower case letter w with dieresis'),
|
||
('ŷ', 'Lower case letter y with circumflex'),
|
||
('ý', 'Lower case letter y with acute'),
|
||
('ỳ', 'Lower case letter y with grave'),
|
||
('ÿ', 'Lower case letter y with dieresis'),
|
||
] %}
|
||
{% call row() %}
|
||
{{ text_field(letter) }}
|
||
{{ text_field(description) }}
|
||
{% endcall %}
|
||
{% endfor %}
|
||
{% endcall %}
|
||
</div>
|
||
{% endset %}
|
||
{{ govukDetails({
|
||
"summaryText": "Accented characters that affect text message charges",
|
||
"html": accentedChars
|
||
}) }}
|
||
|
||
<div class="bottom-gutter-3-2">
|
||
{% call mapping_table(
|
||
caption='Pricing for text messages containing accented characters that affect the charges',
|
||
field_headings=['Message length', 'Charge'],
|
||
field_headings_visible=True,
|
||
caption_visible=False
|
||
) %}
|
||
{% for message_length, charge in [
|
||
('Up to 70 characters', '1 text message'),
|
||
('Up to 134 characters', '2 text messages'),
|
||
('Up to 201 characters', '3 text messages'),
|
||
('Up to 268 characters', '4 text messages'),
|
||
('Each additional 67 characters', '1 additional text message'),
|
||
] %}
|
||
{% call row() %}
|
||
{{ text_field(message_length) }}
|
||
{{ text_field(charge) }}
|
||
{% endcall %}
|
||
{% endfor %}
|
||
{% endcall %}
|
||
</div>
|
||
|
||
<h3 class="heading-small" id="international-numbers">Sending text messages to international numbers</h3>
|
||
<p class="govuk-body">It might cost more to send text messages to international numbers than UK ones, depending on the country.</p>
|
||
{% set smsIntRates %}
|
||
{{ live_search(target_selector='#international-pricing .table-row', show=True, form=search_form, label='Search by country name or code') }}
|
||
|
||
<div id="international-pricing" class="bottom-gutter-3-2">
|
||
{% call mapping_table(
|
||
caption='Letter pricing',
|
||
field_headings=['Country code', 'Country', 'Cost multiplier'],
|
||
field_headings_visible=True,
|
||
caption_visible=False
|
||
) %}
|
||
{% for cc, names, billable_units in international_sms_rates %}
|
||
{% call row() %}
|
||
{{ text_field('+' + cc) }}
|
||
{% call field() %}
|
||
{% for name in names %}
|
||
{{ name }}<br>
|
||
{% endfor %}
|
||
{% endcall %}
|
||
{{ text_field('{} ×'.format(billable_units)|safe) }}
|
||
{% endcall %}
|
||
{% endfor %}
|
||
{% endcall %}
|
||
</div>
|
||
|
||
{% endset %}
|
||
{{ govukDetails({
|
||
"summaryText": "International text message rates",
|
||
"html": smsIntRates
|
||
}) }}
|
||
|
||
<h2 class="heading-medium" id="letters">Letters</h2>
|
||
<p class="govuk-body">The cost of sending a letter depends on the postage you choose and how many sheets of paper you need.</p>
|
||
|
||
<div>
|
||
{% call mapping_table(
|
||
caption='Letter pricing',
|
||
field_headings=['Paper', 'Second class', 'First class'],
|
||
field_headings_visible=True,
|
||
caption_visible=False
|
||
) %}
|
||
{% for sheets, second, first in [
|
||
('1 sheet', '35', '61'),
|
||
('2 sheets', '40', '66'),
|
||
('3 sheets', '45', '71'),
|
||
('4 sheets', '50', '76'),
|
||
('5 sheets', '55', '81'),
|
||
] %}
|
||
{% call row() %}
|
||
{% call row_heading() %} {{ sheets }} (double-sided) {% endcall %}
|
||
{{ text_field(second + 'p + VAT') }}
|
||
{{ text_field(first + 'p + VAT') }}
|
||
{% endcall %}
|
||
{% endfor %}
|
||
{% endcall %}
|
||
</div>
|
||
<div class="panel panel-border-wide">
|
||
<p class="govuk-body">These prices were updated on 1 October 2019.</p>
|
||
</div>
|
||
<p class="govuk-body">Prices include:</p>
|
||
<ul class="list list-bullet">
|
||
<li>paper</li>
|
||
<li>double-sided colour printing</li>
|
||
<li>C5 size envelopes with an address window</li>
|
||
<li>first or second class postage</li>
|
||
</ul>
|
||
|
||
{% endblock %}
|