|
|
|
|
@@ -138,19 +138,17 @@ export const useHoursPage = () => {
|
|
|
|
|
return true
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
const canCreateValidationRowFromAbsence = (employeeId: number) => {
|
|
|
|
|
const canCreateEmptyValidationRow = (employeeId: number) => {
|
|
|
|
|
const row = rows.value[employeeId]
|
|
|
|
|
if (row?.workHourId) return false
|
|
|
|
|
if (!hasContractAtSelectedDate(employeeId)) return false
|
|
|
|
|
const dayRow = dayContextByEmployeeId.value.get(employeeId)
|
|
|
|
|
return !!dayRow?.absenceLabel && hasContractAtSelectedDate(employeeId)
|
|
|
|
|
return !!dayRow?.absenceLabel || is4hContract(employeeId)
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
const canCreateSiteValidationRowFromAbsence = (employeeId: number) => {
|
|
|
|
|
const row = rows.value[employeeId]
|
|
|
|
|
if (row?.workHourId) return false
|
|
|
|
|
const dayRow = dayContextByEmployeeId.value.get(employeeId)
|
|
|
|
|
return !!dayRow?.absenceLabel && hasContractAtSelectedDate(employeeId)
|
|
|
|
|
}
|
|
|
|
|
const canCreateValidationRowFromAbsence = (employeeId: number) => canCreateEmptyValidationRow(employeeId)
|
|
|
|
|
|
|
|
|
|
const canCreateSiteValidationRowFromAbsence = (employeeId: number) => canCreateEmptyValidationRow(employeeId)
|
|
|
|
|
|
|
|
|
|
const bulkValidatableEmployeeIds = computed(() => {
|
|
|
|
|
return visibleEmployees.value
|
|
|
|
|
@@ -347,6 +345,10 @@ export const useHoursPage = () => {
|
|
|
|
|
|
|
|
|
|
const isPresenceTracking = (employee: Employee) => employee.contract?.trackingMode === TRACKING_MODES.PRESENCE
|
|
|
|
|
const isTimeTracking = (employee: Employee) => !isPresenceTracking(employee)
|
|
|
|
|
const is4hContract = (employeeId: number) => {
|
|
|
|
|
const employee = employees.value.find((e) => e.id === employeeId)
|
|
|
|
|
return employee?.contract?.weeklyHours === 4
|
|
|
|
|
}
|
|
|
|
|
const isRowLocked = (employeeId: number) => {
|
|
|
|
|
const row = rows.value[employeeId]
|
|
|
|
|
if (!row) return false
|
|
|
|
|
@@ -692,13 +694,8 @@ export const useHoursPage = () => {
|
|
|
|
|
options: { toast?: boolean } = {}
|
|
|
|
|
) => {
|
|
|
|
|
const row = rows.value[employeeId]
|
|
|
|
|
const dayRow = dayContextByEmployeeId.value.get(employeeId)
|
|
|
|
|
if (!row?.workHourId && checked) {
|
|
|
|
|
const employee = employees.value.find((item) => item.id === employeeId)
|
|
|
|
|
const hasAbsence = !!dayRow?.absenceLabel
|
|
|
|
|
const canCreateFromAbsence = !!employee && hasAbsence && hasContractAtSelectedDate(employeeId)
|
|
|
|
|
|
|
|
|
|
if (canCreateFromAbsence) {
|
|
|
|
|
if (canCreateEmptyValidationRow(employeeId)) {
|
|
|
|
|
await bulkUpsertWorkHours({
|
|
|
|
|
workDate: selectedDate.value,
|
|
|
|
|
entries: [{
|
|
|
|
|
@@ -746,13 +743,8 @@ export const useHoursPage = () => {
|
|
|
|
|
options: { toast?: boolean } = {}
|
|
|
|
|
) => {
|
|
|
|
|
const row = rows.value[employeeId]
|
|
|
|
|
const dayRow = dayContextByEmployeeId.value.get(employeeId)
|
|
|
|
|
if (!row?.workHourId && checked) {
|
|
|
|
|
const employee = employees.value.find((item) => item.id === employeeId)
|
|
|
|
|
const hasAbsence = !!dayRow?.absenceLabel
|
|
|
|
|
const canCreateFromAbsence = !!employee && hasAbsence && hasContractAtSelectedDate(employeeId)
|
|
|
|
|
|
|
|
|
|
if (canCreateFromAbsence) {
|
|
|
|
|
if (canCreateEmptyValidationRow(employeeId)) {
|
|
|
|
|
await bulkUpsertWorkHours({
|
|
|
|
|
workDate: selectedDate.value,
|
|
|
|
|
entries: [{
|
|
|
|
|
|