Notify online firm employees/players in chat when their firm receives an incoming transaction.
Technical notes — Treasury fires no per-transfer event (only TaxCycleEvent), so there's nothing to listen for cross-plugin. But the primitive exists: FirmStaffService.getOnlineEmployees(firm) returns online staff + proprietor (already used by disband). In the pay-in handlers (FirmTransactionServiceImpl/MiscCommands.payInto), after a successful treasury.transfer, message.send(getOnlineEmployees(firm), "…received…"). A true event-driven version is blocked on the same missing transfer event as PAR-75.
Shipped on develop (commit 08b8cbb), built on the new firm notification system (PAR-94).
The receiving firm's online members now get an in-game notice when money comes in via:
/firm pay into <firm> <amount> (player → business),/firm pay business <firm> <target> <amount> (target firm notified),/firm account pay business <firm> <accountId> <target> <amount> (target firm notified).Uses notifyFirmExcept(targetFirmId, payer, …) so the payer isn't notified of their own payment. Message key business.notify.transfer.incoming → "{firm} received {amount} from {sender}".
Known limitation (by design): Treasury fires no per-transfer event, so this only catches transfers Business itself originates. External incoming (ChestShop sales, Vault, direct Treasury transfers) needs the per-transfer event in PAR-75 — the fully event-driven path remains tracked there.
Code context — Treasury fires no per-transfer event (only
TaxCycleEvent), so there's nothing to listen for cross-plugin. But the primitive is here:FirmStaffService.getOnlineEmployees(firm)returns the online staff + proprietor (already used by the disband flow).Approach: in the pay-in handlers (
FirmTransactionServiceImpl/MiscCommands.payInto), after a successfultreasury.transfer,message.send(getOnlineEmployees(firm), "…received…"). Doing it in-band avoids needing a Treasury event; a true event-driven version is blocked on the same missing transfer event as PAR-75.