I just add 3 custom field for Doc Customer and create a client script to validate expired date each customer.
Here the code and its working well…
frappe.ui.form.on("Customer", {
custom_created_date: function(frm) {
if (frm.doc.custom_created_date) {
var newExpireDate = frappe.datetime.add_days(frm.doc.custom_created_date, 365);
frm.set_value("custom_expired_date", newExpireDate);
if (new Date(newExpireDate) > new Date()) {
frm.set_value("is_frozen", 0);
frappe.msgprint(__("Pembuatan Member Berhasil"));
} else {
frm.set_value("is_frozen", 1);
frappe.msgprint(__("Member Expired"));
}
frm.refresh_field("custom_expired_date");
frm.refresh_field("is_frozen");
}
},
custom_start_over: function(frm) {
if (frm.doc.custom_start_over) {
var newExpireDate = frappe.datetime.add_days(frm.doc.custom_start_over, 365);
frm.set_value("custom_expired_date", newExpireDate);
if (new Date(newExpireDate) > new Date()) {
frm.set_value("is_frozen", 0);
frappe.msgprint(__("Member Berhasil Di Update"));
} else {
frm.set_value("is_frozen", 1);
frappe.msgprint(__("Member Expired"));
}
frm.refresh_field("custom_expired_date");
frm.refresh_field("is_frozen");
}
},
validate: function(frm) {
if (new Date(frm.doc.custom_expired_date) < new Date()) {
frappe.validated = false;
frappe.msgprint(__("Member Expired"));
}
}
});
Now my problem is, I want to add server script with Scheduler Event to check expired date each Customer.
I try with this script :
# Loop through the customers and check if trade or custom is expired
for customer in customers:
# Get the trade expiry date and custom expiry date
expired = customer.custom_expired_date
# Compare with today's date
if expired < today():
# Trade is expired, set status as "Expired"
frappe.db.set_value("Customer", customer.name, "status", "Frozen")
# Send an email notification to the customer
frappe.sendmail(
recipients=customer.email_id,
subject="Your trade has expired",
message="Dear {0},\n\nWe regret to inform you that your trade with us has expired on {1}. Please contact us to renew your trade or settle your account.\n\nThank you for your cooperation.\n\nSincerely,\nYour ERPNext Team".format(customer.customer_name, trade_expiry_date)
)
Any advice…?