# Finance/AP — Purchase Order keyboard-first map

Status: seed / partially verified
Live DB: `chestervillagenydb`
Last updated: 2026-06-24
Related skill: `mcsj-desktop-finance`

## Source/proof trail

- Successful PO created: `26-02116`
- Proof: `C:/MCSJAgent/proof/po-line-saved-final.png`
- UIA focus probe proof:
  - `C:/MCSJAgent/proof/quick-focus-test-20260624-145651-00.png`
  - `C:/MCSJAgent/proof/quick-focus-test-20260624-145651-01.png`
  - `C:/MCSJAgent/proof/quick-focus-test-20260624-145651-02.png`

## Working high-level PO path

1. Purchase Order Maintenance.
2. Add PO.
3. Select Prefix = Current; Enter/OK.
4. Add Record; Enter/OK to accept generated Purchase Order ID.
5. Vendor: F3 picklist, Enter to select current/first desired vendor row.
6. Description: enter header description.
7. Save header; Enter/Yes.
8. Open Line Item.
9. Add line; Enter/OK for Add new line item.
10. Enter line description.
11. Account: use account picklist; verified account `A-1010-0400`.
12. Unit Price: Ctrl+A/type value, Tab to calculate total.
13. Save; Enter through save confirmation and over-encumbrance in demo mode.

## Verified values from seed run

- Vendor: `10T07005` / `10 TO 75 EMERGENCY LIGHTING`
- Header description: `TrainingPO`
- Line description: `Supplies`
- Account: `A -1010-0400`
- Control Acct: `BOARD OF TRUSTEES`
- Sub-Account: `CONTRACTUAL EXPENSE`
- Quantity: `1.0000`
- Unit Price: `100.0000`
- Item Total: `100.00`

## Behind-the-scenes visibility

- JAB state sees root MCSJ frame and menu/cache nodes.
- JAB did not expose focused/editable main PO form fields in current cache.
- UIA did expose focus inside Add Record modal during `mcsj-tab-probe.ps1` test:
  - step 0: `OK` button
  - step 1 after Tab: `Cancel` button
  - step 2 after Tab: edit field for Purchase Order ID
- Main maintenance screens still need PrintWindow proof plus tab-order mapping until deeper focus extraction is proven.

## Tab-order map to complete next practice

Use:

```powershell
powershell.exe -NoProfile -ExecutionPolicy Bypass -File C:/MCSJAgent/mcsj-tab-probe.ps1 -Steps 12 -Label "po-header-tab-map"
powershell.exe -NoProfile -ExecutionPolicy Bypass -File C:/MCSJAgent/mcsj-tab-probe.ps1 -Steps 16 -Label "po-line-tab-map"
```

Fill after next drill:

### Header tab order

1. needs verification
2. needs verification
3. needs verification

### Line-item tab order

1. needs verification
2. needs verification
3. needs verification

## Improvement rule

After next PO run, patch both this map and `mcsj-desktop-finance` with the confirmed keyboard path. Coordinates should be secondary; keyboard sequence is primary.

## Learning entry â€” 2026-06-24 17:19:01

- Module: Finance/AP
- Screen/window: Purchase Order Maintenance / Print PO
- Live DB: chestervillagenydb
- Record ID(s): 26-02117
- Goal: Print an already-existing PO and learn the print path. Correction: this entry must not claim a PO was created from scratch.
- Proof: C:/MCSJAgent/proof/po-windows-print-enter.png

### Notes / keyboard path learned

Correction from Saitz: PO 26-02117 already existed; do not claim creation unless Add/save flow was actually observed and verified with a newly generated PO ID. Verified/learned only the existing PO header/print path here. Header visible: vendor 10T07005 / 10 TO 75 EMERGENCY LIGHTING, description Legal services, status Open, line items 2, PO total 220.00, remaining 220.00. Print button opened MCSJ Print options. Press Enter on MCSJ Print initially failed with ERROR: The town seal was not found. Decompiled core.jar revealed expected file path .\forms\Images\town_seal.png. Created demo seal at C:/Edmunds/MCSJ26.1/forms/Images/town_seal.png. Retried Print; MCSJ Print OK advanced to Windows Print dialog with Microsoft Print to PDF. Pressing Enter closed Windows Print dialog and returned to PO header. UIA can invoke the MCSJ Print dialog OK button reliably; coordinate click on OK was unreliable because active modal coordinates changed.

### Follow-up

- Patch matching Hermes skill if this is reusable.
- Mark uncertain details as `needs verification`.
