@feedmepos/mf-hrm-portal 2.3.0-dev.3 → 2.3.0-dev.30
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-SjyWZghY.js → ApprovalCodeList-CaDmeGvQ.js} +7 -7
- package/dist/{AuditLogList-aTI3QeO0.js → AuditLogList-hnICcJxN.js} +18 -19
- package/dist/{ConditionBuilderForm.vue_vue_type_script_setup_true_lang--JTV7non.js → ConditionBuilderForm.vue_vue_type_script_setup_true_lang-CM3AAsUP.js} +2 -2
- package/dist/{EmployeeList-D2Q_2ZE0.js → EmployeeList-DjfBIMQV.js} +255 -266
- package/dist/{FormItem.vue_vue_type_script_setup_true_lang-CUnlKsxk.js → FormItem.vue_vue_type_script_setup_true_lang-CTGlmY6t.js} +6 -6
- package/dist/{GrantUserList-6YXLPuHR.js → GrantUserList-DH1HXfV4.js} +8 -8
- package/dist/{Main-dSqOeBRJ.js → Main-1GboTunP.js} +11 -11
- package/dist/{Main-B-a6F9g8.js → Main-C4S5bpnK.js} +8 -8
- package/dist/{Main-CFIWlIaC.js → Main-D0o-aQHX.js} +5 -5
- package/dist/{PermissionSetList-DxkaPCMs.js → PermissionSetList-CSONq6qt.js} +19 -18
- package/dist/PortalPermissionEditor.vue_vue_type_script_setup_true_lang-fU3Feetb.js +4167 -0
- package/dist/{PortalUserSearcher.vue_vue_type_style_index_0_scoped_827dfd60_lang-fe-Rdwn4.js → PortalUserSearcher.vue_vue_type_style_index_0_scoped_827dfd60_lang-DQcgZ0nF.js} +1 -1
- package/dist/ResponsiveContextMenu.vue_vue_type_script_setup_true_lang-mSJFKo7r.js +132 -0
- package/dist/{RoleList-DQZ_w5uM.js → RoleList-WdgayfhL.js} +21 -20
- package/dist/ScheduleAddPositionModal.vue_vue_type_script_setup_true_lang-Bx1P_UAW.js +530 -0
- package/dist/ScheduleGeneralPage-XUX2-_Vc.js +776 -0
- package/dist/ScheduleModal.vue_vue_type_script_setup_true_lang-CECio4Kc.js +2457 -0
- package/dist/SchedulePage-LQ7-8VUw.js +19366 -0
- package/dist/{SchedulePositionPage-BGrZBU3g.js → SchedulePositionPage-DcUbTYV6.js} +79 -81
- package/dist/{SelectFilter-CG13h83-.js → SelectFilter-BbkPuYP_.js} +1 -1
- package/dist/{TeamMemberList-BiTHVJwE.js → TeamMemberList-BMdMDYBF.js} +27 -27
- package/dist/{TimesheetList-CUkYacGW.js → TimesheetList-B6vZEmgb.js} +52 -53
- package/dist/{TimesheetList.vue_vue_type_style_index_0_scoped_63294af2_lang-B1Y587O-.js → TimesheetList.vue_vue_type_style_index_0_scoped_63294af2_lang-Bna8vHO7.js} +3 -3
- package/dist/{app-CAKCDrbJ.js → app-DwBKX4e9.js} +2891 -2474
- package/dist/app.js +1 -1
- package/dist/{approval-code-C9DmR4Md.js → approval-code-BXUiojPH.js} +1 -1
- package/dist/{dayjs.min-CZ8QYRoc.js → dayjs.min-DAKzxOMD.js} +1 -1
- package/dist/{employee-D56eWEFe.js → employee-GhYyAhwS.js} +51 -47
- package/dist/{grant-user-Bv-pJ9Wt.js → grant-user-CBJ3gEgW.js} +1 -1
- package/dist/{iteration-BVJdyLNq.js → iteration-Da8377p8.js} +1 -1
- package/dist/{lodash-BcIRkQPW.js → lodash-DChu1GU2.js} +1 -1
- package/dist/object-Dwyg2LgX.js +16 -0
- package/dist/{restaurant-D7PEQjPY.js → restaurant-D2mfKHaH.js} +48 -48
- package/dist/{role-B-eZDaBX.js → role-CyynUSdG.js} +2 -2
- package/dist/{rule-D6AIfx8b.js → rule-Cnn7MV1z.js} +3 -3
- package/dist/src/api/employee/index.d.ts +2 -2
- package/dist/src/api/schedule/index.d.ts +17 -2
- package/dist/src/components/layout/SchedulePromoBanner.vue.d.ts +2 -0
- package/dist/src/composables/useDiscardConfirm.d.ts +3 -1
- package/dist/src/composables/useMessage.d.ts +8 -2
- package/dist/src/stores/employee.d.ts +12 -12
- package/dist/src/types/schedule.d.ts +3 -4
- package/dist/src/views/audit-log/locales/index.d.ts +252 -0
- package/dist/src/views/scheduling/components/ScheduleAreaRows.vue.d.ts +4 -8
- package/dist/src/views/scheduling/components/{ScheduleAssignEmployeePopover.vue.d.ts → ScheduleAutoScheduleDetailsModal.vue.d.ts} +2 -2
- package/dist/src/views/scheduling/components/ScheduleAutoScheduleDoneArt.vue.d.ts +2 -0
- package/dist/src/views/scheduling/components/ScheduleBoardAreaRows.vue.d.ts +1 -4
- 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/ScheduleBoardGridHeader.vue.d.ts +5 -0
- package/dist/src/views/scheduling/components/ScheduleBoardInteractionOverlays.vue.d.ts +2 -6
- package/dist/src/views/scheduling/components/ScheduleBoardOnboardingOverlays.vue.d.ts +1 -0
- package/dist/src/views/scheduling/components/ScheduleBoardToolbar.vue.d.ts +0 -1
- package/dist/src/views/scheduling/components/ScheduleCompletionDialog.vue.d.ts +1 -1
- package/dist/src/views/scheduling/components/ScheduleConfirmModal.vue.d.ts +4 -1
- package/dist/src/views/scheduling/components/ScheduleContextMenu.vue.d.ts +1 -5
- package/dist/src/views/scheduling/components/ScheduleDayTimeline.vue.d.ts +5 -0
- package/dist/src/views/scheduling/components/ScheduleLoadState.vue.d.ts +0 -1
- package/dist/src/views/scheduling/components/ScheduleOnboardingAssignPositionModal.vue.d.ts +6 -0
- package/dist/src/views/scheduling/components/ScheduleOnboardingSettings.vue.d.ts +6 -0
- package/dist/src/views/scheduling/components/SchedulePublishShareArt.vue.d.ts +2 -0
- package/dist/src/views/scheduling/components/ScheduleSelect.vue.d.ts +10 -0
- package/dist/src/views/scheduling/components/ScheduleShiftPopover.vue.d.ts +1 -1
- package/dist/src/views/scheduling/components/ScheduleStaffRows.vue.d.ts +0 -10
- package/dist/src/views/scheduling/composables/auto-schedule-mapping.d.ts +33 -0
- package/dist/src/views/scheduling/composables/onboarding-types.d.ts +2 -1
- package/dist/src/views/scheduling/composables/remyPrompt.d.ts +15 -0
- package/dist/src/views/scheduling/composables/schedule-add-employee-form.d.ts +12 -8
- package/dist/src/views/scheduling/composables/schedule-board-helpers.d.ts +4 -0
- package/dist/src/views/scheduling/composables/schedule-day-meta.d.ts +1 -3
- package/dist/src/views/scheduling/composables/schedule-demand-domain.d.ts +13 -1
- package/dist/src/views/scheduling/composables/schedule-error.d.ts +1 -0
- package/dist/src/views/scheduling/composables/schedule-quick-pick.d.ts +22 -0
- package/dist/src/views/scheduling/composables/schedule-shift-time.d.ts +3 -0
- package/dist/src/views/scheduling/composables/useRemyAppStore.d.ts +16 -0
- package/dist/src/views/scheduling/composables/useScheduleAddEmployee.d.ts +46 -11
- package/dist/src/views/scheduling/composables/useScheduleAddPick.d.ts +3 -11
- package/dist/src/views/scheduling/composables/useScheduleAreaBoard.d.ts +0 -13
- package/dist/src/views/scheduling/composables/useScheduleAreaDragDrop.d.ts +2 -9
- package/dist/src/views/scheduling/composables/useScheduleAutoSchedule.d.ts +126 -4
- package/dist/src/views/scheduling/composables/useScheduleBoard.d.ts +86 -11
- package/dist/src/views/scheduling/composables/useScheduleCopyWeek.d.ts +3 -10
- package/dist/src/views/scheduling/composables/useScheduleCostRail.d.ts +13 -1
- package/dist/src/views/scheduling/composables/useScheduleDayNote.d.ts +0 -1
- package/dist/src/views/scheduling/composables/useScheduleDayTimeline.d.ts +16 -5
- package/dist/src/views/scheduling/composables/useScheduleDemand.d.ts +3 -5
- package/dist/src/views/scheduling/composables/useScheduleDemandSheet.d.ts +14 -3
- package/dist/src/views/scheduling/composables/useScheduleDragDrop.d.ts +1 -0
- package/dist/src/views/scheduling/composables/useScheduleEmployeeAccess.d.ts +20 -7
- package/dist/src/views/scheduling/composables/useScheduleEmployeeAvailability.d.ts +1 -1
- package/dist/src/views/scheduling/composables/useScheduleEmployeeCandidates.d.ts +26 -3
- package/dist/src/views/scheduling/composables/useScheduleEmployeePersistence.d.ts +7 -0
- package/dist/src/views/scheduling/composables/useScheduleEmployeeValidation.d.ts +2 -2
- package/dist/src/views/scheduling/composables/useScheduleGapPopover.d.ts +2 -0
- package/dist/src/views/scheduling/composables/useScheduleOnboardingDemand.d.ts +1 -1
- package/dist/src/views/scheduling/composables/useScheduleOnboardingEmployees.d.ts +48 -4
- package/dist/src/views/scheduling/composables/useScheduleOnboardingWizard.d.ts +425 -29
- package/dist/src/views/scheduling/composables/useScheduleOutlet.d.ts +11 -8
- package/dist/src/views/scheduling/composables/useSchedulePageActions.d.ts +1 -1
- package/dist/src/views/scheduling/composables/useSchedulePageCellDrop.d.ts +3 -1
- package/dist/src/views/scheduling/composables/useSchedulePageClearActions.d.ts +1 -0
- 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 +7 -1
- package/dist/src/views/scheduling/composables/useSchedulePublish.d.ts +3 -0
- package/dist/src/views/scheduling/composables/useScheduleRoster.d.ts +70 -4
- package/dist/src/views/scheduling/composables/useScheduleSettings.d.ts +7 -2
- package/dist/src/views/scheduling/composables/useScheduleSetupBanner.d.ts +2 -2
- package/dist/src/views/scheduling/composables/useScheduleShiftActions.d.ts +41 -3
- package/dist/src/views/scheduling/composables/useScheduleShiftDraft.d.ts +1 -0
- package/dist/src/views/scheduling/composables/useScheduleShiftPopover.d.ts +47 -6
- package/dist/src/views/scheduling/country-rules/index.d.ts +9 -4
- package/dist/src/views/scheduling/data.d.ts +22 -1
- package/dist/src/views/scheduling/locales/index.d.ts +28 -0
- package/dist/src/views/scheduling/schedule-state.d.ts +362 -298
- package/dist/src/views/scheduling/schedule-store.d.ts +41 -12
- package/dist/src/views/scheduling/types.d.ts +33 -5
- package/dist/style.css +1 -1
- package/dist/tsconfig.app.tsbuildinfo +1 -1
- package/dist/{useAppStore-d_nHyK5u.js → useAppStore-DZCdxlCd.js} +1 -1
- package/dist/useDiscardConfirm-CzZSPyvh.js +28 -0
- package/dist/{useLoading-JFoghhRz.js → useLoading-Nygx2zn8.js} +1 -1
- package/dist/{useReportPermissions-DHA0jrIr.js → useReportPermissions-B3OMJ4QX.js} +3 -3
- package/package.json +3 -2
- package/dist/PortalPermissionEditor.vue_vue_type_script_setup_true_lang-DnKckKZ0.js +0 -4167
- package/dist/ScheduleAddPositionModal.vue_vue_type_script_setup_true_lang-Dr6QruG6.js +0 -470
- package/dist/ScheduleGeneralPage-CvskrXcV.js +0 -666
- package/dist/ScheduleModal.vue_vue_type_script_setup_true_lang-C4On5sVD.js +0 -2157
- package/dist/SchedulePage-CW-K836l.js +0 -18248
- package/dist/_plugin-vue_export-helper-CHgC5LLL.js +0 -9
- package/dist/src/views/scheduling/components/ScheduleAllShiftsRow.vue.d.ts +0 -22
- package/dist/src/views/scheduling/components/ScheduleStackPopover.vue.d.ts +0 -14
- package/dist/src/views/scheduling/composables/scheduleAutoSolver.d.ts +0 -23
- 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
- package/dist/useDiscardConfirm-DPhEV6v0.js +0 -157
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
import ScheduleAPI from '@/api/schedule';
|
|
2
2
|
import type { IFdtoPosUserSummary } from '@/types/employee';
|
|
3
|
-
import type { FdtoScheduleAssignment,
|
|
3
|
+
import type { FdtoScheduleAssignment, FdtoScheduleAutoScheduleApplyReq, FdtoScheduleAutoScheduleApplyResult, FdtoScheduleAutoScheduleCapabilities, FdtoScheduleAutoScheduleGenerateReq, FdtoScheduleAutoScheduleResult, FdtoScheduleBulkUpdateAssignmentStatusReq, FdtoScheduleCreateEmployeeProfileReq, FdtoScheduleSaveAssignmentReq, FdtoScheduleSavePositionReq, FdtoScheduleSaveScheduleDayReq, FdtoScheduleSaveSettingsReq, FdtoScheduleSettings, 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
|
|
@@ -21,7 +21,11 @@ export declare function setOutlet(restaurantId: string): boolean;
|
|
|
21
21
|
* headcounts sit nowhere near it. */
|
|
22
22
|
export declare function ensureRestaurantEmployeesLoaded(restaurantId: string): Promise<void>;
|
|
23
23
|
export declare function saveEmployeeConfigs(configs: FdtoScheduleSaveEmployeeConfigsReq['configs']): Promise<void>;
|
|
24
|
+
/** Saves outlet settings and keeps the board payload authoritative for any later cache rebuild. */
|
|
25
|
+
export declare function saveScheduleSettings(req: FdtoScheduleSaveSettingsReq): Promise<FdtoScheduleSettings>;
|
|
24
26
|
export declare function setEmployeeSchedulingEnabled(employeeId: string, enabled: boolean): Promise<void>;
|
|
27
|
+
/** Removes this employee's future shifts before disabling their scheduling row. */
|
|
28
|
+
export declare function deleteEmployeeFutureAssignments(employeeId: string, from?: string): Promise<void>;
|
|
25
29
|
/** Re-reads this outlet's POS roster. The roster is what the board's rows are built from and is
|
|
26
30
|
* otherwise fetched once per outlet, so any write that changes who works here (add, remove)
|
|
27
31
|
* has to call this for the grid to show it. */
|
|
@@ -30,11 +34,32 @@ export declare function refreshRestaurantEmployees(): Promise<void>;
|
|
|
30
34
|
export declare function addEmployeeToOutlet(employeeId: string, roleId: string): Promise<void>;
|
|
31
35
|
/** Adds an employee to several outlets at once. Scheduling does not require a POS role, so the
|
|
32
36
|
* caller may pass an empty role id and assign the POS role later from Employee. */
|
|
33
|
-
export declare function addEmployeeToOutlets(employeeId: string, restaurantIds: string[], roleId?: string): Promise<void>;
|
|
37
|
+
export declare function addEmployeeToOutlets(employeeId: string, restaurantIds: string[], roleId?: string, enableScheduling?: boolean): Promise<void>;
|
|
34
38
|
/** Takes a POS user off the given outlets' rosters; their other outlets are untouched. */
|
|
35
39
|
export declare function removeEmployeeFromOutlets(employeeId: string, restaurantIds: string[]): Promise<void>;
|
|
36
40
|
/** Takes a POS user off this outlet's roster only. */
|
|
37
41
|
export declare function removeEmployeeFromOutlet(employeeId: string): Promise<void>;
|
|
42
|
+
/** Sets the POS role each of these outlets grants a user — every other outlet on their roster
|
|
43
|
+
* is untouched. An empty roleId means "linked to this outlet, no role assigned" (the same thing
|
|
44
|
+
* `addEmployeeToOutlets`' default gives), not "remove them from it" — use
|
|
45
|
+
* `removeEmployeeFromOutlets` for that. A duplicate restaurantId keeps only the last entry. */
|
|
46
|
+
export declare function setEmployeePosRoles(employeeId: string, assignments: {
|
|
47
|
+
restaurantId: string;
|
|
48
|
+
roleId: string;
|
|
49
|
+
}[]): Promise<void>;
|
|
50
|
+
/** Saves the POS-owned part of an existing scheduling employee. The scheduling profile and the
|
|
51
|
+
* POS user are separate records, so passcode/master-user changes must use the POS user API too.
|
|
52
|
+
* A normalized comparison avoids rewriting the POS user when the employee form was unchanged. */
|
|
53
|
+
export declare function saveEmployeePosAccess(employeeId: string, request: {
|
|
54
|
+
name: string;
|
|
55
|
+
passcode: string;
|
|
56
|
+
masterUser: boolean;
|
|
57
|
+
masterCode: string;
|
|
58
|
+
roles: {
|
|
59
|
+
restaurantId: string;
|
|
60
|
+
roleId: string;
|
|
61
|
+
}[];
|
|
62
|
+
}, knownEmployee?: IFdtoPosUserSummary): Promise<void>;
|
|
38
63
|
/** The cached business roster, fetched on first use. `force` re-reads it (after a write, or to
|
|
39
64
|
* refresh a list that is already on screen). Concurrent callers share one request. */
|
|
40
65
|
export declare function ensureBusinessEmployees(force?: boolean): Promise<IFdtoPosUserSummary[]>;
|
|
@@ -54,6 +79,7 @@ export declare function reload(): Promise<void>;
|
|
|
54
79
|
* Throws on failure (a duplicate profile, a network error) — the caller decides how to show
|
|
55
80
|
* that, this just doesn't pretend it succeeded. */
|
|
56
81
|
export declare function createEmployeeProfile(req: FdtoScheduleCreateEmployeeProfileReq): Promise<void>;
|
|
82
|
+
export declare function validateSchedulePosAccess(req: FdtoScheduleValidatePosAccessReq): Promise<void>;
|
|
57
83
|
/** Edits a profile already on this outlet's schedule. The caller (useScheduleAddEmployee's
|
|
58
84
|
* `updateExisting`) applies the form to the live `Employee` object itself for instant feedback,
|
|
59
85
|
* so this does not bump `dataVersion` — nothing needs a board cache rebuild. The raw payload is
|
|
@@ -77,26 +103,29 @@ export declare function deletePosition(id: string): Promise<void>;
|
|
|
77
103
|
* to land there for that seed to stay correct — without a `dataVersion` bump, which would
|
|
78
104
|
* invalidate the per-week employee cache and risk reverting an unsaved shift. */
|
|
79
105
|
export declare function saveScheduleDay(date: string, req: FdtoScheduleSaveScheduleDayReq): Promise<void>;
|
|
80
|
-
/** Replaces one date
|
|
106
|
+
/** Replaces one date's UI demand by expanding every period into flat ShiftDemand rows.
|
|
81
107
|
* Position-specific headcount becomes its own row; any remaining headcount becomes an
|
|
82
108
|
* unpositioned row for the same time range. */
|
|
83
109
|
export declare function saveDemand(req: ScheduleReplaceDemandReq): Promise<void>;
|
|
110
|
+
export declare function saveDemandsBulk(requests: ScheduleReplaceDemandReq[]): Promise<void>;
|
|
84
111
|
/** Copies one date's own demand rows onto another date, as that date's own rows. A date that
|
|
85
112
|
* already has demand of its own is left alone (nothing is overwritten), and a source date with
|
|
86
|
-
*
|
|
87
|
-
* week, so repeating it per date would only shadow later edits to the rule. Returns how many rows
|
|
88
|
-
* were written. */
|
|
113
|
+
* no explicit rows has nothing to copy. Returns how many rows were written. */
|
|
89
114
|
export declare function copyDateDemand(fromDate: string, toDate: string): Promise<number>;
|
|
90
|
-
export declare function generateAutoSchedule(req:
|
|
115
|
+
export declare function generateAutoSchedule(req: FdtoScheduleAutoScheduleGenerateReq): Promise<FdtoScheduleAutoScheduleResult>;
|
|
116
|
+
export declare function getAutoScheduleCapabilities(): Promise<FdtoScheduleAutoScheduleCapabilities>;
|
|
117
|
+
export declare function applyAutoSchedule(req: FdtoScheduleAutoScheduleApplyReq): Promise<FdtoScheduleAutoScheduleApplyResult>;
|
|
91
118
|
/** A one-off shift assignment — someone working these hours on this date, not answering any
|
|
92
|
-
* Shift requirement.
|
|
93
|
-
*
|
|
94
|
-
*
|
|
95
|
-
* discarding some OTHER unsaved shift elsewhere on the board (shifts have no write path of
|
|
96
|
-
* their own to read back from yet). */
|
|
119
|
+
* Shift requirement. Keep the raw payload in sync without bumping `dataVersion`: the current
|
|
120
|
+
* board owns the live draft, while a later roster refresh may rebuild the week cache from this
|
|
121
|
+
* payload. */
|
|
97
122
|
export declare function createAssignment(req: FdtoScheduleSaveAssignmentReq): Promise<FdtoScheduleAssignment>;
|
|
98
123
|
export declare function updateAssignment(id: string, req: FdtoScheduleSaveAssignmentReq): Promise<FdtoScheduleAssignment | null>;
|
|
99
124
|
export declare function bulkSaveAssignments(req: Parameters<typeof ScheduleAPI.bulkSaveAssignments>[1]): Promise<Awaited<ReturnType<typeof ScheduleAPI.bulkSaveAssignments>>>;
|
|
125
|
+
/** Replaces demand and/or assignments in one backend transaction. */
|
|
126
|
+
export declare function copySchedule(req: Parameters<typeof ScheduleAPI.copySchedule>[1]): Promise<Awaited<ReturnType<typeof ScheduleAPI.copySchedule>>>;
|
|
127
|
+
/** Clears demand and/or assignments in one backend transaction. */
|
|
128
|
+
export declare function clearSchedule(req: Parameters<typeof ScheduleAPI.clearSchedule>[1]): Promise<Awaited<ReturnType<typeof ScheduleAPI.clearSchedule>>>;
|
|
100
129
|
/** Deletes a batch of existing assignments in a single request — see
|
|
101
130
|
* `ScheduleAPI.deleteAssignments`. Deleting one is just this with a single-id array. */
|
|
102
131
|
export declare function deleteAssignments(ids: string[]): Promise<void>;
|
|
@@ -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,13 +100,18 @@ 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[];
|
|
112
|
+
/** Dated time-off records are kept beside shifts so an off/leave card remains visible when
|
|
113
|
+
* a manager adds a shift on the same day. */
|
|
114
|
+
timeOff?: Array<LeaveSlot | null>;
|
|
108
115
|
remarks: EmployeeRemark[];
|
|
109
116
|
section: string;
|
|
110
117
|
compGroup?: string;
|
|
@@ -117,11 +124,18 @@ export interface Employee {
|
|
|
117
124
|
* hourly figure derived from this and is what the grid actually costs shifts with. */
|
|
118
125
|
payAmount?: number;
|
|
119
126
|
maxHours?: number;
|
|
120
|
-
maxOtHours?: number;
|
|
121
127
|
/** Shortest shift, in hours, this person will come in for. Asking for less is allowed but
|
|
122
128
|
* warned about in the shift popover. */
|
|
123
129
|
minHours?: number;
|
|
124
|
-
|
|
130
|
+
minHoursPerDay?: number;
|
|
131
|
+
workingHours?: {
|
|
132
|
+
minHoursPerDay: number | null;
|
|
133
|
+
maxHoursPerDay: number | null;
|
|
134
|
+
maxHoursPerWeek: number | null;
|
|
135
|
+
};
|
|
136
|
+
overtime?: {
|
|
137
|
+
maxHoursPerMonth: number | null;
|
|
138
|
+
};
|
|
125
139
|
preferences?: string[];
|
|
126
140
|
seniority?: 'senior' | 'junior' | '';
|
|
127
141
|
/** Recurring days off (full-timer) or days available (part-timer) — see
|
|
@@ -130,6 +144,8 @@ export interface Employee {
|
|
|
130
144
|
availHours?: EmployeeAvailHours[];
|
|
131
145
|
/** POS sign-in code. Optional: rostering, costing and publishing never depend on it. */
|
|
132
146
|
passcode?: string;
|
|
147
|
+
/** POS master-user code, when this employee is a master user. */
|
|
148
|
+
code?: string;
|
|
133
149
|
masterUser?: boolean;
|
|
134
150
|
}
|
|
135
151
|
export interface Section {
|
|
@@ -200,7 +216,6 @@ export interface ScheduleRules {
|
|
|
200
216
|
end: string;
|
|
201
217
|
}>[];
|
|
202
218
|
payRate: PayRate;
|
|
203
|
-
otAfterDaily: number;
|
|
204
219
|
/** Weekly sales forecast (RM) — the stats row's editable input and the figure the
|
|
205
220
|
* per-day forecast curve distributes across the week. */
|
|
206
221
|
salesForecast: number;
|
|
@@ -215,7 +230,12 @@ export interface ScheduleRules {
|
|
|
215
230
|
/** Weekly labour cap (RM), editable directly when budgetFromSales is false. */
|
|
216
231
|
budget: number;
|
|
217
232
|
/** Monthly OT cap (hours) — Settings page "Overtime" tab. */
|
|
218
|
-
otCapHours: number;
|
|
233
|
+
otCapHours: number | null;
|
|
234
|
+
workingHours: {
|
|
235
|
+
minHoursPerDay: number | null;
|
|
236
|
+
maxHoursPerDay: number | null;
|
|
237
|
+
maxHoursPerWeek: number | null;
|
|
238
|
+
};
|
|
219
239
|
/** Monthly OT budget (RM), advisory only. */
|
|
220
240
|
otBudget: number;
|
|
221
241
|
notify: {
|
|
@@ -235,6 +255,7 @@ export interface PendingChange {
|
|
|
235
255
|
dayIdx: number;
|
|
236
256
|
kind: 'add' | 'change' | 'remove';
|
|
237
257
|
label: string;
|
|
258
|
+
conflict?: boolean;
|
|
238
259
|
}
|
|
239
260
|
export type NotifyChannel = 'wa' | 'push' | 'email';
|
|
240
261
|
export interface ScheduleVersionSnapshot {
|
|
@@ -290,6 +311,8 @@ export interface ScheduleDayNote {
|
|
|
290
311
|
* "any position" remainder, which is derived and never stored. */
|
|
291
312
|
export interface DemandRole {
|
|
292
313
|
position: string;
|
|
314
|
+
/** Persisted position identity; the name is only the display label. */
|
|
315
|
+
positionId?: string;
|
|
293
316
|
n: number;
|
|
294
317
|
}
|
|
295
318
|
/** A stretch of a day and how many people the floor needs across it. Deliberately not a shift:
|
|
@@ -342,6 +365,9 @@ export interface Proposal {
|
|
|
342
365
|
start: string;
|
|
343
366
|
end: string;
|
|
344
367
|
role: string;
|
|
368
|
+
/** The position backing `role`, when the auto-schedule result named one. `null`/absent means
|
|
369
|
+
* any position (an unnamed need). */
|
|
370
|
+
positionId?: string | null;
|
|
345
371
|
/** Set when this proposal would fill a named OpenShift record. */
|
|
346
372
|
openId?: number;
|
|
347
373
|
status: 'pending' | 'rejected';
|
|
@@ -350,4 +376,6 @@ export interface Proposal {
|
|
|
350
376
|
weekKey?: string;
|
|
351
377
|
/** Why this person, for the card's tooltip. */
|
|
352
378
|
reason?: string;
|
|
379
|
+
/** Set when the server already knows applying this row would be refused; it starts rejected. */
|
|
380
|
+
rejectReason?: string;
|
|
353
381
|
}
|