commission overrides in org Settings page

This commit is contained in:
Satyam-Rastogi
2026-05-13 12:51:36 +05:30
parent 7598f8982a
commit 9bc8a42354
6 changed files with 177 additions and 24 deletions
+45
View File
@@ -0,0 +1,45 @@
/**
* Centralized commission resolution — 4-level hierarchy:
* Job Override → Individual Override → Role Override → Org Default
*/
export function resolveCommission({
jobOverride,
userId,
userCommissionOverrides = [],
orgMembers = [],
roleCommissionOverrides = [],
orgCommissionDefaults = {},
}) {
// Level 1: Job Override (highest priority)
if (jobOverride) {
return { source: 'job', type: jobOverride.type, rate: Number(jobOverride.rate) || 0 };
}
// Level 2: Individual User Override
if (userId) {
const userOverride = userCommissionOverrides.find(o => o.enabled && o.userId === userId);
if (userOverride) {
return { source: 'user', type: userOverride.type, rate: Number(userOverride.rate) || 0 };
}
}
// Level 3: Role Override
if (userId) {
const member = orgMembers.find(m => m.userId === userId);
if (member) {
const roleOverride = roleCommissionOverrides.find(o => o.enabled && o.roleKey === member.roleKey);
if (roleOverride) {
return { source: 'role', type: roleOverride.type, rate: Number(roleOverride.rate) || 0, roleKey: member.roleKey };
}
}
}
// Level 4: Org Default (lowest priority)
return { source: 'org', type: orgCommissionDefaults.type, rate: Number(orgCommissionDefaults.rate) || 0 };
}
export function findAssignedUserRoleKey(userId, orgMembers = []) {
if (!userId) return null;
const member = orgMembers.find(m => m.userId === userId);
return member?.roleKey || null;
}