@feedmepos/mf-hrm-portal 2.3.0-dev.8 → 2.3.0-dev.9
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/dist/{ApprovalCodeList-D5E_FN3f.js → ApprovalCodeList-BDpxEJpC.js} +2 -2
- package/dist/{AuditLogList-CqqiS2xW.js → AuditLogList-Dgwj1gz8.js} +3 -3
- package/dist/{ConditionBuilderForm.vue_vue_type_script_setup_true_lang-DC_oQTsP.js → ConditionBuilderForm.vue_vue_type_script_setup_true_lang-BBK2gl7r.js} +2 -2
- package/dist/{EmployeeList-ChMlGxmu.js → EmployeeList-C8cbVcmY.js} +4 -4
- package/dist/{GrantUserList-DA26W3K3.js → GrantUserList-zul0_Dlm.js} +3 -3
- package/dist/{Main-B27Qx8R2.js → Main-5TsFTFpc.js} +5 -5
- package/dist/{Main-C0gVAR92.js → Main-Cjo4FMZZ.js} +2 -2
- package/dist/{Main-m39gMG-a.js → Main-DSr9KbjT.js} +9 -9
- package/dist/{PermissionSetList-mdA65jmw.js → PermissionSetList-CDhiiu37.js} +5 -5
- package/dist/{PortalPermissionEditor.vue_vue_type_script_setup_true_lang-Dp6bdEZp.js → PortalPermissionEditor.vue_vue_type_script_setup_true_lang-DoK944l0.js} +1034 -1034
- package/dist/{RoleList-BPayuLxA.js → RoleList-DEbOPQD_.js} +7 -7
- package/dist/ScheduleAddPositionModal.vue_vue_type_script_setup_true_lang-Cx9jFgBS.js +492 -0
- package/dist/ScheduleGeneralPage-B8PWNsc2.js +776 -0
- package/dist/{ScheduleModal.vue_vue_type_script_setup_true_lang-ABipaQiR.js → ScheduleModal.vue_vue_type_script_setup_true_lang-V1sZ_xhO.js} +765 -717
- package/dist/SchedulePage-ndLByVBl.js +17785 -0
- package/dist/{SchedulePositionPage-BUQy-Itg.js → SchedulePositionPage-Cuv4ydOK.js} +22 -22
- package/dist/{TeamMemberList-CIlvRlf8.js → TeamMemberList-DpCGqHCk.js} +6 -6
- package/dist/{TimesheetList-DFAfhWYG.js → TimesheetList-B7HAC5zS.js} +5 -5
- package/dist/{TimesheetList.vue_vue_type_style_index_0_scoped_63294af2_lang-QGzHuY7V.js → TimesheetList.vue_vue_type_style_index_0_scoped_63294af2_lang-BGD6m5M-.js} +2 -2
- package/dist/{app-C_EW9DFr.js → app-Lh0cqgHy.js} +8 -8
- package/dist/app.js +1 -1
- package/dist/{dayjs.min-ibysRBBa.js → dayjs.min-joq4stsa.js} +1 -1
- package/dist/{employee-B1BQc4gB.js → employee-BPmp9c6i.js} +3 -3
- package/dist/{iteration-DQVB-iz0.js → iteration-jvdTHQUx.js} +1 -1
- package/dist/{lodash-DOj41a0A.js → lodash-CIAEpr9s.js} +1 -1
- package/dist/{role-B9MSLu4B.js → role-Dd1TUMhn.js} +1 -1
- package/dist/{rule-e6okoXK6.js → rule-DmxI7qEY.js} +2 -2
- package/dist/src/api/schedule/index.d.ts +2 -1
- package/dist/src/types/schedule.d.ts +3 -4
- package/dist/src/views/scheduling/components/ScheduleAreaRows.vue.d.ts +0 -8
- package/dist/src/views/scheduling/components/ScheduleBoardAreaRows.vue.d.ts +0 -5
- package/dist/src/views/scheduling/components/ScheduleBoardEditOverlays.vue.d.ts +0 -2
- package/dist/src/views/scheduling/components/ScheduleBoardEmployeeRows.vue.d.ts +0 -7
- package/dist/src/views/scheduling/components/ScheduleBoardInteractionOverlays.vue.d.ts +0 -6
- package/dist/src/views/scheduling/components/ScheduleContextMenu.vue.d.ts +1 -5
- package/dist/src/views/scheduling/components/ScheduleSelect.vue.d.ts +10 -0
- package/dist/src/views/scheduling/components/ScheduleStaffRows.vue.d.ts +0 -10
- package/dist/src/views/scheduling/composables/schedule-add-employee-form.d.ts +12 -8
- package/dist/src/views/scheduling/composables/useScheduleAddEmployee.d.ts +21 -9
- package/dist/src/views/scheduling/composables/useScheduleAreaBoard.d.ts +0 -13
- package/dist/src/views/scheduling/composables/useScheduleAreaDragDrop.d.ts +2 -8
- package/dist/src/views/scheduling/composables/useScheduleAutoSchedule.d.ts +3 -0
- package/dist/src/views/scheduling/composables/useScheduleBoard.d.ts +29 -4
- package/dist/src/views/scheduling/composables/useScheduleDayTimeline.d.ts +0 -3
- package/dist/src/views/scheduling/composables/useScheduleDemand.d.ts +3 -5
- package/dist/src/views/scheduling/composables/useScheduleDemandSheet.d.ts +11 -3
- package/dist/src/views/scheduling/composables/useScheduleEmployeeAccess.d.ts +7 -2
- package/dist/src/views/scheduling/composables/useScheduleEmployeeAvailability.d.ts +1 -1
- package/dist/src/views/scheduling/composables/useScheduleEmployeeCandidates.d.ts +1 -0
- package/dist/src/views/scheduling/composables/useScheduleEmployeePersistence.d.ts +4 -0
- package/dist/src/views/scheduling/composables/useScheduleEmployeeValidation.d.ts +2 -0
- package/dist/src/views/scheduling/composables/useScheduleGapPopover.d.ts +2 -0
- package/dist/src/views/scheduling/composables/useScheduleOnboardingEmployees.d.ts +21 -3
- package/dist/src/views/scheduling/composables/useScheduleOnboardingWizard.d.ts +99 -22
- package/dist/src/views/scheduling/composables/useSchedulePageOverlays.d.ts +0 -4
- package/dist/src/views/scheduling/composables/useSchedulePositionModal.d.ts +1 -0
- package/dist/src/views/scheduling/composables/useSchedulePositions.d.ts +1 -1
- package/dist/src/views/scheduling/composables/useSchedulePublish.d.ts +2 -0
- package/dist/src/views/scheduling/composables/useScheduleRoster.d.ts +24 -4
- package/dist/src/views/scheduling/composables/useScheduleSettings.d.ts +7 -2
- package/dist/src/views/scheduling/composables/useScheduleShiftActions.d.ts +12 -2
- package/dist/src/views/scheduling/composables/useScheduleShiftDraft.d.ts +1 -0
- package/dist/src/views/scheduling/composables/useScheduleShiftPopover.d.ts +15 -3
- package/dist/src/views/scheduling/country-rules/index.d.ts +4 -4
- package/dist/src/views/scheduling/data.d.ts +5 -1
- package/dist/src/views/scheduling/schedule-state.d.ts +76 -12
- package/dist/src/views/scheduling/schedule-store.d.ts +12 -5
- package/dist/src/views/scheduling/types.d.ts +22 -5
- package/dist/style.css +1 -1
- package/dist/tsconfig.app.tsbuildinfo +1 -1
- package/dist/{useReportPermissions-CJ9ey1bN.js → useReportPermissions-DM3GOFCC.js} +3 -3
- package/package.json +1 -1
- package/dist/ScheduleAddPositionModal.vue_vue_type_script_setup_true_lang-C_EQivMd.js +0 -470
- package/dist/ScheduleGeneralPage-sAqR1-hf.js +0 -666
- package/dist/SchedulePage-DhbtCR8U.js +0 -18546
- package/dist/src/views/scheduling/components/ScheduleAllShiftsRow.vue.d.ts +0 -22
- package/dist/src/views/scheduling/components/ScheduleAssignEmployeePopover.vue.d.ts +0 -6
- package/dist/src/views/scheduling/components/ScheduleStackPopover.vue.d.ts +0 -14
- package/dist/src/views/scheduling/composables/useScheduleAllShiftsRow.d.ts +0 -77
- package/dist/src/views/scheduling/composables/useScheduleAssign.d.ts +0 -124
- package/dist/src/views/scheduling/composables/useScheduleOpenShiftCard.d.ts +0 -23
|
@@ -57,8 +57,9 @@ export declare const scheduleState: {
|
|
|
57
57
|
headcount: number;
|
|
58
58
|
}[];
|
|
59
59
|
settings: {
|
|
60
|
+
settingsConfigured?: boolean | undefined;
|
|
60
61
|
overtime: {
|
|
61
|
-
|
|
62
|
+
maxHoursPerMonth: number | null;
|
|
62
63
|
};
|
|
63
64
|
payRate: {
|
|
64
65
|
NORMAL: {
|
|
@@ -74,6 +75,11 @@ export declare const scheduleState: {
|
|
|
74
75
|
};
|
|
75
76
|
};
|
|
76
77
|
setupCompleted: boolean;
|
|
78
|
+
workingHours: {
|
|
79
|
+
minHoursPerDay: number | null;
|
|
80
|
+
maxHoursPerDay: number | null;
|
|
81
|
+
maxHoursPerWeek: number | null;
|
|
82
|
+
};
|
|
77
83
|
};
|
|
78
84
|
restaurantProfile: {
|
|
79
85
|
operatingHours: {
|
|
@@ -90,10 +96,18 @@ export declare const scheduleState: {
|
|
|
90
96
|
name: string;
|
|
91
97
|
}[];
|
|
92
98
|
employees: {
|
|
99
|
+
overtime?: {
|
|
100
|
+
maxHoursPerMonth: number | null;
|
|
101
|
+
} | undefined;
|
|
102
|
+
minHoursPerDay?: number | null | undefined;
|
|
103
|
+
workingHours?: {
|
|
104
|
+
minHoursPerDay: number | null;
|
|
105
|
+
maxHoursPerDay: number | null;
|
|
106
|
+
maxHoursPerWeek: number | null;
|
|
107
|
+
} | undefined;
|
|
93
108
|
name: string;
|
|
94
109
|
employeeId: string;
|
|
95
110
|
employmentType: "FULLTIME" | "PARTTIME";
|
|
96
|
-
workingHour: number;
|
|
97
111
|
wage: {
|
|
98
112
|
type: "HOURLY" | "MONTHLY";
|
|
99
113
|
amount: number;
|
|
@@ -184,8 +198,9 @@ export declare const scheduleState: {
|
|
|
184
198
|
headcount: number;
|
|
185
199
|
}[];
|
|
186
200
|
settings: {
|
|
201
|
+
settingsConfigured?: boolean | undefined;
|
|
187
202
|
overtime: {
|
|
188
|
-
|
|
203
|
+
maxHoursPerMonth: number | null;
|
|
189
204
|
};
|
|
190
205
|
payRate: {
|
|
191
206
|
NORMAL: {
|
|
@@ -201,6 +216,11 @@ export declare const scheduleState: {
|
|
|
201
216
|
};
|
|
202
217
|
};
|
|
203
218
|
setupCompleted: boolean;
|
|
219
|
+
workingHours: {
|
|
220
|
+
minHoursPerDay: number | null;
|
|
221
|
+
maxHoursPerDay: number | null;
|
|
222
|
+
maxHoursPerWeek: number | null;
|
|
223
|
+
};
|
|
204
224
|
};
|
|
205
225
|
restaurantProfile: {
|
|
206
226
|
operatingHours: {
|
|
@@ -217,10 +237,18 @@ export declare const scheduleState: {
|
|
|
217
237
|
name: string;
|
|
218
238
|
}[];
|
|
219
239
|
employees: {
|
|
240
|
+
overtime?: {
|
|
241
|
+
maxHoursPerMonth: number | null;
|
|
242
|
+
} | undefined;
|
|
243
|
+
minHoursPerDay?: number | null | undefined;
|
|
244
|
+
workingHours?: {
|
|
245
|
+
minHoursPerDay: number | null;
|
|
246
|
+
maxHoursPerDay: number | null;
|
|
247
|
+
maxHoursPerWeek: number | null;
|
|
248
|
+
} | undefined;
|
|
220
249
|
name: string;
|
|
221
250
|
employeeId: string;
|
|
222
251
|
employmentType: "FULLTIME" | "PARTTIME";
|
|
223
|
-
workingHour: number;
|
|
224
252
|
wage: {
|
|
225
253
|
type: "HOURLY" | "MONTHLY";
|
|
226
254
|
amount: number;
|
|
@@ -344,13 +372,17 @@ export declare const scheduleState: {
|
|
|
344
372
|
overtime: number;
|
|
345
373
|
};
|
|
346
374
|
};
|
|
347
|
-
otAfterDaily: number;
|
|
348
375
|
salesForecast: number;
|
|
349
376
|
closedWeekdays: number[];
|
|
350
377
|
labourTarget: number;
|
|
351
378
|
budgetFromSales: boolean;
|
|
352
379
|
budget: number;
|
|
353
|
-
otCapHours: number;
|
|
380
|
+
otCapHours: number | null;
|
|
381
|
+
workingHours: {
|
|
382
|
+
minHoursPerDay: number | null;
|
|
383
|
+
maxHoursPerDay: number | null;
|
|
384
|
+
maxHoursPerWeek: number | null;
|
|
385
|
+
};
|
|
354
386
|
otBudget: number;
|
|
355
387
|
notify: {
|
|
356
388
|
waConnected: boolean;
|
|
@@ -413,8 +445,9 @@ export declare const payload: import("vue").ShallowRef<{
|
|
|
413
445
|
headcount: number;
|
|
414
446
|
}[];
|
|
415
447
|
settings: {
|
|
448
|
+
settingsConfigured?: boolean | undefined;
|
|
416
449
|
overtime: {
|
|
417
|
-
|
|
450
|
+
maxHoursPerMonth: number | null;
|
|
418
451
|
};
|
|
419
452
|
payRate: {
|
|
420
453
|
NORMAL: {
|
|
@@ -430,6 +463,11 @@ export declare const payload: import("vue").ShallowRef<{
|
|
|
430
463
|
};
|
|
431
464
|
};
|
|
432
465
|
setupCompleted: boolean;
|
|
466
|
+
workingHours: {
|
|
467
|
+
minHoursPerDay: number | null;
|
|
468
|
+
maxHoursPerDay: number | null;
|
|
469
|
+
maxHoursPerWeek: number | null;
|
|
470
|
+
};
|
|
433
471
|
};
|
|
434
472
|
restaurantProfile: {
|
|
435
473
|
operatingHours: {
|
|
@@ -446,10 +484,18 @@ export declare const payload: import("vue").ShallowRef<{
|
|
|
446
484
|
name: string;
|
|
447
485
|
}[];
|
|
448
486
|
employees: {
|
|
487
|
+
overtime?: {
|
|
488
|
+
maxHoursPerMonth: number | null;
|
|
489
|
+
} | undefined;
|
|
490
|
+
minHoursPerDay?: number | null | undefined;
|
|
491
|
+
workingHours?: {
|
|
492
|
+
minHoursPerDay: number | null;
|
|
493
|
+
maxHoursPerDay: number | null;
|
|
494
|
+
maxHoursPerWeek: number | null;
|
|
495
|
+
} | undefined;
|
|
449
496
|
name: string;
|
|
450
497
|
employeeId: string;
|
|
451
498
|
employmentType: "FULLTIME" | "PARTTIME";
|
|
452
|
-
workingHour: number;
|
|
453
499
|
wage: {
|
|
454
500
|
type: "HOURLY" | "MONTHLY";
|
|
455
501
|
amount: number;
|
|
@@ -540,8 +586,9 @@ export declare const payload: import("vue").ShallowRef<{
|
|
|
540
586
|
headcount: number;
|
|
541
587
|
}[];
|
|
542
588
|
settings: {
|
|
589
|
+
settingsConfigured?: boolean | undefined;
|
|
543
590
|
overtime: {
|
|
544
|
-
|
|
591
|
+
maxHoursPerMonth: number | null;
|
|
545
592
|
};
|
|
546
593
|
payRate: {
|
|
547
594
|
NORMAL: {
|
|
@@ -557,6 +604,11 @@ export declare const payload: import("vue").ShallowRef<{
|
|
|
557
604
|
};
|
|
558
605
|
};
|
|
559
606
|
setupCompleted: boolean;
|
|
607
|
+
workingHours: {
|
|
608
|
+
minHoursPerDay: number | null;
|
|
609
|
+
maxHoursPerDay: number | null;
|
|
610
|
+
maxHoursPerWeek: number | null;
|
|
611
|
+
};
|
|
560
612
|
};
|
|
561
613
|
restaurantProfile: {
|
|
562
614
|
operatingHours: {
|
|
@@ -573,10 +625,18 @@ export declare const payload: import("vue").ShallowRef<{
|
|
|
573
625
|
name: string;
|
|
574
626
|
}[];
|
|
575
627
|
employees: {
|
|
628
|
+
overtime?: {
|
|
629
|
+
maxHoursPerMonth: number | null;
|
|
630
|
+
} | undefined;
|
|
631
|
+
minHoursPerDay?: number | null | undefined;
|
|
632
|
+
workingHours?: {
|
|
633
|
+
minHoursPerDay: number | null;
|
|
634
|
+
maxHoursPerDay: number | null;
|
|
635
|
+
maxHoursPerWeek: number | null;
|
|
636
|
+
} | undefined;
|
|
576
637
|
name: string;
|
|
577
638
|
employeeId: string;
|
|
578
639
|
employmentType: "FULLTIME" | "PARTTIME";
|
|
579
|
-
workingHour: number;
|
|
580
640
|
wage: {
|
|
581
641
|
type: "HOURLY" | "MONTHLY";
|
|
582
642
|
amount: number;
|
|
@@ -678,13 +738,17 @@ export declare const payload: import("vue").ShallowRef<{
|
|
|
678
738
|
overtime: number;
|
|
679
739
|
};
|
|
680
740
|
};
|
|
681
|
-
otAfterDaily: number;
|
|
682
741
|
salesForecast: number;
|
|
683
742
|
closedWeekdays: number[];
|
|
684
743
|
labourTarget: number;
|
|
685
744
|
budgetFromSales: boolean;
|
|
686
745
|
budget: number;
|
|
687
|
-
otCapHours: number;
|
|
746
|
+
otCapHours: number | null;
|
|
747
|
+
workingHours: {
|
|
748
|
+
minHoursPerDay: number | null;
|
|
749
|
+
maxHoursPerDay: number | null;
|
|
750
|
+
maxHoursPerWeek: number | null;
|
|
751
|
+
};
|
|
688
752
|
otBudget: number;
|
|
689
753
|
notify: {
|
|
690
754
|
waConnected: boolean;
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
import ScheduleAPI from '@/api/schedule';
|
|
2
2
|
import type { IFdtoPosUserSummary } from '@/types/employee';
|
|
3
|
-
import type { FdtoScheduleAssignment, FdtoScheduleAutoScheduleApplyReq, FdtoScheduleAutoScheduleApplyResult, FdtoScheduleAutoScheduleCapabilities, FdtoScheduleAutoScheduleGenerateReq, FdtoScheduleAutoScheduleResult, FdtoScheduleBulkUpdateAssignmentStatusReq, FdtoScheduleCreateEmployeeProfileReq, FdtoScheduleSaveAssignmentReq, FdtoScheduleSavePositionReq, FdtoScheduleSaveScheduleDayReq, FdtoScheduleUpdateEmployeeProfileReq, FdtoScheduleCreateTimeOffReq, FdtoScheduleTimeOff, FdtoScheduleUpdateTimeOffStatusReq, FdtoScheduleSaveEmployeeConfigsReq, ScheduleReplaceDemandReq } from '@/types/schedule';
|
|
3
|
+
import type { FdtoScheduleAssignment, FdtoScheduleAutoScheduleApplyReq, FdtoScheduleAutoScheduleApplyResult, FdtoScheduleAutoScheduleCapabilities, FdtoScheduleAutoScheduleGenerateReq, FdtoScheduleAutoScheduleResult, FdtoScheduleBulkUpdateAssignmentStatusReq, FdtoScheduleCreateEmployeeProfileReq, FdtoScheduleSaveAssignmentReq, FdtoScheduleSavePositionReq, FdtoScheduleSaveScheduleDayReq, FdtoScheduleUpdateEmployeeProfileReq, FdtoScheduleValidatePosAccessReq, FdtoScheduleCreateTimeOffReq, FdtoScheduleTimeOff, FdtoScheduleUpdateTimeOffStatusReq, FdtoScheduleSaveEmployeeConfigsReq, ScheduleReplaceDemandReq } from '@/types/schedule';
|
|
4
4
|
import { isoDateKey } from './composables/schedule-calendar';
|
|
5
5
|
export { businessEmployees, dataVersion, employeeOutletIds, loadError, loading, outletId, payload, restaurantEmployees, employeeConfigs, rosterLoading, scheduleSetupCompleted, } from './schedule-state';
|
|
6
6
|
/** dayjs-free local-date key — the board's own isoDateKey, repeated here so the store does not
|
|
@@ -35,6 +35,14 @@ export declare function addEmployeeToOutlets(employeeId: string, restaurantIds:
|
|
|
35
35
|
export declare function removeEmployeeFromOutlets(employeeId: string, restaurantIds: string[]): Promise<void>;
|
|
36
36
|
/** Takes a POS user off this outlet's roster only. */
|
|
37
37
|
export declare function removeEmployeeFromOutlet(employeeId: string): Promise<void>;
|
|
38
|
+
/** Sets the POS role each of these outlets grants a user — every other outlet on their roster
|
|
39
|
+
* is untouched. An empty roleId means "linked to this outlet, no role assigned" (the same thing
|
|
40
|
+
* `addEmployeeToOutlets`' default gives), not "remove them from it" — use
|
|
41
|
+
* `removeEmployeeFromOutlets` for that. A duplicate restaurantId keeps only the last entry. */
|
|
42
|
+
export declare function setEmployeePosRoles(employeeId: string, assignments: {
|
|
43
|
+
restaurantId: string;
|
|
44
|
+
roleId: string;
|
|
45
|
+
}[]): Promise<void>;
|
|
38
46
|
/** The cached business roster, fetched on first use. `force` re-reads it (after a write, or to
|
|
39
47
|
* refresh a list that is already on screen). Concurrent callers share one request. */
|
|
40
48
|
export declare function ensureBusinessEmployees(force?: boolean): Promise<IFdtoPosUserSummary[]>;
|
|
@@ -54,6 +62,7 @@ export declare function reload(): Promise<void>;
|
|
|
54
62
|
* Throws on failure (a duplicate profile, a network error) — the caller decides how to show
|
|
55
63
|
* that, this just doesn't pretend it succeeded. */
|
|
56
64
|
export declare function createEmployeeProfile(req: FdtoScheduleCreateEmployeeProfileReq): Promise<void>;
|
|
65
|
+
export declare function validateSchedulePosAccess(req: FdtoScheduleValidatePosAccessReq): Promise<void>;
|
|
57
66
|
/** Edits a profile already on this outlet's schedule. The caller (useScheduleAddEmployee's
|
|
58
67
|
* `updateExisting`) applies the form to the live `Employee` object itself for instant feedback,
|
|
59
68
|
* so this does not bump `dataVersion` — nothing needs a board cache rebuild. The raw payload is
|
|
@@ -77,16 +86,14 @@ export declare function deletePosition(id: string): Promise<void>;
|
|
|
77
86
|
* to land there for that seed to stay correct — without a `dataVersion` bump, which would
|
|
78
87
|
* invalidate the per-week employee cache and risk reverting an unsaved shift. */
|
|
79
88
|
export declare function saveScheduleDay(date: string, req: FdtoScheduleSaveScheduleDayReq): Promise<void>;
|
|
80
|
-
/** Replaces one date
|
|
89
|
+
/** Replaces one date's UI demand by expanding every period into flat ShiftDemand rows.
|
|
81
90
|
* Position-specific headcount becomes its own row; any remaining headcount becomes an
|
|
82
91
|
* unpositioned row for the same time range. */
|
|
83
92
|
export declare function saveDemand(req: ScheduleReplaceDemandReq): Promise<void>;
|
|
84
93
|
export declare function saveDemandsBulk(requests: ScheduleReplaceDemandReq[]): Promise<void>;
|
|
85
94
|
/** Copies one date's own demand rows onto another date, as that date's own rows. A date that
|
|
86
95
|
* already has demand of its own is left alone (nothing is overwritten), and a source date with
|
|
87
|
-
*
|
|
88
|
-
* week, so repeating it per date would only shadow later edits to the rule. Returns how many rows
|
|
89
|
-
* were written. */
|
|
96
|
+
* no explicit rows has nothing to copy. Returns how many rows were written. */
|
|
90
97
|
export declare function copyDateDemand(fromDate: string, toDate: string): Promise<number>;
|
|
91
98
|
export declare function generateAutoSchedule(req: FdtoScheduleAutoScheduleGenerateReq): Promise<FdtoScheduleAutoScheduleResult>;
|
|
92
99
|
export declare function getAutoScheduleCapabilities(): Promise<FdtoScheduleAutoScheduleCapabilities>;
|
|
@@ -8,6 +8,8 @@ export interface WorkSlot {
|
|
|
8
8
|
start: string;
|
|
9
9
|
end: string;
|
|
10
10
|
role: string;
|
|
11
|
+
/** The persisted position identity, retained even when the position is soft-deleted. */
|
|
12
|
+
positionId?: string;
|
|
11
13
|
status: ShiftStatus;
|
|
12
14
|
clock?: ShiftClock;
|
|
13
15
|
conflict?: boolean;
|
|
@@ -98,11 +100,13 @@ export interface Employee {
|
|
|
98
100
|
/** Full-time-equivalent percentage, e.g. 100 for a full-timer, 60 for 0.6 FTE. */
|
|
99
101
|
pct: number;
|
|
100
102
|
/** Hours per week this person is contracted to, as agreed with them. Per-person rather than
|
|
101
|
-
* a venue default: ScheduleSettings holds pay rates
|
|
103
|
+
* a venue default: ScheduleSettings holds pay rates and employee-hour defaults, and EmployeeProfiles.workingHours
|
|
102
104
|
* is where the figure is actually stated. Undefined means nobody has agreed one. */
|
|
103
105
|
contractHours?: number;
|
|
104
106
|
rate: number;
|
|
105
107
|
positions: string[];
|
|
108
|
+
/** Position references that remain on the employee profile but are no longer active in the catalogue. */
|
|
109
|
+
archivedPositions?: string[];
|
|
106
110
|
/** One entry per visible day of the horizon; null = day off. */
|
|
107
111
|
shifts: DaySlot[];
|
|
108
112
|
remarks: EmployeeRemark[];
|
|
@@ -117,11 +121,18 @@ export interface Employee {
|
|
|
117
121
|
* hourly figure derived from this and is what the grid actually costs shifts with. */
|
|
118
122
|
payAmount?: number;
|
|
119
123
|
maxHours?: number;
|
|
120
|
-
maxOtHours?: number;
|
|
121
124
|
/** Shortest shift, in hours, this person will come in for. Asking for less is allowed but
|
|
122
125
|
* warned about in the shift popover. */
|
|
123
126
|
minHours?: number;
|
|
124
|
-
|
|
127
|
+
minHoursPerDay?: number;
|
|
128
|
+
workingHours?: {
|
|
129
|
+
minHoursPerDay: number | null;
|
|
130
|
+
maxHoursPerDay: number | null;
|
|
131
|
+
maxHoursPerWeek: number | null;
|
|
132
|
+
};
|
|
133
|
+
overtime?: {
|
|
134
|
+
maxHoursPerMonth: number | null;
|
|
135
|
+
};
|
|
125
136
|
preferences?: string[];
|
|
126
137
|
seniority?: 'senior' | 'junior' | '';
|
|
127
138
|
/** Recurring days off (full-timer) or days available (part-timer) — see
|
|
@@ -200,7 +211,6 @@ export interface ScheduleRules {
|
|
|
200
211
|
end: string;
|
|
201
212
|
}>[];
|
|
202
213
|
payRate: PayRate;
|
|
203
|
-
otAfterDaily: number;
|
|
204
214
|
/** Weekly sales forecast (RM) — the stats row's editable input and the figure the
|
|
205
215
|
* per-day forecast curve distributes across the week. */
|
|
206
216
|
salesForecast: number;
|
|
@@ -215,7 +225,12 @@ export interface ScheduleRules {
|
|
|
215
225
|
/** Weekly labour cap (RM), editable directly when budgetFromSales is false. */
|
|
216
226
|
budget: number;
|
|
217
227
|
/** Monthly OT cap (hours) — Settings page "Overtime" tab. */
|
|
218
|
-
otCapHours: number;
|
|
228
|
+
otCapHours: number | null;
|
|
229
|
+
workingHours: {
|
|
230
|
+
minHoursPerDay: number | null;
|
|
231
|
+
maxHoursPerDay: number | null;
|
|
232
|
+
maxHoursPerWeek: number | null;
|
|
233
|
+
};
|
|
219
234
|
/** Monthly OT budget (RM), advisory only. */
|
|
220
235
|
otBudget: number;
|
|
221
236
|
notify: {
|
|
@@ -290,6 +305,8 @@ export interface ScheduleDayNote {
|
|
|
290
305
|
* "any position" remainder, which is derived and never stored. */
|
|
291
306
|
export interface DemandRole {
|
|
292
307
|
position: string;
|
|
308
|
+
/** Persisted position identity; the name is only the display label. */
|
|
309
|
+
positionId?: string;
|
|
293
310
|
n: number;
|
|
294
311
|
}
|
|
295
312
|
/** A stretch of a day and how many people the floor needs across it. Deliberately not a shift:
|