Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

add finalStatus and finalStatusDetails #49

Merged
merged 2 commits into from
May 7, 2024
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
26 changes: 15 additions & 11 deletions README.md
Original file line number Diff line number Diff line change
Expand Up @@ -8,7 +8,7 @@ If a contracting process is divided into lots, then you should add each lot to t

If a contracting process is not divided into lots, then you should nonetheless add a single, virtual lot. If a data element can be mapped to either a `tender` field or a `tender.lots` field, you should map it to the `tender.lots` field. In this way, information is accessible at the same location for all contracting processes, regardless of whether the process is actually divided into lots.

## Modelling
## Modeling

The lots extension maintains the overall structure of an OCDS release, with items, documents and milestones nested immediately within `tender`, `awards` and `contracts` sections, but it introduces an array of Lots in the `tender` section, and the ability to cross-reference a specific `relatedLot` for each item, and an array of `relatedLots` for documents, milestones and awards.

Expand Down Expand Up @@ -40,15 +40,15 @@ Documents and milestones may have a `relatedLots` field. Those without this fiel

The items within an award should have a `relatedLot` field. Publishers may also reference all the lots an award relates to at the award level using `relatedLots`.

## How to set `tender.status` if lots' statuses differ?
## How to set the `tender.finalStatus` field if the lots' final statuses differ?

`tender.status` and `tender.lots.status` use the closed tenderStatus.csv codelist. This codelist progresses from planning statuses ('planning', 'planned'), to 'active' status, and then result statuses ('complete', 'cancelled', 'unsuccessful').
The `tender.finalStatus` and `tender.lots.finalStatus` fields use the closed `tenderFinalStatus.csv` codelist. This codelist covers the possible end result statuses ('complete', 'cancelled', 'unsuccessful'). Prior to reaching a result, the statuses of the tender and its lots can be inferred from the relevant date fields.

* If any lot's status is 'active', then `tender.status` should be 'active', to indicate that some lots are awaiting results.
* If all lots' status are a result status, then `tender.status` describes the aggregate result:
* If at least one lot's status is 'complete', then `tender.status` should be 'complete', to indicate that there is at least one award.
* Otherwise, if at least one lot's status is 'unsuccessful', then `tender.status` should be 'unsuccessful', to indicate that the procedure was completed but unsuccessfully.
* Otherwise, If all lots' status are 'cancelled', then `tender.status` should be 'cancelled', to indicate that the procedure was discontinued as a whole.
* If any lot has no final status, then `tender.finalStatus` should not be set, to indicate that some lots are awaiting results.
* If all lots have a final status, then `tender.finalStatus` describes the aggregate result:
* If at least one lot's final status is 'complete', then `tender.finalStatus` should be 'complete', to indicate that there is at least one award.
* Otherwise, if at least one lot's final status is 'unsuccessful', then `tender.finalStatus` should be 'unsuccessful', to indicate that the procedure was completed but unsuccessfully.
* Otherwise, If all lots' final status are 'cancelled', then `tender.finalStatus` should be 'cancelled', to indicate that the procedure was discontinued as a whole.

## Examples

Expand Down Expand Up @@ -121,7 +121,6 @@ Although part of the same tender, the buyer is willing to award these different
],
"title": "Architectural services",
"description": "For architectural services delivered in the project",
"status": "active",
"value": {
"currency": "GBP",
"amount": 200000
Expand Down Expand Up @@ -169,7 +168,6 @@ Although part of the same tender, the buyer is willing to award these different
],
"title": "Civil engineering services",
"description": "For civil engineering services delivered in the project",
"status": "active",
"value": {
"currency": "GBP",
"amount": 400000
Expand Down Expand Up @@ -217,7 +215,6 @@ Although part of the same tender, the buyer is willing to award these different
],
"title": "Structural engineering",
"description": "For structural engineering consultancy delivered in the project",
"status": "active",
"value": {
"currency": "GBP",
"amount": 600000
Expand Down Expand Up @@ -302,6 +299,13 @@ Report issues for this extension in the [ocds-extensions repository](https://git

## Changelog

### v1.2

* Add fields:
* `Lot.finalStatus`
* `Lot.finalStatusDetails`
* Deprecate `Lot.status`

### Unreleased

* Add fields:
Expand Down
28 changes: 28 additions & 0 deletions release-schema.json
Original file line number Diff line number Diff line change
Expand Up @@ -202,6 +202,34 @@
"complete",
"withdrawn",
null
],
"deprecated": {
"description": "This field is deprecated, because the same information can be provided by filling in the relevant date fields.",
"deprecatedVersion": "1.2"
}
},
"finalStatus": {
"title": "Final status",
"description": "The final status of the lot, using the closed [tenderFinalStatus](https://standard.open-contracting.org/{{version}}/{{lang}}/schema/codelists/#tender-final-status) codelist.",
"type": [
"string",
"null"
],
"codelist": "tenderFinalStatus.csv",
"openCodelist": false,
"enum": [
"complete",
"cancelled",
"unsuccessful",
null
]
},
"finalStatusDetails": {
"title": "Final status details",
"description": "Additional details on the final status of the lot. This field can be used to provide the local name of the final status.",
"type": [
"string",
"null"
]
},
"value": {
Expand Down