If(
!varEditMode,
/* ================= ENTER EDIT MODE ================= */
Set(varEditMode, true),
/* ================= SAVE MODE ================= */
/* Freeze gallery rows to avoid mutation */
ClearCollect(
colGallerySnapshot,
Gallery10.AllItems
);
ForAll(
colGallerySnapshot As Row,
With(
{
/* ===== PROJECT NUMBER & PREFIX ===== */
projectNo: Row.'PROJECT NUMBER',
prefix:
If(
IsBlank(Row.'PROJECT NUMBER'),
Blank(),
Left(Row.'PROJECT NUMBER', 3)
),
/* ===== READ EDITED VALUES (OR KEEP OLD) ===== */
newAllocatedQty:
If(
IsBlank(
LookUp(Gallery10.AllItems, ID = Row.ID).TextInput18.Text
),
Row.'ALLOCATED QUANTITY',
Value(
LookUp(Gallery10.AllItems, ID = Row.ID).TextInput18.Text
)
),
newReleasePlan:
If(
IsBlank(
LookUp(Gallery10.AllItems, ID = Row.ID).DatePicker3.SelectedDate
),
Row.'RELEASE PLAN',
LookUp(Gallery10.AllItems, ID = Row.ID).DatePicker3.SelectedDate
),
newReleaseDate:
If(
IsBlank(
LookUp(Gallery10.AllItems, ID = Row.ID).DatePicker5.SelectedDate
),
Row.'RELEASE DATE',
LookUp(Gallery10.AllItems, ID = Row.ID).DatePicker5.SelectedDate
),
newRemarks:
If(
IsBlank(
LookUp(Gallery10.AllItems, ID = Row.ID).TextInput14.Text
),
Row.REMARKS,
LookUp(Gallery10.AllItems, ID = Row.ID).TextInput14.Text
)
},
/* ================= PROJECT ALLOCATION ================= */
Patch(
'PROJECT ALLOCATION',
LookUp('PROJECT ALLOCATION', ID = Row.ID),
{
'PROJECT NUMBER': projectNo,
'SUBASSEMBLY NUMBER': Row.'SUBASSEMBLY NUMBER',
'FO NUMBER': Row.'FO NUMBER',
BCGROUP: Row.BCGROUP,
Title: Row.Title,
'ALLOCATED QUANTITY': newAllocatedQty,
'RELEASE PLAN': newReleasePlan,
'RELEASE DATE': newReleaseDate,
REMARKS: newRemarks,
PRESENTQUANTITY:
If(
newAllocatedQty <> Row.'ALLOCATED QUANTITY',
(Row.PRESENTQUANTITY + Row.'ALLOCATED QUANTITY')
- newAllocatedQty,
Row.PRESENTQUANTITY
)
}
);
/* ================= PREFIX ROUTING ================= */
Switch(
prefix,
/* ---------- 77 ---------- */
"77",
With(
{
rec77:
LookUp(
'New releases',
SUBASSEMBLYNUMBER = Row.'SUBASSEMBLY NUMBER' &&
PROJECTNUMBER = projectNo &&
FONUMBER = Row.'FO NUMBER' &&
BCGROUP = Row.BCGROUP
)
},
If(
!IsBlank(rec77),
Patch(
'New releases',
rec77,
{
ALLOCATEDQUANTITY: newAllocatedQty,
PRESENTQUANTITY:
If(
newAllocatedQty <> Row.'ALLOCATED QUANTITY',
(rec77.PRESENTQUANTITY + Row.'ALLOCATED QUANTITY')
- newAllocatedQty,
rec77.PRESENTQUANTITY
)
}
)
)
),
/* ---------- 75 ---------- */
"75",
With(
{
rec75:
LookUp(
'New releases(75...)',
SUBASSEMBLYNUMBER = Row.'SUBASSEMBLY NUMBER' &&
PROJECTNUMBER = projectNo &&
FONUMBER = Row.'FO NUMBER' &&
BCGROUP = Row.BCGROUP
)
},
If(
!IsBlank(rec75),
Patch(
'New releases(75...)',
rec75,
{
ALLOCATEDQUANTITY: newAllocatedQty,
PRESENTQUANTITY:
If(
newAllocatedQty <> Row.'ALLOCATED QUANTITY',
(rec75.PRESENTQUANTITY + Row.'ALLOCATED QUANTITY')
- newAllocatedQty,
rec75.PRESENTQUANTITY
)
}
)
)
),
/* ---------- 78 ---------- */
"78",
Patch(
'PROJECT ALLOCATION(78...)',
LookUp(
'PROJECT ALLOCATION(78...)',
SUBASSEMBLYNUMBER = Row.'SUBASSEMBLY NUMBER' &&
PROJECTNUMBER = projectNo
),
{
ALLOCATEDQUANTITY: newAllocatedQty
}
)
/* ---------- 716 / OTHERS ---------- */
/* No extra patch */
)
)
);
Set(varEditMode, false);
Notify(
"Changes have been saved successfully.",
NotificationType.Success
)
)