@xbg.solutions/utils-erp-connector 1.0.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/lib/erp-connector.d.ts +84 -0
- package/lib/erp-connector.d.ts.map +1 -0
- package/lib/erp-connector.js +214 -0
- package/lib/erp-connector.js.map +1 -0
- package/lib/index.d.ts +11 -0
- package/lib/index.d.ts.map +1 -0
- package/lib/index.js +63 -0
- package/lib/index.js.map +1 -0
- package/lib/providers/workday-provider.d.ts +85 -0
- package/lib/providers/workday-provider.d.ts.map +1 -0
- package/lib/providers/workday-provider.js +448 -0
- package/lib/providers/workday-provider.js.map +1 -0
- package/lib/types.d.ts +146 -0
- package/lib/types.d.ts.map +1 -0
- package/lib/types.js +7 -0
- package/lib/types.js.map +1 -0
- package/package.json +30 -0
|
@@ -0,0 +1,84 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* ERP Connector
|
|
3
|
+
* Enterprise Resource Planning - HR and Finance operations
|
|
4
|
+
*/
|
|
5
|
+
import { Employee, TimeOffRequest, TimeOffBalance, PayStub, ExpenseReport, Department, JobRequisition, ERPQueryOptions, ERPResponse } from './types';
|
|
6
|
+
/**
|
|
7
|
+
* ERP Provider Interface
|
|
8
|
+
*/
|
|
9
|
+
export interface ERPProvider {
|
|
10
|
+
getEmployee(employeeId: string): Promise<Employee>;
|
|
11
|
+
getEmployees(options?: ERPQueryOptions): Promise<ERPResponse<Employee>>;
|
|
12
|
+
createEmployee(employee: Omit<Employee, 'id'>): Promise<Employee>;
|
|
13
|
+
updateEmployee(employeeId: string, updates: Partial<Employee>): Promise<Employee>;
|
|
14
|
+
requestTimeOff(request: TimeOffRequest): Promise<ERPResponse<TimeOffRequest>>;
|
|
15
|
+
getTimeOffBalance(employeeId: string): Promise<TimeOffBalance[]>;
|
|
16
|
+
getTimeOffRequests(employeeId: string, options?: ERPQueryOptions): Promise<ERPResponse<TimeOffRequest>>;
|
|
17
|
+
getPayStubs(employeeId: string, options?: ERPQueryOptions): Promise<ERPResponse<PayStub>>;
|
|
18
|
+
createExpenseReport(expense: ExpenseReport): Promise<ExpenseReport>;
|
|
19
|
+
getExpenseReports(employeeId: string, options?: ERPQueryOptions): Promise<ERPResponse<ExpenseReport>>;
|
|
20
|
+
getDepartment(departmentId: string): Promise<Department>;
|
|
21
|
+
getDepartments(options?: ERPQueryOptions): Promise<ERPResponse<Department>>;
|
|
22
|
+
getJobRequisitions(options?: ERPQueryOptions): Promise<ERPResponse<JobRequisition>>;
|
|
23
|
+
}
|
|
24
|
+
/**
|
|
25
|
+
* ERP Connector
|
|
26
|
+
* Unified interface for ERP systems
|
|
27
|
+
*/
|
|
28
|
+
export declare class ERPConnector {
|
|
29
|
+
private provider;
|
|
30
|
+
constructor(provider: ERPProvider);
|
|
31
|
+
/**
|
|
32
|
+
* Get employee by ID
|
|
33
|
+
*/
|
|
34
|
+
getEmployee(employeeId: string): Promise<Employee>;
|
|
35
|
+
/**
|
|
36
|
+
* Get multiple employees with filtering
|
|
37
|
+
*/
|
|
38
|
+
getEmployees(options?: ERPQueryOptions): Promise<ERPResponse<Employee>>;
|
|
39
|
+
/**
|
|
40
|
+
* Create new employee
|
|
41
|
+
*/
|
|
42
|
+
createEmployee(employee: Omit<Employee, 'id'>): Promise<Employee>;
|
|
43
|
+
/**
|
|
44
|
+
* Update employee data
|
|
45
|
+
*/
|
|
46
|
+
updateEmployee(employeeId: string, updates: Partial<Employee>): Promise<Employee>;
|
|
47
|
+
/**
|
|
48
|
+
* Request time off
|
|
49
|
+
*/
|
|
50
|
+
requestTimeOff(request: TimeOffRequest): Promise<ERPResponse<TimeOffRequest>>;
|
|
51
|
+
/**
|
|
52
|
+
* Get time off balance
|
|
53
|
+
*/
|
|
54
|
+
getTimeOffBalance(employeeId: string): Promise<TimeOffBalance[]>;
|
|
55
|
+
/**
|
|
56
|
+
* Get time off requests
|
|
57
|
+
*/
|
|
58
|
+
getTimeOffRequests(employeeId: string, options?: ERPQueryOptions): Promise<ERPResponse<TimeOffRequest>>;
|
|
59
|
+
/**
|
|
60
|
+
* Get pay stubs
|
|
61
|
+
*/
|
|
62
|
+
getPayStubs(employeeId: string, options?: ERPQueryOptions): Promise<ERPResponse<PayStub>>;
|
|
63
|
+
/**
|
|
64
|
+
* Create expense report
|
|
65
|
+
*/
|
|
66
|
+
createExpenseReport(expense: ExpenseReport): Promise<ExpenseReport>;
|
|
67
|
+
/**
|
|
68
|
+
* Get expense reports
|
|
69
|
+
*/
|
|
70
|
+
getExpenseReports(employeeId: string, options?: ERPQueryOptions): Promise<ERPResponse<ExpenseReport>>;
|
|
71
|
+
/**
|
|
72
|
+
* Get department by ID
|
|
73
|
+
*/
|
|
74
|
+
getDepartment(departmentId: string): Promise<Department>;
|
|
75
|
+
/**
|
|
76
|
+
* Get departments
|
|
77
|
+
*/
|
|
78
|
+
getDepartments(options?: ERPQueryOptions): Promise<ERPResponse<Department>>;
|
|
79
|
+
/**
|
|
80
|
+
* Get job requisitions
|
|
81
|
+
*/
|
|
82
|
+
getJobRequisitions(options?: ERPQueryOptions): Promise<ERPResponse<JobRequisition>>;
|
|
83
|
+
}
|
|
84
|
+
//# sourceMappingURL=erp-connector.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"erp-connector.d.ts","sourceRoot":"","sources":["../src/erp-connector.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,214 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
/**
|
|
3
|
+
* ERP Connector
|
|
4
|
+
* Enterprise Resource Planning - HR and Finance operations
|
|
5
|
+
*/
|
|
6
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
7
|
+
exports.ERPConnector = void 0;
|
|
8
|
+
const utils_logger_1 = require("@xbg/utils-logger");
|
|
9
|
+
/**
|
|
10
|
+
* ERP Connector
|
|
11
|
+
* Unified interface for ERP systems
|
|
12
|
+
*/
|
|
13
|
+
class ERPConnector {
|
|
14
|
+
constructor(provider) {
|
|
15
|
+
this.provider = provider;
|
|
16
|
+
}
|
|
17
|
+
/**
|
|
18
|
+
* Get employee by ID
|
|
19
|
+
*/
|
|
20
|
+
async getEmployee(employeeId) {
|
|
21
|
+
utils_logger_1.logger.info('Fetching employee', { employeeId });
|
|
22
|
+
try {
|
|
23
|
+
return await this.provider.getEmployee(employeeId);
|
|
24
|
+
}
|
|
25
|
+
catch (error) {
|
|
26
|
+
utils_logger_1.logger.error('Error fetching employee', error instanceof Error ? error : new Error('Unknown error'), {
|
|
27
|
+
employeeId,
|
|
28
|
+
});
|
|
29
|
+
throw error;
|
|
30
|
+
}
|
|
31
|
+
}
|
|
32
|
+
/**
|
|
33
|
+
* Get multiple employees with filtering
|
|
34
|
+
*/
|
|
35
|
+
async getEmployees(options) {
|
|
36
|
+
utils_logger_1.logger.info('Fetching employees', { options });
|
|
37
|
+
try {
|
|
38
|
+
return await this.provider.getEmployees(options);
|
|
39
|
+
}
|
|
40
|
+
catch (error) {
|
|
41
|
+
utils_logger_1.logger.error('Error fetching employees', error instanceof Error ? error : new Error('Unknown error'));
|
|
42
|
+
throw error;
|
|
43
|
+
}
|
|
44
|
+
}
|
|
45
|
+
/**
|
|
46
|
+
* Create new employee
|
|
47
|
+
*/
|
|
48
|
+
async createEmployee(employee) {
|
|
49
|
+
utils_logger_1.logger.info('Creating employee', {
|
|
50
|
+
email: employee.email,
|
|
51
|
+
name: `${employee.firstName} ${employee.lastName}`,
|
|
52
|
+
});
|
|
53
|
+
try {
|
|
54
|
+
return await this.provider.createEmployee(employee);
|
|
55
|
+
}
|
|
56
|
+
catch (error) {
|
|
57
|
+
utils_logger_1.logger.error('Error creating employee', error instanceof Error ? error : new Error('Unknown error'));
|
|
58
|
+
throw error;
|
|
59
|
+
}
|
|
60
|
+
}
|
|
61
|
+
/**
|
|
62
|
+
* Update employee data
|
|
63
|
+
*/
|
|
64
|
+
async updateEmployee(employeeId, updates) {
|
|
65
|
+
utils_logger_1.logger.info('Updating employee', { employeeId, updates });
|
|
66
|
+
try {
|
|
67
|
+
return await this.provider.updateEmployee(employeeId, updates);
|
|
68
|
+
}
|
|
69
|
+
catch (error) {
|
|
70
|
+
utils_logger_1.logger.error('Error updating employee', error instanceof Error ? error : new Error('Unknown error'), {
|
|
71
|
+
employeeId,
|
|
72
|
+
});
|
|
73
|
+
throw error;
|
|
74
|
+
}
|
|
75
|
+
}
|
|
76
|
+
/**
|
|
77
|
+
* Request time off
|
|
78
|
+
*/
|
|
79
|
+
async requestTimeOff(request) {
|
|
80
|
+
utils_logger_1.logger.info('Requesting time off', {
|
|
81
|
+
employeeId: request.employeeId,
|
|
82
|
+
type: request.type,
|
|
83
|
+
startDate: request.startDate,
|
|
84
|
+
endDate: request.endDate,
|
|
85
|
+
});
|
|
86
|
+
try {
|
|
87
|
+
return await this.provider.requestTimeOff(request);
|
|
88
|
+
}
|
|
89
|
+
catch (error) {
|
|
90
|
+
utils_logger_1.logger.error('Error requesting time off', error instanceof Error ? error : new Error('Unknown error'));
|
|
91
|
+
throw error;
|
|
92
|
+
}
|
|
93
|
+
}
|
|
94
|
+
/**
|
|
95
|
+
* Get time off balance
|
|
96
|
+
*/
|
|
97
|
+
async getTimeOffBalance(employeeId) {
|
|
98
|
+
utils_logger_1.logger.info('Fetching time off balance', { employeeId });
|
|
99
|
+
try {
|
|
100
|
+
return await this.provider.getTimeOffBalance(employeeId);
|
|
101
|
+
}
|
|
102
|
+
catch (error) {
|
|
103
|
+
utils_logger_1.logger.error('Error fetching time off balance', error instanceof Error ? error : new Error('Unknown error'), {
|
|
104
|
+
employeeId,
|
|
105
|
+
});
|
|
106
|
+
throw error;
|
|
107
|
+
}
|
|
108
|
+
}
|
|
109
|
+
/**
|
|
110
|
+
* Get time off requests
|
|
111
|
+
*/
|
|
112
|
+
async getTimeOffRequests(employeeId, options) {
|
|
113
|
+
utils_logger_1.logger.info('Fetching time off requests', { employeeId, options });
|
|
114
|
+
try {
|
|
115
|
+
return await this.provider.getTimeOffRequests(employeeId, options);
|
|
116
|
+
}
|
|
117
|
+
catch (error) {
|
|
118
|
+
utils_logger_1.logger.error('Error fetching time off requests', error instanceof Error ? error : new Error('Unknown error'), {
|
|
119
|
+
employeeId,
|
|
120
|
+
});
|
|
121
|
+
throw error;
|
|
122
|
+
}
|
|
123
|
+
}
|
|
124
|
+
/**
|
|
125
|
+
* Get pay stubs
|
|
126
|
+
*/
|
|
127
|
+
async getPayStubs(employeeId, options) {
|
|
128
|
+
utils_logger_1.logger.info('Fetching pay stubs', { employeeId, options });
|
|
129
|
+
try {
|
|
130
|
+
return await this.provider.getPayStubs(employeeId, options);
|
|
131
|
+
}
|
|
132
|
+
catch (error) {
|
|
133
|
+
utils_logger_1.logger.error('Error fetching pay stubs', error instanceof Error ? error : new Error('Unknown error'), {
|
|
134
|
+
employeeId,
|
|
135
|
+
});
|
|
136
|
+
throw error;
|
|
137
|
+
}
|
|
138
|
+
}
|
|
139
|
+
/**
|
|
140
|
+
* Create expense report
|
|
141
|
+
*/
|
|
142
|
+
async createExpenseReport(expense) {
|
|
143
|
+
utils_logger_1.logger.info('Creating expense report', {
|
|
144
|
+
employeeId: expense.employeeId,
|
|
145
|
+
amount: expense.amount,
|
|
146
|
+
category: expense.category,
|
|
147
|
+
});
|
|
148
|
+
try {
|
|
149
|
+
return await this.provider.createExpenseReport(expense);
|
|
150
|
+
}
|
|
151
|
+
catch (error) {
|
|
152
|
+
utils_logger_1.logger.error('Error creating expense report', error instanceof Error ? error : new Error('Unknown error'));
|
|
153
|
+
throw error;
|
|
154
|
+
}
|
|
155
|
+
}
|
|
156
|
+
/**
|
|
157
|
+
* Get expense reports
|
|
158
|
+
*/
|
|
159
|
+
async getExpenseReports(employeeId, options) {
|
|
160
|
+
utils_logger_1.logger.info('Fetching expense reports', { employeeId, options });
|
|
161
|
+
try {
|
|
162
|
+
return await this.provider.getExpenseReports(employeeId, options);
|
|
163
|
+
}
|
|
164
|
+
catch (error) {
|
|
165
|
+
utils_logger_1.logger.error('Error fetching expense reports', error instanceof Error ? error : new Error('Unknown error'), {
|
|
166
|
+
employeeId,
|
|
167
|
+
});
|
|
168
|
+
throw error;
|
|
169
|
+
}
|
|
170
|
+
}
|
|
171
|
+
/**
|
|
172
|
+
* Get department by ID
|
|
173
|
+
*/
|
|
174
|
+
async getDepartment(departmentId) {
|
|
175
|
+
utils_logger_1.logger.info('Fetching department', { departmentId });
|
|
176
|
+
try {
|
|
177
|
+
return await this.provider.getDepartment(departmentId);
|
|
178
|
+
}
|
|
179
|
+
catch (error) {
|
|
180
|
+
utils_logger_1.logger.error('Error fetching department', error instanceof Error ? error : new Error('Unknown error'), {
|
|
181
|
+
departmentId,
|
|
182
|
+
});
|
|
183
|
+
throw error;
|
|
184
|
+
}
|
|
185
|
+
}
|
|
186
|
+
/**
|
|
187
|
+
* Get departments
|
|
188
|
+
*/
|
|
189
|
+
async getDepartments(options) {
|
|
190
|
+
utils_logger_1.logger.info('Fetching departments', { options });
|
|
191
|
+
try {
|
|
192
|
+
return await this.provider.getDepartments(options);
|
|
193
|
+
}
|
|
194
|
+
catch (error) {
|
|
195
|
+
utils_logger_1.logger.error('Error fetching departments', error instanceof Error ? error : new Error('Unknown error'));
|
|
196
|
+
throw error;
|
|
197
|
+
}
|
|
198
|
+
}
|
|
199
|
+
/**
|
|
200
|
+
* Get job requisitions
|
|
201
|
+
*/
|
|
202
|
+
async getJobRequisitions(options) {
|
|
203
|
+
utils_logger_1.logger.info('Fetching job requisitions', { options });
|
|
204
|
+
try {
|
|
205
|
+
return await this.provider.getJobRequisitions(options);
|
|
206
|
+
}
|
|
207
|
+
catch (error) {
|
|
208
|
+
utils_logger_1.logger.error('Error fetching job requisitions', error instanceof Error ? error : new Error('Unknown error'));
|
|
209
|
+
throw error;
|
|
210
|
+
}
|
|
211
|
+
}
|
|
212
|
+
}
|
|
213
|
+
exports.ERPConnector = ERPConnector;
|
|
214
|
+
//# sourceMappingURL=erp-connector.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"erp-connector.js","sourceRoot":"","sources":["../src/erp-connector.ts"],"names":[],"mappings":"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"}
|
package/lib/index.d.ts
ADDED
|
@@ -0,0 +1,11 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* ERP Connector Barrel Export
|
|
3
|
+
*/
|
|
4
|
+
export * from './types';
|
|
5
|
+
export * from './erp-connector';
|
|
6
|
+
export * from './providers/workday-provider';
|
|
7
|
+
import { ERPConnector } from './erp-connector';
|
|
8
|
+
export declare function initializeERPConnector(config: any): void;
|
|
9
|
+
export declare function createERPConnector(): ERPConnector | null;
|
|
10
|
+
export declare function getERPConnector(): ERPConnector | null;
|
|
11
|
+
//# sourceMappingURL=index.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA;;GAEG;AAEH,cAAc,SAAS,CAAC;AACxB,cAAc,iBAAiB,CAAC;AAChC,cAAc,8BAA8B,CAAC;AAE7C,OAAO,EAAE,YAAY,EAAE,MAAM,iBAAiB,CAAC;AAM/C,wBAAgB,sBAAsB,CAAC,MAAM,EAAE,GAAG,GAAG,IAAI,CAIxD;AAED,wBAAgB,kBAAkB,IAAI,YAAY,GAAG,IAAI,CAwBxD;AAID,wBAAgB,eAAe,IAAI,YAAY,GAAG,IAAI,CAKrD"}
|
package/lib/index.js
ADDED
|
@@ -0,0 +1,63 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
/**
|
|
3
|
+
* ERP Connector Barrel Export
|
|
4
|
+
*/
|
|
5
|
+
var __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {
|
|
6
|
+
if (k2 === undefined) k2 = k;
|
|
7
|
+
var desc = Object.getOwnPropertyDescriptor(m, k);
|
|
8
|
+
if (!desc || ("get" in desc ? !m.__esModule : desc.writable || desc.configurable)) {
|
|
9
|
+
desc = { enumerable: true, get: function() { return m[k]; } };
|
|
10
|
+
}
|
|
11
|
+
Object.defineProperty(o, k2, desc);
|
|
12
|
+
}) : (function(o, m, k, k2) {
|
|
13
|
+
if (k2 === undefined) k2 = k;
|
|
14
|
+
o[k2] = m[k];
|
|
15
|
+
}));
|
|
16
|
+
var __exportStar = (this && this.__exportStar) || function(m, exports) {
|
|
17
|
+
for (var p in m) if (p !== "default" && !Object.prototype.hasOwnProperty.call(exports, p)) __createBinding(exports, m, p);
|
|
18
|
+
};
|
|
19
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
20
|
+
exports.initializeERPConnector = initializeERPConnector;
|
|
21
|
+
exports.createERPConnector = createERPConnector;
|
|
22
|
+
exports.getERPConnector = getERPConnector;
|
|
23
|
+
__exportStar(require("./types"), exports);
|
|
24
|
+
__exportStar(require("./erp-connector"), exports);
|
|
25
|
+
__exportStar(require("./providers/workday-provider"), exports);
|
|
26
|
+
const erp_connector_1 = require("./erp-connector");
|
|
27
|
+
const workday_provider_1 = require("./providers/workday-provider");
|
|
28
|
+
// Config is provided via initializeERPConnector() at app startup
|
|
29
|
+
let connectorConfig = null;
|
|
30
|
+
function initializeERPConnector(config) {
|
|
31
|
+
connectorConfig = config;
|
|
32
|
+
// Reset singleton so it gets re-created with new config
|
|
33
|
+
erpConnectorInstance = undefined;
|
|
34
|
+
}
|
|
35
|
+
function createERPConnector() {
|
|
36
|
+
if (!connectorConfig) {
|
|
37
|
+
throw new Error('ERP connector not initialized. Call initializeERPConnector() first.');
|
|
38
|
+
}
|
|
39
|
+
if (!connectorConfig.erp.enabled) {
|
|
40
|
+
return null;
|
|
41
|
+
}
|
|
42
|
+
const provider = connectorConfig.erp.provider;
|
|
43
|
+
if (provider === 'workday') {
|
|
44
|
+
const config = connectorConfig.erp.providers.workday;
|
|
45
|
+
if (!(config === null || config === void 0 ? void 0 : config.tenant) || !(config === null || config === void 0 ? void 0 : config.clientId) || !(config === null || config === void 0 ? void 0 : config.clientSecret)) {
|
|
46
|
+
throw new Error('Workday configuration incomplete');
|
|
47
|
+
}
|
|
48
|
+
return new erp_connector_1.ERPConnector(new workday_provider_1.WorkdayProvider({
|
|
49
|
+
tenantName: config.tenant,
|
|
50
|
+
username: config.clientId,
|
|
51
|
+
password: config.clientSecret,
|
|
52
|
+
}));
|
|
53
|
+
}
|
|
54
|
+
throw new Error(`Unsupported ERP provider: ${provider}`);
|
|
55
|
+
}
|
|
56
|
+
let erpConnectorInstance;
|
|
57
|
+
function getERPConnector() {
|
|
58
|
+
if (erpConnectorInstance === undefined) {
|
|
59
|
+
erpConnectorInstance = createERPConnector();
|
|
60
|
+
}
|
|
61
|
+
return erpConnectorInstance;
|
|
62
|
+
}
|
|
63
|
+
//# sourceMappingURL=index.js.map
|
package/lib/index.js.map
ADDED
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":";AAAA;;GAEG;;;;;;;;;;;;;;;;AAYH,wDAIC;AAED,gDAwBC;AAID,0CAKC;AAjDD,0CAAwB;AACxB,kDAAgC;AAChC,+DAA6C;AAE7C,mDAA+C;AAC/C,mEAA+D;AAE/D,iEAAiE;AACjE,IAAI,eAAe,GAAQ,IAAI,CAAC;AAEhC,SAAgB,sBAAsB,CAAC,MAAW;IAChD,eAAe,GAAG,MAAM,CAAC;IACzB,wDAAwD;IACxD,oBAAoB,GAAG,SAAS,CAAC;AACnC,CAAC;AAED,SAAgB,kBAAkB;IAChC,IAAI,CAAC,eAAe,EAAE,CAAC;QACrB,MAAM,IAAI,KAAK,CAAC,qEAAqE,CAAC,CAAC;IACzF,CAAC;IAED,IAAI,CAAC,eAAe,CAAC,GAAG,CAAC,OAAO,EAAE,CAAC;QACjC,OAAO,IAAI,CAAC;IACd,CAAC;IAED,MAAM,QAAQ,GAAG,eAAe,CAAC,GAAG,CAAC,QAAQ,CAAC;IAE9C,IAAI,QAAQ,KAAK,SAAS,EAAE,CAAC;QAC3B,MAAM,MAAM,GAAG,eAAe,CAAC,GAAG,CAAC,SAAS,CAAC,OAAO,CAAC;QACrD,IAAI,CAAC,CAAA,MAAM,aAAN,MAAM,uBAAN,MAAM,CAAE,MAAM,CAAA,IAAI,CAAC,CAAA,MAAM,aAAN,MAAM,uBAAN,MAAM,CAAE,QAAQ,CAAA,IAAI,CAAC,CAAA,MAAM,aAAN,MAAM,uBAAN,MAAM,CAAE,YAAY,CAAA,EAAE,CAAC;YAClE,MAAM,IAAI,KAAK,CAAC,kCAAkC,CAAC,CAAC;QACtD,CAAC;QACD,OAAO,IAAI,4BAAY,CAAC,IAAI,kCAAe,CAAC;YAC1C,UAAU,EAAE,MAAM,CAAC,MAAM;YACzB,QAAQ,EAAE,MAAM,CAAC,QAAQ;YACzB,QAAQ,EAAE,MAAM,CAAC,YAAY;SAC9B,CAAC,CAAC,CAAC;IACN,CAAC;IAED,MAAM,IAAI,KAAK,CAAC,6BAA6B,QAAQ,EAAE,CAAC,CAAC;AAC3D,CAAC;AAED,IAAI,oBAAqD,CAAC;AAE1D,SAAgB,eAAe;IAC7B,IAAI,oBAAoB,KAAK,SAAS,EAAE,CAAC;QACvC,oBAAoB,GAAG,kBAAkB,EAAE,CAAC;IAC9C,CAAC;IACD,OAAO,oBAAoB,CAAC;AAC9B,CAAC"}
|
|
@@ -0,0 +1,85 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Workday Provider for ERP Connector
|
|
3
|
+
* https://community.workday.com/sites/default/files/file-hosting/restapi/index.html
|
|
4
|
+
*/
|
|
5
|
+
import { ERPProvider } from '../erp-connector';
|
|
6
|
+
import { Employee, TimeOffRequest, TimeOffBalance, PayStub, ExpenseReport, Department, JobRequisition, ERPQueryOptions, ERPResponse } from '../types';
|
|
7
|
+
export interface WorkdayProviderConfig {
|
|
8
|
+
tenantName: string;
|
|
9
|
+
username: string;
|
|
10
|
+
password: string;
|
|
11
|
+
baseUrl?: string;
|
|
12
|
+
}
|
|
13
|
+
export declare class WorkdayProvider implements ERPProvider {
|
|
14
|
+
private client;
|
|
15
|
+
constructor(config: WorkdayProviderConfig);
|
|
16
|
+
/**
|
|
17
|
+
* Get employee by ID
|
|
18
|
+
*/
|
|
19
|
+
getEmployee(employeeId: string): Promise<Employee>;
|
|
20
|
+
/**
|
|
21
|
+
* Get employees with filtering
|
|
22
|
+
*/
|
|
23
|
+
getEmployees(options?: ERPQueryOptions): Promise<ERPResponse<Employee>>;
|
|
24
|
+
/**
|
|
25
|
+
* Create employee
|
|
26
|
+
*/
|
|
27
|
+
createEmployee(employee: Omit<Employee, 'id'>): Promise<Employee>;
|
|
28
|
+
/**
|
|
29
|
+
* Update employee
|
|
30
|
+
*/
|
|
31
|
+
updateEmployee(employeeId: string, updates: Partial<Employee>): Promise<Employee>;
|
|
32
|
+
/**
|
|
33
|
+
* Request time off
|
|
34
|
+
*/
|
|
35
|
+
requestTimeOff(request: TimeOffRequest): Promise<ERPResponse<TimeOffRequest>>;
|
|
36
|
+
/**
|
|
37
|
+
* Get time off balance
|
|
38
|
+
*/
|
|
39
|
+
getTimeOffBalance(employeeId: string): Promise<TimeOffBalance[]>;
|
|
40
|
+
/**
|
|
41
|
+
* Get time off requests
|
|
42
|
+
*/
|
|
43
|
+
getTimeOffRequests(employeeId: string, options?: ERPQueryOptions): Promise<ERPResponse<TimeOffRequest>>;
|
|
44
|
+
/**
|
|
45
|
+
* Get pay stubs
|
|
46
|
+
*/
|
|
47
|
+
getPayStubs(employeeId: string, options?: ERPQueryOptions): Promise<ERPResponse<PayStub>>;
|
|
48
|
+
/**
|
|
49
|
+
* Create expense report
|
|
50
|
+
*/
|
|
51
|
+
createExpenseReport(expense: ExpenseReport): Promise<ExpenseReport>;
|
|
52
|
+
/**
|
|
53
|
+
* Get expense reports
|
|
54
|
+
*/
|
|
55
|
+
getExpenseReports(employeeId: string, options?: ERPQueryOptions): Promise<ERPResponse<ExpenseReport>>;
|
|
56
|
+
/**
|
|
57
|
+
* Get department
|
|
58
|
+
*/
|
|
59
|
+
getDepartment(departmentId: string): Promise<Department>;
|
|
60
|
+
/**
|
|
61
|
+
* Get departments
|
|
62
|
+
*/
|
|
63
|
+
getDepartments(options?: ERPQueryOptions): Promise<ERPResponse<Department>>;
|
|
64
|
+
/**
|
|
65
|
+
* Get job requisitions
|
|
66
|
+
*/
|
|
67
|
+
getJobRequisitions(options?: ERPQueryOptions): Promise<ERPResponse<JobRequisition>>;
|
|
68
|
+
/**
|
|
69
|
+
* Map Workday worker to Employee
|
|
70
|
+
*/
|
|
71
|
+
private mapWorkdayWorkerToEmployee;
|
|
72
|
+
/**
|
|
73
|
+
* Map Workday status to standard status
|
|
74
|
+
*/
|
|
75
|
+
private mapWorkdayStatus;
|
|
76
|
+
/**
|
|
77
|
+
* Map Workday expense status
|
|
78
|
+
*/
|
|
79
|
+
private mapWorkdayExpenseStatus;
|
|
80
|
+
/**
|
|
81
|
+
* Map Workday requisition status
|
|
82
|
+
*/
|
|
83
|
+
private mapWorkdayRequisitionStatus;
|
|
84
|
+
}
|
|
85
|
+
//# sourceMappingURL=workday-provider.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"workday-provider.d.ts","sourceRoot":"","sources":["../../src/providers/workday-provider.ts"],"names":[],"mappings":"AAAA;;;GAGG;AAGH,OAAO,EAAE,WAAW,EAAE,MAAM,kBAAkB,CAAC;AAC/C,OAAO,EACL,QAAQ,EACR,cAAc,EACd,cAAc,EACd,OAAO,EACP,aAAa,EACb,UAAU,EACV,cAAc,EACd,eAAe,EACf,WAAW,EACZ,MAAM,UAAU,CAAC;AAElB,MAAM,WAAW,qBAAqB;IACpC,UAAU,EAAE,MAAM,CAAC;IACnB,QAAQ,EAAE,MAAM,CAAC;IACjB,QAAQ,EAAE,MAAM,CAAC;IACjB,OAAO,CAAC,EAAE,MAAM,CAAC;CAClB;AAED,qBAAa,eAAgB,YAAW,WAAW;IACjD,OAAO,CAAC,MAAM,CAAgB;gBAElB,MAAM,EAAE,qBAAqB;IAezC;;OAEG;IACG,WAAW,CAAC,UAAU,EAAE,MAAM,GAAG,OAAO,CAAC,QAAQ,CAAC;IASxD;;OAEG;IACG,YAAY,CAAC,OAAO,CAAC,EAAE,eAAe,GAAG,OAAO,CAAC,WAAW,CAAC,QAAQ,CAAC,CAAC;IAgC7E;;OAEG;IACG,cAAc,CAAC,QAAQ,EAAE,IAAI,CAAC,QAAQ,EAAE,IAAI,CAAC,GAAG,OAAO,CAAC,QAAQ,CAAC;IAkBvE;;OAEG;IACG,cAAc,CAAC,UAAU,EAAE,MAAM,EAAE,OAAO,EAAE,OAAO,CAAC,QAAQ,CAAC,GAAG,OAAO,CAAC,QAAQ,CAAC;IAgBvF;;OAEG;IACG,cAAc,CAAC,OAAO,EAAE,cAAc,GAAG,OAAO,CAAC,WAAW,CAAC,cAAc,CAAC,CAAC;IA4BnF;;OAEG;IACG,iBAAiB,CAAC,UAAU,EAAE,MAAM,GAAG,OAAO,CAAC,cAAc,EAAE,CAAC;IAgBtE;;OAEG;IACG,kBAAkB,CAAC,UAAU,EAAE,MAAM,EAAE,OAAO,CAAC,EAAE,eAAe,GAAG,OAAO,CAAC,WAAW,CAAC,cAAc,CAAC,CAAC;IA8B7G;;OAEG;IACG,WAAW,CAAC,UAAU,EAAE,MAAM,EAAE,OAAO,CAAC,EAAE,eAAe,GAAG,OAAO,CAAC,WAAW,CAAC,OAAO,CAAC,CAAC;IAoC/F;;OAEG;IACG,mBAAmB,CAAC,OAAO,EAAE,aAAa,GAAG,OAAO,CAAC,aAAa,CAAC;IAuBzE;;OAEG;IACG,iBAAiB,CAAC,UAAU,EAAE,MAAM,EAAE,OAAO,CAAC,EAAE,eAAe,GAAG,OAAO,CAAC,WAAW,CAAC,aAAa,CAAC,CAAC;IA+B3G;;OAEG;IACG,aAAa,CAAC,YAAY,EAAE,MAAM,GAAG,OAAO,CAAC,UAAU,CAAC;IAoB9D;;OAEG;IACG,cAAc,CAAC,OAAO,CAAC,EAAE,eAAe,GAAG,OAAO,CAAC,WAAW,CAAC,UAAU,CAAC,CAAC;IA+BjF;;OAEG;IACG,kBAAkB,CAAC,OAAO,CAAC,EAAE,eAAe,GAAG,OAAO,CAAC,WAAW,CAAC,cAAc,CAAC,CAAC;IAkCzF;;OAEG;IACH,OAAO,CAAC,0BAA0B;IAqBlC;;OAEG;IACH,OAAO,CAAC,gBAAgB;IAUxB;;OAEG;IACH,OAAO,CAAC,uBAAuB;IAW/B;;OAEG;IACH,OAAO,CAAC,2BAA2B;CASpC"}
|
|
@@ -0,0 +1,448 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
/**
|
|
3
|
+
* Workday Provider for ERP Connector
|
|
4
|
+
* https://community.workday.com/sites/default/files/file-hosting/restapi/index.html
|
|
5
|
+
*/
|
|
6
|
+
var __importDefault = (this && this.__importDefault) || function (mod) {
|
|
7
|
+
return (mod && mod.__esModule) ? mod : { "default": mod };
|
|
8
|
+
};
|
|
9
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
10
|
+
exports.WorkdayProvider = void 0;
|
|
11
|
+
const axios_1 = __importDefault(require("axios"));
|
|
12
|
+
class WorkdayProvider {
|
|
13
|
+
constructor(config) {
|
|
14
|
+
const baseURL = config.baseUrl || `https://wd2-impl-services1.workday.com/ccx/service/${config.tenantName}`;
|
|
15
|
+
this.client = axios_1.default.create({
|
|
16
|
+
baseURL,
|
|
17
|
+
auth: {
|
|
18
|
+
username: config.username,
|
|
19
|
+
password: config.password,
|
|
20
|
+
},
|
|
21
|
+
headers: {
|
|
22
|
+
'Content-Type': 'application/json',
|
|
23
|
+
},
|
|
24
|
+
});
|
|
25
|
+
}
|
|
26
|
+
/**
|
|
27
|
+
* Get employee by ID
|
|
28
|
+
*/
|
|
29
|
+
async getEmployee(employeeId) {
|
|
30
|
+
try {
|
|
31
|
+
const response = await this.client.get(`/Human_Resources/v1/workers/${employeeId}`);
|
|
32
|
+
return this.mapWorkdayWorkerToEmployee(response.data);
|
|
33
|
+
}
|
|
34
|
+
catch (error) {
|
|
35
|
+
throw new Error(`Failed to get employee: ${error.message}`);
|
|
36
|
+
}
|
|
37
|
+
}
|
|
38
|
+
/**
|
|
39
|
+
* Get employees with filtering
|
|
40
|
+
*/
|
|
41
|
+
async getEmployees(options) {
|
|
42
|
+
var _a, _b, _c, _d;
|
|
43
|
+
try {
|
|
44
|
+
const params = {
|
|
45
|
+
limit: (options === null || options === void 0 ? void 0 : options.limit) || 50,
|
|
46
|
+
offset: (options === null || options === void 0 ? void 0 : options.page) ? (options.page - 1) * (options.limit || 50) : 0,
|
|
47
|
+
};
|
|
48
|
+
const response = await this.client.get('/Human_Resources/v1/workers', { params });
|
|
49
|
+
const employees = ((_b = (_a = response.data) === null || _a === void 0 ? void 0 : _a.data) === null || _b === void 0 ? void 0 : _b.map((worker) => this.mapWorkdayWorkerToEmployee(worker))) || [];
|
|
50
|
+
return {
|
|
51
|
+
success: true,
|
|
52
|
+
data: employees,
|
|
53
|
+
total: (_c = response.data) === null || _c === void 0 ? void 0 : _c.total,
|
|
54
|
+
page: options === null || options === void 0 ? void 0 : options.page,
|
|
55
|
+
limit: options === null || options === void 0 ? void 0 : options.limit,
|
|
56
|
+
};
|
|
57
|
+
}
|
|
58
|
+
catch (error) {
|
|
59
|
+
return {
|
|
60
|
+
success: false,
|
|
61
|
+
error: {
|
|
62
|
+
code: 'WORKDAY_ERROR',
|
|
63
|
+
message: error.message,
|
|
64
|
+
details: (_d = error.response) === null || _d === void 0 ? void 0 : _d.data,
|
|
65
|
+
},
|
|
66
|
+
};
|
|
67
|
+
}
|
|
68
|
+
}
|
|
69
|
+
/**
|
|
70
|
+
* Create employee
|
|
71
|
+
*/
|
|
72
|
+
async createEmployee(employee) {
|
|
73
|
+
try {
|
|
74
|
+
const payload = {
|
|
75
|
+
firstName: employee.firstName,
|
|
76
|
+
lastName: employee.lastName,
|
|
77
|
+
email: employee.email,
|
|
78
|
+
jobProfile: employee.jobTitle,
|
|
79
|
+
location: employee.workLocation,
|
|
80
|
+
hireDate: employee.hireDate,
|
|
81
|
+
};
|
|
82
|
+
const response = await this.client.post('/Human_Resources/v1/workers', payload);
|
|
83
|
+
return this.mapWorkdayWorkerToEmployee(response.data);
|
|
84
|
+
}
|
|
85
|
+
catch (error) {
|
|
86
|
+
throw new Error(`Failed to create employee: ${error.message}`);
|
|
87
|
+
}
|
|
88
|
+
}
|
|
89
|
+
/**
|
|
90
|
+
* Update employee
|
|
91
|
+
*/
|
|
92
|
+
async updateEmployee(employeeId, updates) {
|
|
93
|
+
try {
|
|
94
|
+
const payload = {};
|
|
95
|
+
if (updates.email)
|
|
96
|
+
payload.email = updates.email;
|
|
97
|
+
if (updates.jobTitle)
|
|
98
|
+
payload.jobProfile = updates.jobTitle;
|
|
99
|
+
if (updates.department)
|
|
100
|
+
payload.organization = updates.department;
|
|
101
|
+
if (updates.workLocation)
|
|
102
|
+
payload.location = updates.workLocation;
|
|
103
|
+
const response = await this.client.patch(`/Human_Resources/v1/workers/${employeeId}`, payload);
|
|
104
|
+
return this.mapWorkdayWorkerToEmployee(response.data);
|
|
105
|
+
}
|
|
106
|
+
catch (error) {
|
|
107
|
+
throw new Error(`Failed to update employee: ${error.message}`);
|
|
108
|
+
}
|
|
109
|
+
}
|
|
110
|
+
/**
|
|
111
|
+
* Request time off
|
|
112
|
+
*/
|
|
113
|
+
async requestTimeOff(request) {
|
|
114
|
+
var _a;
|
|
115
|
+
try {
|
|
116
|
+
const payload = {
|
|
117
|
+
worker: { id: request.employeeId },
|
|
118
|
+
timeOffType: request.type,
|
|
119
|
+
from: request.startDate,
|
|
120
|
+
to: request.endDate,
|
|
121
|
+
comment: request.reason,
|
|
122
|
+
};
|
|
123
|
+
await this.client.post('/Absence_Management/v1/timeOffEntries', payload);
|
|
124
|
+
return {
|
|
125
|
+
success: true,
|
|
126
|
+
data: [Object.assign(Object.assign({}, request), { status: 'pending' })],
|
|
127
|
+
};
|
|
128
|
+
}
|
|
129
|
+
catch (error) {
|
|
130
|
+
return {
|
|
131
|
+
success: false,
|
|
132
|
+
error: {
|
|
133
|
+
code: 'WORKDAY_ERROR',
|
|
134
|
+
message: error.message,
|
|
135
|
+
details: (_a = error.response) === null || _a === void 0 ? void 0 : _a.data,
|
|
136
|
+
},
|
|
137
|
+
};
|
|
138
|
+
}
|
|
139
|
+
}
|
|
140
|
+
/**
|
|
141
|
+
* Get time off balance
|
|
142
|
+
*/
|
|
143
|
+
async getTimeOffBalance(employeeId) {
|
|
144
|
+
var _a, _b;
|
|
145
|
+
try {
|
|
146
|
+
const response = await this.client.get(`/Absence_Management/v1/workers/${employeeId}/timeOffBalances`);
|
|
147
|
+
return ((_b = (_a = response.data) === null || _a === void 0 ? void 0 : _a.data) === null || _b === void 0 ? void 0 : _b.map((balance) => {
|
|
148
|
+
var _a;
|
|
149
|
+
return ({
|
|
150
|
+
employeeId,
|
|
151
|
+
type: ((_a = balance.timeOffType) === null || _a === void 0 ? void 0 : _a.descriptor) || 'unknown',
|
|
152
|
+
balance: balance.balance || 0,
|
|
153
|
+
unit: balance.unit === 'Days' ? 'days' : 'hours',
|
|
154
|
+
accrualRate: balance.accrualRate,
|
|
155
|
+
});
|
|
156
|
+
})) || [];
|
|
157
|
+
}
|
|
158
|
+
catch (error) {
|
|
159
|
+
throw new Error(`Failed to get time off balance: ${error.message}`);
|
|
160
|
+
}
|
|
161
|
+
}
|
|
162
|
+
/**
|
|
163
|
+
* Get time off requests
|
|
164
|
+
*/
|
|
165
|
+
async getTimeOffRequests(employeeId, options) {
|
|
166
|
+
var _a, _b;
|
|
167
|
+
try {
|
|
168
|
+
const response = await this.client.get(`/Absence_Management/v1/workers/${employeeId}/timeOffEntries`);
|
|
169
|
+
const requests = ((_b = (_a = response.data) === null || _a === void 0 ? void 0 : _a.data) === null || _b === void 0 ? void 0 : _b.map((entry) => {
|
|
170
|
+
var _a, _b;
|
|
171
|
+
return ({
|
|
172
|
+
employeeId,
|
|
173
|
+
type: ((_b = (_a = entry.timeOffType) === null || _a === void 0 ? void 0 : _a.descriptor) === null || _b === void 0 ? void 0 : _b.toLowerCase()) || 'other',
|
|
174
|
+
startDate: new Date(entry.from),
|
|
175
|
+
endDate: new Date(entry.to),
|
|
176
|
+
hours: entry.hours,
|
|
177
|
+
reason: entry.comment,
|
|
178
|
+
status: this.mapWorkdayStatus(entry.status),
|
|
179
|
+
});
|
|
180
|
+
})) || [];
|
|
181
|
+
return {
|
|
182
|
+
success: true,
|
|
183
|
+
data: requests,
|
|
184
|
+
total: requests.length,
|
|
185
|
+
};
|
|
186
|
+
}
|
|
187
|
+
catch (error) {
|
|
188
|
+
return {
|
|
189
|
+
success: false,
|
|
190
|
+
error: {
|
|
191
|
+
code: 'WORKDAY_ERROR',
|
|
192
|
+
message: error.message,
|
|
193
|
+
},
|
|
194
|
+
};
|
|
195
|
+
}
|
|
196
|
+
}
|
|
197
|
+
/**
|
|
198
|
+
* Get pay stubs
|
|
199
|
+
*/
|
|
200
|
+
async getPayStubs(employeeId, options) {
|
|
201
|
+
var _a, _b;
|
|
202
|
+
try {
|
|
203
|
+
const response = await this.client.get(`/Payroll/v1/workers/${employeeId}/payStatements`);
|
|
204
|
+
const payStubs = ((_b = (_a = response.data) === null || _a === void 0 ? void 0 : _a.data) === null || _b === void 0 ? void 0 : _b.map((statement) => {
|
|
205
|
+
var _a;
|
|
206
|
+
return ({
|
|
207
|
+
id: statement.id,
|
|
208
|
+
employeeId,
|
|
209
|
+
payPeriodStart: new Date(statement.periodStart),
|
|
210
|
+
payPeriodEnd: new Date(statement.periodEnd),
|
|
211
|
+
payDate: new Date(statement.payDate),
|
|
212
|
+
grossPay: statement.grossPay,
|
|
213
|
+
netPay: statement.netPay,
|
|
214
|
+
deductions: ((_a = statement.deductions) === null || _a === void 0 ? void 0 : _a.map((d) => ({
|
|
215
|
+
type: d.type,
|
|
216
|
+
amount: d.amount,
|
|
217
|
+
description: d.description,
|
|
218
|
+
}))) || [],
|
|
219
|
+
currency: statement.currency || 'USD',
|
|
220
|
+
});
|
|
221
|
+
})) || [];
|
|
222
|
+
return {
|
|
223
|
+
success: true,
|
|
224
|
+
data: payStubs,
|
|
225
|
+
total: payStubs.length,
|
|
226
|
+
};
|
|
227
|
+
}
|
|
228
|
+
catch (error) {
|
|
229
|
+
return {
|
|
230
|
+
success: false,
|
|
231
|
+
error: {
|
|
232
|
+
code: 'WORKDAY_ERROR',
|
|
233
|
+
message: error.message,
|
|
234
|
+
},
|
|
235
|
+
};
|
|
236
|
+
}
|
|
237
|
+
}
|
|
238
|
+
/**
|
|
239
|
+
* Create expense report
|
|
240
|
+
*/
|
|
241
|
+
async createExpenseReport(expense) {
|
|
242
|
+
try {
|
|
243
|
+
const payload = {
|
|
244
|
+
worker: { id: expense.employeeId },
|
|
245
|
+
date: expense.date,
|
|
246
|
+
description: expense.description,
|
|
247
|
+
amount: expense.amount,
|
|
248
|
+
currency: expense.currency,
|
|
249
|
+
category: expense.category,
|
|
250
|
+
};
|
|
251
|
+
const response = await this.client.post('/Expense/v1/expenseReports', payload);
|
|
252
|
+
return Object.assign(Object.assign({ id: response.data.id }, expense), { status: 'submitted' });
|
|
253
|
+
}
|
|
254
|
+
catch (error) {
|
|
255
|
+
throw new Error(`Failed to create expense report: ${error.message}`);
|
|
256
|
+
}
|
|
257
|
+
}
|
|
258
|
+
/**
|
|
259
|
+
* Get expense reports
|
|
260
|
+
*/
|
|
261
|
+
async getExpenseReports(employeeId, options) {
|
|
262
|
+
var _a, _b;
|
|
263
|
+
try {
|
|
264
|
+
const response = await this.client.get(`/Expense/v1/workers/${employeeId}/expenseReports`);
|
|
265
|
+
const reports = ((_b = (_a = response.data) === null || _a === void 0 ? void 0 : _a.data) === null || _b === void 0 ? void 0 : _b.map((report) => ({
|
|
266
|
+
id: report.id,
|
|
267
|
+
employeeId,
|
|
268
|
+
date: new Date(report.date),
|
|
269
|
+
description: report.description,
|
|
270
|
+
amount: report.amount,
|
|
271
|
+
currency: report.currency || 'USD',
|
|
272
|
+
category: report.category,
|
|
273
|
+
status: this.mapWorkdayExpenseStatus(report.status),
|
|
274
|
+
}))) || [];
|
|
275
|
+
return {
|
|
276
|
+
success: true,
|
|
277
|
+
data: reports,
|
|
278
|
+
total: reports.length,
|
|
279
|
+
};
|
|
280
|
+
}
|
|
281
|
+
catch (error) {
|
|
282
|
+
return {
|
|
283
|
+
success: false,
|
|
284
|
+
error: {
|
|
285
|
+
code: 'WORKDAY_ERROR',
|
|
286
|
+
message: error.message,
|
|
287
|
+
},
|
|
288
|
+
};
|
|
289
|
+
}
|
|
290
|
+
}
|
|
291
|
+
/**
|
|
292
|
+
* Get department
|
|
293
|
+
*/
|
|
294
|
+
async getDepartment(departmentId) {
|
|
295
|
+
try {
|
|
296
|
+
const response = await this.client.get(`/Human_Resources/v1/organizations/${departmentId}`);
|
|
297
|
+
const org = response.data;
|
|
298
|
+
return {
|
|
299
|
+
id: org.id,
|
|
300
|
+
name: org.name,
|
|
301
|
+
code: org.code,
|
|
302
|
+
manager: org.manager ? {
|
|
303
|
+
id: org.manager.id,
|
|
304
|
+
name: org.manager.descriptor,
|
|
305
|
+
} : undefined,
|
|
306
|
+
employeeCount: org.headcount,
|
|
307
|
+
};
|
|
308
|
+
}
|
|
309
|
+
catch (error) {
|
|
310
|
+
throw new Error(`Failed to get department: ${error.message}`);
|
|
311
|
+
}
|
|
312
|
+
}
|
|
313
|
+
/**
|
|
314
|
+
* Get departments
|
|
315
|
+
*/
|
|
316
|
+
async getDepartments(options) {
|
|
317
|
+
var _a, _b;
|
|
318
|
+
try {
|
|
319
|
+
const response = await this.client.get('/Human_Resources/v1/organizations');
|
|
320
|
+
const departments = ((_b = (_a = response.data) === null || _a === void 0 ? void 0 : _a.data) === null || _b === void 0 ? void 0 : _b.map((org) => ({
|
|
321
|
+
id: org.id,
|
|
322
|
+
name: org.name,
|
|
323
|
+
code: org.code,
|
|
324
|
+
manager: org.manager ? {
|
|
325
|
+
id: org.manager.id,
|
|
326
|
+
name: org.manager.descriptor,
|
|
327
|
+
} : undefined,
|
|
328
|
+
employeeCount: org.headcount,
|
|
329
|
+
}))) || [];
|
|
330
|
+
return {
|
|
331
|
+
success: true,
|
|
332
|
+
data: departments,
|
|
333
|
+
total: departments.length,
|
|
334
|
+
};
|
|
335
|
+
}
|
|
336
|
+
catch (error) {
|
|
337
|
+
return {
|
|
338
|
+
success: false,
|
|
339
|
+
error: {
|
|
340
|
+
code: 'WORKDAY_ERROR',
|
|
341
|
+
message: error.message,
|
|
342
|
+
},
|
|
343
|
+
};
|
|
344
|
+
}
|
|
345
|
+
}
|
|
346
|
+
/**
|
|
347
|
+
* Get job requisitions
|
|
348
|
+
*/
|
|
349
|
+
async getJobRequisitions(options) {
|
|
350
|
+
var _a, _b;
|
|
351
|
+
try {
|
|
352
|
+
const response = await this.client.get('/Recruiting/v1/jobRequisitions');
|
|
353
|
+
const requisitions = ((_b = (_a = response.data) === null || _a === void 0 ? void 0 : _a.data) === null || _b === void 0 ? void 0 : _b.map((req) => {
|
|
354
|
+
var _a;
|
|
355
|
+
return ({
|
|
356
|
+
id: req.id,
|
|
357
|
+
title: req.title,
|
|
358
|
+
department: ((_a = req.organization) === null || _a === void 0 ? void 0 : _a.descriptor) || '',
|
|
359
|
+
status: this.mapWorkdayRequisitionStatus(req.status),
|
|
360
|
+
openDate: req.openDate ? new Date(req.openDate) : undefined,
|
|
361
|
+
closeDate: req.closeDate ? new Date(req.closeDate) : undefined,
|
|
362
|
+
hiringManager: req.hiringManager ? {
|
|
363
|
+
id: req.hiringManager.id,
|
|
364
|
+
name: req.hiringManager.descriptor,
|
|
365
|
+
} : undefined,
|
|
366
|
+
description: req.description,
|
|
367
|
+
});
|
|
368
|
+
})) || [];
|
|
369
|
+
return {
|
|
370
|
+
success: true,
|
|
371
|
+
data: requisitions,
|
|
372
|
+
total: requisitions.length,
|
|
373
|
+
};
|
|
374
|
+
}
|
|
375
|
+
catch (error) {
|
|
376
|
+
return {
|
|
377
|
+
success: false,
|
|
378
|
+
error: {
|
|
379
|
+
code: 'WORKDAY_ERROR',
|
|
380
|
+
message: error.message,
|
|
381
|
+
},
|
|
382
|
+
};
|
|
383
|
+
}
|
|
384
|
+
}
|
|
385
|
+
/**
|
|
386
|
+
* Map Workday worker to Employee
|
|
387
|
+
*/
|
|
388
|
+
mapWorkdayWorkerToEmployee(worker) {
|
|
389
|
+
var _a, _b;
|
|
390
|
+
return {
|
|
391
|
+
id: worker.id,
|
|
392
|
+
employeeId: worker.employeeID,
|
|
393
|
+
email: worker.primaryWorkEmail,
|
|
394
|
+
firstName: worker.legalFirstName || worker.preferredFirstName,
|
|
395
|
+
lastName: worker.legalLastName || worker.preferredLastName,
|
|
396
|
+
displayName: worker.preferredName,
|
|
397
|
+
jobTitle: worker.businessTitle,
|
|
398
|
+
department: (_a = worker.primarySupervisoryOrganization) === null || _a === void 0 ? void 0 : _a.descriptor,
|
|
399
|
+
manager: worker.manager ? {
|
|
400
|
+
id: worker.manager.id,
|
|
401
|
+
name: worker.manager.descriptor,
|
|
402
|
+
} : undefined,
|
|
403
|
+
hireDate: worker.hireDate ? new Date(worker.hireDate) : undefined,
|
|
404
|
+
status: worker.activeStatusCode === 'Active' ? 'active' : 'inactive',
|
|
405
|
+
workLocation: (_b = worker.primaryWorkLocation) === null || _b === void 0 ? void 0 : _b.descriptor,
|
|
406
|
+
workPhone: worker.primaryWorkPhone,
|
|
407
|
+
};
|
|
408
|
+
}
|
|
409
|
+
/**
|
|
410
|
+
* Map Workday status to standard status
|
|
411
|
+
*/
|
|
412
|
+
mapWorkdayStatus(status) {
|
|
413
|
+
const statusMap = {
|
|
414
|
+
'In Progress': 'pending',
|
|
415
|
+
'Approved': 'approved',
|
|
416
|
+
'Denied': 'denied',
|
|
417
|
+
'Rejected': 'denied',
|
|
418
|
+
};
|
|
419
|
+
return statusMap[status] || 'pending';
|
|
420
|
+
}
|
|
421
|
+
/**
|
|
422
|
+
* Map Workday expense status
|
|
423
|
+
*/
|
|
424
|
+
mapWorkdayExpenseStatus(status) {
|
|
425
|
+
const statusMap = {
|
|
426
|
+
'Draft': 'draft',
|
|
427
|
+
'In Progress': 'submitted',
|
|
428
|
+
'Approved': 'approved',
|
|
429
|
+
'Rejected': 'rejected',
|
|
430
|
+
'Paid': 'paid',
|
|
431
|
+
};
|
|
432
|
+
return statusMap[status] || 'draft';
|
|
433
|
+
}
|
|
434
|
+
/**
|
|
435
|
+
* Map Workday requisition status
|
|
436
|
+
*/
|
|
437
|
+
mapWorkdayRequisitionStatus(status) {
|
|
438
|
+
const statusMap = {
|
|
439
|
+
'Draft': 'draft',
|
|
440
|
+
'Open': 'open',
|
|
441
|
+
'Closed': 'closed',
|
|
442
|
+
'Filled': 'filled',
|
|
443
|
+
};
|
|
444
|
+
return statusMap[status] || 'draft';
|
|
445
|
+
}
|
|
446
|
+
}
|
|
447
|
+
exports.WorkdayProvider = WorkdayProvider;
|
|
448
|
+
//# sourceMappingURL=workday-provider.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"workday-provider.js","sourceRoot":"","sources":["../../src/providers/workday-provider.ts"],"names":[],"mappings":"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"}
|
package/lib/types.d.ts
ADDED
|
@@ -0,0 +1,146 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* ERP Connector Types
|
|
3
|
+
* Enterprise Resource Planning - HR and Finance operations
|
|
4
|
+
*/
|
|
5
|
+
/**
|
|
6
|
+
* Employee data
|
|
7
|
+
*/
|
|
8
|
+
export interface Employee {
|
|
9
|
+
id: string;
|
|
10
|
+
employeeId?: string;
|
|
11
|
+
email: string;
|
|
12
|
+
firstName: string;
|
|
13
|
+
lastName: string;
|
|
14
|
+
displayName?: string;
|
|
15
|
+
jobTitle?: string;
|
|
16
|
+
department?: string;
|
|
17
|
+
manager?: {
|
|
18
|
+
id: string;
|
|
19
|
+
name: string;
|
|
20
|
+
};
|
|
21
|
+
hireDate?: Date;
|
|
22
|
+
terminationDate?: Date;
|
|
23
|
+
status: 'active' | 'inactive' | 'terminated';
|
|
24
|
+
workLocation?: string;
|
|
25
|
+
workPhone?: string;
|
|
26
|
+
customFields?: Record<string, any>;
|
|
27
|
+
}
|
|
28
|
+
/**
|
|
29
|
+
* Time off request
|
|
30
|
+
*/
|
|
31
|
+
export interface TimeOffRequest {
|
|
32
|
+
employeeId: string;
|
|
33
|
+
type: 'vacation' | 'sick' | 'personal' | 'other';
|
|
34
|
+
startDate: Date;
|
|
35
|
+
endDate: Date;
|
|
36
|
+
hours?: number;
|
|
37
|
+
reason?: string;
|
|
38
|
+
status?: 'pending' | 'approved' | 'denied';
|
|
39
|
+
}
|
|
40
|
+
/**
|
|
41
|
+
* Time off balance
|
|
42
|
+
*/
|
|
43
|
+
export interface TimeOffBalance {
|
|
44
|
+
employeeId: string;
|
|
45
|
+
type: string;
|
|
46
|
+
balance: number;
|
|
47
|
+
unit: 'hours' | 'days';
|
|
48
|
+
accrualRate?: number;
|
|
49
|
+
}
|
|
50
|
+
/**
|
|
51
|
+
* Pay stub information
|
|
52
|
+
*/
|
|
53
|
+
export interface PayStub {
|
|
54
|
+
id: string;
|
|
55
|
+
employeeId: string;
|
|
56
|
+
payPeriodStart: Date;
|
|
57
|
+
payPeriodEnd: Date;
|
|
58
|
+
payDate: Date;
|
|
59
|
+
grossPay: number;
|
|
60
|
+
netPay: number;
|
|
61
|
+
deductions: Array<{
|
|
62
|
+
type: string;
|
|
63
|
+
amount: number;
|
|
64
|
+
description?: string;
|
|
65
|
+
}>;
|
|
66
|
+
currency: string;
|
|
67
|
+
}
|
|
68
|
+
/**
|
|
69
|
+
* Expense report
|
|
70
|
+
*/
|
|
71
|
+
export interface ExpenseReport {
|
|
72
|
+
id?: string;
|
|
73
|
+
employeeId: string;
|
|
74
|
+
date: Date;
|
|
75
|
+
description: string;
|
|
76
|
+
amount: number;
|
|
77
|
+
currency: string;
|
|
78
|
+
category: string;
|
|
79
|
+
status?: 'draft' | 'submitted' | 'approved' | 'rejected' | 'paid';
|
|
80
|
+
receipts?: Array<{
|
|
81
|
+
url: string;
|
|
82
|
+
filename: string;
|
|
83
|
+
}>;
|
|
84
|
+
}
|
|
85
|
+
/**
|
|
86
|
+
* Department/Cost center
|
|
87
|
+
*/
|
|
88
|
+
export interface Department {
|
|
89
|
+
id: string;
|
|
90
|
+
name: string;
|
|
91
|
+
code?: string;
|
|
92
|
+
manager?: {
|
|
93
|
+
id: string;
|
|
94
|
+
name: string;
|
|
95
|
+
};
|
|
96
|
+
parentDepartment?: {
|
|
97
|
+
id: string;
|
|
98
|
+
name: string;
|
|
99
|
+
};
|
|
100
|
+
employeeCount?: number;
|
|
101
|
+
}
|
|
102
|
+
/**
|
|
103
|
+
* Job requisition/posting
|
|
104
|
+
*/
|
|
105
|
+
export interface JobRequisition {
|
|
106
|
+
id: string;
|
|
107
|
+
title: string;
|
|
108
|
+
department: string;
|
|
109
|
+
status: 'draft' | 'open' | 'closed' | 'filled';
|
|
110
|
+
openDate?: Date;
|
|
111
|
+
closeDate?: Date;
|
|
112
|
+
hiringManager?: {
|
|
113
|
+
id: string;
|
|
114
|
+
name: string;
|
|
115
|
+
};
|
|
116
|
+
description?: string;
|
|
117
|
+
requirements?: string[];
|
|
118
|
+
}
|
|
119
|
+
/**
|
|
120
|
+
* ERP query options
|
|
121
|
+
*/
|
|
122
|
+
export interface ERPQueryOptions {
|
|
123
|
+
page?: number;
|
|
124
|
+
limit?: number;
|
|
125
|
+
filters?: Record<string, any>;
|
|
126
|
+
sort?: {
|
|
127
|
+
field: string;
|
|
128
|
+
order: 'asc' | 'desc';
|
|
129
|
+
};
|
|
130
|
+
}
|
|
131
|
+
/**
|
|
132
|
+
* ERP response with pagination
|
|
133
|
+
*/
|
|
134
|
+
export interface ERPResponse<T> {
|
|
135
|
+
success: boolean;
|
|
136
|
+
data?: T[];
|
|
137
|
+
total?: number;
|
|
138
|
+
page?: number;
|
|
139
|
+
limit?: number;
|
|
140
|
+
error?: {
|
|
141
|
+
code: string;
|
|
142
|
+
message: string;
|
|
143
|
+
details?: any;
|
|
144
|
+
};
|
|
145
|
+
}
|
|
146
|
+
//# sourceMappingURL=types.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../src/types.ts"],"names":[],"mappings":"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"}
|
package/lib/types.js
ADDED
package/lib/types.js.map
ADDED
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"types.js","sourceRoot":"","sources":["../src/types.ts"],"names":[],"mappings":";AAAA;;;GAGG"}
|
package/package.json
ADDED
|
@@ -0,0 +1,30 @@
|
|
|
1
|
+
{
|
|
2
|
+
"name": "@xbg.solutions/utils-erp-connector",
|
|
3
|
+
"version": "1.0.0",
|
|
4
|
+
"description": "ERP integration with Workday",
|
|
5
|
+
"main": "lib/index.js",
|
|
6
|
+
"types": "lib/index.d.ts",
|
|
7
|
+
"files": [
|
|
8
|
+
"lib"
|
|
9
|
+
],
|
|
10
|
+
"scripts": {
|
|
11
|
+
"build": "tsc",
|
|
12
|
+
"build:watch": "tsc --watch",
|
|
13
|
+
"clean": "rm -rf lib",
|
|
14
|
+
"prepublishOnly": "npm run build"
|
|
15
|
+
},
|
|
16
|
+
"dependencies": {
|
|
17
|
+
"@xbg/utils-logger": "^1.0.0",
|
|
18
|
+
"axios": "^1.6.2"
|
|
19
|
+
},
|
|
20
|
+
"devDependencies": {
|
|
21
|
+
"@types/node": "^20.11.0",
|
|
22
|
+
"typescript": "^5.3.3"
|
|
23
|
+
},
|
|
24
|
+
"engines": {
|
|
25
|
+
"node": "22"
|
|
26
|
+
},
|
|
27
|
+
"publishConfig": {
|
|
28
|
+
"access": "public"
|
|
29
|
+
}
|
|
30
|
+
}
|