Skip to content

Vendor pricing

Bring vendor prices in from a spreadsheet using the same staged-preview flow as bulk import.

  1. Upload a file linking items to vendor prices (item code + vendor + price).
  2. Preview the rows, as a table, or as a detailed field-by-field view, with per-row validation:
    • The item code must exist.
    • The vendor must exist.
    • The price must be a valid, non-negative number.
  3. Confirm: only valid rows commit; invalid or unmatched rows are flagged with the row number and reason.

Each row captures an effective date and a currency (defaulting to the vendor’s default currency). Existing prices are preserved as history: a new effective-dated row is inserted rather than overwriting, so cost sheets can be reproduced as of any date. Committed prices are linked to the item and shown on its detail. The import is audited (file name, vendor, counts).

Procurement buys the same product from several vendors, and each quotes a different price for each material (MOC) variant. This maintains richer, multi-vendor pricing keyed to the MOC variant.

For each vendor and MOC variant you capture:

  • Base price and customisation price (both non-negative)
  • Standard discount % (0-100)
  • Delivery period (from/to days)

Key behaviours:

  • Effective-dated history: saving a new price inserts a new dated row and keeps the previous one as history; nothing is overwritten.
  • Price comparison: for a chosen MOC variant, a comparison view lists every vendor’s effective price side by side (base, customisation, discount, net, delivery period).
  • Bulk update: set vendor prices per MOC variant from Excel via the staged preview, with per-row validation (vendor, item and MOC variant must exist; prices numeric and non-negative).
  • Costing-gap alert: when a product’s MOC variant has no vendor price, a flag is shown so the gap is visible.

Vendor prices are linked to the item and MOC variant, shown on the item detail, and audited (vendor, MOC, effective date, actor). This dataset is what the cost sheet reads once an MOC is selected.