window.custom_dialog_add_follow = function (frm) {
console.log(frm)
if (!window.followUpDialog) {
window.followUpDialog = new frappe.ui.Dialog({
title: “Add follow ups”,
fields: [
{
label: “Status”,
fieldname: “call_day_status”,
fieldtype: “Select”,
options: [“Pending”, “Called”, “Cancelled”],
reqd: 1,
},
{
label: “Calling Date”,
fieldname: “call_day_callingdate”,
fieldtype: “Date”,
reqd: 1,
},
{
label: “Ring Tone”,
fieldname: “call_day_ringtone”,
fieldtype: “Check”,
},
{
label: “Answered”,
fieldname: “call_day_answered”,
fieldtype: “Check”,
},
{
label: “Expected Payment Date”,
fieldname: “call_day_paymentdate”,
fieldtype: “Date”,
reqd: 0,
},
{
label: “Remarks”,
fieldname: “call_day_remarks”,
fieldtype: “Small Text”,
},
{
label: “Willing To Pay?”,
fieldname: “call_day_willingtopay”,
fieldtype: “Select”,
options: [“Yes”, “No”, “Maybe”],
},
{
label: “Installment Plan”,
fieldname: “call_day_installmentplan”,
fieldtype: “Check”,
},
{
label: “Installment Term”,
fieldname: “call_day_installmentterm”,
fieldtype: “Select”,
options: [“3 months”, “6 months”, “12 months”],
depends_on: “eval:doc.call_day_installmentplan”,
},
],
primary_action_label: “Confirm”,
primary_action: function () {
var values = window.followUpDialog.get_values();
if (!values.call_day_status || !values.call_day_callingdate) {
frappe.throw(__('Please fill in all required fields'));
return;
}
var new_follow_up = {
call_day_status: values.call_day_status,
call_day_callingdate: values.call_day_callingdate,
call_day_ringtone: values.call_day_ringtone ? 1 : 0,
call_day_answered: values.call_day_answered ? 1 : 0,
call_day_remarks: values.call_day_remarks || "",
call_day_willingtopay: values.call_day_willingtopay,
call_day_paymentdate: values.call_day_paymentdate,
call_day_installmentplan: values.call_day_installmentplan ? 1 : 0,
call_day_installmentterm: values.call_day_installmentterm,
};
frappe.confirm(
__('Do you want to save this follow-up?'),
function () {
var follow_ups = frm.doc.follow_ups || [];
follow_ups.push(new_follow_up);
console.log("follow_ups>>", follow_ups)
follow_ups.forEach(function (follow_up) {
var child = frm.add_child('follow_ups');
Object.assign(child, follow_up);
});
frm.refresh_field('follow_ups');
window.followUpDialog.hide();
frm.save()
.then(() => {
frappe.show_alert({
message: __("Follow up added successfully"),
indicator: 'green',
});
})
.catch((err) => {
console.error(err);
frappe.msgprint({
title: __("Error"),
indicator: "red",
message: __("An error occurred while saving"),
});
});
},
function () {
window.followUpDialog.hide();
}
);
},
secondary_action_label: "Cancel",
secondary_action: function () {
window.followUpDialog.hide();
},
});
}
$(".add-button").on("click", function () {
window.followUpDialog.set_values({
call_day_status: "",
call_day_callingdate: "",
call_day_ringtone: 0,
call_day_answered: 0,
call_day_remarks: "",
call_day_willingtopay: "",
call_day_paymentdate: "",
call_day_installmentplan: 0,
call_day_installmentterm: "",
});
window.followUpDialog.show();
});
};
window.custom_view_follow_ups = function (frm) {
console.log(“Number of follow-ups:”, frm.doc.follow_ups ? frm.doc.follow_ups.length : 0);
console.log(“Follow-ups data:”, frm.doc.follow_ups);
$(document).ready(function () {
frm.doc.follow_ups.forEach((data, index) => {
console.log(data);
function formatDate(dateString) {
if (!dateString) return '';
const date = new Date(dateString);
return date.toISOString().split('T')[0];
}
function setSelectValue(selector, value) {
const select = $(`#${selector}`);
if (select.length && value !== undefined) {
select.val(value);
}
}
function setInputValue(selector, value) {
const input = $(`#${selector}`);
if (input.length && value !== undefined) {
input.val(value);
}
}
function setCheckboxValue(selector, value) {
const checkbox = $(`#${selector}`);
if (checkbox.length) {
checkbox.prop("checked", value === 1);
}
}
setSelectValue('status', data.call_day_status);
setInputValue('callingDate', formatDate(data.call_day_callingdate));
setCheckboxValue('ringTone', data.call_day_ringtone);
setCheckboxValue('answered', data.call_day_answered);
setInputValue('remarks', data.call_day_remarks);
setSelectValue('willingToPay', data.call_day_willingtopay);
setInputValue('expectedPaymentDate', formatDate(data.call_day_paymentdate));
setCheckboxValue('installmentPlan', data.call_day_installmentplan);
setSelectValue('installmentTerm', data.call_day_installmentterm);
});
});
};