Vendors
Master data for suppliers POs are placed against. Flat entity — no companion lookup tables. Vendor contacts live in the shared Contacts pool.
Tables owned
| Table | Purpose |
|---|---|
org.vendors | Vendor records (name, address, terms, QBO ID, active flag). |
Operations
Writes
create(conn, input)→Vendor.input:{ name, address?, country?, term?, qboId?, notes? }.update(conn, vendorId, patch)→Vendor. Partial update on header fields, including theisActiveflag (archive / reactivate).delete(conn, vendorId)→void. Hard-delete. L3 enforces "no PO references" before calling.
Reads
list(conn, filters?)→Vendor[]. Filters:{ isActive? }.getById(conn, vendorId)→Vendor | null.getByIds(conn, vendorIds)→Vendor[]. Batch hydration for cross-domain reads (e.g., PO list with vendor name).