Skip to content

Commit

Permalink
awards_and_contracts.md: update purchase orders example
Browse files Browse the repository at this point in the history
  • Loading branch information
odscjen committed Nov 21, 2024
1 parent 0871878 commit e613aba
Show file tree
Hide file tree
Showing 4 changed files with 32 additions and 17 deletions.
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:

```{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.

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.

0 comments on commit e613aba

Please sign in to comment.