I would like to seek your expertise - I might be wrong on my approach also.. I highly appreciate your advice.
1 problem remains is when a new row was added on the existing one [from another form that trigger upon Successful form submission ], it gets a return value error code 3001
AssetRecord = Site_Asset_Services[SOR_No == input.SOR2 && Type_of_System == "AV System"];
for each rec in AssetRecord
{
recId = rec.ID;
subformRows = rec.Site_Asset;
updatedSubform = list();
matchedKeys = list();
// Patch existing rows that match a submitted row
for each row in subformRows
{
for each Final_Rec in input.AV_System
{
if(row.Floor == Final_Rec.AV_Floor && row.Room_Name == Final_Rec.AV_Room_Name)
{
row.Serial_N=Final_Rec.AV_Serial_N;
row.Status=Final_Rec.AV_Status;
row.Remarks=Final_Rec.AV_Remarks;
key = Final_Rec.AV_Floor + "|" + Final_Rec.AV_Room_Name + "|" + Final_Rec.AV_Brand + "|" + Final_Rec.AV_Model + "|" + Final_Rec.AV_Serial_N;
matchedKeys.add(key);
}
}
updatedSubform.add(row);
}
// Append submitted rows that had no matching existing row
for each Final_Rec in input.AV_System
{
key = Final_Rec.AV_Floor + "|" + Final_Rec.AV_Room_Name + "|" + Final_Rec.AV_Brand + "|" + Final_Rec.AV_Model + "|" + Final_Rec.AV_Serial_N;
if(!matchedKeys.contains(key))
{
NewRow = Map();
NewRow.put("Floor",Final_Rec.AV_Floor);
NewRow.put("Room_Name",Final_Rec.AV_Room_Name);
NewRow.put("Brand",Final_Rec.AV_Brand);
NewRow.put("Model",Final_Rec.AV_Model);
NewRow.put("Serial_N",Final_Rec.AV_Serial_N);
NewRow.put("Description",Final_Rec.AV_Description);
NewRow.put("Status",Final_Rec.AV_Status);
NewRow.put("Remarks",Final_Rec.AV_Remarks);
updatedSubform.add(NewRow);
}
}
fieldsMap = Map();
fieldsMap.put("Site_Asset",updatedSubform);
bodyMap = Map();
bodyMap.put("data",fieldsMap);
response = invokeurl
[
type :PATCH
parameters:bodyMap.toString()
connection:"zcreatorconnect"
];
info bodyMap;
info response;
}