# Procurement

Procurement turns a planting recipe or saved planting plan into a private, organised purchase list. Use it to maintain a nursery directory, compare sourcing scenarios, assign suppliers, record references and notes, estimate costs, and reuse entered prices.

Procurement does not contact nurseries, check live stock, request quotations, place orders, or process payments. Prices and availability are not verified by AgroForest Designer. Totals use the quantities and unit prices you enter; they exclude tax, delivery, discounts, deposits, substitutions, and other conditions unless you account for them separately.

> Confirm plant identity, cultivar, rootstock, size, quantity, price, provenance, availability, delivery terms, and legal or phytosanitary requirements directly with the supplier before ordering.

## Before you start

Sign in before using Procurement. The workspace, its nurseries, purchase-list versions, saved prices, and purchasing notes belong to your account. They are not public nursery profiles or a shared marketplace.

Procurement is part of the **Professional recipe reports** entitlement defined in the subscription catalog. The Procurement hub, nursery library, recipe **Shopping List**, recipe Excel export, and the planner's **Create purchase list** workflow require a plan that includes this entitlement. The application enforces it on both pages and data-changing requests. See [Plans and Feature Access](https://agroforestdesigner.com/docs/basics/plans-and-feature-access.md) and use the live **Subscription** page for the current access applied to your account.

If your access changes, existing procurement records remain stored but the workspace is unavailable until the professional entitlement is restored. Do not delete source recipes or planting plans to test access: their associated purchase-list versions can also be deleted.

Prepare an appropriate source before creating a list:

- use an owned standard planting recipe when you need a species-and-cultivar purchasing list with editable quantities;
- use a saved planting plan when marker counts should determine the required quantities;
- add the nurseries you expect to compare; and
- collect current supplier references, sizes, unit prices, lead times, minimum order quantities, and delivery notes.

Read [Planting Recipes](https://agroforestdesigner.com/docs/basics/recipes.md) for recipe setup, [Projects](https://agroforestdesigner.com/docs/basics/projects.md) for site organisation, [Digital Planting Plan](https://agroforestdesigner.com/docs/basics/digital-planting-plan.md) for marker-based design, and [Cultivars](https://agroforestdesigner.com/docs/basics/cultivars.md) when an exact named cultivar matters.

## Open the Procurement hub

Open **Resources** in the main navigation and select **Procurement**. The page is divided into two tabs:

- **Purchase lists** collects every purchase-list version created from your recipes and saved planting plans.
- **Nurseries** contains the supplier records and saved plant prices owned by your account.

The summary at the top reports **List versions**, **Nurseries**, and **Available recipes**. These are account counts, not live market statistics.

The **Purchase lists** tab is ordered by the version's recorded update time. Saving recipe purchasing rows does not currently refresh that ordering timestamp, so the card order may not reflect the last row edit. Each card identifies the source as **Recipe** or **Planting plan** and shows:

- the source and version names;
- optional version notes;
- a **Default** badge when applicable;
- **Items**, the number of saved purchasing rows;
- **Plants**, the sum of saved quantities;
- **Sourced**, the number of saved rows with a supplier;
- **Estimate**, the sum of quantity multiplied by unit price; and
- controls to open, duplicate, or delete the version.

A newly created recipe version can initially show zero items in this overview even though opening it displays the plants from the recipe. Open and save the list once to persist its purchasing rows. A plan-based version is populated when it is created and synchronised.

There is currently no search, filter, or manual sort control for purchase-list cards. Nursery records are listed alphabetically and have their own search field.

## Build your supplier library

Open the **Nurseries** tab and select **Add nursery**. The form is headed **Add a nursery** and contains three groups.

### Enter nursery and contact details

Complete the fields as follows:

| Field | Requirement | Suggested content |
| --- | --- | --- |
| **Nursery name** | Required | The trading or organisation name you recognise |
| **Address** | Required | Street, postal code, city, and country |
| **Contact person** | Optional | The person responsible for quotations or orders |
| **Phone** | Required | A current telephone number, including country code when useful |
| **Email** | Required | The address used for enquiries or orders |
| **Website** | Optional | A complete address such as `https://example.com` |
| **Additional notes** | Optional | Delivery days, ordering conditions, specialities, collection details, or account references |

Select **Add nursery** to save the private account record. Store only contact and purchasing information you are entitled to keep. Never place passwords, payment-card data, private client information, or unrelated personal data in **Additional notes**.

### Find and contact a nursery

The **Supplier library** displays a card for each nursery. A card can show its contact person, address, email, and phone, with **Email**, **Website**, and **Edit** actions where the relevant data exists.

Use **Search by name, location or contact** to filter the cards. Search currently matches nursery name, address, contact person, and email. It does not search phone numbers, website addresses, or **Additional notes**. The result counter updates as you type. Select **Edit** to correct the nursery record, then **Save changes**.

The current visible supplier cards and edit form do not provide a delete control. Editing a record is therefore the normal self-service management action. If a nursery must be removed and no supported delete action is shown in your account, contact support rather than constructing a direct URL.

When a nursery is removed through an authorised workflow, its price catalogue is removed and existing purchase rows lose their nursery link. Stored price, reference, and notes can remain. Review affected lists afterwards. Deleting a list version does not delete its nursery.

The hub card does not display or search **Additional notes**. Reopen **Edit** when you need to review those saved details.

## Choose the right purchase-list source

Recipe-based and plan-based lists use the same purchasing table, but their item and quantity rules differ.

| Behaviour | Recipe-based list | Saved-plan list |
| --- | --- | --- |
| Source | One standard planting recipe owned by your account | One saved planting plan in an owned project |
| Initial rows | Current recipe plants and selected cultivars | Current purchasable markers in the saved plan |
| Default quantity | Quantity stored in the recipe | Count of matching plant markers |
| Manual quantity | Can be saved in the purchase version | Replaced by marker count during synchronisation |
| Source changes | Visible membership follows the current recipe | Rows and quantities reconcile with the saved plan |
| Existing plants | Not applicable | Markers flagged as existing are excluded |
| Planting zones | Not applicable | Each zone counts as one because its density is undefined |
| Synchronisation control | No **Sync quantities** action | Automatic on open, plus **Sync quantities** |
| Spreadsheet export | **Export Excel** is available | No Excel export is currently shown |

Neither kind is an independent, frozen bill of materials. If you need a fixed record before changing the source, save the current version and print it; for a recipe-based list, you can also export it to Excel.

## Create a list from a recipe

There are two normal entry points.

From a recipe:

1. Open an owned standard planting recipe.
2. Select **Shopping List** in the recipe navigation.
3. If no version exists, AgroForest Designer creates a default version named **Main list**.

From the Procurement hub:

1. Select **From recipe**.
2. In **Create purchase-list version**, choose an owned **Recipe**.
3. Enter a required **Version name**, such as `Autumn order` or `Budget option`.
4. Add optional **Notes** explaining the season, quote, supplier strategy, or other difference.
5. Select **Create version**.

A recipe version name must be unique within that recipe. The name can contain up to 120 characters and the notes up to 255 characters. If the application reports that the name already exists, choose a different, meaningful name.

Choose a standard **Planting recipe**. The current hub chooser can also display a **Pollinator recipe**, but its flowering records do not create procurement rows. Rebuild the intended species in a standard planting recipe before preparing a purchase list.

The visible item set follows the current recipe rather than copying it into a permanent snapshot. Ordinary plants become rows. When the recipe selects one or more cultivars for a species, the relevant cultivar rows are used instead of a duplicate parent-species row. The cultivar name and its scientific parent help distinguish the exact product. See [Cultivars](https://agroforestdesigner.com/docs/basics/cultivars.md) before relying on a user-created cultivar for an order.

Saved purchasing quantities remain specific to the version, but plants added to or removed from the recipe can change which rows are visible. Reopen and review every affected version after editing the source recipe. If an overview metric appears inconsistent after substantial recipe changes, create a clean version for the revised recipe and retain a printed or exported record of the earlier scenario.

## Create a dynamic list from a saved plan

### Create it from Procurement

1. Select **From project**.
2. In **Create list from project**, choose a **Project**.
3. Under **Saved planting plan**, use **Choose a planting plan** to select the source.
4. Enter a **Version name**; the initial suggestion is **Current design**.
5. Add optional **Notes** for the phase, delivery, season, or budget scenario.
6. Select **Create dynamic list**.

Only projects with saved planting plans appear. If the modal says **No saved planting plans yet**, select **View projects**, open the appropriate project, save the design in the visual editor, and return to Procurement.

### Create it from the planner

1. Open the project and the correct saved plan.
2. Save the latest design changes.
3. Open **Output**.
4. Select **Create purchase list**.
5. Enter a **Version name** and optional **Notes**.
6. Select **Create purchase list**.

If the planner says **Save the planting plan before creating a purchase list**, the current canvas does not yet identify a saved plan. Save it, confirm the plan name in the header, and retry.

### Understand marker quantities

The dynamic list groups matching markers by species and, where present, cultivar. Each individual plant marker contributes one to the row quantity. A marker flagged **Existing planting** is excluded because it is already on site; merely recording that a specimen has been planted is not the same as identifying it as existing before the design.

A planting zone is a single plan object. The canvas does not store a procurement density for that zone, so it contributes one and can add the note **Includes a planting zone; zone density is not defined in the canvas.** Do not interpret that one as the zone's actual plant requirement.

Plan-based quantities are deliberately controlled by the saved design. The list synchronises whenever it opens, and **Sync quantities** provides an explicit refresh. A manually entered quantity is therefore replaced by the marker count on the next synchronisation. For an orderable zone quantity, replace the zone with an appropriate number of individual markers before producing the list, or calculate and manage the zone order separately.

Synchronisation preserves supplier, reference, unit price, and notes while a matching plant/cultivar row remains. If the last matching marker is removed, its row and version-specific purchasing details are removed during synchronisation. Save important quotation details elsewhere before removing the last marker. A saved nursery catalogue price may still remain in the Supplier library.

## Complete the purchase list

The **Purchase list** page starts with four summaries:

- **Line items** counts the displayed species and cultivar rows.
- **Plants required** sums their quantities.
- **Supplier selected** compares sourced rows with all rows.
- **Estimated total** sums the displayed subtotals.

Complete each row using these fields:

| Control | Purpose |
| --- | --- |
| **Supplier** | Assign one nursery from your private Supplier library |
| **Reference** | Record a supplier SKU, product code, quote line, or catalogue reference |
| **Notes** | Record size, rootstock, pot or bare-root form, provenance, delivery, substitution, or other line detail |
| **Unit price** | Enter a non-negative price per plant |
| **Quantity** | Enter a non-negative whole number; plan-based quantities will later resynchronise |
| **Subtotal** | Review quantity multiplied by unit price |
| **Clear procurement details** | Clear the row's purchasing fields without removing the plant from its source |

The interface displays euro values and has no currency selector. Agree the currency and whether prices include tax before comparing suppliers. Use separate version notes when scenarios use materially different assumptions.

Changing a field normally marks the page **Unsaved changes**. Select **Save purchase list** before switching versions, exporting, or leaving. The page warns before discarding changes when it detects them, but detection is not consistent on every plan-based page and a browser warning is not a backup. Supplier assignment, references, notes, prices, and edited recipe quantities are saved only when the form is submitted; save and reload when in doubt.

After a successful save, the page reloads the version and reports that the purchase list was updated. Rows are processed independently: if validation fails for one row, other valid rows may already have been saved. Read every error naming an item, correct its price, quantity, or supplier, and save again. Prices cannot be negative; quantities must be non-negative whole numbers.

**Clear procurement details** is not a remove-from-list action. It clears the supplier, reference, notes, and price and temporarily sets quantity to zero. Because the row still belongs to its recipe or saved plan, its source quantity can return after reload or synchronisation. Remove the plant or cultivar from the recipe, or remove the marker from the saved plan, when it should no longer be part of procurement.

## Search, filter, and assign suppliers in bulk

Use **Search plants, cultivars or references** to find a row by scientific or cultivar name, common name, saved supplier reference, or saved notes. The search text is prepared when the page loads. Save and reload if a reference or note you have just typed is not found immediately.

Use the supplier filter to choose:

- **All suppliers**;
- **Supplier not selected**; or
- one named nursery.

The result counter reports the visible rows and **No matching items** appears when the search and supplier filter produce no match. There is currently no row-sorting control.

To assign one nursery to several products:

1. Select the checkbox beside each required row.
2. Use the header checkbox to select all currently visible rows when appropriate.
3. In the bulk panel, choose a nursery under **Set supplier**.
4. Select **Apply**.
5. Review the affected rows and any suggested catalogue values.
6. Select **Save purchase list**.

**Select all** applies to visible rows. However, rows selected earlier can remain selected after you change a filter, and **Apply** acts on every selected row, including one that is now hidden. Use **Clear selection** before starting a different filtered group.

## Reuse saved plant prices

When you save a purchase row with a nursery and unit price, AgroForest Designer creates or updates a private saved-price record for that exact nursery and plant. Cultivar prices are stored separately from the parent species and from other cultivars.

A zero can also be stored when a supplier is assigned. Treat a blank or zero total as “not yet priced” unless the nursery explicitly quoted a zero price; it never proves that an item is free.

Later, when the same nursery is assigned to a matching row, the saved catalogue can suggest:

- the unit price when the purchase row has no saved non-zero price;
- the reference when that field is blank; and
- the notes when that field is blank.

Existing version values are retained rather than automatically replaced with every catalogue change. Always review the result: a stored price may be old, refer to another size, exclude tax, or no longer be available. Suggested values also count as unsaved purchase-list changes, so select **Save purchase list**.

To maintain the catalogue, open **Procurement** > **Nurseries**, find the supplier, and expand **Saved plant prices**. Each entry shows its last update date. Edit the euro price, **Reference**, or **Notes**, then use the save action. The delete action removes that catalogue suggestion after confirmation; it does not retroactively erase values already saved in purchase-list versions.

Use catalogue notes to distinguish product conditions such as container size, bare root, rootstock, age, wholesale pack, or validity date. One saved price exists per nursery and exact species/cultivar combination, so it cannot represent several simultaneous sizes or quote tiers. Preserve those alternatives in separate purchase-list versions or an external quotation record.

## Compare and manage versions

Use purchase-list versions for meaningful sourcing scenarios, for example:

- spring versus autumn delivery;
- local nursery versus lowest estimated price;
- preferred specification versus acceptable substitution;
- project phase one versus phase two; or
- current design versus a budget alternative.

On the Purchase list page, **Current version** identifies the open scenario. Use **Switch version** to open another version for the same source. Save first: if edits are detected, the interface asks whether to discard them.

Select **Duplicate version** to copy the current description and saved row data, including supplier, reference, notes, price, and quantity. The new name uses `copy` and a number when required. A duplicated plan-based version remains linked to the same saved plan, so opening it will still synchronise its rows and marker quantities.

Select **Manage versions** to return to Procurement. Deleting a card's version requires confirmation and permanently removes that version and its saved sourcing data. Independently saved plant prices remain in the Supplier library. If the deleted version was the default, the application can designate the most recently updated remaining version as its replacement.

The **Default** badge is informational; the current interface does not offer a separate **Make default** control. It also does not provide a rename or edit-notes action after creation. **Duplicate version** automatically generates a `copy` name and retains the old description; it does not ask for new metadata. When a name or description must change, create a new version with the required metadata, re-enter the required sourcing data, verify it, and only then delete the old version.

Deleting a source recipe or saved planting plan also removes purchase-list versions tied to that source. Purchase-list versions do not count as extra projects or recipes, but they are not independent archives. Export or print information you must retain before deleting its source.

## Print and export

Select **Print** to open the browser's print workflow for the current list. Rows hidden by search or supplier filters remain hidden in print, so clear the filters when you need the complete list. Review print preview, page size, orientation, margins, and whether the browser includes background graphics. Save changes first so the printed record corresponds to a stored version.

Recipe-based lists also provide **Export Excel**. Save before selecting it; detected unsaved changes disable the export action until the list has been saved. The workbook contains the current version's plant, nursery, nursery reference, extra information, price, quantity, subtotal, and total, with table filters and numeric validation.

Plan-based lists currently provide **Print** but do not show **Export Excel**. Return to the source plan's other output tools if you need a separate inventory export, remembering that a general plan inventory is not the same as a purchase list with supplier and price fields.

Neither print nor Excel creates an order or confirms stock. Record the quotation date and assumptions when creating the version because its notes cannot be edited later. Otherwise use row notes or controlled external project records, and send only the information the recipient needs.

An encrypted planting-plan backup is not a complete Procurement archive. It can contain some recipe-linked purchase data, but it excludes plan-derived purchase-list versions, nursery contact records, reusable saved-price catalogues, and other version state. Print or export critical lists and retain supplier records separately before deleting a source or project.

## Source responsibly

Price is only one procurement criterion. Before confirming an order:

1. Verify the scientific name and exact cultivar or rootstock.
2. Confirm plant form, age, grade, dimensions, container size, and expected delivery condition.
3. Ask whether the material is propagated locally and whether provenance is suitable for the design purpose.
4. Check plant-health documentation, biosecurity, quarantine, passport, import, and transport requirements that apply in the relevant jurisdictions.
5. Recheck invasive-species restrictions and avoid material that can harm local habitats.
6. Discuss substitutions rather than accepting a similar name as botanically or functionally equivalent.
7. Confirm lead time, minimum order, reservation period, tax, delivery cost, unloading, packaging returns, and replacement policy.
8. Inspect plants at collection or delivery and record agreed discrepancies promptly.
9. Coordinate delivery with site readiness, irrigation, storage, planting labour, and suitable weather.
10. Retain the supplier quotation or order confirmation outside AgroForest Designer when it is a contractual or accounting record.

Use diverse, appropriate suppliers when that improves resilience, but avoid splitting orders in ways that make provenance, inspection, aftercare, or replacement responsibility unclear. For conservation or restoration work, obtain specialist advice about genetic provenance and permitted material rather than relying only on a commercial catalogue name.

## Troubleshooting

| Situation | What to check |
| --- | --- |
| **Procurement** is not visible | Sign in, open **Resources**, and confirm that the account's plan includes Professional recipe reports. |
| **Shopping List** or **Create purchase list** is locked | Check **Subscription**. Procurement and its recipe and planner entry points require the Professional recipe reports entitlement. |
| A recipe is missing from **Choose a recipe** | The chooser shows recipes owned by the signed-in account. Confirm that you are using the correct account. |
| A recipe creates no rows | Confirm that it is a standard **Planting recipe**. Pollinator recipes can appear in the chooser but do not provide procurement rows. |
| The project modal says **No saved planting plans yet** | Open the project, save a named design in the Digital Planting Plan, and return. |
| The planner asks you to save first | Save the current canvas and confirm that it has a plan name before creating the list. |
| An existing plant is missing | Markers identified as **Existing planting** are intentionally excluded from plan procurement. |
| A planting zone has quantity one | The zone is one canvas object and has no procurement density. Replace it with individual markers or manage its calculated order separately. |
| A manual plan quantity returns to the marker count | Plan lists synchronise from saved markers. Edit and save the plan rather than relying on a manual quantity override. |
| A supplier is missing from the row menu | Add it under **Procurement** > **Nurseries**, then reload the list if necessary. |
| A saved price is not suggested | Confirm the exact nursery and species/cultivar match. The price must first have been saved from a purchase row. Existing non-zero row prices are not automatically overwritten. |
| Search does not find a newly typed reference or note | Save and reload; the searchable row text is generated when the page opens. |
| Totals or filters stop updating in a plan-based list | Save the list, reload it, and confirm the stored rows and marker-derived quantities. If the controls remain unresponsive, keep the plan saved and contact support. |
| The total looks incomplete | Check every quantity and unit price. Tax, delivery, discounts, and other charges are not added automatically. |
| The hub shows zero items for a new recipe version | Open the version and select **Save purchase list** once to persist its displayed recipe rows. |
| A version name is rejected | Recipe-version names must be unique within the same recipe. Use a clearer season, quote, phase, or supplier suffix. |
| The wrong rows received a bulk supplier | Hidden rows can remain selected after filtering. Use **Clear selection**, select the intended visible group, and apply again before saving. |
| Switching versions would discard work | Cancel the switch, select **Save purchase list**, and switch after the page reloads. |
| Clearing a row does not remove the plant | Clear resets procurement details. Remove the plant from the recipe or saved-plan markers to remove it from the source. |
| **Export Excel** is absent | Excel export is currently available for recipe-based lists, not saved-plan lists. Use **Print** for the plan-based purchase list. |
| A nursery has no delete action | The current visible Supplier library provides **Edit** but no self-service delete control. Contact support if removal is necessary. |
| Supplier data disappeared after a plan edit | Removing the final matching marker removes that dynamic row on synchronisation. Consult a previous printout, quotation, or other retained record. |

## Recommended procurement workflow

For a traceable result, work in this order:

1. Finalise the relevant recipe or save the current planting plan.
2. Add and verify likely nurseries in the **Supplier library**.
3. Create a clearly named purchase-list version and record its assumptions in **Notes**.
4. Review species and cultivars before adding prices.
5. Assign suppliers and record exact references, specifications, and quote dates.
6. Enter quantities and prices, remembering that saved-plan quantities follow markers.
7. Search for unsourced rows with **Supplier not selected**.
8. Review subtotals and add external tax, shipping, and contingency calculations where required.
9. Select **Save purchase list** and confirm that no unsaved-change warning remains.
10. Print the list or, for a recipe version, select **Export Excel**.
11. Confirm the final specification and commercial terms with each nursery.
12. Create a new version when the source, quote, season, supplier strategy, or design changes materially.

Continue with [Planting Recipes](https://agroforestdesigner.com/docs/basics/recipes.md) to revise the plant palette, [Projects](https://agroforestdesigner.com/docs/basics/projects.md) to manage the site, or [Digital Planting Plan](https://agroforestdesigner.com/docs/basics/digital-planting-plan.md) to adjust marker-based quantities. Use [Cultivars](https://agroforestdesigner.com/docs/basics/cultivars.md) for named selections and [Plans and Feature Access](https://agroforestdesigner.com/docs/basics/plans-and-feature-access.md) when a procurement control is locked.
