Hello everyone one . I use this action script to delete selected elements of embeded object fields , but I always delete all even I select only one . Can it be repaired. .
Thanks in advance
// This is an 'Entry' action script to delete selected payments
// from the 'hesab' embedded object field.
(function () {
try {
var e = entry();
// --- Configuration ---
var hesabFieldName = "hesab";
var dateAttribute = "date";
var paidAttribute = "paid";
// -------------------
var payments = e.field(hesabFieldName);
if (!payments || payments.length === 0) {
message("No payments found to delete.");
exit();
}
var uiElements = [];
uiElements.push(ui().text("Select payments to delete:").font({ style: 'bold' }));
// Create a checkbox for each payment.
for (var i = 0; i < payments.length; i++) {
var payment = payments[i];
var paymentDate = moment(payment[dateAttribute]).format("YYYY-MM-DD");
var paymentAmount = payment[paidAttribute];
var label = paymentDate + " - " + paymentAmount;
// The 'tag' is used to identify which checkbox corresponds to which payment.
uiElements.push(
ui().checkbox(label, false).tag('payment_' + i)
);
}
// --- Main Dialog to Select Payments ---
dialog()
.title("Delete Payments")
.view(ui().layout(uiElements))
.positiveButton("Delete Selected", function() {
var newPaymentsArray = [];
var deletedCount = 0;
// Loop through the original payments to see which ones were selected.
for (var i = 0; i < payments.length; i++) {
var checkbox = ui().findByTag('payment_' + i);
if (checkbox && !checkbox.checked) {
// If the box is NOT checked, keep the payment.
newPaymentsArray.push(payments[i]);
} else {
deletedCount++;
}
}
if (deletedCount === 0) {
message("No payments were selected for deletion.");
return false; // Keep the dialog open.
}
// --- Confirmation Dialog ---
dialog()
.title("Confirm Deletion")
.text("Are you sure you want to delete " + deletedCount + " payment(s)? This cannot be undone.")
.positiveButton("Yes, Delete", function() {
// Overwrite the 'hesab' field with the new array that excludes the deleted items.
e.set(hesabFieldName, newPaymentsArray);
message(deletedCount + " payment(s) deleted. Please refresh your summary tables.");
return true; // Closes the confirmation dialog.
})
.negativeButton("Cancel", function() {})
.show();
return true; // Closes the main selection dialog.
})
.negativeButton("Cancel", function() {})
.show();
} catch (err) {
message("An error occurred: " + err.message);
}
})();