Inject
TSXinject
1import {
2 ContainerRegistryManager,
3 PartnerService,
4 Inject,
5 Service,
6} from "@quan-erp/shared-backend-core";
7
8@Service()
9export class MyPluginService {
10 @Inject(PartnerService, ContainerRegistryManager.BUILTIN_PLUGIN)
11 private partnerService: PartnerService;
12}Lookup methods
- getPartnerById(id: number): Promise<PartnerEntity | null> — one partner by id
- getPartner({ search?, isCustomer?, isSupplier?, skip, limit }): Promise<PartnerEntity[]> — paginated list with optional filters (skip/limit required; defaults in callers often 0 / 20)
- sportlightSearch(dto: SportlightSearchDto, user: RequestedUser) — Spotlight search integration (spelling matches source API)
TSXlookup
1import {
2 ContainerRegistryManager,
3 Inject,
4 PartnerService,
5 Service,
6} from "@quan-erp/shared-backend-core";
7
8@Service()
9export class SalePartnerService {
10 @Inject(PartnerService, ContainerRegistryManager.BUILTIN_PLUGIN)
11 private partnerService: PartnerService;
12
13 async customers(search?: string) {
14 return this.partnerService.getPartner({
15 search,
16 isCustomer: true,
17 skip: 0,
18 limit: 20,
19 });
20 }
21
22 async byId(id: number) {
23 return this.partnerService.getPartnerById(id);
24 }
25}Create / update / delete
CreateServiceProps wraps { data, manager?, createdByUserId? }. Keep isCustomer / isSupplier aligned with how the partner is used.
- create(props: CreateServiceProps<CreatePartnerDto & OptionalCreatedByUser>) — create one partner (firstName, lastName required; phone, email, tags, flags optional)
- createMany(props: CreateServiceProps<CreatePartnerDto[] & OptionalCreatedByUser>) — bulk create
- update(id: number, partner: CreatePartnerDto, updateBy?: number) — update by id
- delete(id: number) — delete partner by id
TSXcreate
1import {
2 ContainerRegistryManager,
3 Inject,
4 PartnerService,
5 Service,
6} from "@quan-erp/shared-backend-core";
7
8@Service()
9export class CustomerOnboardService {
10 @Inject(PartnerService, ContainerRegistryManager.BUILTIN_PLUGIN)
11 private partnerService: PartnerService;
12
13 async createCustomer(createdByUserId: number) {
14 return this.partnerService.create({
15 createdByUserId,
16 data: {
17 firstName: "Aung",
18 lastName: "Kyaw",
19 phone: "09123456789",
20 isCustomer: true,
21 isSupplier: false,
22 },
23 });
24 }
25}Notes
- Prefer this service over inventing plugin-local customer/vendor entities
- Frontend partner hooks/components are exposed from the base plugin (PartnerDropdown, usePartnerQuery, …)