Appearance
Asset Opening Balances
| Backlog field | Value |
|---|---|
| Story ID | AP-FA-004 |
| Epic | Fixed Assets |
| Story type | Report |
| Review status | Draft - business analyst and business owner review required |
| Source evidence | AppsPortal.Apis controller, application command/query handlers, validators, domain entities, and matching MFE workflow where available |
| Last source review | 2026-07-10 |
User story
As implementation accountants, I want to load acquisition cost and accumulated depreciation baselines so that asset accounting starts from approved values.
Posting reference: AppsPortal Posting Ledger explains debit/credit construction. Delegation and Interaction Contracts explains module ownership, delegated commands, linked records, commit boundaries, and reversal propagation.
Acceptance criteria
- Only authorized users can view or execute the feature's actions.
- Required business data, active dependencies, tenant/branch scope, and current document state are validated.
- Invalid requests return actionable validation errors without applying a partial change.
- Search, list, view, print, and export operations use the same authorized business scope.
- Material create, edit, status, approval, posting, reversal, and integration actions are auditable where applicable.
- Financial or stock effects are applied atomically and no more than once.
Posting details
- Validate Draft, open period, asset eligibility, acquisition cost, accumulated depreciation, net book value consistency, and required asset/group accounts.
- Build and delegate the balanced opening asset journal to Accounting using configured asset and accumulated-depreciation accounts.
- Update asset financial baseline, depreciation starting state, source links, and lifecycle status.
- Mark Posted and commit journal plus asset values together.
- Unpost is blocked by later depreciation, transfer, sale, disposal, or closed-period activity.
General ledger posting
| Component | Debit | Credit | Rule |
|---|---|---|---|
| Opening asset cost | Asset GL | Opening balancing account | Asset then group mapping/policy. |
| Opening accumulated depreciation | Opening balancing account | Accumulated Depreciation GL | Must reconcile to cost and net book value. |
Other module and document effects
| Area | Effect | Conditional/no effect |
|---|---|---|
| Fixed Asset register | Establishes cost, accumulated depreciation, NBV, depreciation start, and Posted state. | No inventory quantity, vendor payable, or cash movement. |
| Later lifecycle | Becomes baseline for depreciation, transfer, sale, and disposal. | Dependents block unpost. |
Core acceptance scenarios
- Given valid Draft asset baseline values and required accounts, when the asset accountant clicks Post, then asset cost, accumulated depreciation, net book value, journal, and status become effective together.
- Given later depreciation or lifecycle activity exists, when the operation is attempted, then Unpost is rejected.
- Given the same Post request is retried after success, when the source is no longer Draft, then no duplicate journal, stock, balance, payment, or lifecycle effect is created.
Required data and Post
Draft opening balance, open date/period, assets, acquisition/local cost, accumulated depreciation, net book value consistency, and required asset/group accounts are required. Post creates the opening asset/accounting baseline, updates asset financial values/status, links the journal, and marks Posted. Unpost requires open periods and no later dependent depreciation/transfer/sale/disposal; it reverses the baseline atomically.
Frontend page coverage
The following UI coverage is sourced from the pulled MFE route configuration. A Module-level supporting artifact mapping is evidence of a reachable screen, but requires BA confirmation that it belongs to this story rather than a more specific feature story.
| Route/page | Component | Mode | Route permission/guard | Mapping confidence | Source |
|---|---|---|---|---|---|
| assets-opening-balances | Lazy-loaded route | List/navigation | No route-level permission/guard found in source window | Feature token match | apps/fixedAssets/src/app/remote-entry/transactions/transactions-routing.module.ts:6 |
Observed frontend fields and validation
| Component | Control | Observed frontend rule | Component source |
|---|---|---|---|
| - | - | No reactive formControlName controls were found for the routed components; review template-driven/shared child components. | Route sources above |
Observed frontend actions
| Component | Click action/handler | Business review requirement | Component source |
|---|---|---|---|
| - | - | No direct (click) handler was found; review shared toolbar/table commands and form submission bindings. | Route sources above |
Page-specific frontend acceptance criteria
- assets-opening-balances - List/navigation: Load an authorized paged/searchable list or navigation page; preserve filters/sort/paging and expose only permitted row and bulk actions. Security observed: No route-level permission/guard found in source window