How to inject
Use @Inject(ServiceClass, ContainerRegistryManager.BUILTIN_PLUGIN) on a class property so the service resolves from the core/builtin container — not your plugin’s local DI. Constructor injection is not supported.
TSXinject
1import {
2 Service,
3 Inject,
4 ContainerRegistryManager,
5 UserService,
6 NotificationService,
7} from "@quan-erp/shared-backend-core";
8
9@Service()
10export class MyPluginService {
11 @Inject(UserService, ContainerRegistryManager.BUILTIN_PLUGIN)
12 private userService: UserService;
13
14 @Inject(NotificationService, ContainerRegistryManager.BUILTIN_PLUGIN)
15 private notificationService: NotificationService;
16}Catalog
Each page documents the public class methods (signatures, parameters, and examples). Open a service for the full API.
- PartnerService — customers / suppliers (getPartner, create, update, …)
- UserService — users, sign-in, tokens, devices
- NotificationService — send, inbox, markRead
- FileService — addFile, findFile, pre-signed URLs
- SettingService — get / set typed settings
- BranchService — branches and markDefault
- CurrencyService / CurrencyExchangeService — currencies and rates
- DeveloperConfigService — public/private plugin config (not a generic get)
- ChangeLogService — activity feed per plugin + reference (addChangeLog, getChangeLogs, reactions)
- CronJobService — Redis cron schedules (see Cron job)
Rules
- Always pass ContainerRegistryManager.BUILTIN_PLUGIN as the second @Inject argument for core services
- Import service classes from @quan-erp/shared-backend-core
- Do not copy builtin tables or re-wrap the same APIs in your plugin unless you are extending behavior