# Changelog

## [Unreleased]

## [v1.0.6] - 2026-07-06

### Changed
- Release version bump and changelog maintenance.

## [v1.0.5] - 2026-07-06

### Changed
- Chore: save local changes
- Chore: automated module repo update

## [v1.0.3] - 2026-06-05

### Changed
- Bumped module version to v1.0.3 and updated changelog.

## [v1.0.2] - 2026-06-03

### Added
- Rate import preview screen showing sample rows and create/update actions before records are persisted.

### Changed
- Rate import flow now runs as `Upload & Preview` followed by explicit `Confirm & Import`.
- Import preview and confirmation use a temporary tokenized upload handoff with stale-file cleanup.

## [v1.0.1] - 2026-06-03

### Added
- Event-driven stock adjustments for paid orders and cartline haulier changes.
- Persistent cartline stock adjustment ledger stored in `data.stock_adjustments`.
- `RateSheetImporter` component: imports GForce rate-sheet XLSX files, creating one `Shippingcosts` record per individual postcode (no consolidation)
- `RateUploadForm` model: file upload validation for rate-sheet import
- `RateImportController`: upload form and import pipeline at `/gforce/rate-import/index`
- `rate-import/upload.php` and `rate-import/result.php` views for the rate-sheet import workflow

### Changed
- Documentation now clarifies that Composer install with `extra.bootstrap` and module bootstrap wiring does not require manual module/bootstrap config entries in standard setups.
- Composer metadata now includes optional `ngauge-delivery-*` provider suggestions and `extra.ngauge-delivery` options for provider-level configuration.
- Stock adjustment calculator usage now targets `PortalPeople\\delivery\\components\\StockAdjustmentCalculator` via a backward-compatible adapter.

## [v1.0.0] - 2026-06-01

### Added
- Initial release: GForce pallet network REST API integration for NGauge / Yii2
- `GForceClient` component wrapping all documented GForce REST endpoints
- `ConfigForm` model for managing API credentials and module settings via `params.php`
- `ConsignmentForm` model building the full GForce JSON Manifest structure
- `ConfigController` with config save, test-connection, and status endpoints
- `ConsignmentController` with create, delete, manifest, tracking, labels, and available-services endpoints
- `ConsignmentJob` for queue-based async consignment submission
- Admin views: configuration form and consignment creation form
- Support for `commit=false` (validation-only) and `commit=true` (live submission) modes
- Support for `Confirm=yes` (auto-confirm to depot) and `Confirm=no` (manual portal review) via `autoConfirm` module property
- Book-in request with conditional required fields
- Handball and tail-lift service options
- Notification sets (SMS and email) with 8 system group event types
- Optional product line items per consignment
- PDF label retrieval by response ID or consignment number
- Available services lookup by route
- Connection test via `availableservices` API call
