# UPN Ratecard Import

This module ships with a sample PDF rate card at `src/data/AHS 2026.pdf`.

The source is a pallet distribution rate card with zone rows, postcode groupings, service bands, and pallet-size pricing.

## Document Shape

The sample PDF shows:

- zone numbers and postcode groupings
- service labels such as `Priority / Next Day` and `Standard / Economy`
- economy transit-time notes such as `1-2 days`
- pallet-size columns for the pricing table

The visible pallet-size bands are:

- `Micro`
- `Quarter`
- `Qtr+`
- `Half`
- `Euro`
- `Full`

## What An Importer Needs To Do

To turn this PDF into importable `Shippingcosts` data, the importer needs to:

1. split the zone table into one row per postcode group
2. preserve the service label and transit-time note
3. map each pallet-size band into the shared pricing array
4. handle postcode prefixes and ranges consistently
5. keep route-specific notes and exceptions visible during preview

## Recommended Import Shape

The cleanest spreadsheet target would be:

- `Provider`
- `Zone`
- `Service`
- `TransitTime`
- `PostCode`
- `Micro`
- `Quarter`
- `Qtr+`
- `Half`
- `Euro`
- `Full`

That keeps the structure close to the current GForce preview/import pattern while still reflecting the UPN rate card.

## Notes

- This PDF is a reference document, not a direct import source.
- The biggest implementation choice is whether to write one record per zone or one record per postcode after expansion.
- If the importer is built, a postcode expansion service should be reused for the grouped postcode values.