# SalePro E2E Inventory Verification

- Run ID: `20260625013211`
- Prefix: `E2E-INV-20260625013211`
- Result: `PASS`
- Persistence: `rolled back after report`

## Products
- standard: ID `21`, code `E2E-INV-20260625013211-STD`, type `standard`
- variantProduct: ID `22`, code `E2E-INV-20260625013211-VAR`, type `standard`
- combo: ID `25`, code `E2E-INV-20260625013211-COMBO`, type `combo`
- componentA: ID `23`, code `E2E-INV-20260625013211-CMPA`, type `standard`
- componentB: ID `24`, code `E2E-INV-20260625013211-CMPB`, type `standard`
- variant code: `E2E-INV-20260625013211-VAR-RED`

## References
- `E2E-INV-20260625013211-PUR`

## Flow Summary
- Setup: Created deterministic products and reference master data.
  Context: `{"standard":"E2E-INV-20260625013211-STD","variant":"E2E-INV-20260625013211-VAR-RED","combo":"E2E-INV-20260625013211-COMBO","components":["E2E-INV-20260625013211-CMPA","E2E-INV-20260625013211-CMPB"]}`

## Checks

## Bugs Found
- Flow: Fatal verification failure
  Expected: Command should complete all flows and write an audit report.
  Actual: App\Services\AccountingService::executeSafe(): Argument #1 ($callback) must be of type callable, string given, called in C:\laragon\www\salepro\app\Services\AccountingService.php on line 67
  Affected files: `app/Http/Controllers/ExchangeController.php` for combo exchange handling when applicable.
  Proposed minimal fix: route combo exchange return/new rows through the same component stock logic used by sale and sale return.
  Context: `{"file":"C:\\laragon\\www\\salepro\\app\\Services\\AccountingService.php","line":15}`

## Commands
- Run and roll back data: `php artisan verify:e2e-inventory-flow`
- Run and keep data for manual UI checks: `php artisan verify:e2e-inventory-flow --commit`
