diff --git a/docs/examples/purchase_orders/contracts_pos.csv b/docs/examples/purchase_orders/contracts_pos.csv index 947522704..3db8be322 100644 --- a/docs/examples/purchase_orders/contracts_pos.csv +++ b/docs/examples/purchase_orders/contracts_pos.csv @@ -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 diff --git a/docs/examples/purchase_orders/parent_contract.csv b/docs/examples/purchase_orders/parent_contract.csv index f26568026..6e42359b5 100644 --- a/docs/examples/purchase_orders/parent_contract.csv +++ b/docs/examples/purchase_orders/parent_contract.csv @@ -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 diff --git a/docs/examples/purchase_orders/transactions_pos.csv b/docs/examples/purchase_orders/transactions_pos.csv new file mode 100644 index 000000000..5178e734f --- /dev/null +++ b/docs/examples/purchase_orders/transactions_pos.csv @@ -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 diff --git a/docs/guidance/map/awards_contracts.md b/docs/guidance/map/awards_contracts.md index e3041882d..95fa68323 100644 --- a/docs/guidance/map/awards_contracts.md +++ b/docs/guidance/map/awards_contracts.md @@ -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.