jaz-clio 5.55.4 → 5.55.5
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/assets/skills/api/SKILL.md +1 -1
- package/assets/skills/cli/SKILL.md +1 -1
- package/assets/skills/conversion/SKILL.md +1 -1
- package/assets/skills/jaz-kit/SKILL.md +1 -1
- package/assets/skills/jaz-pseudo-sql/SKILL.md +1 -1
- package/assets/skills/jobs/SKILL.md +1 -1
- package/assets/skills/jobs/references/fa-review.md +5 -5
- package/assets/skills/jobs/references/year-end-close.md +1 -1
- package/assets/skills/transaction-recipes/SKILL.md +1 -1
- package/assets/skills/transaction-recipes/references/asset-disposal.md +3 -3
- package/assets/skills/transaction-recipes/references/declining-balance.md +1 -1
- package/package.json +1 -1
|
@@ -5,12 +5,12 @@
|
|
|
5
5
|
## Tools, recipes, calculators this job uses
|
|
6
6
|
|
|
7
7
|
### Platform tools
|
|
8
|
-
- **`search_fixed_assets(filter: {status: {in: ['ACTIVE', 'DISPOSED', '
|
|
8
|
+
- **`search_fixed_assets(filter: {status: {in: ['ACTIVE', 'DISPOSED', 'DISCARDED']}}, limit: 200)`** — step 1: enumerate FAs. Paginate.
|
|
9
9
|
- **`get_fixed_asset(resourceId: <id>)`** — step 2: per-asset detail (cost, acquisitionDate, usefulLifeMonths, depreciationMethod, salvageValue, NBV).
|
|
10
10
|
- **`generate_fa_summary(period_end: <date>)`** — step 3: aggregate FA register at period end.
|
|
11
11
|
- **`generate_fa_recon_summary(period_start: <year-start>, period_end: <year-end>)`** — step 3: reconcile movement (opening + additions − disposals − depreciation = closing).
|
|
12
12
|
- **`generate_general_ledger(accountResourceId: <FA category GL>, period_start, period_end)`** — step 4: per-FA-category GL movement vs FA register.
|
|
13
|
-
- **`
|
|
13
|
+
- **`mark_fixed_asset_sold(resourceId: <id>, disposalDate, disposalProceeds)`** — step 5: status updates for disposals. Mirror endpoints `POST /api/v1/mark-as-sold/fixed-assets` (sale) / `POST /api/v1/discard-fixed-assets/{id}` (scrap).
|
|
14
14
|
- **`plan_recipe(recipe: 'asset-disposal', ...)` + `execute_recipe(...)`** — step 5: invoke per disposal identified during review (see the `asset-disposal` recipe).
|
|
15
15
|
- **`bulk_update_journals(items: [{resourceId: <id>, saveAsDraft: false}, ...])`** — step 5 / 6: finalize disposal journals + any pending DDB / 150DB depreciation DRAFTs from the `depreciation` recipe.
|
|
16
16
|
|
|
@@ -33,10 +33,10 @@ Walk steps 1-8 below. (Local CLI: `clio jobs fa-review` prints the same phased c
|
|
|
33
33
|
## Step 1 — Enumerate FAs
|
|
34
34
|
|
|
35
35
|
```
|
|
36
|
-
search_fixed_assets(filter: {status: {in: ['ACTIVE', 'DISPOSED', '
|
|
36
|
+
search_fixed_assets(filter: {status: {in: ['ACTIVE', 'DISPOSED', 'DISCARDED']}}, limit: 200, sortBy: 'purchaseDate', sortOrder: 'ASC')
|
|
37
37
|
```
|
|
38
38
|
|
|
39
|
-
Paginate via offset. For year-end review: include DISPOSED and
|
|
39
|
+
Paginate via offset. For year-end review: include DISPOSED and DISCARDED (disposed during the year are part of the recon).
|
|
40
40
|
|
|
41
41
|
## Step 2 — Identify candidates for review
|
|
42
42
|
|
|
@@ -96,7 +96,7 @@ Then the manual FA-register status update (engine-skipped — see the `asset-dis
|
|
|
96
96
|
update_fixed_asset(resourceId: <asset id>, status: 'DISPOSED', disposalDate, disposalProceeds)
|
|
97
97
|
```
|
|
98
98
|
|
|
99
|
-
For scrap / write-off (no proceeds): `
|
|
99
|
+
For scrap / write-off (no proceeds): `discard_fixed_asset(...)` — its own description is "Discard (write off) a fixed asset". There is no `WRITTEN_OFF` status; the declared set is ACTIVE, ONGOING, COMPLETED, DRAFT, DISPOSED, SOLD, DISCARDED, CLOSED_OUT.
|
|
100
100
|
|
|
101
101
|
## Step 6 — Write-off of fully depreciated unused assets
|
|
102
102
|
|
|
@@ -11,7 +11,7 @@
|
|
|
11
11
|
- **`generate_fa_summary(period_end: <FY-end>)`** — Y1 FA reconciliation: full-year depreciation movement per asset.
|
|
12
12
|
- **`generate_fa_recon_summary(period_start: <FY-start>, period_end: <FY-end>)`** — Y1 verification: opening NBV + additions − disposals − depreciation = closing NBV.
|
|
13
13
|
- **`search_fixed_assets(filter: {status: {in: ['ACTIVE', 'DISPOSED']}})`** — Y1 enumeration of FAs.
|
|
14
|
-
- **`
|
|
14
|
+
- **`mark_fixed_asset_sold(...)` for a sale or `discard_fixed_asset(...)` for a write-off — both are operations, not status mutations** — Y1 fallback if any FA has incorrect status at FY-end.
|
|
15
15
|
- **`search_journals(filter: {tags: {eq: 'leave-accrual'}, valueDate: {between: [<FY-start>, <FY-end>]}})` / `search_journals(filter: {tags: {eq: 'bonus-accrual'}, ...})`** — Y2 true-up: pull all FY accrual journals to compare against actuals.
|
|
16
16
|
- **`create_journal(...)`** — Y2 true-up adjustment journals (manual one-off, not recipe-driven).
|
|
17
17
|
- **`plan_recipe(recipe: 'dividend', ...)` + `execute_recipe(...)`** — Y3 dividend declaration + payment (engine emits the 2-step pattern: declaration journal + payment cash-out).
|
|
@@ -16,7 +16,7 @@
|
|
|
16
16
|
- **`generate_fa_summary(period_end: <disposalDate>)`** — step 1 alt: pull NBV directly from Jaz's running FA register. If this matches your independent calc, use it as the authoritative NBV. If they diverge: investigate (likely a missing depreciation journal).
|
|
17
17
|
- **`search_capsules(filter: {title: {eq: <capsule.name>}})`** — step 0 idempotency check. Each disposal is unique; duplicate disposal journals would corrupt the FA register reconciliation.
|
|
18
18
|
- **`search_accounts(filter: {name: {in: ['Vehicles', 'Accumulated Depreciation — Vehicles', 'Gain on Disposal', 'Loss on Disposal']}})`** — step 3.
|
|
19
|
-
- **`
|
|
19
|
+
- **`mark_fixed_asset_sold(...)` for a sale (it links the sale transaction and records gain/loss) or `discard_fixed_asset(...)` for a write-off — a disposal is its own operation, never a `status` mutation via update_fixed_asset** OR **`POST /api/v1/mark-as-sold/fixed-assets`** OR **`POST /api/v1/discard-fixed-assets/{id}`** — step 5 manual FA-register update (the engine-skipped note step).
|
|
20
20
|
- **`generate_trial_balance(period_end: <disposalDate>)`** — step 6: verify cost + accumulated depreciation cleared; gain/loss in P&L.
|
|
21
21
|
|
|
22
22
|
### Cross-references
|
|
@@ -134,13 +134,13 @@ POST /api/v1/discard-fixed-assets/<FA UUID>
|
|
|
134
134
|
notes: 'Scrapped; capsule <capsuleResourceId>'
|
|
135
135
|
}
|
|
136
136
|
```
|
|
137
|
-
OR `
|
|
137
|
+
OR `discard_fixed_asset(resourceId: <id>, disposalDate: '2026-03-15')` for a write-off.
|
|
138
138
|
|
|
139
139
|
**Trade-in (proceeds + replacement asset):**
|
|
140
140
|
1. First: invoke this recipe with `proceeds: <fair value of trade-in credit>` for the disposal of the old asset.
|
|
141
141
|
2. Then: `create_fixed_asset(...)` for the new asset with cost = cash paid + trade-in credit (the trade-in is part-payment).
|
|
142
142
|
|
|
143
|
-
After the FA-register update: `get_fixed_asset(resourceId: <id>)` should return `status: 'DISPOSED'` (or `'
|
|
143
|
+
After the FA-register update: `get_fixed_asset(resourceId: <id>)` should return `status: 'DISPOSED'` (or `'DISCARDED'`).
|
|
144
144
|
|
|
145
145
|
### Step 6 — Verify
|
|
146
146
|
|
|
@@ -117,7 +117,7 @@ After the FINAL period (month 60):
|
|
|
117
117
|
| `plan_recipe` | 422 `useful_life_invalid` | Useful life must be ≥ 2 years. Asset with useful life < 2 years: expense as period cost via `create_bill` to `Operating Expense`. |
|
|
118
118
|
| `plan_recipe` | 422 `salvage_exceeds_cost` | Salvage ≥ cost is non-sensical. Verify inputs. |
|
|
119
119
|
| `execute_recipe` | 422 `account_not_found` | Step 3 incomplete. `search_accounts`; create via `create_account`. |
|
|
120
|
-
| Verification | NBV stuck above schedule | Either a DRAFT wasn't finalized (re-run step 5), OR Jaz FA also auto-posted SL depreciation (asset got duplicate-registered). Audit `search_fixed_assets(filter: {name: {contains: <asset>}})`. If duplicated: archive the auto-FA depreciation journals +
|
|
120
|
+
| Verification | NBV stuck above schedule | Either a DRAFT wasn't finalized (re-run step 5), OR Jaz FA also auto-posted SL depreciation (asset got duplicate-registered). Audit `search_fixed_assets(filter: {name: {contains: <asset>}})`. If duplicated: archive the auto-FA depreciation journals + remove the duplicate — **not** with `discard_fixed_asset`, whose own description is "records the disposal and final depreciation", i.e. it POSTS more entries in a case that wanted fewer. If the duplicate is still a draft, `delete_fixed_asset` (draft-only by design). If it is already active, stop: deleting is impossible and reversing its posted depreciation is a judgment call — surface both registrations to the practitioner. |
|
|
121
121
|
| Asset reaches salvage early (impairment) | (process) | Per IAS 36 — if recoverable amount drops below NBV, write down. Manual journal: Dr Impairment Loss / Cr Accumulated Depreciation for the impairment amount. Reverse remaining DRAFT depreciation journals (`delete_journal`); recipe assumed normal life. |
|
|
122
122
|
| Disposal mid-life | (process) | Invoke `asset-disposal.md` recipe. Then close depreciation capsule, delete remaining DRAFT depreciation journals. |
|
|
123
123
|
|