# Asset & Inventory Management — Task Cards

> **WBS:** [ASSET_MANAGEMENT_WBS.md](./ASSET_MANAGEMENT_WBS.md)  
> **Architecture plan:** [ASSET_MANAGEMENT_IMPLEMENTATION_PLAN.md](./ASSET_MANAGEMENT_IMPLEMENTATION_PLAN.md)  
> **All table DDL:** [ASSET_MANAGEMENT_DATABASE_SCHEMA.md](./ASSET_MANAGEMENT_DATABASE_SCHEMA.md) (`AST-SCHEMA-1`)  
> Paste each card below into the internal task manager. Field layout matches Employee Reporting / PMS task cards.

**Project:** ERPFlow  
**Module:** Asset Management (`Asset` / alias `asset`)  
**Status:** Cards ready for triage. Code starts only after Section N decisions and each phase STOP.

---

## How to use

Each card is paste-ready. Column details live in the schema file.

**Schema rule (updated):** `AST-SCHEMA-1` locks DDL → `AST-1.1.1` scaffolds the module → **`AST-SCHEMA-MIG` creates all V1 tables**. Feature BE cards must **not** add domain `CREATE TABLE` migrations (exceptions: Employee bridge ALTER in AST-1.4.2, measured indexes in AST-1.11.6).

**Canonical SQL seed:** [ASSET_MANAGEMENT_TASKS_INSERT.sql](./ASSET_MANAGEMENT_TASKS_INSERT.sql) (99 tasks). See [ASSET_MANAGEMENT_SCHEMA_MIG_NOTE.md](./ASSET_MANAGEMENT_SCHEMA_MIG_NOTE.md).

### Global DoD (every Backend Feature card)

Follow `AI/RULES/CODING-STANDARD.md`, `AI/SKILLS/module-development-standard`, `AI/SKILLS/database-standard`, `AI/SKILLS/rbac-permission-standard`, `AI/SKILLS/testing-standard`:

- Controller → Form Request → Service Interface → Service → Repository Interface → Repository → Model → Resource
- `company_id` + `BelongsToCompany`; never touch another module’s repository (use ports)
- Permission middleware from `config/actions.php`
- Transactions in Service; `lockForUpdate` where the card requires concurrency safety
- Feature tests: happy path + validation + IDOR / wrong company
- Do **not** create a second table named `assets`
- Do **not** write `assets` / `employee_assets` in Phases 1–3

### Global DoD (every Frontend Feature card)

- Permission gating, loading/empty/error, follow existing ERP UI patterns
- Call only documented API contracts from the sibling BE card

### Hard rules from WBS

- No dual writable asset registers
- Verification never posts stock (draft adjustments only; posting = AST-1.6.4)
- No new approval engine — use platform `ApprovalGateway` + executors
- 1.13 items are **out of V1** — do not open those cards for implementation

---

## Index

| View Order | Serial | Title | Type | Hours | Depends |
| --- | --- | --- | --- | --- | --- |
| 1 | AST-1.0.1 | Phase 0 Plan Review & Sign-off | Spike | 2.00 | — |
| 2 | AST-1.0.2 | Section N Decisions Log | Spike | 3.00 | AST-1.0.1 |
| 3 | AST-1.0.3 | Phase STOP Gate Process | Spike | 1.00 | AST-1.0.1 |
| 4 | AST-1.0.4 | Release & Rollback Coordination | Spike | 2.00 | AST-1.0.1 |
| 5 | AST-SCHEMA-1 | Full V1 Database Schema Lock | Spike | 6.00 | AST-1.0.2 (Phase 1 decisions) |
| 6 | AST-1.1.1 | Asset Module Skeleton — Backend | Feature | 4.00 | AST-1.0.2, AST-SCHEMA-1 |
| 7 | AST-1.1.2 | Asset Permissions Seed (actions.php) | Feature | 3.00 | AST-1.1.1 |
| 8 | AST-1.1.3 | Asset Categories — Backend | Feature | 5.00 | AST-1.1.1, AST-1.1.2, AST-SCHEMA-1 |
| 9 | AST-1.1.4 | Asset Units of Measure — Backend | Feature | 3.00 | AST-1.1.1, AST-SCHEMA-1 |
| 10 | AST-1.1.5 | Asset Items + Tracking Mode — Backend | Feature | 6.00 | AST-1.1.3, AST-1.1.4 |
| 11 | AST-1.1.6 | Category Attributes — Backend | Feature | 6.00 | AST-1.1.3, AST-1.1.5 |
| 12 | AST-1.1.7 | Asset Locations — Backend | Feature | 5.00 | AST-1.1.1, AST-SCHEMA-1, AST-1.0.2 (location grain) |
| 13 | AST-1.1.8 | Asset Masters — Frontend | Feature | 8.00 | AST-1.1.2, AST-1.1.3, AST-1.1.4, AST-1.1.5, AST-1.1.6, AST-1.1.7 |
| 14 | AST-1.1.9 | Phase 1 Tests + STOP | QA | 4.00 | AST-1.1.8 |
| 15 | AST-1.2.1 | Serialized Assets Registry — Backend | Feature | 8.00 | AST-1.1.9, AST-SCHEMA-1 |
| 16 | AST-1.2.2 | Serialized Asset Status Machine + Condition — Backend | Feature | 4.00 | AST-1.2.1 |
| 17 | AST-1.2.3 | Serialized Asset Attribute Values — Backend | Feature | 4.00 | AST-1.2.1, AST-1.1.6 |
| 18 | AST-1.2.4 | Asset Tags Issue / Replace / Void — Backend | Feature | 5.00 | AST-1.2.1 |
| 19 | AST-1.2.5 | QR Library Selection + Image Endpoint — Backend | Feature | 3.00 | AST-1.2.4 |
| 20 | AST-1.2.6 | Label Print Single + Bulk — Backend/Frontend | Feature | 4.00 | AST-1.2.5 |
| 21 | AST-1.2.7 | Authenticated Scan Resolve — Backend | Feature | 4.00 | AST-1.2.4, AST-1.1.2 |
| 22 | AST-1.2.8 | Serialized Assets List/Detail/Scan — Frontend | Feature | 8.00 | AST-1.2.1, AST-1.2.2, AST-1.2.3, AST-1.2.5, AST-1.2.7 |
| 23 | AST-1.2.9 | Phase 2 Tests + STOP | QA | 4.00 | AST-1.2.8 |
| 24 | AST-1.3.1 | Inventory Transactions Ledger — Backend | Feature | 6.00 | AST-1.1.9, AST-SCHEMA-1 |
| 25 | AST-1.3.2 | Inventory Balances Projection — Backend | Feature | 5.00 | AST-1.3.1 |
| 26 | AST-1.3.3 | Asset Receipt Inbox — Backend | Feature | 4.00 | AST-1.3.1 |
| 27 | AST-1.3.4 | Inventory Ledger Service — Backend | Feature | 8.00 | AST-1.3.1, AST-1.3.2 |
| 28 | AST-1.3.5 | Inventory Location Transfer — Backend | Feature | 5.00 | AST-1.3.4 |
| 29 | AST-1.3.6 | AssetReceiptService (Shared) — Backend | Feature | 8.00 | AST-1.3.3, AST-1.3.4, AST-1.2.1 |
| 30 | AST-1.3.7 | Manual Receipt — Backend + Frontend | Feature | 6.00 | AST-1.3.6 |
| 31 | AST-1.3.8 | Stock by Location — Frontend | Feature | 4.00 | AST-1.3.2, AST-1.1.2 |
| 32 | AST-1.3.9 | Phase 3 Tests (Concurrency) + STOP | QA | 5.00 | AST-1.3.5, AST-1.3.7, AST-1.3.8 |
| 33 | AST-1.4.1 | Legacy Asset Data Analysis | Spike | 3.00 | AST-1.0.2 (legacy decision), AST-1.2.9 |
| 34 | AST-1.4.2 | Legacy Bridge Migration (One-way Copy) | Feature | 8.00 | AST-1.4.1, AST-1.2.1 |
| 35 | AST-1.4.3 | Freeze Old Writer / Repoint Employee AssetTab | Feature | 6.00 | AST-1.4.2, AST-1.4.4 |
| 36 | AST-1.4.4 | Asset Assignments — Backend | Feature | 8.00 | AST-1.2.9, AST-1.0.2 (legacy+proxy decisions) |
| 37 | AST-1.4.5 | Asset Handover Acknowledge/Reject/Proxy — Backend | Feature | 8.00 | AST-1.4.4 |
| 38 | AST-1.4.6 | EmployeeDirectoryPort + EmployeeTimelinePort | Feature | 5.00 | AST-1.4.4 |
| 39 | AST-1.4.7 | Employee Exit Outstanding Assets Report — Backend | Feature | 3.00 | AST-1.4.4, AST-1.4.6 |
| 40 | AST-1.4.8 | Employee Self Assets & Handovers — Backend | Feature | 3.00 | AST-1.4.5 |
| 41 | AST-1.4.9 | Assign / Return / Acknowledge — Frontend | Feature | 8.00 | AST-1.4.3, AST-1.4.5, AST-1.4.7, AST-1.4.8 |
| 42 | AST-1.4.10 | Phase 4 Tests + STOP (Real Employee Check) | QA | 5.00 | AST-1.4.9 |
| 43 | AST-1.5.1 | Verification Sessions — Backend | Feature | 6.00 | AST-1.3.9 |
| 44 | AST-1.5.2 | Verification Lines + Results — Backend | Feature | 6.00 | AST-1.5.1 |
| 45 | AST-1.5.3 | Scan-to-Verify Flow — Backend | Feature | 4.00 | AST-1.5.2, AST-1.2.7 |
| 46 | AST-1.5.4 | Quantity Stock Count + Variance — Backend | Feature | 4.00 | AST-1.5.2 |
| 47 | AST-1.5.5 | Verification Complete & Review (Draft Adjustments Only) | Feature | 5.00 | AST-1.5.3, AST-1.5.4 |
| 48 | AST-1.5.6 | Verification Session / Scan / Count — Frontend | Feature | 8.00 | AST-1.5.5 |
| 49 | AST-1.5.7 | Phase 5 Tests + STOP | QA | 4.00 | AST-1.5.6 |
| 50 | AST-1.6.1 | Asset Transfer Document + Approval Executor | Feature | 8.00 | AST-1.5.7, AST-1.4.10 |
| 51 | AST-1.6.2 | Asset Disposal Document + Approval Executor | Feature | 6.00 | AST-1.2.2, AST-1.6.5 |
| 52 | AST-1.6.3 | Asset Write-off Document + Approval Executor | Feature | 6.00 | AST-1.6.5 |
| 53 | AST-1.6.4 | Inventory Adjustment Document + Approval Executor | Feature | 8.00 | AST-1.5.5, AST-1.3.4 |
| 54 | AST-1.6.5 | Asset Finance Events Outbox — Backend | Feature | 4.00 | AST-SCHEMA-1, AST-1.2.1 |
| 55 | AST-1.6.6 | Approval Module Actions + Executor Registration | Feature | 3.00 | AST-1.6.1, AST-1.6.2, AST-1.6.3, AST-1.6.4 |
| 56 | AST-1.6.7 | Asset Approval Requests — Frontend | Feature | 6.00 | AST-1.6.6 |
| 57 | AST-1.6.8 | Phase 6 Tests + STOP | QA | 5.00 | AST-1.6.7 |
| 58 | AST-1.7.1 | Asset Service Providers — Backend | Feature | 3.00 | AST-1.0.2 (provider decision), AST-1.2.9 |
| 59 | AST-1.7.2 | Asset Warranties — Backend | Feature | 5.00 | AST-1.7.1 |
| 60 | AST-1.7.3 | AMC Service Contracts + Covered Assets — Backend | Feature | 6.00 | AST-1.7.1, AST-1.2.1 |
| 61 | AST-1.7.4 | Service Contract Files — Backend | Feature | 3.00 | AST-1.7.3 |
| 62 | AST-1.7.5 | Warranty & AMC on Asset — Frontend | Feature | 5.00 | AST-1.7.2, AST-1.7.3, AST-1.7.4 |
| 63 | AST-1.7.6 | Phase 7 Tests + STOP | QA | 3.00 | AST-1.7.5 |
| 64 | AST-1.8.1 | Opening Balance Import Template Design | Spike | 3.00 | AST-1.3.9, AST-1.6.5 |
| 65 | AST-1.8.2 | Import Upload + Staging — Backend | Feature | 6.00 | AST-1.8.1 |
| 66 | AST-1.8.3 | Import Validation + Error Report — Backend | Feature | 6.00 | AST-1.8.2 |
| 67 | AST-1.8.4 | Import Confirm (All / Valid-only) + Queue — Backend | Feature | 8.00 | AST-1.8.3, AST-1.3.6 |
| 68 | AST-1.8.5 | Acquisition Finance Events on Import Confirm | Feature | 3.00 | AST-1.8.4, AST-1.6.5 |
| 69 | AST-1.8.6 | Import Reversal Script (Guarded) | Feature | 4.00 | AST-1.8.4 |
| 70 | AST-1.8.7 | [Opening Import Dry-run on Data Copy](./OPENING_BALANCE_IMPORT_DRY_RUN_SPIKE.md) | Spike | 4.00 | AST-1.8.3 |
| 71 | AST-1.8.8 | Phase 8 Tests + STOP (Template Sign-off) | QA | 4.00 | AST-1.8.5, AST-1.8.7 |
| 72 | AST-1.9.1 | Asset Service Events Thin Log — Backend | Feature | 4.00 | AST-1.7.6 |
| 73 | AST-1.9.2 | UNDER_MAINTENANCE Status Transitions — Backend | Feature | 2.00 | AST-1.2.2, AST-1.9.1 |
| 74 | AST-1.9.3 | AssetContextPort for Future Maintenance | Feature | 3.00 | AST-1.9.1, AST-1.7.2, AST-1.7.3 |
| 75 | AST-1.9.4 | Service History on Asset Page — Frontend | Feature | 3.00 | AST-1.9.1, AST-1.9.2 |
| 76 | AST-1.9.5 | Phase 9 Tests + STOP | QA | 2.00 | AST-1.9.4 |
| 77 | AST-1.10.1 | Finance Event Frozen Amount Rule | Feature | 2.00 | AST-1.6.5 |
| 78 | AST-1.10.2 | AssetFinanceEventWriter Wiring | Feature | 3.00 | AST-1.10.1, AST-1.8.5, AST-1.6.2, AST-1.6.3 |
| 79 | AST-1.10.3 | Pending Finance Events Read API | Feature | 3.00 | AST-1.10.2 |
| 80 | AST-1.10.4 | Cost Field Permission Enforcement | Feature | 2.00 | AST-1.1.2, AST-1.2.7, AST-1.10.3 |
| 81 | AST-1.10.5 | Phase 10 Tests + STOP (Finance Sign-off) | QA | 2.00 | AST-1.10.4 |
| 82 | AST-1.11.1 | Asset Register Reports — Backend + Frontend | Feature | 6.00 | AST-1.4.10, AST-1.10.4 |
| 83 | AST-1.11.2 | Verification Reports — Backend + Frontend | Feature | 4.00 | AST-1.5.7 |
| 84 | AST-1.11.3 | Inventory Reports — Backend + Frontend | Feature | 5.00 | AST-1.6.4, AST-1.3.9 |
| 85 | AST-1.11.4 | Warranty/AMC Expiry + Acquisition Cost Lists | Feature | 4.00 | AST-1.7.6, AST-1.10.4 |
| 86 | AST-1.11.5 | Streaming Export for Asset Reports | Feature | 4.00 | AST-1.11.1, AST-1.11.3 |
| 87 | AST-1.11.6 | Index Tuning (Measured Only) | Feature | 3.00 | AST-1.11.1, AST-1.11.3 |
| 88 | AST-1.11.7 | Security Pass (Cost Columns + Company Scope) | QA | 4.00 | AST-1.11.1, AST-1.10.4 |
| 89 | AST-1.11.8 | Concurrency Regression Suite | QA | 4.00 | AST-1.3.9, AST-1.4.10, AST-1.6.8 |
| 90 | AST-1.11.9 | Phase 11 STOP — Report List Acceptance | QA | 2.00 | AST-1.11.5, AST-1.11.7, AST-1.11.8 |
| 91 | AST-1.12.0 | Feature Flags / Module Enable Order | Spike | 2.00 | AST-1.0.4 |
| 92 | AST-1.12.1 | Asset Module Documentation | Docs | 6.00 | AST-1.11.9 |
| 93 | AST-1.12.2 | UAT per Phase | QA | 8.00 | AST-1.1.9 through AST-1.11.9 (rolling) |
| 94 | AST-1.12.3 | Production Data Migration (Bridge + Opening Import) | Spike | 8.00 | AST-1.4.10, AST-1.8.8, AST-1.12.0 |
| 95 | AST-1.12.4 | Physical Label Printing & Tagging Drive | Spike | 4.00 | AST-1.2.6, AST-1.12.3 |
| 96 | AST-1.12.5 | [First Physical Verification Cycle](./FIRST_PHYSICAL_VERIFICATION_CYCLE_RUNBOOK.md) | Spike | 4.00 | AST-1.12.4, AST-1.6.8 |
| 97 | AST-1.12.6 | User Training (Roles) | Docs | 4.00 | AST-1.12.1 |
| 98 | AST-1.13 | Future Roadmap Tracker (Out of V1) | Spike | 1.00 | AST-1.0.1 |

**Card count:** 98  
**Approx hours:** 455.00

---

# Cards (paste-ready)

---

Project  
ERPFlow  
Module  
Asset Management  
Type  
Spike  
Title  
Phase 0 Plan Review & Sign-off  
Branch Name  
docs-asset-phase0-signoff  
View Order  
1  
Description

Task Serial  
AST-1.0.1 — Phase 0 Plan Review & Sign-off

User Story  
As a product/tech owner, I want the Phase 0 plan formally signed so that implementation does not start on ambiguous scope.

Depends On  
—

STOP Gate  
Plan accepted or change list published.

Related Table Schema  
No new tables. References plan §A–N and WBS 1.0.

Schema Based Business Rules

- Implementation is blocked until this card is Done.
- Changes to scope after sign-off require a new decision note.

Task Scope  
Review ASSET_MANAGEMENT_IMPLEMENTATION_PLAN.md and ASSET_MANAGEMENT_WBS.md. Record sign-off (who/when) in the plan header Status line. Do not write application code.

Estimate Hours  
2.00  
Status  
Todo  
QA Status  
-  
QA Comment  
-

---

Project  
ERPFlow  
Module  
Asset Management  
Type  
Spike  
Title  
Section N Decisions Log  
Branch Name  
docs-asset-section-n-decisions  
View Order  
2  
Description

Task Serial  
AST-1.0.2 — Section N Decisions Log

User Story  
As a tech lead, I want every Section N ambiguity decided and written down so later phases do not invent rules.

Depends On  
AST-1.0.1

STOP Gate  
All Phase 1 blockers decided (item master owner, location grain).

Related Table Schema  
No new tables. Decision log lives in docs/asset-management/.

Schema Based Business Rules

- Legacy register: one-way bridge + freeze writer (reject dual writable).
- Item master owner = Asset.
- Locations = asset_locations under work_locations.
- Serial mandatory + exception list (or deferred to AST-1.2 STOP).
- Proxy handover policy.
- Adjustment approval default = company setting may be off.
- Temporary asset_service_providers.
- Overlapping warranty policy.
- Import template deferred to AST-1.8 STOP.
- No depreciation in Asset (Finance outbox only).
- Negative stock hard-blocked.

Task Scope  
Create DECISIONS.md (or update plan §N) with each decision, owner, date, and which phase it unblocks. Mark blockers for 1.1 / 1.2 / 1.4 / 1.6 / 1.7 / 1.8 / 1.10.

Estimate Hours  
3.00  
Status  
Todo  
QA Status  
-  
QA Comment  
-

---

Project  
ERPFlow  
Module  
Asset Management  
Type  
Spike  
Title  
Phase STOP Gate Process  
Branch Name  
docs-asset-stop-gates  
View Order  
3  
Description

Task Serial  
AST-1.0.3 — Phase STOP Gate Process

User Story  
As a tech lead, I want a repeatable STOP checklist per phase so work does not silently roll into the next phase.

Depends On  
AST-1.0.1

Related Table Schema  
None.

Schema Based Business Rules

- No phase starts without previous STOP Done.
- STOP evidence: demo notes or test IDs listed on the phase QA card.

Task Scope  
Document STOP checklist template (objective, demo, risks, go/no-go). Attach to WBS. No code.

Estimate Hours  
1.00  
Status  
Todo  
QA Status  
-  
QA Comment  
-

---

Project  
ERPFlow  
Module  
Asset Management  
Type  
Spike  
Title  
Release & Rollback Coordination  
Branch Name  
docs-asset-release-rollback  
View Order  
4  
Description

Task Serial  
AST-1.0.4 — Release & Rollback Coordination

User Story  
As a release owner, I want rollback notes per phase so production enablement is reversible.

Depends On  
AST-1.0.1

Related Table Schema  
References schema file; no DDL here.

Schema Based Business Rules

- Prefer disable module / feature flag over destructive drops when data exists.
- Ledger and assignment rows are never hard-deleted in rollback scripts without explicit approval.

Task Scope  
Write release order (module enable, permission sync, bridge freeze) and rollback per phase in docs. Coordinate with AST-1.12.0.

Estimate Hours  
2.00  
Status  
Todo  
QA Status  
-  
QA Comment  
-

---

Project  
ERPFlow  
Module  
Asset Management  
Type  
Spike  
Title  
Full V1 Database Schema Lock  
Branch Name  
docs-asset-database-schema  
View Order  
5  
Description

Task Serial  
AST-SCHEMA-1 — Full V1 Database Schema Lock

User Story  
As the backend team, I want one locked DDL for all V1 Asset tables so migrations do not invent columns.

Depends On  
AST-1.0.2 (Phase 1 decisions)

STOP Gate  
Schema accepted for Phase 1 tables at minimum; later tables may refine before their phase starts.

Related Table Schema  
See [ASSET_MANAGEMENT_DATABASE_SCHEMA.md](./ASSET_MANAGEMENT_DATABASE_SCHEMA.md). All V1 tables listed there.

Schema Based Business Rules

- No second table named `assets`.
- No soft deletes on ledger/assignment/verification lines.
- Unique constraints and FKs as in schema file.
- Migration cards must match this DDL; deviations need schema update first.

Task Scope  
Review and lock the schema markdown. Publish as source of truth. Migrations remain in phase BE cards.

Estimate Hours  
6.00  
Status  
Todo  
QA Status  
-  
QA Comment  
-

---

Project  
ERPFlow  
Module  
Asset Management  
Type  
Feature  
Title  
Asset Module Skeleton — Backend  
Branch Name  
feature-asset-module-skeleton  
View Order  
6  
Description

Task Serial  
AST-1.1.1 — Asset Module Skeleton — Backend

User Story  
As a developer, I want the nwidart Asset module scaffolded so later stories have a place for code.

Depends On  
AST-1.0.2, AST-SCHEMA-1

Related Table Schema  
No domain tables yet.

Schema Based Business Rules

- Module name `Asset`, alias `asset`.
- Mirror Employee/Commissioning provider patterns.
- API prefix `api/v1/asset`, route name `api.asset.`.
- Do not enable writes to Employee assets tables.

Task Scope  
`module:make Asset`, enable in modules_statuses.json, RouteServiceProvider, empty ServiceProvider bindings file, health route behind auth. Follow module-development-standard.

Estimate Hours  
4.00  
Status  
Todo  
QA Status  
-  
QA Comment  
-

---

Project  
ERPFlow  
Module  
Asset Management  
Type  
Feature  
Title  
Asset Permissions Seed (actions.php)  
Branch Name  
feature-asset-permissions-seed  
View Order  
7  
Description

Task Serial  
AST-1.1.2 — Asset Permissions Seed (actions.php)

User Story  
As an admin, I want Asset module actions registered so RBAC can gate every Asset screen.

Depends On  
AST-1.1.1

Related Table Schema  
Uses platform `actions` / `module_actions` / permissions sync — no new domain tables.

Schema Based Business Rules

- Naming: `asset.{section}.{action}`.
- Seed at least: items.view/manage, assets.view/assign/transfer/dispose/write-off, inventory.view/adjust, verification.perform/review, handover.acknowledge, contracts.manage, import.confirm, tags.issue, finance.view, menu-view.
- Sync via existing action sync command.

Task Scope  
Add `asset` module section to backend/config/actions.php. Run sync. Feature test that permissions exist. No UI yet.

Estimate Hours  
3.00  
Status  
Todo  
QA Status  
-  
QA Comment  
-

---

Project  
ERPFlow  
Module  
Asset Management  
Type  
Feature  
Title  
Asset Categories — Backend  
Branch Name  
feature-asset-categories-backend  
View Order  
8  
Description

Task Serial  
AST-1.1.3 — Asset Categories — Backend

User Story  
As an asset manager, I want category CRUD with a tree so items can be classified.

Depends On  
AST-1.1.1, AST-1.1.2, AST-SCHEMA-1

Related Table Schema  
Table: `asset_categories`
Columns
- id — BIGINT UNSIGNED PK
- company_id — BIGINT UNSIGNED FK → companies
- name — VARCHAR(150)
- code — VARCHAR(50)
- parent_id — BIGINT UNSIGNED NULL FK → asset_categories RESTRICT
- status — ENUM active|inactive
- created_by / updated_by — BIGINT UNSIGNED NULL FK → users
- created_at / updated_at — TIMESTAMP
Unique: (company_id, code). Index: (company_id, parent_id), (company_id, status).
Full DDL: ASSET_MANAGEMENT_DATABASE_SCHEMA.md

Schema Based Business Rules

- Category code unique per company.
- Parent must belong to same company.
- Cycle in parent chain must be blocked.
- Restrict delete when children or items reference category.
- Inactive categories cannot be selected on new items.

Task Scope  
Migration, model, repository+interface, service+interface, form requests, controller, resources, routes, permissions `asset.items.manage` for write / `asset.items.view` for read. Feature tests for unique, cycle, IDOR.

Estimate Hours  
5.00  
Status  
Todo  
QA Status  
-  
QA Comment  
-

---

Project  
ERPFlow  
Module  
Asset Management  
Type  
Feature  
Title  
Asset Units of Measure — Backend  
Branch Name  
feature-asset-units-backend  
View Order  
9  
Description

Task Serial  
AST-1.1.4 — Asset Units of Measure — Backend

User Story  
As an asset manager, I want units of measure so quantity items have a consistent unit.

Depends On  
AST-1.1.1, AST-SCHEMA-1

Related Table Schema  
Table: `asset_units`
- id, company_id, name, code, decimal_places (TINYINT), status, created_by, updated_by, timestamps
Unique: (company_id, code).

Schema Based Business Rules

- Code unique per company.
- decimal_places >= 0.
- Restrict delete when referenced by items.

Task Scope  
Full Service-Repository CRUD API. Tests for uniqueness and company scope.

Estimate Hours  
3.00  
Status  
Todo  
QA Status  
-  
QA Comment  
-

---

Project  
ERPFlow  
Module  
Asset Management  
Type  
Feature  
Title  
Asset Items + Tracking Mode — Backend  
Branch Name  
feature-asset-items-backend  
View Order  
10  
Description

Task Serial  
AST-1.1.5 — Asset Items + Tracking Mode — Backend

User Story  
As an asset manager, I want an item master with SERIALIZED or QUANTITY tracking so the catalog drives both asset types.

Depends On  
AST-1.1.3, AST-1.1.4

Related Table Schema  
Table: `asset_items`
- id, company_id, category_id FK, unit_id FK, name, code, tracking_mode ENUM(SERIALIZED|QUANTITY), status, description, created_by, updated_by, timestamps
Unique: (company_id, code). Index: (company_id, tracking_mode, category_id).

Schema Based Business Rules

- tracking_mode immutable once any serialized_asset or inventory_transaction exists for the item (enforce in service; Phase 1 can stub existence checks returning false until those tables exist, then tighten in 1.2/1.3).
- Item cannot be both modes.
- Category and unit must be active and same company.

Task Scope  
CRUD API + validation. Document immutability rule in service. Tests for unique code and mode validation.

Estimate Hours  
6.00  
Status  
Todo  
QA Status  
-  
QA Comment  
-

---

Project  
ERPFlow  
Module  
Asset Management  
Type  
Feature  
Title  
Category Attributes — Backend  
Branch Name  
feature-asset-attributes-backend  
View Order  
11  
Description

Task Serial  
AST-1.1.6 — Category Attributes — Backend

User Story  
As an asset manager, I want category-specific custom attributes so laptops and vehicles do not share one flat column set.

Depends On  
AST-1.1.3, AST-1.1.5

Related Table Schema  
Tables:
- `asset_attribute_definitions` (category_id, code, label, data_type TEXT|NUMBER|BOOLEAN|DATE|SELECT|MULTI_SELECT, is_required, sort_order, status)
- `asset_attribute_options` (definition_id, value, label, sort_order)
- `asset_item_attribute_values` (item_id, definition_id, value_text)
Uniques as in schema file.

Schema Based Business Rules

- Definition code unique per category.
- Options required for SELECT / MULTI_SELECT.
- Item values must reference definitions from the item’s category.
- Validate value against data_type.
- Do not invent a platform-wide dynamic field engine.

Task Scope  
CRUD for definitions/options; set/get item attribute values. Validation service. Tests for type and category mismatch.

Estimate Hours  
6.00  
Status  
Todo  
QA Status  
-  
QA Comment  
-

---

Project  
ERPFlow  
Module  
Asset Management  
Type  
Feature  
Title  
Asset Locations — Backend  
Branch Name  
feature-asset-locations-backend  
View Order  
12  
Description

Task Serial  
AST-1.1.7 — Asset Locations — Backend

User Story  
As an asset manager, I want floor/room/store locations under existing work locations so assets and stock have a physical place.

Depends On  
AST-1.1.1, AST-SCHEMA-1, AST-1.0.2 (location grain)

Related Table Schema  
Table: `asset_locations`
- work_location_id FK → work_locations RESTRICT
- branch_id FK nullable → branches
- parent_id FK nullable → asset_locations
- name, code, kind ENUM(site|floor|room|store), status
Unique: (company_id, code).

Schema Based Business Rules

- Do not alter Configuration `work_locations` schema.
- Parent must same company and same work_location_id.
- Cycle blocked.
- Code unique per company.

Task Scope  
CRUD API. Validate work_location belongs to company. Tests for cycle and FK company mismatch.

Estimate Hours  
5.00  
Status  
Todo  
QA Status  
-  
QA Comment  
-

---

Project  
ERPFlow  
Module  
Asset Management  
Type  
Feature  
Title  
Asset Masters — Frontend  
Branch Name  
feature-asset-masters-frontend  
View Order  
13  
Description

Task Serial  
AST-1.1.8 — Asset Masters — Frontend

User Story  
As an asset manager, I want UI for categories, units, items, attributes, and locations so I can configure the catalog without API tools.

Depends On  
AST-1.1.2, AST-1.1.3, AST-1.1.4, AST-1.1.5, AST-1.1.6, AST-1.1.7

Related Table Schema  
Consumes Phase 1 APIs. No new tables.

Schema Based Business Rules

- Gate every screen with asset.items.view / manage.
- Hide inactive options on create forms unless editing.
- Show tracking_mode as read-only after save once immutability is active.

Task Scope  
frontend/src/modules/asset: nav, routes, list/form for category, unit, item, attributes, locations. Follow existing Configuration/Employee UI patterns.

Estimate Hours  
8.00  
Status  
Todo  
QA Status  
-  
QA Comment  
-

---

Project  
ERPFlow  
Module  
Asset Management  
Type  
QA  
Title  
Phase 1 Tests + STOP  
Branch Name  
test-asset-phase1-stop  
View Order  
14  
Description

Task Serial  
AST-1.1.9 — Phase 1 Tests + STOP

User Story  
As a tech lead, I want Phase 1 proven and STOP signed so Phase 2 may start.

Depends On  
AST-1.1.8

STOP Gate  
Human confirms catalog and location grain before serialized_assets / ledger tables.

Related Table Schema  
Phase 1 tables only.

Schema Based Business Rules

- No writes to Employee assets tables verified.
- Catalog + location grain confirmed.

Task Scope  
Run/complete feature tests for Phase 1. Demo masters UI. Sign STOP on WBS 1.1.

Estimate Hours  
4.00  
Status  
Todo  
QA Status  
-  
QA Comment  
-

---

Project  
ERPFlow  
Module  
Asset Management  
Type  
Feature  
Title  
Serialized Assets Registry — Backend  
Branch Name  
feature-asset-serialized-registry-backend  
View Order  
15  
Description

Task Serial  
AST-1.2.1 — Serialized Assets Registry — Backend

User Story  
As an asset custodian, I want individually identifiable assets with code, serial, cost, and location so I can manage physical instances.

Depends On  
AST-1.1.9, AST-SCHEMA-1

Related Table Schema  
Table: `serialized_assets`
- item_id (must be tracking_mode SERIALIZED)
- asset_code, serial_number nullable, status, condition, current_location_id, acquired_on, acquisition_cost, currency, cost_center_id, legacy_asset_id
Uniques: (company_id, asset_code); (company_id, item_id, serial_number) when serial present.

Schema Based Business Rules

- Item must be SERIALIZED.
- Asset code unique per company.
- Serial unique per company+item when present (mandatory policy from Section N).
- Quantity items rejected.
- Do not implement assignment/transfer/dispose APIs here.

Task Scope  
Migration, CRUD for create/update/view/list with filters. Cost fields gated by asset.finance.view on read Resource. Activity log on create/update.

Estimate Hours  
8.00  
Status  
Todo  
QA Status  
-  
QA Comment  
-

---

Project  
ERPFlow  
Module  
Asset Management  
Type  
Feature  
Title  
Serialized Asset Status Machine + Condition — Backend  
Branch Name  
feature-asset-status-machine-backend  
View Order  
16  
Description

Task Serial  
AST-1.2.2 — Serialized Asset Status Machine + Condition — Backend

User Story  
As a custodian, I want controlled status and condition transitions so assets do not jump into illegal states.

Depends On  
AST-1.2.1

Related Table Schema  
Uses `serialized_assets.status` and `serialized_assets.condition` columns.

Schema Based Business Rules

Allowed in this card (non-assignment edges):
- RECEIVED → AVAILABLE
- AVAILABLE → UNDER_MAINTENANCE → AVAILABLE
- AVAILABLE → LOST → AVAILABLE (recovery)
- AVAILABLE → RETIRED (dispose/write-off edges deferred to Phase 6)
Deferred: ASSIGNED, transfer, dispose, write-off APIs.
Condition values: NEW|GOOD|FAIR|POOR|DAMAGED|UNUSABLE.

Task Scope  
StatusTransition service. Dedicated endpoints or update guards. Tests for illegal jumps.

Estimate Hours  
4.00  
Status  
Todo  
QA Status  
-  
QA Comment  
-

---

Project  
ERPFlow  
Module  
Asset Management  
Type  
Feature  
Title  
Serialized Asset Attribute Values — Backend  
Branch Name  
feature-asset-instance-attributes-backend  
View Order  
17  
Description

Task Serial  
AST-1.2.3 — Serialized Asset Attribute Values — Backend

User Story  
As a custodian, I want instance-level attribute values so each laptop can store CPU/RAM etc.

Depends On  
AST-1.2.1, AST-1.1.6

Related Table Schema  
Table: `serialized_asset_attribute_values` (serialized_asset_id, definition_id, value_text). Unique (serialized_asset_id, definition_id).

Schema Based Business Rules

- Definitions must belong to the asset item’s category.
- Required attributes enforced on create when category requires them.
- Changes logged to activity_logs properties (no separate history table in V1).

Task Scope  
Set/get values API. Validation. Tests.

Estimate Hours  
4.00  
Status  
Todo  
QA Status  
-  
QA Comment  
-

---

Project  
ERPFlow  
Module  
Asset Management  
Type  
Feature  
Title  
Asset Tags Issue / Replace / Void — Backend  
Branch Name  
feature-asset-tags-backend  
View Order  
18  
Description

Task Serial  
AST-1.2.4 — Asset Tags Issue / Replace / Void — Backend

User Story  
As a custodian, I want QR/barcode tags with replace history so physical stickers resolve to the correct asset.

Depends On  
AST-1.2.1

Related Table Schema  
Tables: `asset_tags` (token unique global, symbology QR|BARCODE, status active|replaced|void), `asset_tag_events` (issued|replaced|voided).

Schema Based Business Rules

- Token opaque (UUID or similar); do not encode full asset payload.
- One active tag per asset — replace voids/replaces previous in same transaction.
- Inactive/replaced token must not resolve.

Task Scope  
Issue, replace, void services + APIs. Permission asset.tags.issue. Tests for uniqueness and single active tag.

Estimate Hours  
5.00  
Status  
Todo  
QA Status  
-  
QA Comment  
-

---

Project  
ERPFlow  
Module  
Asset Management  
Type  
Feature  
Title  
QR Library Selection + Image Endpoint — Backend  
Branch Name  
feature-asset-qr-image-backend  
View Order  
19  
Description

Task Serial  
AST-1.2.5 — QR Library Selection + Image Endpoint — Backend

User Story  
As a custodian, I want a QR image for a tag so I can print stickers.

Depends On  
AST-1.2.4

Related Table Schema  
Uses `asset_tags.token` only.

Schema Based Business Rules

- Image encodes token or URL containing token only.
- Auth required.
- Document chosen composer package in PR.

Task Scope  
Select library, add composer dependency, GET image endpoint for active tag. Tests: unauthorized 401/403; replaced tag 404.

Estimate Hours  
3.00  
Status  
Todo  
QA Status  
-  
QA Comment  
-

---

Project  
ERPFlow  
Module  
Asset Management  
Type  
Feature  
Title  
Label Print Single + Bulk — Backend/Frontend  
Branch Name  
feature-asset-label-print  
View Order  
20  
Description

Task Serial  
AST-1.2.6 — Label Print Single + Bulk — Backend/Frontend

User Story  
As a custodian, I want single and bulk label print so tagging drives are efficient.

Depends On  
AST-1.2.5

Related Table Schema  
Uses tags + serialized assets.

Schema Based Business Rules

- Only active tags.
- Bulk limited (document max batch size).
- Print layout shows asset_code + QR.

Task Scope  
Print view/PDF or browser print page for one and many assets. Permission tags.issue or assets.view as decided.

Estimate Hours  
4.00  
Status  
Todo  
QA Status  
-  
QA Comment  
-

---

Project  
ERPFlow  
Module  
Asset Management  
Type  
Feature  
Title  
Authenticated Scan Resolve — Backend  
Branch Name  
feature-asset-scan-resolve-backend  
View Order  
21  
Description

Task Serial  
AST-1.2.7 — Authenticated Scan Resolve — Backend

User Story  
As an authorized user, I want scanning a tag to return asset details filtered by my permissions.

Depends On  
AST-1.2.4, AST-1.1.2

Related Table Schema  
Resolve via `asset_tags.token` → serialized_assets.

Schema Based Business Rules

- Auth required.
- Response fields depend on permission: view basics; hide acquisition cost without asset.finance.view; no dispose/adjust actions for normal employees.
- Void/replaced → not found.

Task Scope  
GET scan endpoint. Resource with permission-aware fields. Tests for permission matrix.

Estimate Hours  
4.00  
Status  
Todo  
QA Status  
-  
QA Comment  
-

---

Project  
ERPFlow  
Module  
Asset Management  
Type  
Feature  
Title  
Serialized Assets List/Detail/Scan — Frontend  
Branch Name  
feature-asset-serialized-frontend  
View Order  
22  
Description

Task Serial  
AST-1.2.8 — Serialized Assets List/Detail/Scan — Frontend

User Story  
As a custodian, I want list, detail, and scan pages for serialized assets.

Depends On  
AST-1.2.1, AST-1.2.2, AST-1.2.3, AST-1.2.5, AST-1.2.7

Related Table Schema  
Consumes 1.2 APIs.

Schema Based Business Rules

- Permission gating.
- Cost fields hidden without finance.view.
- Scan page uses camera/manual token entry.

Task Scope  
Asset list/filters, detail (status, condition, attributes, tags), scan page, print actions.

Estimate Hours  
8.00  
Status  
Todo  
QA Status  
-  
QA Comment  
-

---

Project  
ERPFlow  
Module  
Asset Management  
Type  
QA  
Title  
Phase 2 Tests + STOP  
Branch Name  
test-asset-phase2-stop  
View Order  
23  
Description

Task Serial  
AST-1.2.9 — Phase 2 Tests + STOP

User Story  
As a tech lead, I want Phase 2 STOP so Phase 3 may start.

Depends On  
AST-1.2.8

STOP Gate  
Confirm status list and serial mandatory/exceptions.

Related Table Schema  
Phase 2 tables.

Schema Based Business Rules

- Serial policy confirmed.
- Assignment/transfer/dispose APIs still absent.

Task Scope  
Regression tests + demo create asset, print tag, scan. Sign STOP.

Estimate Hours  
4.00  
Status  
Todo  
QA Status  
-  
QA Comment  
-

---

Project  
ERPFlow  
Module  
Asset Management  
Type  
Feature  
Title  
Inventory Transactions Ledger — Backend  
Branch Name  
feature-asset-inventory-transactions-backend  
View Order  
24  
Description

Task Serial  
AST-1.3.1 — Inventory Transactions Ledger — Backend

User Story  
As inventory, I want an append-only stock ledger so quantity changes are auditable.

Depends On  
AST-1.1.9, AST-SCHEMA-1

Related Table Schema  
Table: `inventory_transactions`
type ENUM RECEIPT|ISSUE|TRANSFER_OUT|TRANSFER_IN|RETURN|ADJUSTMENT|DAMAGE|DISPOSAL|OPENING_BALANCE
quantity signed DECIMAL(18,4), balance_after, reference_type/id, idempotency_key, occurred_on, unit_cost nullable
Unique: (company_id, idempotency_key). No UPDATE/DELETE in application.

Schema Based Business Rules

- Append-only.
- Item must be QUANTITY tracking_mode.
- Idempotency key required and unique.

Task Scope  
Migration + repository insert-only methods. No balance update in this card alone if split — prefer pairing with 1.3.2 in one service in 1.3.4. This card delivers table + model + repo.

Estimate Hours  
6.00  
Status  
Todo  
QA Status  
-  
QA Comment  
-

---

Project  
ERPFlow  
Module  
Asset Management  
Type  
Feature  
Title  
Inventory Balances Projection — Backend  
Branch Name  
feature-asset-inventory-balances-backend  
View Order  
25  
Description

Task Serial  
AST-1.3.2 — Inventory Balances Projection — Backend

User Story  
As inventory, I want a locked balance projection per item+location so stock queries are fast and safe.

Depends On  
AST-1.3.1

Related Table Schema  
Table: `inventory_balances`
Unique (company_id, item_id, location_id). quantity, reserved_quantity default 0.

Schema Based Business Rules

- Update only inside transaction with lockForUpdate after ledger insert.
- Reject if quantity + delta < 0 (hard block).
- reserved_quantity stays 0 in V1.
- Never update quantity without a ledger row.

Task Scope  
Migration + balance repository with lock helpers. Unit tests for negative rejection.

Estimate Hours  
5.00  
Status  
Todo  
QA Status  
-  
QA Comment  
-

---

Project  
ERPFlow  
Module  
Asset Management  
Type  
Feature  
Title  
Asset Receipt Inbox — Backend  
Branch Name  
feature-asset-receipt-inbox-backend  
View Order  
26  
Description

Task Serial  
AST-1.3.3 — Asset Receipt Inbox — Backend

User Story  
As the system, I want an idempotent receipt inbox so manual import and future GRN cannot double-post.

Depends On  
AST-1.3.1

Related Table Schema  
Table: `asset_receipt_inbox`
Unique (company_id, source_type, source_id, source_line_id). status pending|applied|failed. expected_qty/created_qty for partial serialized receipts.

Schema Based Business Rules

- Duplicate source key returns existing result (no second apply).
- Applied rows immutable.

Task Scope  
Migration + inbox repository. Used by AssetReceiptService.

Estimate Hours  
4.00  
Status  
Todo  
QA Status  
-  
QA Comment  
-

---

Project  
ERPFlow  
Module  
Asset Management  
Type  
Feature  
Title  
Inventory Ledger Service — Backend  
Branch Name  
feature-asset-ledger-service-backend  
View Order  
27  
Description

Task Serial  
AST-1.3.4 — Inventory Ledger Service — Backend

User Story  
As inventory, I want one service that posts receipt/issue/return/damage/disposal/opening movements correctly.

Depends On  
AST-1.3.1, AST-1.3.2

Related Table Schema  
Writes `inventory_transactions` + updates `inventory_balances`.

Schema Based Business Rules

- Single DB transaction: lock balance → insert ledger → update projection.
- Negative stock blocked.
- Serialized items rejected.
- OPENING_BALANCE type supported for later import.

Task Scope  
InventoryLedgerServiceInterface + implementation. Activity log. Feature tests for each type and negative block.

Estimate Hours  
8.00  
Status  
Todo  
QA Status  
-  
QA Comment  
-

---

Project  
ERPFlow  
Module  
Asset Management  
Type  
Feature  
Title  
Inventory Location Transfer — Backend  
Branch Name  
feature-asset-inventory-transfer-backend  
View Order  
28  
Description

Task Serial  
AST-1.3.5 — Inventory Location Transfer — Backend

User Story  
As inventory, I want stock transfers between locations that cannot deadlock or go negative.

Depends On  
AST-1.3.4

Related Table Schema  
Posts TRANSFER_OUT + TRANSFER_IN pair with shared idempotency key family.

Schema Based Business Rules

- Lock both balance rows in ascending id order.
- Source cannot go negative.
- Both rows same transaction.

Task Scope  
Transfer API + service. Concurrency tests.

Estimate Hours  
5.00  
Status  
Todo  
QA Status  
-  
QA Comment  
-

---

Project  
ERPFlow  
Module  
Asset Management  
Type  
Feature  
Title  
AssetReceiptService (Shared) — Backend  
Branch Name  
feature-asset-receipt-service-backend  
View Order  
29  
Description

Task Serial  
AST-1.3.6 — AssetReceiptService (Shared) — Backend

User Story  
As the platform, I want one receipt application service for manual, import, and future GRN.

Depends On  
AST-1.3.3, AST-1.3.4, AST-1.2.1

Related Table Schema  
Uses inbox + creates serialized_assets OR posts RECEIPT ledger.

Schema Based Business Rules

- SERIALIZED: create N assets RECEIVED at location, update inbox created_qty.
- QUANTITY: ledger RECEIPT.
- Idempotent via inbox unique key.
- Never open Procurement tables.

Task Scope  
AssetReceiptServiceInterface. Apply inbox line. Tests for both tracking modes and duplicate key.

Estimate Hours  
8.00  
Status  
Todo  
QA Status  
-  
QA Comment  
-

---

Project  
ERPFlow  
Module  
Asset Management  
Type  
Feature  
Title  
Manual Receipt — Backend + Frontend  
Branch Name  
feature-asset-manual-receipt  
View Order  
30  
Description

Task Serial  
AST-1.3.7 — Manual Receipt — Backend + Frontend

User Story  
As a custodian, I want to manually receive items into Asset/Inventory because Procurement/GRN does not exist yet.

Depends On  
AST-1.3.6

Related Table Schema  
Creates inbox rows source_type=manual then applies via AssetReceiptService.

Schema Based Business Rules

- Permission asset.items.manage (or dedicated receive permission if added).
- Must specify item, location, qty.

Task Scope  
API + UI form. Show resulting asset codes or new balance.

Estimate Hours  
6.00  
Status  
Todo  
QA Status  
-  
QA Comment  
-

---

Project  
ERPFlow  
Module  
Asset Management  
Type  
Feature  
Title  
Stock by Location — Frontend  
Branch Name  
feature-asset-stock-by-location-frontend  
View Order  
31  
Description

Task Serial  
AST-1.3.8 — Stock by Location — Frontend

User Story  
As inventory, I want to see on-hand quantity by item and location.

Depends On  
AST-1.3.2, AST-1.1.2

Related Table Schema  
Reads inventory_balances (+ item/location names).

Schema Based Business Rules

- asset.inventory.view required.
- Paginated.

Task Scope  
List/filter UI + API if list endpoint missing from 1.3.2.

Estimate Hours  
4.00  
Status  
Todo  
QA Status  
-  
QA Comment  
-

---

Project  
ERPFlow  
Module  
Asset Management  
Type  
QA  
Title  
Phase 3 Tests (Concurrency) + STOP  
Branch Name  
test-asset-phase3-stop  
View Order  
32  
Description

Task Serial  
AST-1.3.9 — Phase 3 Tests (Concurrency) + STOP

User Story  
As a tech lead, I want concurrency-safe stock proven before assignment/verification.

Depends On  
AST-1.3.5, AST-1.3.7, AST-1.3.8

STOP Gate  
Confirm negative stock policy and informational unit cost.

Related Table Schema  
Phase 3 tables.

Schema Based Business Rules

- Negative stock hard-blocked confirmed.
- Unit cost informational only.

Task Scope  
Concurrency tests (parallel receipts/transfers). Sign STOP.

Estimate Hours  
5.00  
Status  
Todo  
QA Status  
-  
QA Comment  
-

---

Project  
ERPFlow  
Module  
Asset Management  
Type  
Spike  
Title  
Legacy Asset Data Analysis  
Branch Name  
spike-asset-legacy-analysis  
View Order  
33  
Description

Task Serial  
AST-1.4.1 — Legacy Asset Data Analysis

User Story  
As a tech lead, I want a report of existing assets/employee_assets so the bridge cannot surprise us.

Depends On  
AST-1.0.2 (legacy decision), AST-1.2.9

Related Table Schema  
Read-only: Employee `assets`, `employee_assets`.

Schema Based Business Rules

- Do not modify legacy tables in this card.
- Count open assignments, duplicate codes, orphan rows.

Task Scope  
SQL/script + short findings doc. Input to bridge.

Estimate Hours  
3.00  
Status  
Todo  
QA Status  
-  
QA Comment  
-

---

Project  
ERPFlow  
Module  
Asset Management  
Type  
Feature  
Title  
Legacy Bridge Migration (One-way Copy)  
Branch Name  
feature-asset-legacy-bridge-migration  
View Order  
34  
Description

Task Serial  
AST-1.4.2 — Legacy Bridge Migration (One-way Copy)

User Story  
As a tech lead, I want legacy assets copied into serialized_assets once so the new module becomes source of truth without dual registers.

Depends On  
AST-1.4.1, AST-1.2.1

Related Table Schema  
Writes `serialized_assets` (legacy_asset_id set). Optionally adds employee_assets.serialized_asset_id nullable FK.
Match on (company_id, code). Collision = fail batch.

Schema Based Business Rules

- One-way copy. Do not delete legacy rows.
- Collision fails the batch.
- Requires approved item mapping strategy (document: synthetic category/item per company or mapped sheet).

Task Scope  
Artisan command + dry-run. Tests with fixtures. Leave old rows in place.

Estimate Hours  
8.00  
Status  
Todo  
QA Status  
-  
QA Comment  
-

---

Project  
ERPFlow  
Module  
Asset Management  
Type  
Feature  
Title  
Freeze Old Writer / Repoint Employee AssetTab  
Branch Name  
feature-asset-freeze-legacy-writer  
View Order  
35  
Description

Task Serial  
AST-1.4.3 — Freeze Old Writer / Repoint Employee AssetTab

User Story  
As HR/IT, I want the Employee Asset tab to stop creating legacy assets and use the new module so dual assignment cannot happen.

Depends On  
AST-1.4.2, AST-1.4.4

Notes  
Ship in the same release train as AST-1.4.4.

Related Table Schema  
May read serialized_assets via port; freeze EmployeeAssetService writes.

Schema Based Business Rules

- Same release as new assignment API.
- No dual writers.
- Old assign button must not create Employee assets rows.

Task Scope  
Feature-flag or hard switch: EmployeeAssetService create paths disabled; AssetTab calls Asset APIs or thin proxy. Update permissions docs.

Estimate Hours  
6.00  
Status  
Todo  
QA Status  
-  
QA Comment  
-

---

Project  
ERPFlow  
Module  
Asset Management  
Type  
Feature  
Title  
Asset Assignments — Backend  
Branch Name  
feature-asset-assignments-backend  
View Order  
36  
Description

Task Serial  
AST-1.4.4 — Asset Assignments — Backend

User Story  
As a custodian, I want to assign a serialized asset to an employee or department with history preserved.

Depends On  
AST-1.2.9, AST-1.0.2 (legacy+proxy decisions)

Related Table Schema  
Table: `serialized_asset_assignments`
holder_type employee|department; exactly one of employee_id/department_id; location_id; assigned_at/returned_at; conditions; handover_id.

Schema Based Business Rules

- Lock serialized_assets row.
- Only one open assignment (returned_at null).
- Asset must be AVAILABLE (or allowed status).
- On assign → status ASSIGNED.
- Department is custody, not location.

Task Scope  
Assign/return services + APIs. Permission asset.assets.assign. Tests for double assign.

Estimate Hours  
8.00  
Status  
Todo  
QA Status  
-  
QA Comment  
-

---

Project  
ERPFlow  
Module  
Asset Management  
Type  
Feature  
Title  
Asset Handover Acknowledge/Reject/Proxy — Backend  
Branch Name  
feature-asset-handover-backend  
View Order  
37  
Description

Task Serial  
AST-1.4.5 — Asset Handover Acknowledge/Reject/Proxy — Backend

User Story  
As an employee, I want to acknowledge receipt of an asset so custody is evidenced; as custodian I need proxy when the employee has no login.

Depends On  
AST-1.4.4

Related Table Schema  
Table: `asset_handovers`
direction issue|return; status pending|acknowledged|rejected; condition; issued_by; received_by; acknowledged_at; optional file_path/original_name.

Schema Based Business Rules

- Employee issue requires handover.
- Reject leaves asset ASSIGNED and handover rejected.
- Evidence rows not silently rewritten.
- Proxy acknowledge only with asset.handover.acknowledge and policy from Section N.
- No e-sign vendor.

Task Scope  
Handover APIs: create issue/return, acknowledge, reject, optional attachment. Tests.

Estimate Hours  
8.00  
Status  
Todo  
QA Status  
-  
QA Comment  
-

---

Project  
ERPFlow  
Module  
Asset Management  
Type  
Feature  
Title  
EmployeeDirectoryPort + EmployeeTimelinePort  
Branch Name  
feature-asset-employee-ports  
View Order  
38  
Description

Task Serial  
AST-1.4.6 — EmployeeDirectoryPort + EmployeeTimelinePort

User Story  
As the Asset module, I want ports to Employee so I never import Employee repositories directly.

Depends On  
AST-1.4.4

Related Table Schema  
No new Asset tables. Reads employee_personal_infos / employment; writes timeline via Employee service/port.

Schema Based Business Rules

- Mirror Commissioning context-port pattern (interface + real adapter).
- Timeline events asset_assigned / asset_returned with reference_type.
- Exit report reads employment status; does not auto-close assignments.

Task Scope  
Integration contracts under Modules/Asset/Integration. Bind in provider. Unit tests with fake.

Estimate Hours  
5.00  
Status  
Todo  
QA Status  
-  
QA Comment  
-

---

Project  
ERPFlow  
Module  
Asset Management  
Type  
Feature  
Title  
Employee Exit Outstanding Assets Report — Backend  
Branch Name  
feature-asset-exit-outstanding-report  
View Order  
39  
Description

Task Serial  
AST-1.4.7 — Employee Exit Outstanding Assets Report — Backend

User Story  
As HR, I want a list of outstanding assets for resigned/terminated employees so returns can be chased.

Depends On  
AST-1.4.4, AST-1.4.6

Related Table Schema  
Reads assignments where returned_at IS NULL joined to employment status.

Schema Based Business Rules

- Report only — no auto return.
- Include resigned and terminated.

Task Scope  
API + Resource. Permission assets.view or report permission.

Estimate Hours  
3.00  
Status  
Todo  
QA Status  
-  
QA Comment  
-

---

Project  
ERPFlow  
Module  
Asset Management  
Type  
Feature  
Title  
Employee Self Assets & Handovers — Backend  
Branch Name  
feature-asset-employee-self-view-backend  
View Order  
40  
Description

Task Serial  
AST-1.4.8 — Employee Self Assets & Handovers — Backend

User Story  
As an employee, I want to see my assigned assets and pending handovers.

Depends On  
AST-1.4.5

Related Table Schema  
Filters assignments/handovers by authenticated employee.

Schema Based Business Rules

- Own rows only unless elevated permission.
- Hide cost fields.

Task Scope  
Self endpoints. Tests IDOR.

Estimate Hours  
3.00  
Status  
Todo  
QA Status  
-  
QA Comment  
-

---

Project  
ERPFlow  
Module  
Asset Management  
Type  
Feature  
Title  
Assign / Return / Acknowledge — Frontend  
Branch Name  
feature-asset-assignment-frontend  
View Order  
41  
Description

Task Serial  
AST-1.4.9 — Assign / Return / Acknowledge — Frontend

User Story  
As a custodian and employee, I want UI to assign, return, and acknowledge assets.

Depends On  
AST-1.4.3, AST-1.4.5, AST-1.4.7, AST-1.4.8

Related Table Schema  
Consumes 1.4 APIs. Employee AssetTab repointed per 1.4.3.

Schema Based Business Rules

- Permission gating.
- Show pending handover actions to employee.

Task Scope  
Assign/return flows, handover acknowledge/reject UI, exit outstanding list screen.

Estimate Hours  
8.00  
Status  
Todo  
QA Status  
-  
QA Comment  
-

---

Project  
ERPFlow  
Module  
Asset Management  
Type  
QA  
Title  
Phase 4 Tests + STOP (Real Employee Check)  
Branch Name  
test-asset-phase4-stop  
View Order  
42  
Description

Task Serial  
AST-1.4.10 — Phase 4 Tests + STOP (Real Employee Check)

User Story  
As a tech lead, I want one real employee’s legacy assignments appearing once and no dual writer.

Depends On  
AST-1.4.9

STOP Gate  
Real employee data check passed.

Related Table Schema  
Assignments + handovers + legacy bridge.

Schema Based Business Rules

- Old assign cannot create second register.
- Open assignments still listed after resign status.

Task Scope  
Manual UAT on real/staging data + automated tests. Sign STOP.

Estimate Hours  
5.00  
Status  
Todo  
QA Status  
-  
QA Comment  
-

---

Project  
ERPFlow  
Module  
Asset Management  
Type  
Feature  
Title  
Verification Sessions — Backend  
Branch Name  
feature-asset-verification-sessions-backend  
View Order  
43  
Description

Task Serial  
AST-1.5.1 — Verification Sessions — Backend

User Story  
As an auditor, I want verification sessions that snapshot the expected set at start so later movements do not rewrite expectations.

Depends On  
AST-1.3.9

Related Table Schema  
Table: `verification_sessions`
mode serialized|quantity|mixed; status draft|in_progress|completed|reviewed|cancelled; location_id/category_id optional.

Schema Based Business Rules

- Snapshot expected set when session starts.
- Completing does not change stock.
- Quantity-only sessions allowed without Phase 4.

Task Scope  
Create/start/cancel session APIs. Snapshot builder for serialized and/or balances.

Estimate Hours  
6.00  
Status  
Todo  
QA Status  
-  
QA Comment  
-

---

Project  
ERPFlow  
Module  
Asset Management  
Type  
Feature  
Title  
Verification Lines + Results — Backend  
Branch Name  
feature-asset-verification-lines-backend  
View Order  
44  
Description

Task Serial  
AST-1.5.2 — Verification Lines + Results — Backend

User Story  
As an auditor, I want lines that record found/missing/extra/wrong location/holder/damaged results.

Depends On  
AST-1.5.1

Related Table Schema  
Table: `verification_lines`
line_type serialized|quantity; result pending|found|missing|extra|wrong_location|wrong_holder|damaged; expected_qty/counted_qty.

Schema Based Business Rules

- Unknown scan → extra line.
- Wrong location/holder are results, not silent moves.
- Unique constraints per schema.

Task Scope  
Line update APIs. Tests for each result type.

Estimate Hours  
6.00  
Status  
Todo  
QA Status  
-  
QA Comment  
-

---

Project  
ERPFlow  
Module  
Asset Management  
Type  
Feature  
Title  
Scan-to-Verify Flow — Backend  
Branch Name  
feature-asset-scan-to-verify-backend  
View Order  
45  
Description

Task Serial  
AST-1.5.3 — Scan-to-Verify Flow — Backend

User Story  
As an auditor, I want to scan a QR inside an open session to mark an asset found.

Depends On  
AST-1.5.2, AST-1.2.7

Related Table Schema  
Uses tags + verification_lines.

Schema Based Business Rules

- Only in_progress sessions.
- Permission verification.perform.
- Does not change asset location.

Task Scope  
Scan endpoint bound to session_id. Tests.

Estimate Hours  
4.00  
Status  
Todo  
QA Status  
-  
QA Comment  
-

---

Project  
ERPFlow  
Module  
Asset Management  
Type  
Feature  
Title  
Quantity Stock Count + Variance — Backend  
Branch Name  
feature-asset-stock-count-backend  
View Order  
46  
Description

Task Serial  
AST-1.5.4 — Quantity Stock Count + Variance — Backend

User Story  
As an auditor, I want to enter physical counts and see variance without changing the balance.

Depends On  
AST-1.5.2

Related Table Schema  
Quantity verification_lines expected vs counted.

Schema Based Business Rules

- variance = counted - expected stored/derived on line.
- Balance unchanged.

Task Scope  
Count entry API. Tests proving balances untouched.

Estimate Hours  
4.00  
Status  
Todo  
QA Status  
-  
QA Comment  
-

---

Project  
ERPFlow  
Module  
Asset Management  
Type  
Feature  
Title  
Verification Complete & Review (Draft Adjustments Only)  
Branch Name  
feature-asset-verification-review-backend  
View Order  
47  
Description

Task Serial  
AST-1.5.5 — Verification Complete & Review (Draft Adjustments Only)

User Story  
As a reviewer, I want to complete a session and create draft inventory adjustments without posting stock.

Depends On  
AST-1.5.3, AST-1.5.4

Notes  
If inventory_adjustments migration is owned by 1.6.4, keep drafts as session review payload until that migration lands — do not post.

Related Table Schema  
May create `inventory_adjustments` status=draft linked to session (table delivered in Phase 6 — if not yet migrated, create draft DTO only OR deliver inventory_adjustments draft columns early with posting disabled).

Schema Based Business Rules

- Pending lines become missing only on explicit complete.
- Draft adjustments must not post ledger.
- Posting is AST-1.6.4 only.

Task Scope  
Complete + review APIs. Create draft adjustment headers/lines without gateway submit. Document handoff to 1.6.4.

Estimate Hours  
5.00  
Status  
Todo  
QA Status  
-  
QA Comment  
-

---

Project  
ERPFlow  
Module  
Asset Management  
Type  
Feature  
Title  
Verification Session / Scan / Count — Frontend  
Branch Name  
feature-asset-verification-frontend  
View Order  
48  
Description

Task Serial  
AST-1.5.6 — Verification Session / Scan / Count — Frontend

User Story  
As an auditor, I want UI to run a verification session with scan and quantity count.

Depends On  
AST-1.5.5

Related Table Schema  
Consumes 1.5 APIs.

Schema Based Business Rules

- Show session start time (snapshot contract).
- Emphasize that complete does not change stock.

Task Scope  
Session list, start wizard, scan UI, quantity count UI, review screen.

Estimate Hours  
8.00  
Status  
Todo  
QA Status  
-  
QA Comment  
-

---

Project  
ERPFlow  
Module  
Asset Management  
Type  
QA  
Title  
Phase 5 Tests + STOP  
Branch Name  
test-asset-phase5-stop  
View Order  
49  
Description

Task Serial  
AST-1.5.7 — Phase 5 Tests + STOP

User Story  
As a tech lead, I want one scan session and one chair count demo with balances unchanged.

Depends On  
AST-1.5.6

STOP Gate  
One scan session + one chair count accepted.

Related Table Schema  
Verification tables.

Schema Based Business Rules

- Balances unchanged after complete.

Task Scope  
UAT + tests. Sign STOP.

Estimate Hours  
4.00  
Status  
Todo  
QA Status  
-  
QA Comment  
-

---

Project  
ERPFlow  
Module  
Asset Management  
Type  
Feature  
Title  
Asset Transfer Document + Approval Executor  
Branch Name  
feature-asset-transfer-approval  
View Order  
50  
Description

Task Serial  
AST-1.6.1 — Asset Transfer Document + Approval Executor

User Story  
As a custodian, I want asset transfers to go through ERPFlow approval before location/holder changes.

Depends On  
AST-1.5.7, AST-1.4.10

Related Table Schema  
Table: `asset_transfers` + platform approval_requests.

Schema Based Business Rules

- Use ApprovalGateway; if approval off, onApproved runs immediately.
- Executor re-checks state under lock; stale payload fails.
- Pending blocks second transfer.
- Prefer existing approver resolver — do not invent.

Task Scope  
Transfer document CRUD, submit via gateway, TransferExecutor execute/reject, register executor. Tests on/off/reject/stale.

Estimate Hours  
8.00  
Status  
Todo  
QA Status  
-  
QA Comment  
-

---

Project  
ERPFlow  
Module  
Asset Management  
Type  
Feature  
Title  
Asset Disposal Document + Approval Executor  
Branch Name  
feature-asset-disposal-approval  
View Order  
51  
Description

Task Serial  
AST-1.6.2 — Asset Disposal Document + Approval Executor

User Story  
As an asset manager, I want disposal requests approved before an asset becomes DISPOSED.

Depends On  
AST-1.2.2, AST-1.6.5

Notes  
Can develop in parallel with 1.6.5; merge order: 1.6.5 first or same PR.

Related Table Schema  
Table: `asset_disposals`.

Schema Based Business Rules

- Open assignment must be returned first.
- Terminal DISPOSED; double dispose fails.
- Writes finance outbox when AST-1.6.5 exists.

Task Scope  
Disposal document + DisposalExecutor. Tests.

Estimate Hours  
6.00  
Status  
Todo  
QA Status  
-  
QA Comment  
-

---

Project  
ERPFlow  
Module  
Asset Management  
Type  
Feature  
Title  
Asset Write-off Document + Approval Executor  
Branch Name  
feature-asset-writeoff-approval  
View Order  
52  
Description

Task Serial  
AST-1.6.3 — Asset Write-off Document + Approval Executor

User Story  
As an asset manager, I want write-offs approved before WRITTEN_OFF status and finance outbox entry.

Depends On  
AST-1.6.5

Related Table Schema  
Table: `asset_write_offs` (amount, cost_center_id).

Schema Based Business Rules

- Terminal WRITTEN_OFF.
- Double write-off fails.
- Amount frozen onto finance event.

Task Scope  
WriteOff document + executor. Tests.

Estimate Hours  
6.00  
Status  
Todo  
QA Status  
-  
QA Comment  
-

---

Project  
ERPFlow  
Module  
Asset Management  
Type  
Feature  
Title  
Inventory Adjustment Document + Approval Executor  
Branch Name  
feature-asset-inventory-adjustment-approval  
View Order  
53  
Description

Task Serial  
AST-1.6.4 — Inventory Adjustment Document + Approval Executor

User Story  
As inventory, I want stock adjustments approved (when enabled) and posted only as ledger ADJUSTMENT rows.

Depends On  
AST-1.5.5, AST-1.3.4

Related Table Schema  
Tables: `inventory_adjustments`, `inventory_adjustment_lines`.

Schema Based Business Rules

- Reject → no ledger change.
- Post → ADJUSTMENT ledger via ledger service under lock.
- Links optional verification_session_id.
- Company may leave approval off (immediate post).

Task Scope  
Adjustment APIs from draft (Phase 5) through gateway to posted. AdjustmentExecutor. Tests reject/post/negative.

Estimate Hours  
8.00  
Status  
Todo  
QA Status  
-  
QA Comment  
-

---

Project  
ERPFlow  
Module  
Asset Management  
Type  
Feature  
Title  
Asset Finance Events Outbox — Backend  
Branch Name  
feature-asset-finance-events-outbox  
View Order  
54  
Description

Task Serial  
AST-1.6.5 — Asset Finance Events Outbox — Backend

User Story  
As Finance (future), I want an outbox of acquisition/disposal/write_off intents without journals in Asset.

Depends On  
AST-SCHEMA-1, AST-1.2.1

Related Table Schema  
Table: `asset_finance_events`
event acquisition|disposal|write_off; amount; currency; status pending|accepted|void
Unique (company_id, event, reference_type, reference_id).

Schema Based Business Rules

- No GL columns.
- One event per source document.
- Asset status + outbox commit together in executor transaction.

Task Scope  
Migration + writer service used by disposal/write-off/receipt. No journal posting.

Estimate Hours  
4.00  
Status  
Todo  
QA Status  
-  
QA Comment  
-

---

Project  
ERPFlow  
Module  
Asset Management  
Type  
Feature  
Title  
Approval Module Actions + Executor Registration  
Branch Name  
feature-asset-approval-registration  
View Order  
55  
Description

Task Serial  
AST-1.6.6 — Approval Module Actions + Executor Registration

User Story  
As an admin, I want Asset transfer/dispose/write-off/adjust-stock actions wired to the approval platform.

Depends On  
AST-1.6.1, AST-1.6.2, AST-1.6.3, AST-1.6.4

Related Table Schema  
Platform approval_settings / module_actions.

Schema Based Business Rules

- Register executors via Platform::registerApprovalExecutor.
- Seed settings with approval_enabled=false by default.

Task Scope  
actions.php entries, provider registration, sync. Document how to attach workflows.

Estimate Hours  
3.00  
Status  
Todo  
QA Status  
-  
QA Comment  
-

---

Project  
ERPFlow  
Module  
Asset Management  
Type  
Feature  
Title  
Asset Approval Requests — Frontend  
Branch Name  
feature-asset-approval-frontend  
View Order  
56  
Description

Task Serial  
AST-1.6.7 — Asset Approval Requests — Frontend

User Story  
As a custodian, I want screens to request transfer/disposal/write-off/adjustment; as approver I use existing platform inbox.

Depends On  
AST-1.6.6

Related Table Schema  
Consumes document APIs; approvals via existing platform UI.

Schema Based Business Rules

- Do not rebuild approval inbox.
- Show pending/rejected/completed states on documents.

Task Scope  
Request forms + document status pages. Deep-link to platform approval where applicable.

Estimate Hours  
6.00  
Status  
Todo  
QA Status  
-  
QA Comment  
-

---

Project  
ERPFlow  
Module  
Asset Management  
Type  
QA  
Title  
Phase 6 Tests + STOP  
Branch Name  
test-asset-phase6-stop  
View Order  
57  
Description

Task Serial  
AST-1.6.8 — Phase 6 Tests + STOP

User Story  
As a tech lead, I want approval on/off, reject, stale, and double-dispose covered.

Depends On  
AST-1.6.7

STOP Gate  
Approver resolution confirmed; demos done.

Related Table Schema  
Phase 6 documents + outbox.

Schema Based Business Rules

- Approver resolver must be an existing one.

Task Scope  
Automated tests + demo approved transfer and rejected adjustment. Sign STOP.

Estimate Hours  
5.00  
Status  
Todo  
QA Status  
-  
QA Comment  
-

---

Project  
ERPFlow  
Module  
Asset Management  
Type  
Feature  
Title  
Asset Service Providers — Backend  
Branch Name  
feature-asset-service-providers-backend  
View Order  
58  
Description

Task Serial  
AST-1.7.1 — Asset Service Providers — Backend

User Story  
As an asset manager, I want a minimal temporary provider list for warranties/AMC until a real vendor master exists.

Depends On  
AST-1.0.2 (provider decision), AST-1.2.9

Related Table Schema  
Table: `asset_service_providers` (name, code, phone, email, status). Unique (company_id, code).

Schema Based Business Rules

- Not a global vendor master.
- Do not use onboarding user_type vendor.
- Minimal columns only.

Task Scope  
CRUD API. Permission contracts.manage.

Estimate Hours  
3.00  
Status  
Todo  
QA Status  
-  
QA Comment  
-

---

Project  
ERPFlow  
Module  
Asset Management  
Type  
Feature  
Title  
Asset Warranties — Backend  
Branch Name  
feature-asset-warranties-backend  
View Order  
59  
Description

Task Serial  
AST-1.7.2 — Asset Warranties — Backend

User Story  
As a custodian, I want warranty records with dates, provider, coverage, and optional file.

Depends On  
AST-1.7.1

Related Table Schema  
Table: `asset_warranties`. Index (company_id, ends_on).

Schema Based Business Rules

- ends_on >= starts_on.
- Overlapping policy per Section N.
- File optional.

Task Scope  
CRUD + file upload. Tests dates.

Estimate Hours  
5.00  
Status  
Todo  
QA Status  
-  
QA Comment  
-

---

Project  
ERPFlow  
Module  
Asset Management  
Type  
Feature  
Title  
AMC Service Contracts + Covered Assets — Backend  
Branch Name  
feature-asset-service-contracts-backend  
View Order  
60  
Description

Task Serial  
AST-1.7.3 — AMC Service Contracts + Covered Assets — Backend

User Story  
As an asset manager, I want AMC/service contracts covering many assets without using Project contracts.

Depends On  
AST-1.7.1, AST-1.2.1

Related Table Schema  
Tables: `asset_service_contracts`, `asset_service_contract_assets`. Unique contract_no per company.

Schema Based Business Rules

- Do not reuse Project `contracts`.
- Link only serialized assets same company.

Task Scope  
Contract CRUD + attach/detach assets. Tests.

Estimate Hours  
6.00  
Status  
Todo  
QA Status  
-  
QA Comment  
-

---

Project  
ERPFlow  
Module  
Asset Management  
Type  
Feature  
Title  
Service Contract Files — Backend  
Branch Name  
feature-asset-service-contract-files-backend  
View Order  
61  
Description

Task Serial  
AST-1.7.4 — Service Contract Files — Backend

User Story  
As an asset manager, I want to attach documents to an AMC contract.

Depends On  
AST-1.7.3

Related Table Schema  
Table: `asset_service_contract_files` (contract_attachments shape).

Schema Based Business Rules

- Company scoped.
- Store on configured disk.

Task Scope  
Upload/list/delete file APIs.

Estimate Hours  
3.00  
Status  
Todo  
QA Status  
-  
QA Comment  
-

---

Project  
ERPFlow  
Module  
Asset Management  
Type  
Feature  
Title  
Warranty & AMC on Asset — Frontend  
Branch Name  
feature-asset-warranty-amc-frontend  
View Order  
62  
Description

Task Serial  
AST-1.7.5 — Warranty & AMC on Asset — Frontend

User Story  
As a custodian, I want warranty and AMC visible on the asset detail page.

Depends On  
AST-1.7.2, AST-1.7.3, AST-1.7.4

Related Table Schema  
Consumes 1.7 APIs.

Schema Based Business Rules

- Employees may view warranty on assets they hold.
- No expiry notifications in V1.

Task Scope  
UI sections on asset detail + provider/contract admin screens.

Estimate Hours  
5.00  
Status  
Todo  
QA Status  
-  
QA Comment  
-

---

Project  
ERPFlow  
Module  
Asset Management  
Type  
QA  
Title  
Phase 7 Tests + STOP  
Branch Name  
test-asset-phase7-stop  
View Order  
63  
Description

Task Serial  
AST-1.7.6 — Phase 7 Tests + STOP

User Story  
As a tech lead, I want overlapping warranty policy confirmed and contracts working.

Depends On  
AST-1.7.5

STOP Gate  
Overlapping coverage policy confirmed.

Related Table Schema  
Phase 7 tables.

Schema Based Business Rules

- Provider remains temporary.

Task Scope  
Tests + STOP sign-off.

Estimate Hours  
3.00  
Status  
Todo  
QA Status  
-  
QA Comment  
-

---

Project  
ERPFlow  
Module  
Asset Management  
Type  
Spike  
Title  
Opening Balance Import Template Design  
Branch Name  
docs-asset-import-template  
View Order  
64  
Description

Task Serial  
AST-1.8.1 — Opening Balance Import Template Design

User Story  
As an implementer, I want signed column templates for serialized, quantity, and optional warranty sheets.

Depends On  
AST-1.3.9, AST-1.6.5

STOP Gate  
Template sign-off (also AST-1.8.8).

Related Table Schema  
No tables. Defines spreadsheet columns mapping to schema.

Schema Based Business Rules

- Reject-on-duplicate codes.
- No update-in-place.
- Confirm required.

Task Scope  
Publish template xlsx + column dictionary. Human sign-off before production use.

Estimate Hours  
3.00  
Status  
Todo  
QA Status  
-  
QA Comment  
-

---

Project  
ERPFlow  
Module  
Asset Management  
Type  
Feature  
Title  
Import Upload + Staging — Backend  
Branch Name  
feature-asset-import-staging-backend  
View Order  
65  
Description

Task Serial  
AST-1.8.2 — Import Upload + Staging — Backend

User Story  
As an asset manager, I want to upload an opening file into staging batches/rows before anything is created.

Depends On  
AST-1.8.1

Related Table Schema  
Tables: `asset_import_batches`, `asset_import_rows`.

Schema Based Business Rules

- Upload does not create assets/stock.
- Store file; stage JSON payload per row.

Task Scope  
Upload API, batch/row models, Maatwebsite read. Permission import.confirm for later confirm only — upload may use manage.

Estimate Hours  
6.00  
Status  
Todo  
QA Status  
-  
QA Comment  
-

---

Project  
ERPFlow  
Module  
Asset Management  
Type  
Feature  
Title  
Import Validation + Error Report — Backend  
Branch Name  
feature-asset-import-validation-backend  
View Order  
66  
Description

Task Serial  
AST-1.8.3 — Import Validation + Error Report — Backend

User Story  
As an asset manager, I want validation and an error report file so bad rows are fixed before confirm.

Depends On  
AST-1.8.2

Related Table Schema  
Updates asset_import_rows.result valid|invalid + errors JSON; batch error_report_path.

Schema Based Business Rules

- Unknown location/employee/item → invalid.
- Duplicate asset code → invalid.
- Required attributes enforced.

Task Scope  
Validate action + Excel error export. Tests.

Estimate Hours  
6.00  
Status  
Todo  
QA Status  
-  
QA Comment  
-

---

Project  
ERPFlow  
Module  
Asset Management  
Type  
Feature  
Title  
Import Confirm (All / Valid-only) + Queue — Backend  
Branch Name  
feature-asset-import-confirm-backend  
View Order  
67  
Description

Task Serial  
AST-1.8.4 — Import Confirm (All / Valid-only) + Queue — Backend

User Story  
As an asset manager, I want an explicit confirm that creates assets/stock via AssetReceiptService without double posting.

Depends On  
AST-1.8.3, AST-1.3.6

Related Table Schema  
Confirm stamps rows created; uses receipt inbox source_type=opening_batch.

Schema Based Business Rules

- Confirm explicit.
- valid-only mode skips invalid.
- Re-confirm idempotent.
- No update of existing codes.
- Large files via queued job.

Task Scope  
Confirm API + job. Wire AssetReceiptService. Tests re-confirm and duplicate rejection.

Estimate Hours  
8.00  
Status  
Todo  
QA Status  
-  
QA Comment  
-

---

Project  
ERPFlow  
Module  
Asset Management  
Type  
Feature  
Title  
Acquisition Finance Events on Import Confirm  
Branch Name  
feature-asset-import-acquisition-events  
View Order  
68  
Description

Task Serial  
AST-1.8.5 — Acquisition Finance Events on Import Confirm

User Story  
As Finance, I want acquisition outbox events created when opening assets with cost are confirmed.

Depends On  
AST-1.8.4, AST-1.6.5

Related Table Schema  
Writes asset_finance_events event=acquisition.

Schema Based Business Rules

- Same unique key — no double fire on re-confirm.
- Amount frozen at confirm.

Task Scope  
Hook in confirm path. Tests.

Estimate Hours  
3.00  
Status  
Todo  
QA Status  
-  
QA Comment  
-

---

Project  
ERPFlow  
Module  
Asset Management  
Type  
Feature  
Title  
Import Reversal Script (Guarded)  
Branch Name  
feature-asset-import-reversal  
View Order  
69  
Description

Task Serial  
AST-1.8.6 — Import Reversal Script (Guarded)

User Story  
As a tech lead, I want a guarded reversal for a bad opening import that has not been assigned further.

Depends On  
AST-1.8.4

Related Table Schema  
Uses created_entity references on import rows; reversing ledger quantities.

Schema Based Business Rules

- Refuse if any created asset has been assigned/disposed.
- Do not hard-delete if downstream exists.
- Explicit --force flags documented.

Task Scope  
Artisan command + safety checks + tests.

Estimate Hours  
4.00  
Status  
Todo  
QA Status  
-  
QA Comment  
-

---

Project  
ERPFlow  
Module  
Asset Management  
Type  
Spike  
Title  
Opening Import Dry-run on Data Copy  
Branch Name  
ops-asset-import-dryrun  
View Order  
70  
Description

Task Serial  
[AST-1.8.7 — Opening Import Dry-run on Data Copy](./OPENING_BALANCE_IMPORT_DRY_RUN_SPIKE.md)

User Story  
As a release owner, I want a dry-run on a copy of real data before production import.

Depends On  
AST-1.8.3

Related Table Schema  
Uses staging only / disposable DB copy.

Schema Based Business Rules

- No production confirm until dry-run notes attached.

Task Scope  
Run validate on anonymized/copy data; attach results to STOP.

Estimate Hours  
4.00  
Status  
Todo  
QA Status  
-  
QA Comment  
-

---

Project  
ERPFlow  
Module  
Asset Management  
Type  
QA  
Title  
Phase 8 Tests + STOP (Template Sign-off)  
Branch Name  
test-asset-phase8-stop  
View Order  
71  
Description

Task Serial  
AST-1.8.8 — Phase 8 Tests + STOP (Template Sign-off)

User Story  
As a tech lead, I want template signed and confirm path proven once.

Depends On  
AST-1.8.5, AST-1.8.7

STOP Gate  
Template columns signed before any production file.

Related Table Schema  
Import tables.

Schema Based Business Rules

- Fixture file previews errors and confirms clean file once.

Task Scope  
Tests + template sign-off. Sign STOP.

Estimate Hours  
4.00  
Status  
Todo  
QA Status  
-  
QA Comment  
-

---

Project  
ERPFlow  
Module  
Asset Management  
Type  
Feature  
Title  
Asset Service Events Thin Log — Backend  
Branch Name  
feature-asset-service-events-backend  
View Order  
72  
Description

Task Serial  
AST-1.9.1 — Asset Service Events Thin Log — Backend

User Story  
As a custodian, I want a thin maintenance history on an asset without building a CMMS.

Depends On  
AST-1.7.6

Related Table Schema  
Table: `asset_service_events`.

Schema Based Business Rules

- Reject on DISPOSED/WRITTEN_OFF.
- Optional contract/warranty links.
- No technicians/schedules/meters.

Task Scope  
CRUD append-only style create/list. Tests.

Estimate Hours  
4.00  
Status  
Todo  
QA Status  
-  
QA Comment  
-

---

Project  
ERPFlow  
Module  
Asset Management  
Type  
Feature  
Title  
UNDER_MAINTENANCE Status Transitions — Backend  
Branch Name  
feature-asset-under-maintenance-status  
View Order  
73  
Description

Task Serial  
AST-1.9.2 — UNDER_MAINTENANCE Status Transitions — Backend

User Story  
As a custodian, I want to mark an asset under maintenance and return it to AVAILABLE/ASSIGNED.

Depends On  
AST-1.2.2, AST-1.9.1

Related Table Schema  
serialized_assets.status transitions.

Schema Based Business Rules

- Only from allowed statuses.
- Does not create work orders.

Task Scope  
Extend status machine. Tests.

Estimate Hours  
2.00  
Status  
Todo  
QA Status  
-  
QA Comment  
-

---

Project  
ERPFlow  
Module  
Asset Management  
Type  
Feature  
Title  
AssetContextPort for Future Maintenance  
Branch Name  
feature-asset-context-port  
View Order  
74  
Description

Task Serial  
AST-1.9.3 — AssetContextPort for Future Maintenance

User Story  
As a future Maintenance module, I want a read port for asset status, warranty, and AMC.

Depends On  
AST-1.9.1, AST-1.7.2, AST-1.7.3

Related Table Schema  
No new tables.

Schema Based Business Rules

- Read-only port.
- Real adapter in Asset module.
- Do not call other modules yet.

Task Scope  
Interface + DTO + RealAssetContext + tests/fake.

Estimate Hours  
3.00  
Status  
Todo  
QA Status  
-  
QA Comment  
-

---

Project  
ERPFlow  
Module  
Asset Management  
Type  
Feature  
Title  
Service History on Asset Page — Frontend  
Branch Name  
feature-asset-service-history-frontend  
View Order  
75  
Description

Task Serial  
AST-1.9.4 — Service History on Asset Page — Frontend

User Story  
As a custodian, I want service history listed on the asset page.

Depends On  
AST-1.9.1, AST-1.9.2

Related Table Schema  
Consumes service events API.

Schema Based Business Rules

- Anti-scope: no CMMS UI.

Task Scope  
History panel + add event form.

Estimate Hours  
3.00  
Status  
Todo  
QA Status  
-  
QA Comment  
-

---

Project  
ERPFlow  
Module  
Asset Management  
Type  
QA  
Title  
Phase 9 Tests + STOP  
Branch Name  
test-asset-phase9-stop  
View Order  
76  
Description

Task Serial  
AST-1.9.5 — Phase 9 Tests + STOP

User Story  
As a tech lead, I want Phase 9 closed without CMMS scope creep.

Depends On  
AST-1.9.4

STOP Gate  
History visible; port returns coverage; anti-scope held.

Related Table Schema  
service_events.

Schema Based Business Rules

- No technicians/schedules/meters shipped.

Task Scope  
Tests + STOP.

Estimate Hours  
2.00  
Status  
Todo  
QA Status  
-  
QA Comment  
-

---

Project  
ERPFlow  
Module  
Asset Management  
Type  
Feature  
Title  
Finance Event Frozen Amount Rule  
Branch Name  
feature-asset-finance-frozen-amount  
View Order  
77  
Description

Task Serial  
AST-1.10.1 — Finance Event Frozen Amount Rule

User Story  
As Finance, I want event amounts frozen at posting time so later asset cost edits do not rewrite history.

Depends On  
AST-1.6.5

Related Table Schema  
asset_finance_events.amount immutable after insert.

Schema Based Business Rules

- No updates to amount.
- Void via status=void only if ever needed.

Task Scope  
Enforce in writer/repository. Tests.

Estimate Hours  
2.00  
Status  
Todo  
QA Status  
-  
QA Comment  
-

---

Project  
ERPFlow  
Module  
Asset Management  
Type  
Feature  
Title  
AssetFinanceEventWriter Wiring  
Branch Name  
feature-asset-finance-event-writer  
View Order  
78  
Description

Task Serial  
AST-1.10.2 — AssetFinanceEventWriter Wiring

User Story  
As the Asset module, I want one writer used by receipt, disposal, and write-off paths.

Depends On  
AST-1.10.1, AST-1.8.5, AST-1.6.2, AST-1.6.3

Related Table Schema  
asset_finance_events.

Schema Based Business Rules

- Called only from those paths.
- Unique key prevents duplicates.

Task Scope  
Consolidate writer interface; ensure all three call sites use it. Tests.

Estimate Hours  
3.00  
Status  
Todo  
QA Status  
-  
QA Comment  
-

---

Project  
ERPFlow  
Module  
Asset Management  
Type  
Feature  
Title  
Pending Finance Events Read API  
Branch Name  
feature-asset-finance-events-read-api  
View Order  
79  
Description

Task Serial  
AST-1.10.3 — Pending Finance Events Read API

User Story  
As a finance reader, I want to list pending finance events without treating them as journals.

Depends On  
AST-1.10.2

Related Table Schema  
Reads asset_finance_events.

Schema Based Business Rules

- Name API finance-events not journals.
- Filter by status.

Task Scope  
List API + Resource. Permission asset.finance.view.

Estimate Hours  
3.00  
Status  
Todo  
QA Status  
-  
QA Comment  
-

---

Project  
ERPFlow  
Module  
Asset Management  
Type  
Feature  
Title  
Cost Field Permission Enforcement  
Branch Name  
feature-asset-finance-view-permission  
View Order  
80  
Description

Task Serial  
AST-1.10.4 — Cost Field Permission Enforcement

User Story  
As security, I want acquisition cost hidden from users without asset.finance.view.

Depends On  
AST-1.1.2, AST-1.2.7, AST-1.10.3

Related Table Schema  
Affects Resources for serialized_assets and reports.

Schema Based Business Rules

- Default hide cost.
- Apply on scan resolve and list/detail.

Task Scope  
Resource transformers + FE gating audit. Tests.

Estimate Hours  
2.00  
Status  
Todo  
QA Status  
-  
QA Comment  
-

---

Project  
ERPFlow  
Module  
Asset Management  
Type  
QA  
Title  
Phase 10 Tests + STOP (Finance Sign-off)  
Branch Name  
test-asset-phase10-stop  
View Order  
81  
Description

Task Serial  
AST-1.10.5 — Phase 10 Tests + STOP (Finance Sign-off)

User Story  
As Finance owner, I confirm outbox is enough and depreciation is out of Asset.

Depends On  
AST-1.10.4

STOP Gate  
Finance confirms outbox sufficient.

Related Table Schema  
finance_events.

Schema Based Business Rules

- No journals created.

Task Scope  
Sign-off note + tests. Sign STOP.

Estimate Hours  
2.00  
Status  
Todo  
QA Status  
-  
QA Comment  
-

---

Project  
ERPFlow  
Module  
Asset Management  
Type  
Feature  
Title  
Asset Register Reports — Backend + Frontend  
Branch Name  
feature-asset-reports-register  
View Order  
82  
Description

Task Serial  
AST-1.11.1 — Asset Register Reports — Backend + Frontend

User Story  
As a manager, I want asset register and by-employee / by-location / assignment history reports.

Depends On  
AST-1.4.10, AST-1.10.4

Related Table Schema  
Read models from serialized_assets, assignments.

Schema Based Business Rules

- Paginated.
- Cost columns need finance.view.

Task Scope  
Report APIs + UI pages.

Estimate Hours  
6.00  
Status  
Todo  
QA Status  
-  
QA Comment  
-

---

Project  
ERPFlow  
Module  
Asset Management  
Type  
Feature  
Title  
Verification Reports — Backend + Frontend  
Branch Name  
feature-asset-reports-verification  
View Order  
83  
Description

Task Serial  
AST-1.11.2 — Verification Reports — Backend + Frontend

User Story  
As an auditor, I want verification results, missing, and wrong-location reports.

Depends On  
AST-1.5.7

Related Table Schema  
verification_sessions/lines.

Schema Based Business Rules

- Reflect snapshot results, not live stock.

Task Scope  
APIs + UI.

Estimate Hours  
4.00  
Status  
Todo  
QA Status  
-  
QA Comment  
-

---

Project  
ERPFlow  
Module  
Asset Management  
Type  
Feature  
Title  
Inventory Reports — Backend + Frontend  
Branch Name  
feature-asset-reports-inventory  
View Order  
84  
Description

Task Serial  
AST-1.11.3 — Inventory Reports — Backend + Frontend

User Story  
As inventory, I want on-hand, movement, variance, and adjustment history reports.

Depends On  
AST-1.6.4, AST-1.3.9

Related Table Schema  
balances, transactions, adjustments.

Schema Based Business Rules

- Movement from ledger only.

Task Scope  
APIs + UI.

Estimate Hours  
5.00  
Status  
Todo  
QA Status  
-  
QA Comment  
-

---

Project  
ERPFlow  
Module  
Asset Management  
Type  
Feature  
Title  
Warranty/AMC Expiry + Acquisition Cost Lists  
Branch Name  
feature-asset-reports-expiry-cost  
View Order  
85  
Description

Task Serial  
AST-1.11.4 — Warranty/AMC Expiry + Acquisition Cost Lists

User Story  
As a manager, I want expiry lists and acquisition cost list as queries, not notifications.

Depends On  
AST-1.7.6, AST-1.10.4

Related Table Schema  
warranties, contracts, finance/cost fields.

Schema Based Business Rules

- No notification jobs.
- No NBV/depreciation report.

Task Scope  
APIs + UI.

Estimate Hours  
4.00  
Status  
Todo  
QA Status  
-  
QA Comment  
-

---

Project  
ERPFlow  
Module  
Asset Management  
Type  
Feature  
Title  
Streaming Export for Asset Reports  
Branch Name  
feature-asset-reports-export  
View Order  
86  
Description

Task Serial  
AST-1.11.5 — Streaming Export for Asset Reports

User Story  
As a manager, I want large report exports that do not OOM.

Depends On  
AST-1.11.1, AST-1.11.3

Related Table Schema  
Read-only exports.

Schema Based Business Rules

- Stream like activity-log export pattern.
- Respect permissions including finance.view.

Task Scope  
Export endpoints for key reports. Tests.

Estimate Hours  
4.00  
Status  
Todo  
QA Status  
-  
QA Comment  
-

---

Project  
ERPFlow  
Module  
Asset Management  
Type  
Feature  
Title  
Index Tuning (Measured Only)  
Branch Name  
feature-asset-index-tuning  
View Order  
87  
Description

Task Serial  
AST-1.11.6 — Index Tuning (Measured Only)

User Story  
As a developer, I want indexes only where EXPLAIN shows sequential scans on real queries.

Depends On  
AST-1.11.1, AST-1.11.3

Related Table Schema  
Index migrations only; reason documented per index.

Schema Based Business Rules

- No speculative indexes.
- Migration per measured need.

Task Scope  
Measure report/list queries; add justified indexes.

Estimate Hours  
3.00  
Status  
Todo  
QA Status  
-  
QA Comment  
-

---

Project  
ERPFlow  
Module  
Asset Management  
Type  
QA  
Title  
Security Pass (Cost Columns + Company Scope)  
Branch Name  
test-asset-security-pass  
View Order  
88  
Description

Task Serial  
AST-1.11.7 — Security Pass (Cost Columns + Company Scope)

User Story  
As security, I want IDOR and cost leakage tested across Asset APIs.

Depends On  
AST-1.11.1, AST-1.10.4

Related Table Schema  
All Asset APIs.

Schema Based Business Rules

- Wrong company → 404/403.
- Cost hidden without finance.view.

Task Scope  
Test suite + checklist. Fix blockers found.

Estimate Hours  
4.00  
Status  
Todo  
QA Status  
-  
QA Comment  
-

---

Project  
ERPFlow  
Module  
Asset Management  
Type  
QA  
Title  
Concurrency Regression Suite  
Branch Name  
test-asset-concurrency-regression  
View Order  
89  
Description

Task Serial  
AST-1.11.8 — Concurrency Regression Suite

User Story  
As a tech lead, I want Phase 3 concurrency tests still green after later phases.

Depends On  
AST-1.3.9, AST-1.4.10, AST-1.6.8

Related Table Schema  
ledger/balances/assignments.

Schema Based Business Rules

- Parallel receipt, duplicate inbox, double assign, double adjust.

Task Scope  
CI suite card. Sign as part of Phase 11 STOP.

Estimate Hours  
4.00  
Status  
Todo  
QA Status  
-  
QA Comment  
-

---

Project  
ERPFlow  
Module  
Asset Management  
Type  
QA  
Title  
Phase 11 STOP — Report List Acceptance  
Branch Name  
test-asset-phase11-stop  
View Order  
90  
Description

Task Serial  
AST-1.11.9 — Phase 11 STOP — Report List Acceptance

User Story  
As a product owner, I accept the V1 report list before further performance rewrites.

Depends On  
AST-1.11.5, AST-1.11.7, AST-1.11.8

STOP Gate  
Report list accepted.

Related Table Schema  
Reports only.

Schema Based Business Rules

- No NBV report.

Task Scope  
Sign STOP on report list.

Estimate Hours  
2.00  
Status  
Todo  
QA Status  
-  
QA Comment  
-

---

Project  
ERPFlow  
Module  
Asset Management  
Type  
Spike  
Title  
Feature Flags / Module Enable Order  
Branch Name  
docs-asset-enable-order  
View Order  
91  
Description

Task Serial  
AST-1.12.0 — Feature Flags / Module Enable Order

User Story  
As a release owner, I want a safe enable order for Asset in production.

Depends On  
AST-1.0.4

Related Table Schema  
modules_statuses + flags.

Schema Based Business Rules

- Bridge freeze same release as assignment.
- Import after masters + receipt service live.

Task Scope  
Runbook in docs/asset-management.

Estimate Hours  
2.00  
Status  
Todo  
QA Status  
-  
QA Comment  
-

---

Project  
ERPFlow  
Module  
Asset Management  
Type  
Docs  
Title  
Asset Module Documentation  
Branch Name  
docs-asset-module-guides  
View Order  
92  
Description

Task Serial  
AST-1.12.1 — Asset Module Documentation

User Story  
As a developer/user, I want module and API docs for Asset.

Depends On  
AST-1.11.9

Related Table Schema  
N/A.

Schema Based Business Rules

- Link plan, WBS, schema, task cards.
- Do not invent features not built.

Task Scope  
User guide outline + API notes under docs/asset-management. Update docs/README.

Estimate Hours  
6.00  
Status  
Todo  
QA Status  
-  
QA Comment  
-

---

Project  
ERPFlow  
Module  
Asset Management  
Type  
QA  
Title  
UAT per Phase  
Branch Name  
qa-asset-uat-tracker  
View Order  
93  
Description

Task Serial  
AST-1.12.2 — UAT per Phase

User Story  
As QA, I want a UAT tracker covering each phase STOP demo.

Depends On  
AST-1.1.9 through AST-1.11.9 (rolling)

Related Table Schema  
N/A.

Schema Based Business Rules

- UAT evidence attached to STOP cards.

Task Scope  
Checklist + execution across environments.

Estimate Hours  
8.00  
Status  
Todo  
QA Status  
-  
QA Comment  
-

---

Project  
ERPFlow  
Module  
Asset Management  
Type  
Spike  
Title  
Production Data Migration (Bridge + Opening Import)  
Branch Name  
ops-asset-production-migration  
View Order  
94  
Description

Task Serial  
AST-1.12.3 — Production Data Migration (Bridge + Opening Import)

User Story  
As a release owner, I want production bridge and opening import executed with rollback plan.

Depends On  
AST-1.4.10, AST-1.8.8, AST-1.12.0

Related Table Schema  
Uses bridge command + import confirm.

Schema Based Business Rules

- Dry-run first.
- Freeze legacy writer in same window.

Task Scope  
Ops execution using AST-1.4.2 and AST-1.8.* runbooks.

Estimate Hours  
8.00  
Status  
Todo  
QA Status  
-  
QA Comment  
-

---

Project  
ERPFlow  
Module  
Asset Management  
Type  
Spike  
Title  
Physical Label Printing & Tagging Drive  
Branch Name  
ops-asset-tagging-drive  
View Order  
95  
Description

Task Serial  
AST-1.12.4 — Physical Label Printing & Tagging Drive

User Story  
As operations, I want a physical tagging drive after labels print.

Depends On  
AST-1.2.6, AST-1.12.3

Related Table Schema  
Uses tags.

Schema Based Business Rules

- Only active tags on stickers.

Task Scope  
Ops checklist; not a code feature.

Estimate Hours  
4.00  
Status  
Todo  
QA Status  
-  
QA Comment  
-

---

Project  
ERPFlow  
Module  
Asset Management  
Type  
Spike  
Title  
First Physical Verification Cycle  
Branch Name  
ops-asset-first-verification  
View Order  
96  
Description

Task Serial  
[AST-1.12.5 — First Physical Verification Cycle](./FIRST_PHYSICAL_VERIFICATION_CYCLE_RUNBOOK.md)

User Story  
As operations, I want the first real verification cycle after tagging.

Depends On  
AST-1.12.4, AST-1.6.8

Related Table Schema  
verification sessions.

Schema Based Business Rules

- Variances → draft adjustments → approved posts.

Task Scope  
Ops execution of Phase 5/6 flows on live data.

Estimate Hours  
4.00  
Status  
Todo  
QA Status  
-  
QA Comment  
-

---

Project  
ERPFlow  
Module  
Asset Management  
Type  
Docs  
Title  
User Training (Roles)  
Branch Name  
docs-asset-user-training  
View Order  
97  
Description

Task Serial  
AST-1.12.6 — User Training (Roles)

User Story  
As an org, I want training for manager, custodian, auditor, and employee roles.

Depends On  
AST-1.12.1

Related Table Schema  
N/A.

Schema Based Business Rules

- Match shipped permissions.

Task Scope  
Short training outlines / sessions.

Estimate Hours  
4.00  
Status  
Todo  
QA Status  
-  
QA Comment  
-

---

Project  
ERPFlow  
Module  
Asset Management  
Type  
Spike  
Title  
Future Roadmap Tracker (Out of V1)  
Branch Name  
docs-asset-future-roadmap  
View Order  
98  
Description

Task Serial  
AST-1.13 — Future Roadmap Tracker (Out of V1)

User Story  
As a product owner, I want out-of-V1 items listed so they are not scheduled into V1 phases.

Depends On  
AST-1.0.1

Notes  
OUT OF V1 — do not estimate into sprint unless re-scoped.

Related Table Schema  
None for V1.

Schema Based Business Rules

- Do not implement: components, asset request, loan/reservation, gate pass, meters, lost/stolen case, reorder, notifications, lot/batch, e-sign, GRN caller, work orders, finance journals, vendor master move.

Task Scope  
Keep as backlog epic only. No implementation branch work under V1.

Estimate Hours  
1.00  
Status  
Todo  
QA Status  
-  
QA Comment  
-

---

