If(
CountRows(
Filter(
Gallery4_3.AllItems,
!IsBlank(TextInput2_21.Text) || !IsBlank(ID)
)
) > 0
&&
//(varTotalBillable + varTotalNonBillable) > 0,
(
// ✔ Paid Leave case
Checkbox1_1.Value = true
// ✔ Work case (hours required)
||
(varTotalBillable + varTotalNonBillable) > 0
),
// ✅ VALID → RUN APPROVAL
If(
!varProcessing,
Set(varProcessing, true);
/* If(
IsBlank(varDraftGroupId),
Set(varDraftGroupId, User().Email & "-" & Text(DatePicker1.SelectedDate, "yyyymmdd")& "-" & Text(GUID()))
);*/
ClearCollect(
colApprovedrows,
Gallery4_3.AllItems
);
ForAll(
colApprovedrows As g,
If(
!IsBlank(g.TextInput2_21.Text) || !IsBlank(g.ID),
Patch(
TimeSheetworkdata,
If(
IsBlank(g.ID),
Defaults(TimeSheetworkdata),
LookUp(
TimeSheetworkdata,
ID = Value(g.ID)
)
),
{
DraftId: varDraftGroupId,
Status: {Value: "Approved"},
'Description of work': g.TextInput2_21.Text
}
)
)
);
// Reload
ClearCollect(
colFormRows,
Filter(
TimeSheetworkdata,
DraftId = Text(varDraftGroupId) &&
'Created By'.Email = User().Email
)
);
// Approval table
Patch(
TimesheetApproval,
Coalesce(
LookUp(TimesheetApproval, DraftId = varDraftGroupId),
Defaults(TimesheetApproval)
),
{
DraftId: varDraftGroupId,
Status: {Value: "Approved"},
Totalhrs: varTotalBillable,
Totalnonbillhrs: varTotalNonBillable
}
);
Clear(colFormRows);
Notify("Timesheet approved successfully", NotificationType.Success);
Set(varProcessing, false)
),
// ❌ INVALID → BLOCK
Notify(
"Cannot approve. No valid records or hours found.",
NotificationType.Error
)
)