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

awards_and_contracts.md: update purchase orders example #1720

Open
wants to merge 3 commits into
base: 1.2-dev
Choose a base branch
from
Open
Show file tree
Hide file tree
Changes from 1 commit
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
9 changes: 4 additions & 5 deletions docs/examples/purchase_orders/contracts_pos.csv
Original file line number Diff line number Diff line change
@@ -1,6 +1,5 @@
contracts/0/id,contracts/0/awardID,contracts/0/value/amount,contracts/0/title
DFT-2019-C78967,DFT-2019-78967-A78678,1200000,Provision of PMO function
DFT-2019-C78967-PO001,DFT-2019-78967-A78678,300000,Purchase order: Q1
DFT-2019-C78967-PO002,DFT-2019-78967-A78678,300000,Purchase order: Q2
DFT-2019-C78967-PO003,DFT-2019-78967-A78678,300000,Purchase order: Q3
DFT-2019-C78967-PO004,DFT-2019-78967-A78678,300000,Purchase order: Q4
BPR-2024-C78967,BPR-2024-78967-A78678,1000000,Maintenance of Mt. Tabor Park
BPR-2024-C78967-PO0001,BPR-2024-78967-A78678,300000,Soil removal and disposal
BPR-2024-C78967-PO0002,BPR-2024-78967-A78678,500000,Routine park maintenance
BPR-2024-C78967-PO0003,BPR-2024-78967-A78678,200000,Hedge installation
4 changes: 2 additions & 2 deletions docs/examples/purchase_orders/parent_contract.csv
Original file line number Diff line number Diff line change
@@ -1,2 +1,2 @@
contracts/0/id,contracts/0/awardID,contracts/0/value/amount,contracts/0/title
DFT-2019-C78967,DFT-2019-78967-A78678,1200000,Provision of PMO function
contracts/0/id,contracts/0/awardID,contracts/0/maximumValue/amount,contracts/0/title
BPR-2024-C78967,BPR-2024-78967-A78678,1000000,Maintenance of Mt. Tabor Park
4 changes: 4 additions & 0 deletions docs/examples/purchase_orders/transactions_pos.csv
Original file line number Diff line number Diff line change
@@ -0,0 +1,4 @@
contracts/0/id,contracts/0/implementation/transactions/id,contracts/0/implementation/transactions/value
BPR-2024-C78967,PO001,300000
BPR-2024-C78967,PO002,500000
BPR-2024-C78967,PO003,200000
32 changes: 22 additions & 10 deletions docs/guidance/map/awards_contracts.md
Original file line number Diff line number Diff line change
Expand Up @@ -145,36 +145,48 @@ There are no identifiers for the individual supplier/value pairings on the origi

[View the example in Paraguay's API](https://contrataciones.gov.py/datos/api/v3/doc/ocds/record/ocds-03ad3f-340885-1)
```

## Purchase orders

A purchase order is a specific type of contract, an official document issued by a buyer committing to pay a supplier for the supply of specific goods, services or works to be delivered in the future.

Purchase orders can be issued against an existing contract, or if no prior contract exists then acceptance of a purchase order by a supplier forms a contract between buyer and supplier.

Purchase orders that are made against contracts with a definite quantity or value of items ought to not be disclosed in the `contracts` section of OCDS, due to the risk of double counting items on the purchase order and the contract it relates to.
Purchase orders that are made against contracts with a definite quantity or value of items ought to not be disclosed in the `contracts` section of OCDS, due to the risk of double counting items on the purchase order and the contract it relates to. Instead they ought to be disclosed in the `implementation.transactions` array of the `Contract`.

### Example: Double counting contracts and purchase orders
### Example: Purchase orders

The UK's Department for Transport awards a £1.2m, 12-month contract to KPMG to provide the Project Management Office function for a project to construct a new highway bypass. The contract specifies that payment will be made quarterly in arrears in four equal amounts. The contract is represented in the `contracts` section of OCDS as follows:
The Bureau of Parks and Recreation in Portland, Oregon, USA, awards a 2 year contract worth up to $1m to a local contractor to maintain Mt. Tabor Park. This contract specifies the goods, services and works to be provided along with unit prices and estimates of quantities. The contract is represented in the `contracts` section of OCDS as follows:
odscjen marked this conversation as resolved.
Show resolved Hide resolved

```{csv-table-no-translate}
:header-rows: 1
:file: ../../examples/purchase_orders/parent_contract.csv
```

Calculating the sum of the contract value in the above example gives the correct result of £1.2m.
The contract in this scenario is treated as a type of [framework agreement](framework_agreements.md), with the contract value being disclosed in the `maximumValue` field instead of the `value` field.
odscjen marked this conversation as resolved.
Show resolved Hide resolved

Over the course of the contract the Bureau of Parks and Recreation issues 3 purchase orders for:

The Department for Transport issues a purchase order on the final day of each quarter of the contract term, each for £300k.
1. evacuation, removal and disposal of contaminated or unsuitable soil for the value of $300k.
2. routine maintenance including mowing of the grass, trimming of hedges and shrubs and weeding of flower beds for the value of $500k.
3. supply and installation of new hedging within the park for the value of $200k.

If purchase orders were also disclosed in the `contracts` section of OCDS, by the end of the contract term, the `contracts` section of OCDS would be populated as follows:
Each of the purchase orders is disclosed in the `implementation.transactions` section of the `Contract` as follows:

```{csv-table-no-translate}
:header-rows: 1
:file: ../../examples/purchase_orders/contracts_pos.csv
:file: ../../examples/purchase_orders/transactions_pos.csv
```

Calculating the sum of the contract value in the above example gives an incorrect result of £2.4m - double the actual value of the contract.
The sum of the `transactions.value`s gives the final value of the contract, $1m. This is the same value as the initial `maximumValue` of the contract.

```{note}
The approach for modelling purchase orders in OCDS is under discussion ([GitHub issue](https://github.com/open-contracting/standard/issues/897))
By using the `implementation.transactions` section of the `Contract` the purchase orders are linked to the initial contract, and the potential for double counting has been avoided.

If the purchase orders were disclosed in `contracts`, especially if the initial contract had a fixed value, the final value of the contract could be double counted:

```{csv-table-no-translate}
:header-rows: 1
:file: ../../examples/purchase_orders/contracts_pos.csv
```

Calculating the sum of the contract value in the above example gives an incorrect result of £2m - double the actual final value of the contract.