ccs-digitalmarketplace-frameworks 2.4.0 → 3.0.1
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/CHANGELOG.md +4 -0
- package/frameworks/digital-outcomes-6/manifests/agreement.yml +10 -0
- package/frameworks/digital-outcomes-6/questions/agreements/legalText.yml +52 -0
- package/frameworks/digital-outcomes-6/questions/agreements/signerName.yml +15 -0
- package/frameworks/digital-outcomes-6/questions/agreements/signerRole.yml +15 -0
- package/frameworks/digital-outcomes-6/questions/agreements/signerTermsAndConditions.yml +15 -0
- package/frameworks/digital-outcomes-and-specialists-7/questions/services/qualityAssuranceTestingQualityAssuranceTestingAnalystBasicDayRate.yml +1 -1
- package/frameworks/digital-outcomes-and-specialists-7/questions/services/qualityAssuranceTestingQualityAssuranceTestingAnalystBasicDayRateSpecialist.yml +1 -1
- package/frameworks/digital-outcomes-and-specialists-7/questions/services/qualityAssuranceTestingQualityAssuranceTestingAnalystBasicLocations.yml +2 -2
- package/frameworks/digital-outcomes-and-specialists-7/questions/services/qualityAssuranceTestingQualityAssuranceTestingAnalystBasicUkDayRate.yml +1 -1
- package/frameworks/digital-outcomes-and-specialists-7/questions/services/qualityAssuranceTestingQualityAssuranceTestingAnalystLeadDayRate.yml +1 -1
- package/frameworks/digital-outcomes-and-specialists-7/questions/services/qualityAssuranceTestingQualityAssuranceTestingAnalystLeadDayRateSpecialist.yml +1 -1
- package/frameworks/digital-outcomes-and-specialists-7/questions/services/qualityAssuranceTestingQualityAssuranceTestingAnalystLeadLocations.yml +2 -2
- package/frameworks/digital-outcomes-and-specialists-7/questions/services/qualityAssuranceTestingQualityAssuranceTestingAnalystLeadUkDayRate.yml +1 -1
- package/frameworks/digital-outcomes-and-specialists-7/questions/services/qualityAssuranceTestingQualityAssuranceTestingAnalystRoles.yml +1 -1
- package/frameworks/digital-outcomes-and-specialists-7/questions/services/qualityAssuranceTestingQualityAssuranceTestingAnalystSeniorDayRate.yml +1 -1
- package/frameworks/digital-outcomes-and-specialists-7/questions/services/qualityAssuranceTestingQualityAssuranceTestingAnalystSeniorDayRateSpecialist.yml +1 -1
- package/frameworks/digital-outcomes-and-specialists-7/questions/services/qualityAssuranceTestingQualityAssuranceTestingAnalystSeniorLocations.yml +2 -2
- package/frameworks/digital-outcomes-and-specialists-7/questions/services/qualityAssuranceTestingQualityAssuranceTestingAnalystSeniorUkDayRate.yml +1 -1
- package/frameworks/digital-outcomes-and-specialists-7/questions/services/qualityAssuranceTestingQualityAssuranceTestingAnalystTesterDayRate.yml +1 -1
- package/frameworks/digital-outcomes-and-specialists-7/questions/services/qualityAssuranceTestingQualityAssuranceTestingAnalystTesterDayRateSpecialist.yml +1 -1
- package/frameworks/digital-outcomes-and-specialists-7/questions/services/qualityAssuranceTestingQualityAssuranceTestingAnalystTesterLocations.yml +2 -2
- package/frameworks/digital-outcomes-and-specialists-7/questions/services/qualityAssuranceTestingQualityAssuranceTestingAnalystTesterUkDayRate.yml +1 -1
- package/frameworks/g-cloud-13/manifests/agreement.yml +10 -0
- package/frameworks/g-cloud-13/questions/agreements/legalText.yml +142 -0
- package/frameworks/g-cloud-13/questions/agreements/signerName.yml +15 -0
- package/frameworks/g-cloud-13/questions/agreements/signerRole.yml +15 -0
- package/frameworks/g-cloud-13/questions/agreements/signerTermsAndConditions.yml +15 -0
- package/package.json +1 -1
- package/requirements-dev.txt +2 -2
- package/requirements.in +1 -1
- package/requirements.txt +1 -1
- package/schema_generator/validation.py +99 -22
- package/scripts/generate-validation-schemas.py +9 -1
- package/tests/test_content.py +3 -1
package/CHANGELOG.md
CHANGED
|
@@ -0,0 +1,52 @@
|
|
|
1
|
+
type: text
|
|
2
|
+
optional: true
|
|
3
|
+
question: |
|
|
4
|
+
<ol class="govuk-list govuk-list--number">
|
|
5
|
+
<li>
|
|
6
|
+
<strong>CCS</strong>:
|
|
7
|
+
The Minister for the Cabinet Office represented by its executive agency the Crown Commercial Service (CCS). Its offices are on: 9th Floor, The Capital, Old Hall Street, Liverpool L3 9PP.
|
|
8
|
+
</li>
|
|
9
|
+
<li>
|
|
10
|
+
<strong>Supplier</strong>: [[registered_name]]<br>
|
|
11
|
+
address: [[registered_address]]<br>
|
|
12
|
+
registration number: [[registration_number]]<br>
|
|
13
|
+
SID4GOV ID: [[sid4_goc_id]]<br>
|
|
14
|
+
</li>
|
|
15
|
+
<li>
|
|
16
|
+
<strong>Framework Contract</strong>: This framework contract between CCS and the Supplier allows the Supplier to be considered for Call-Off Contracts to supply the Deliverables in [[completed_lots_sentence]].
|
|
17
|
+
You cannot deliver in any other Lot under this Contract. Any references made to other Lots in this Contract do not apply. This opportunity is advertised in the Contract Notice in the Find a Tender Service reference (2022/S 000-001105).
|
|
18
|
+
</li>
|
|
19
|
+
<li>
|
|
20
|
+
<strong>Deliverables</strong>: See Framework Schedule 1 (Specification) for further details.
|
|
21
|
+
</li>
|
|
22
|
+
<li>
|
|
23
|
+
<strong>Framework Start Date</strong>: 28 June 2022
|
|
24
|
+
</li>
|
|
25
|
+
<li>
|
|
26
|
+
<strong>Framework Expiry Date</strong>: 23:59 on 27 June 2024
|
|
27
|
+
</li>
|
|
28
|
+
<li>
|
|
29
|
+
<strong>Framework Initial Period</strong>: From Framework Start Date to Framework Expiry Date, inclusive.
|
|
30
|
+
</li>
|
|
31
|
+
<li>
|
|
32
|
+
<strong>Framework Optional Extension Period</strong>: Up to twelve (12) months, by CCS giving written notice to Suppliers.
|
|
33
|
+
</li>
|
|
34
|
+
<li value="18">
|
|
35
|
+
<strong>Supplier Authorised Representative</strong>: [[primary_contact]], [[contacts_role]], [[contact_email_contract_notice]]
|
|
36
|
+
</li>
|
|
37
|
+
</ol>
|
|
38
|
+
|
|
39
|
+
<p>
|
|
40
|
+
The finalised Framework Award Form includes an electronically signed Framework Award Form. It is electronically signed by the Supplier when they make the legal declaration confirming their agreement to the Digital Outcomes 6 Framework Contract, and countersigned by the Crown Commercial Service.
|
|
41
|
+
</p>
|
|
42
|
+
|
|
43
|
+
<p class="govuk-body">
|
|
44
|
+
<a href="[[framework_govuk_url]]">
|
|
45
|
+
Read the [[framework_name]] contract terms and conditions
|
|
46
|
+
</a>
|
|
47
|
+
</p>
|
|
48
|
+
|
|
49
|
+
depends:
|
|
50
|
+
- "on": agreementVersion
|
|
51
|
+
being:
|
|
52
|
+
- standard
|
|
@@ -0,0 +1,15 @@
|
|
|
1
|
+
question: Your full name
|
|
2
|
+
type: text
|
|
3
|
+
|
|
4
|
+
depends:
|
|
5
|
+
- "on": agreementVersion
|
|
6
|
+
being:
|
|
7
|
+
- standard
|
|
8
|
+
|
|
9
|
+
max_length_in_characters: 256
|
|
10
|
+
|
|
11
|
+
validations:
|
|
12
|
+
- name: answer_required
|
|
13
|
+
message: Enter your full name.
|
|
14
|
+
- name: under_character_limit
|
|
15
|
+
message: Name must be under 256 characters.
|
|
@@ -0,0 +1,15 @@
|
|
|
1
|
+
question: Your role in the company
|
|
2
|
+
type: text
|
|
3
|
+
|
|
4
|
+
depends:
|
|
5
|
+
- "on": agreementVersion
|
|
6
|
+
being:
|
|
7
|
+
- standard
|
|
8
|
+
|
|
9
|
+
max_length_in_characters: 256
|
|
10
|
+
|
|
11
|
+
validations:
|
|
12
|
+
- name: answer_required
|
|
13
|
+
message: Enter your role in the company.
|
|
14
|
+
- name: under_character_limit
|
|
15
|
+
message: Name must be under 256 characters.
|
|
@@ -0,0 +1,15 @@
|
|
|
1
|
+
question: <span class="govuk-visually-hidden">Do you accept the terms and conditions of the [[contract_title]]?</span>
|
|
2
|
+
type: checkboxes
|
|
3
|
+
|
|
4
|
+
depends:
|
|
5
|
+
- "on": agreementVersion
|
|
6
|
+
being:
|
|
7
|
+
- standard
|
|
8
|
+
|
|
9
|
+
options:
|
|
10
|
+
- label: I accept the terms and conditions of the [[contract_title]]
|
|
11
|
+
value: "yes"
|
|
12
|
+
|
|
13
|
+
validations:
|
|
14
|
+
- name: answer_required
|
|
15
|
+
message: Accept the terms and conditions of the [[contract_title]].
|
|
@@ -20,7 +20,7 @@ digit_limits:
|
|
|
20
20
|
validations:
|
|
21
21
|
- name: answer_required
|
|
22
22
|
field: qualityAssuranceTestingQualityAssuranceTestingAnalystBasicPriceMax
|
|
23
|
-
message: Enter the amount you will charge for a
|
|
23
|
+
message: Enter the amount you will charge for a QAT analyst
|
|
24
24
|
- name: not_money_format
|
|
25
25
|
field: qualityAssuranceTestingQualityAssuranceTestingAnalystBasicPriceMax
|
|
26
26
|
message: Maximum price must be a number less than 10,000, without units, like 99.95
|
|
@@ -20,7 +20,7 @@ digit_limits:
|
|
|
20
20
|
validations:
|
|
21
21
|
- name: answer_required
|
|
22
22
|
field: qualityAssuranceTestingQualityAssuranceTestingAnalystBasicPriceMax
|
|
23
|
-
message: Enter the amount you will charge for a
|
|
23
|
+
message: Enter the amount you will charge for a QAT analyst
|
|
24
24
|
- name: not_money_format
|
|
25
25
|
field: qualityAssuranceTestingQualityAssuranceTestingAnalystBasicPriceMax
|
|
26
26
|
message: Maximum price must be a number less than 10,000, without units, like 99.95
|
|
@@ -1,6 +1,6 @@
|
|
|
1
|
-
name: Where will your
|
|
1
|
+
name: Where will your QAT analyst work?
|
|
2
2
|
question: |
|
|
3
|
-
<p class="govuk-!-margin-bottom-2"><span class="govuk-fieldset__legend--s">Where will your
|
|
3
|
+
<p class="govuk-!-margin-bottom-2"><span class="govuk-fieldset__legend--s">Where will your QAT analyst work?</span></p>
|
|
4
4
|
<p class="govuk-!-margin-bottom-0"><span class="govuk-fieldset__legend--s">Choose all the locations where the specialist can work at buyer’s sites, and whether they can work offsite.</span></p>
|
|
5
5
|
hint: |
|
|
6
6
|
‘Offsite’ means the supplier will not be working at the buyer’s own sites.
|
|
@@ -20,7 +20,7 @@ digit_limits:
|
|
|
20
20
|
validations:
|
|
21
21
|
- name: answer_required
|
|
22
22
|
field: qualityAssuranceTestingQualityAssuranceTestingAnalystBasicUkPriceMax
|
|
23
|
-
message: Enter the amount you will charge for a
|
|
23
|
+
message: Enter the amount you will charge for a QAT analyst
|
|
24
24
|
- name: not_money_format
|
|
25
25
|
field: qualityAssuranceTestingQualityAssuranceTestingAnalystBasicUkPriceMax
|
|
26
26
|
message: Maximum price must be a number less than 10,000, without units, like 99.95
|
|
@@ -20,7 +20,7 @@ digit_limits:
|
|
|
20
20
|
validations:
|
|
21
21
|
- name: answer_required
|
|
22
22
|
field: qualityAssuranceTestingQualityAssuranceTestingAnalystLeadPriceMax
|
|
23
|
-
message: Enter the amount you will charge for a lead
|
|
23
|
+
message: Enter the amount you will charge for a lead QAT analyst
|
|
24
24
|
- name: not_money_format
|
|
25
25
|
field: qualityAssuranceTestingQualityAssuranceTestingAnalystLeadPriceMax
|
|
26
26
|
message: Maximum price must be a number less than 10,000, without units, like 99.95
|
|
@@ -20,7 +20,7 @@ digit_limits:
|
|
|
20
20
|
validations:
|
|
21
21
|
- name: answer_required
|
|
22
22
|
field: qualityAssuranceTestingQualityAssuranceTestingAnalystLeadPriceMax
|
|
23
|
-
message: Enter the amount you will charge for a lead
|
|
23
|
+
message: Enter the amount you will charge for a lead QAT analyst
|
|
24
24
|
- name: not_money_format
|
|
25
25
|
field: qualityAssuranceTestingQualityAssuranceTestingAnalystLeadPriceMax
|
|
26
26
|
message: Maximum price must be a number less than 10,000, without units, like 99.95
|
|
@@ -1,6 +1,6 @@
|
|
|
1
|
-
name: Where will your lead
|
|
1
|
+
name: Where will your lead QAT analyst work?
|
|
2
2
|
question: |
|
|
3
|
-
<p class="govuk-!-margin-bottom-2"><span class="govuk-fieldset__legend--s">Where will your lead
|
|
3
|
+
<p class="govuk-!-margin-bottom-2"><span class="govuk-fieldset__legend--s">Where will your lead QAT analyst work?</span></p>
|
|
4
4
|
<p class="govuk-!-margin-bottom-0"><span class="govuk-fieldset__legend--s">Choose all the locations where the specialist can work at buyer’s sites, and whether they can work offsite.</span></p>
|
|
5
5
|
hint: |
|
|
6
6
|
‘Offsite’ means the supplier will not be working at the buyer’s own sites.
|
|
@@ -20,7 +20,7 @@ digit_limits:
|
|
|
20
20
|
validations:
|
|
21
21
|
- name: answer_required
|
|
22
22
|
field: qualityAssuranceTestingQualityAssuranceTestingAnalystLeadUkPriceMax
|
|
23
|
-
message: Enter the amount you will charge for a lead
|
|
23
|
+
message: Enter the amount you will charge for a lead QAT analyst
|
|
24
24
|
- name: not_money_format
|
|
25
25
|
field: qualityAssuranceTestingQualityAssuranceTestingAnalystLeadUkPriceMax
|
|
26
26
|
message: Maximum price must be a number less than 10,000, without units, like 99.95
|
|
@@ -20,7 +20,7 @@ digit_limits:
|
|
|
20
20
|
validations:
|
|
21
21
|
- name: answer_required
|
|
22
22
|
field: qualityAssuranceTestingQualityAssuranceTestingAnalystSeniorPriceMax
|
|
23
|
-
message: Enter the amount you will charge for a senior
|
|
23
|
+
message: Enter the amount you will charge for a senior QAT analyst
|
|
24
24
|
- name: not_money_format
|
|
25
25
|
field: qualityAssuranceTestingQualityAssuranceTestingAnalystSeniorPriceMax
|
|
26
26
|
message: Maximum price must be a number less than 10,000, without units, like 99.95
|
|
@@ -20,7 +20,7 @@ digit_limits:
|
|
|
20
20
|
validations:
|
|
21
21
|
- name: answer_required
|
|
22
22
|
field: qualityAssuranceTestingQualityAssuranceTestingAnalystSeniorPriceMax
|
|
23
|
-
message: Enter the amount you will charge for a senior
|
|
23
|
+
message: Enter the amount you will charge for a senior QAT analyst
|
|
24
24
|
- name: not_money_format
|
|
25
25
|
field: qualityAssuranceTestingQualityAssuranceTestingAnalystSeniorPriceMax
|
|
26
26
|
message: Maximum price must be a number less than 10,000, without units, like 99.95
|
|
@@ -1,6 +1,6 @@
|
|
|
1
|
-
name: Where will your senior
|
|
1
|
+
name: Where will your senior QAT analyst work?
|
|
2
2
|
question: |
|
|
3
|
-
<p class="govuk-!-margin-bottom-2"><span class="govuk-fieldset__legend--s">Where will your senior
|
|
3
|
+
<p class="govuk-!-margin-bottom-2"><span class="govuk-fieldset__legend--s">Where will your senior QAT analyst work?</span></p>
|
|
4
4
|
<p class="govuk-!-margin-bottom-0"><span class="govuk-fieldset__legend--s">Choose all the locations where the specialist can work at buyer’s sites, and whether they can work offsite.</span></p>
|
|
5
5
|
hint: |
|
|
6
6
|
‘Offsite’ means the supplier will not be working at the buyer’s own sites.
|
|
@@ -20,7 +20,7 @@ digit_limits:
|
|
|
20
20
|
validations:
|
|
21
21
|
- name: answer_required
|
|
22
22
|
field: qualityAssuranceTestingQualityAssuranceTestingAnalystSeniorUkPriceMax
|
|
23
|
-
message: Enter the amount you will charge for a senior
|
|
23
|
+
message: Enter the amount you will charge for a senior QAT analyst
|
|
24
24
|
- name: not_money_format
|
|
25
25
|
field: qualityAssuranceTestingQualityAssuranceTestingAnalystSeniorUkPriceMax
|
|
26
26
|
message: Maximum price must be a number less than 10,000, without units, like 99.95
|
|
@@ -20,7 +20,7 @@ digit_limits:
|
|
|
20
20
|
validations:
|
|
21
21
|
- name: answer_required
|
|
22
22
|
field: qualityAssuranceTestingQualityAssuranceTestingAnalystTesterPriceMax
|
|
23
|
-
message: Enter the amount you will charge for a tester (
|
|
23
|
+
message: Enter the amount you will charge for a tester (QAT)
|
|
24
24
|
- name: not_money_format
|
|
25
25
|
field: qualityAssuranceTestingQualityAssuranceTestingAnalystTesterPriceMax
|
|
26
26
|
message: Maximum price must be a number less than 10,000, without units, like 99.95
|
|
@@ -20,7 +20,7 @@ digit_limits:
|
|
|
20
20
|
validations:
|
|
21
21
|
- name: answer_required
|
|
22
22
|
field: qualityAssuranceTestingQualityAssuranceTestingAnalystTesterPriceMax
|
|
23
|
-
message: Enter the amount you will charge for a tester (
|
|
23
|
+
message: Enter the amount you will charge for a tester (QAT)
|
|
24
24
|
- name: not_money_format
|
|
25
25
|
field: qualityAssuranceTestingQualityAssuranceTestingAnalystTesterPriceMax
|
|
26
26
|
message: Maximum price must be a number less than 10,000, without units, like 99.95
|
|
@@ -1,6 +1,6 @@
|
|
|
1
|
-
name: Where will your tester (
|
|
1
|
+
name: Where will your tester (QAT) work?
|
|
2
2
|
question: |
|
|
3
|
-
<p class="govuk-!-margin-bottom-2"><span class="govuk-fieldset__legend--s">Where will your tester (
|
|
3
|
+
<p class="govuk-!-margin-bottom-2"><span class="govuk-fieldset__legend--s">Where will your tester (QAT) work?</span></p>
|
|
4
4
|
<p class="govuk-!-margin-bottom-0"><span class="govuk-fieldset__legend--s">Choose all the locations where the specialist can work at buyer’s sites, and whether they can work offsite.</span></p>
|
|
5
5
|
hint: |
|
|
6
6
|
‘Offsite’ means the supplier will not be working at the buyer’s own sites.
|
|
@@ -20,7 +20,7 @@ digit_limits:
|
|
|
20
20
|
validations:
|
|
21
21
|
- name: answer_required
|
|
22
22
|
field: qualityAssuranceTestingQualityAssuranceTestingAnalystTesterUkPriceMax
|
|
23
|
-
message: Enter the amount you will charge for a tester (
|
|
23
|
+
message: Enter the amount you will charge for a tester (QAT)
|
|
24
24
|
- name: not_money_format
|
|
25
25
|
field: qualityAssuranceTestingQualityAssuranceTestingAnalystTesterUkPriceMax
|
|
26
26
|
message: Maximum price must be a number less than 10,000, without units, like 99.95
|
|
@@ -0,0 +1,142 @@
|
|
|
1
|
+
type: text
|
|
2
|
+
optional: true
|
|
3
|
+
question: |
|
|
4
|
+
<h2 class="govuk-heading-m">
|
|
5
|
+
1. The Appointment
|
|
6
|
+
</h2>
|
|
7
|
+
<p>
|
|
8
|
+
This section includes terms about the Supplier appointment.
|
|
9
|
+
</p>
|
|
10
|
+
|
|
11
|
+
<p>
|
|
12
|
+
1.1 <strong>Appointment</strong>
|
|
13
|
+
<p>
|
|
14
|
+
<p>
|
|
15
|
+
Under the terms of this Framework Agreement (RM1557.13) and the Supplier’s Application, the Minister for the Cabinet Office, represented by the Crown Commercial Service (CCS), 9th Floor, The Capital, Old Hall Street, Liverpool, L3 9PP, appoints:
|
|
16
|
+
</p>
|
|
17
|
+
|
|
18
|
+
<p>
|
|
19
|
+
<strong>Company:</strong>
|
|
20
|
+
[[registered_name]]
|
|
21
|
+
</p>
|
|
22
|
+
|
|
23
|
+
<p>
|
|
24
|
+
<strong>Registered address:</strong>
|
|
25
|
+
[[registered_address]]
|
|
26
|
+
</p>
|
|
27
|
+
|
|
28
|
+
<p>
|
|
29
|
+
<strong>Company number:</strong>
|
|
30
|
+
[[registration_number]]
|
|
31
|
+
</p>
|
|
32
|
+
|
|
33
|
+
<p>
|
|
34
|
+
(the ‘Supplier’), as a Framework Agreement Supplier of G-Cloud Services who can be considered for Call-Off Contracts as outlined in the Contract Notice in the Find a Tender Service reference (2022/S 000-006385).
|
|
35
|
+
</p>
|
|
36
|
+
|
|
37
|
+
<p>
|
|
38
|
+
<span>
|
|
39
|
+
1.2
|
|
40
|
+
</span>
|
|
41
|
+
<span>
|
|
42
|
+
<strong>Appointment is to:</strong>
|
|
43
|
+
[[completed_lots]]
|
|
44
|
+
</span>
|
|
45
|
+
</p>
|
|
46
|
+
|
|
47
|
+
<p>
|
|
48
|
+
<span>
|
|
49
|
+
1.3
|
|
50
|
+
</span>
|
|
51
|
+
<span>
|
|
52
|
+
<strong>Appointment starts at:</strong>
|
|
53
|
+
9 November 2022
|
|
54
|
+
</span>
|
|
55
|
+
</p>
|
|
56
|
+
|
|
57
|
+
<p>
|
|
58
|
+
<span>
|
|
59
|
+
1.4
|
|
60
|
+
</span>
|
|
61
|
+
<span>
|
|
62
|
+
<strong>Appointment ends at:</strong>
|
|
63
|
+
23:59 on 8 November 2023 (unless this Framework Agreement is extended by CCS or Ends early).
|
|
64
|
+
</span>
|
|
65
|
+
</p>
|
|
66
|
+
|
|
67
|
+
<p>
|
|
68
|
+
<span>
|
|
69
|
+
1.5
|
|
70
|
+
</span>
|
|
71
|
+
<span>
|
|
72
|
+
<strong>Framework Agreement extension:</strong>
|
|
73
|
+
Up to 12 months, by CCS giving written notice to Suppliers.
|
|
74
|
+
</span>
|
|
75
|
+
</p>
|
|
76
|
+
|
|
77
|
+
<p>
|
|
78
|
+
<span>
|
|
79
|
+
1.6
|
|
80
|
+
</span>
|
|
81
|
+
<span>
|
|
82
|
+
<strong>Framework Agreement term:</strong>
|
|
83
|
+
From and including the date at 1.3 above (Appointment starts at) to and including the date at 1.4 above (Appointment ends at).
|
|
84
|
+
</span>
|
|
85
|
+
</p>
|
|
86
|
+
|
|
87
|
+
<p>
|
|
88
|
+
<span>
|
|
89
|
+
1.7
|
|
90
|
+
</span>
|
|
91
|
+
<span>
|
|
92
|
+
<strong>Call-Off Contract length:</strong>
|
|
93
|
+
Up to 36 months plus an optional extension period of up to 12 months.
|
|
94
|
+
</span>
|
|
95
|
+
</p>
|
|
96
|
+
|
|
97
|
+
<p>
|
|
98
|
+
<span>
|
|
99
|
+
1.8
|
|
100
|
+
</span>
|
|
101
|
+
<span>
|
|
102
|
+
The Parties agree that they have read this Framework Agreement and by signing below agree to be bound by its terms.
|
|
103
|
+
</span>
|
|
104
|
+
</p>
|
|
105
|
+
|
|
106
|
+
<p>
|
|
107
|
+
<span>
|
|
108
|
+
1.9
|
|
109
|
+
</span>
|
|
110
|
+
<span>
|
|
111
|
+
All sections, including the Invitation to Tender and Schedules to this Framework Agreement are expressly part of this Framework Agreement.
|
|
112
|
+
</span>
|
|
113
|
+
</p>
|
|
114
|
+
|
|
115
|
+
<p>
|
|
116
|
+
<span>
|
|
117
|
+
1.10
|
|
118
|
+
</span>
|
|
119
|
+
<span>
|
|
120
|
+
CCS will pay £1 to the Supplier to perform its obligations under this Framework Agreement, receipt of which is acknowledged by the Supplier signing this Framework Agreement.
|
|
121
|
+
</span>
|
|
122
|
+
</p>
|
|
123
|
+
|
|
124
|
+
<p>
|
|
125
|
+
<span>
|
|
126
|
+
1.11
|
|
127
|
+
</span>
|
|
128
|
+
<span>
|
|
129
|
+
The finalised Framework Agreement includes an electronically signed Framework Agreement. It is electronically signed by the Supplier when they make the legal declaration confirming their agreement to the G-Cloud 13 Framework Agreement, and countersigned by the Crown Commercial Service.
|
|
130
|
+
</span>
|
|
131
|
+
</p>
|
|
132
|
+
|
|
133
|
+
<p class="govuk-body">
|
|
134
|
+
<a href="[[framework_govuk_url]]">
|
|
135
|
+
Read the [[framework_name]] contract terms and conditions
|
|
136
|
+
</a>
|
|
137
|
+
</p>
|
|
138
|
+
|
|
139
|
+
depends:
|
|
140
|
+
- "on": agreementVersion
|
|
141
|
+
being:
|
|
142
|
+
- standard
|
|
@@ -0,0 +1,15 @@
|
|
|
1
|
+
question: Your full name
|
|
2
|
+
type: text
|
|
3
|
+
|
|
4
|
+
depends:
|
|
5
|
+
- "on": agreementVersion
|
|
6
|
+
being:
|
|
7
|
+
- standard
|
|
8
|
+
|
|
9
|
+
max_length_in_characters: 256
|
|
10
|
+
|
|
11
|
+
validations:
|
|
12
|
+
- name: answer_required
|
|
13
|
+
message: Enter your full name.
|
|
14
|
+
- name: under_character_limit
|
|
15
|
+
message: Name must be under 256 characters.
|
|
@@ -0,0 +1,15 @@
|
|
|
1
|
+
question: Your role in the company
|
|
2
|
+
type: text
|
|
3
|
+
|
|
4
|
+
depends:
|
|
5
|
+
- "on": agreementVersion
|
|
6
|
+
being:
|
|
7
|
+
- standard
|
|
8
|
+
|
|
9
|
+
max_length_in_characters: 256
|
|
10
|
+
|
|
11
|
+
validations:
|
|
12
|
+
- name: answer_required
|
|
13
|
+
message: Enter your role in the company.
|
|
14
|
+
- name: under_character_limit
|
|
15
|
+
message: Name must be under 256 characters.
|
|
@@ -0,0 +1,15 @@
|
|
|
1
|
+
question: <span class="govuk-visually-hidden">Do you accept the terms and conditions of the [[contract_title]]?</span>
|
|
2
|
+
type: checkboxes
|
|
3
|
+
|
|
4
|
+
depends:
|
|
5
|
+
- "on": agreementVersion
|
|
6
|
+
being:
|
|
7
|
+
- standard
|
|
8
|
+
|
|
9
|
+
options:
|
|
10
|
+
- label: I accept the terms and conditions of the [[contract_title]]
|
|
11
|
+
value: "yes"
|
|
12
|
+
|
|
13
|
+
validations:
|
|
14
|
+
- name: answer_required
|
|
15
|
+
message: Accept the terms and conditions of the [[contract_title]].
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "ccs-digitalmarketplace-frameworks",
|
|
3
|
-
"version": "
|
|
3
|
+
"version": "3.0.1",
|
|
4
4
|
"description": "Data files for Digital Marketplace’s procurement frameworks",
|
|
5
5
|
"repository": "git@github.com:Crown-Commercial-Service/ccs-digitalmarketplace-frameworks",
|
|
6
6
|
"author": "enquiries@digitalmarketplace.service.gov.uk"
|
package/requirements-dev.txt
CHANGED
|
@@ -34,7 +34,7 @@ ccs-digitalmarketplace-apiclient==25.11.0
|
|
|
34
34
|
# via
|
|
35
35
|
# -r requirements.txt
|
|
36
36
|
# ccs-digitalmarketplace-utils
|
|
37
|
-
ccs-digitalmarketplace-content-loader==11.
|
|
37
|
+
ccs-digitalmarketplace-content-loader==11.6.0
|
|
38
38
|
# via -r requirements.txt
|
|
39
39
|
ccs-digitalmarketplace-utils==68.0.0
|
|
40
40
|
# via
|
|
@@ -115,7 +115,7 @@ govuk-country-register==0.5.0
|
|
|
115
115
|
# via
|
|
116
116
|
# -r requirements.txt
|
|
117
117
|
# ccs-digitalmarketplace-utils
|
|
118
|
-
hypothesis==6.112.
|
|
118
|
+
hypothesis==6.112.2
|
|
119
119
|
# via -r requirements-dev.in
|
|
120
120
|
idna==3.7
|
|
121
121
|
# via
|
package/requirements.in
CHANGED
package/requirements.txt
CHANGED
|
@@ -18,7 +18,7 @@ cachelib==0.13.0
|
|
|
18
18
|
# via flask-session
|
|
19
19
|
ccs-digitalmarketplace-apiclient==25.11.0
|
|
20
20
|
# via ccs-digitalmarketplace-utils
|
|
21
|
-
ccs-digitalmarketplace-content-loader==11.
|
|
21
|
+
ccs-digitalmarketplace-content-loader==11.6.0
|
|
22
22
|
# via -r requirements.in
|
|
23
23
|
ccs-digitalmarketplace-utils==68.0.0
|
|
24
24
|
# via
|
|
@@ -28,6 +28,10 @@ MANIFESTS = {
|
|
|
28
28
|
'evaluations': {
|
|
29
29
|
'question_set': 'additional-lot-questions',
|
|
30
30
|
'manifest': 'evaluations'
|
|
31
|
+
},
|
|
32
|
+
'agreements': {
|
|
33
|
+
'question_set': 'agreements',
|
|
34
|
+
'manifest': 'agreement'
|
|
31
35
|
}
|
|
32
36
|
}
|
|
33
37
|
|
|
@@ -61,17 +65,53 @@ DOS7_LOTS = [
|
|
|
61
65
|
('digital-specialists', 'Digital specialists'),
|
|
62
66
|
('user-research-studios-and-participants', 'User research studios and participants'),
|
|
63
67
|
]
|
|
68
|
+
STANDARD_AGREEMENT_VERSIONS = [
|
|
69
|
+
('standard', 'Standard agreement')
|
|
70
|
+
]
|
|
64
71
|
|
|
65
72
|
FRAMEWORKS_AND_LOTS = {
|
|
66
73
|
"g-cloud": [
|
|
67
|
-
{
|
|
68
|
-
|
|
69
|
-
|
|
70
|
-
|
|
71
|
-
|
|
72
|
-
{
|
|
73
|
-
|
|
74
|
-
|
|
74
|
+
{
|
|
75
|
+
'framework_slug': 'g-cloud-7',
|
|
76
|
+
'framework_name': "G-Cloud 7",
|
|
77
|
+
'lots': LEGACY_GCLOUD_LOTS
|
|
78
|
+
},
|
|
79
|
+
{
|
|
80
|
+
'framework_slug': 'g-cloud-8',
|
|
81
|
+
'framework_name': "G-Cloud 8",
|
|
82
|
+
'lots': LEGACY_GCLOUD_LOTS
|
|
83
|
+
},
|
|
84
|
+
{
|
|
85
|
+
'framework_slug': 'g-cloud-9',
|
|
86
|
+
'framework_name': "G-Cloud 9",
|
|
87
|
+
'lots': G_CLOUD_LOTS
|
|
88
|
+
},
|
|
89
|
+
{
|
|
90
|
+
'framework_slug': 'g-cloud-10',
|
|
91
|
+
'framework_name': "G-Cloud 10",
|
|
92
|
+
'lots': G_CLOUD_LOTS
|
|
93
|
+
},
|
|
94
|
+
{
|
|
95
|
+
'framework_slug': 'g-cloud-11',
|
|
96
|
+
'framework_name': "G-Cloud 11",
|
|
97
|
+
'lots': G_CLOUD_LOTS
|
|
98
|
+
},
|
|
99
|
+
{
|
|
100
|
+
'framework_slug': 'g-cloud-12',
|
|
101
|
+
'framework_name': "G-Cloud 12",
|
|
102
|
+
'lots': G_CLOUD_LOTS
|
|
103
|
+
},
|
|
104
|
+
{
|
|
105
|
+
'framework_slug': 'g-cloud-13',
|
|
106
|
+
'framework_name': "G-Cloud 13",
|
|
107
|
+
'lots': G_CLOUD13_LOTS,
|
|
108
|
+
'agreement_versions': STANDARD_AGREEMENT_VERSIONS
|
|
109
|
+
},
|
|
110
|
+
{
|
|
111
|
+
'framework_slug': 'g-cloud-14',
|
|
112
|
+
'framework_name': "G-Cloud 14",
|
|
113
|
+
'lots': G_CLOUD13_LOTS
|
|
114
|
+
},
|
|
75
115
|
],
|
|
76
116
|
"digital-outcomes-and-specialists": [
|
|
77
117
|
{
|
|
@@ -102,7 +142,8 @@ FRAMEWORKS_AND_LOTS = {
|
|
|
102
142
|
{
|
|
103
143
|
'framework_slug': 'digital-outcomes-6',
|
|
104
144
|
'framework_name': "Digital Outcomes 6",
|
|
105
|
-
'lots': DOS6_LOTS
|
|
145
|
+
'lots': DOS6_LOTS,
|
|
146
|
+
'agreement_versions': STANDARD_AGREEMENT_VERSIONS
|
|
106
147
|
},
|
|
107
148
|
{
|
|
108
149
|
'framework_slug': 'digital-outcomes-and-specialists-7',
|
|
@@ -129,17 +170,29 @@ def _get_schema_title_and_slugs(schema_type, framework_family=None, exclude_lots
|
|
|
129
170
|
for framework in framework_list:
|
|
130
171
|
if framework['framework_slug'] in exclude_frameworks:
|
|
131
172
|
continue
|
|
132
|
-
|
|
133
|
-
|
|
134
|
-
|
|
135
|
-
|
|
136
|
-
|
|
137
|
-
|
|
138
|
-
|
|
139
|
-
|
|
140
|
-
|
|
173
|
+
|
|
174
|
+
if schema_type == 'Agreement questions':
|
|
175
|
+
if 'agreement_versions' in framework:
|
|
176
|
+
for agreement_version, agreement_version_name in framework['agreement_versions']:
|
|
177
|
+
titles_and_slugs.append(
|
|
178
|
+
(
|
|
179
|
+
"{} {} {}".format(framework['framework_name'], agreement_version_name, schema_type),
|
|
180
|
+
framework['framework_slug'],
|
|
181
|
+
agreement_version
|
|
182
|
+
)
|
|
183
|
+
)
|
|
184
|
+
else:
|
|
185
|
+
for lot_slug, lot_name in framework['lots']:
|
|
186
|
+
if lot_slug in exclude_lots:
|
|
187
|
+
continue
|
|
188
|
+
|
|
189
|
+
titles_and_slugs.append(
|
|
190
|
+
(
|
|
191
|
+
"{} {} {}".format(framework['framework_name'], lot_name, schema_type),
|
|
192
|
+
framework['framework_slug'],
|
|
193
|
+
lot_slug
|
|
194
|
+
)
|
|
141
195
|
)
|
|
142
|
-
)
|
|
143
196
|
return titles_and_slugs
|
|
144
197
|
|
|
145
198
|
|
|
@@ -184,14 +237,32 @@ SCHEMAS = {
|
|
|
184
237
|
"user-research-participants",
|
|
185
238
|
"user-research-studios-and-participants",
|
|
186
239
|
],
|
|
240
|
+
),
|
|
241
|
+
'agreements': _get_schema_title_and_slugs(
|
|
242
|
+
"Agreement questions",
|
|
243
|
+
exclude_frameworks=[
|
|
244
|
+
'g-cloud-7',
|
|
245
|
+
'g-cloud-8',
|
|
246
|
+
'g-cloud-9',
|
|
247
|
+
'g-cloud-10',
|
|
248
|
+
'g-cloud-11',
|
|
249
|
+
'g-cloud-12',
|
|
250
|
+
'g-cloud-14',
|
|
251
|
+
'digital-outcomes-and-specialists',
|
|
252
|
+
'digital-outcomes-and-specialist-2',
|
|
253
|
+
'digital-outcomes-and-specialist-3',
|
|
254
|
+
'digital-outcomes-and-specialist-4',
|
|
255
|
+
'digital-outcomes-and-specialist-5',
|
|
256
|
+
'digital-outcomes-and-specialist-7',
|
|
257
|
+
],
|
|
187
258
|
)
|
|
188
259
|
}
|
|
189
260
|
|
|
190
261
|
|
|
191
|
-
def load_questions(schema_type, framework_slug,
|
|
262
|
+
def load_questions(schema_type, framework_slug, lot_slug_or_agreement_version):
|
|
192
263
|
loader = ContentLoader('./')
|
|
193
264
|
print(
|
|
194
|
-
f'{framework_slug}/{
|
|
265
|
+
f'{framework_slug}/{lot_slug_or_agreement_version} '
|
|
195
266
|
f'question_set: {MANIFESTS[schema_type]["question_set"]}, '
|
|
196
267
|
f'schema_type: {MANIFESTS[schema_type]["manifest"]}'
|
|
197
268
|
)
|
|
@@ -202,10 +273,16 @@ def load_questions(schema_type, framework_slug, lot_slug):
|
|
|
202
273
|
MANIFESTS[schema_type]['manifest']
|
|
203
274
|
)
|
|
204
275
|
|
|
276
|
+
if schema_type == 'agreements':
|
|
277
|
+
filter_key = 'agreementVersion'
|
|
278
|
+
else:
|
|
279
|
+
filter_key = 'lot'
|
|
280
|
+
|
|
205
281
|
manifest = loader.get_manifest(framework_slug, MANIFESTS[schema_type]['manifest']).filter(
|
|
206
|
-
{
|
|
282
|
+
{filter_key: lot_slug_or_agreement_version},
|
|
207
283
|
dynamic=False
|
|
208
284
|
)
|
|
285
|
+
|
|
209
286
|
return {q['id']: q for q in sum((s.questions for s in manifest.sections), [])}
|
|
210
287
|
|
|
211
288
|
|
|
@@ -2,7 +2,7 @@
|
|
|
2
2
|
"""Generate validation JSON schemas from the frameworks questions content.
|
|
3
3
|
|
|
4
4
|
Usage:
|
|
5
|
-
generate-validation-schemas.py --output-path=<output_path>
|
|
5
|
+
generate-validation-schemas.py --output-path=<output_path> [--framework=<framework_slug>] [--lot=<lot_slug>]
|
|
6
6
|
|
|
7
7
|
"""
|
|
8
8
|
import os
|
|
@@ -20,12 +20,20 @@ from schema_generator.validation import generate_schema_todir, SCHEMAS
|
|
|
20
20
|
if __name__ == '__main__':
|
|
21
21
|
arguments = docopt(__doc__)
|
|
22
22
|
OUTPUT_DIR = arguments['--output-path']
|
|
23
|
+
FRAMEWORK_SLUG = arguments.get('--framework')
|
|
24
|
+
LOT_SLUG = arguments.get('--lot')
|
|
23
25
|
if not os.path.exists(OUTPUT_DIR):
|
|
24
26
|
print("Creating {} directory".format(OUTPUT_DIR))
|
|
25
27
|
os.makedirs(OUTPUT_DIR)
|
|
26
28
|
|
|
27
29
|
schemas = [(schema_type, *schema) for schema_type in SCHEMAS for schema in SCHEMAS[schema_type]]
|
|
28
30
|
|
|
31
|
+
if FRAMEWORK_SLUG:
|
|
32
|
+
schemas = [schema for schema in schemas if schema[2] == FRAMEWORK_SLUG]
|
|
33
|
+
|
|
34
|
+
if LOT_SLUG:
|
|
35
|
+
schemas = [schema for schema in schemas if schema[3] == LOT_SLUG]
|
|
36
|
+
|
|
29
37
|
with Pool(processes=5) as pool:
|
|
30
38
|
results = pool.starmap(
|
|
31
39
|
partial(
|
package/tests/test_content.py
CHANGED
|
@@ -34,7 +34,9 @@ MANIFEST_QUESTION_SET = {
|
|
|
34
34
|
"download_results": "services",
|
|
35
35
|
|
|
36
36
|
"evaluations": "additional-lot-questions",
|
|
37
|
-
"edit_additional_lot_questions": "additional-lot-questions"
|
|
37
|
+
"edit_additional_lot_questions": "additional-lot-questions",
|
|
38
|
+
|
|
39
|
+
"agreement": "agreements",
|
|
38
40
|
}
|
|
39
41
|
|
|
40
42
|
# `item` property wouldn't usually be part of a brief response but is included here as the dynamic list child question
|