- Ya
- 12 Agosti 2026, 22:12 UTC
- Mwandishi
- Kamo
- Ahadi ya
- 791b238
ACCOUNT_HISTORY records what happens to an account the way LEAD_HISTORY records what happens to a lead — deliberately the same columns, because the internal site now renders both through one component and a second shape would have forced a second one. - AccountHistory + repository + AccountHistoryService: snapshot/diff over a field registry, plus one-off events for the things that are not field edits (a member joining, a lead or order arriving, a merge). Recording never throws: an audit write that fails must not take down the operation it was auditing. - AccountHistoryFieldRegistry is the single place a tracked field is declared. Running totals are deliberately absent — they move as a side effect of orders, which already get their own events. - LeadService now writes the account's half of a lead link. Attaching a lead to an account is one act in two timelines, and recording it in only one means whichever page you are looking at is the one that does not mention it. A lead moved between accounts writes to both. - CommerceService records ORDER_PLACED / _LINKED / _UNLINKED / _STATUS_CHANGED against the purchasing account. Silent when an order has no purchaser. - **************** the staff-only directory search widened to every member of an org, for pickers that are not choosing a colleague. Kept in step with TeamMemberRepo.searchDirectory term for term, including the LEFT JOIN TeamMember that keeps job title and department searchable for the staff in the results. activeOnly can only speak for rows that have an employment status, so members without one pass through instead of being read as "not employed". - Member.getPhoneExtension: getPhone() flattens to the number, leaving the extension unreachable from outside the class.