feat: Add Customer Records page with Lead integration
This commit is contained in:
@@ -0,0 +1,148 @@
|
||||
frappe.pages["customer-records"].on_page_load = function(wrapper) {
|
||||
var page = frappe.ui.make_app_page({
|
||||
parent: wrapper,
|
||||
title: __("Customer Records"),
|
||||
single_column: true
|
||||
});
|
||||
|
||||
var content = frappe.render_template("customer-records", {});
|
||||
$(page.body).append(content);
|
||||
|
||||
var records = [];
|
||||
var currentIdx = -1;
|
||||
var searchResults = [];
|
||||
|
||||
function loadRecord(idx) {
|
||||
if (idx < 0 || idx >= records.length) return;
|
||||
currentIdx = idx;
|
||||
var r = records[idx];
|
||||
$("#current-index").text(idx + 1);
|
||||
$("#total-count").text(records.length);
|
||||
$("#record-number").val(r.name || "");
|
||||
$("#additional-numbers").val(r.additional_numbers || "");
|
||||
$("#field-star").val(r.field_star || "");
|
||||
$("#customer-address").val(r.customer_address || "");
|
||||
$("#any-letter").val(r.any_letter || "");
|
||||
$("#city").val(r.city || "");
|
||||
$("#field-e").val(r.field_e || "");
|
||||
$("#zip").val(r.zip || "");
|
||||
$("#company-name").val(r.company_name || "");
|
||||
$("#contacted-date").val(r.contacted_date || "");
|
||||
$("#contact-persons").val(r.contact_persons || "");
|
||||
$("#follow-up-date").val(r.follow_up_date || "");
|
||||
$("#email-address").val(r.email_address || "");
|
||||
$("#last-pu-date").val(r.last_pu_date || "");
|
||||
$("#contact-numbers").val(r.contact_numbers || "");
|
||||
$("#hours-operation").val(r.hours_operation || "");
|
||||
$("#comments").val(r.comments || "");
|
||||
}
|
||||
|
||||
function fetchRecords() {
|
||||
frappe.call({
|
||||
method: "westech_r2.page.customer-records.customer-records.get_records",
|
||||
callback: function(r) {
|
||||
if (r.message) {
|
||||
records = r.message;
|
||||
if (records.length > 0) loadRecord(0);
|
||||
else $("#current-index").text(0);
|
||||
$("#total-count").text(records.length);
|
||||
}
|
||||
}
|
||||
});
|
||||
}
|
||||
|
||||
function saveRecord() {
|
||||
if (currentIdx < 0) return;
|
||||
var data = {
|
||||
name: $("#record-number").val(),
|
||||
additional_numbers: $("#additional-numbers").val(),
|
||||
field_star: $("#field-star").val(),
|
||||
customer_address: $("#customer-address").val(),
|
||||
any_letter: $("#any-letter").val(),
|
||||
city: $("#city").val(),
|
||||
field_e: $("#field-e").val(),
|
||||
zip: $("#zip").val(),
|
||||
company_name: $("#company-name").val(),
|
||||
contacted_date: $("#contacted-date").val(),
|
||||
contact_persons: $("#contact-persons").val(),
|
||||
follow_up_date: $("#follow-up-date").val(),
|
||||
email_address: $("#email-address").val(),
|
||||
last_pu_date: $("#last-pu-date").val(),
|
||||
contact_numbers: $("#contact-numbers").val(),
|
||||
hours_operation: $("#hours-operation").val(),
|
||||
comments: $("#comments").val()
|
||||
};
|
||||
frappe.call({
|
||||
method: "westech_r2.page.customer-records.customer-records.save_record",
|
||||
args: { data: JSON.stringify(data) },
|
||||
callback: function(r) {
|
||||
if (r.message && r.message.status === "ok") {
|
||||
frappe.show_alert("Saved successfully");
|
||||
records[currentIdx] = data;
|
||||
}
|
||||
}
|
||||
});
|
||||
}
|
||||
|
||||
function deleteRecord() {
|
||||
if (currentIdx < 0) return;
|
||||
frappe.confirm("Delete record #" + $("#record-number").val() + "?", function() {
|
||||
frappe.call({
|
||||
method: "westech_r2.page.customer-records.customer-records.delete_record",
|
||||
args: { name: $("#record-number").val() },
|
||||
callback: function(r) {
|
||||
if (r.message && r.message.status === "ok") {
|
||||
records.splice(currentIdx, 1);
|
||||
if (records.length > 0) {
|
||||
currentIdx = Math.min(currentIdx, records.length - 1);
|
||||
loadRecord(currentIdx);
|
||||
} else {
|
||||
$("#current-index").text(0);
|
||||
$("#total-count").text(0);
|
||||
$("input, textarea").val("");
|
||||
}
|
||||
frappe.show_alert("Deleted");
|
||||
}
|
||||
}
|
||||
});
|
||||
});
|
||||
}
|
||||
|
||||
function searchRecords() {
|
||||
var field = $("#search-field").val();
|
||||
var value = $("#search-value").val().toLowerCase();
|
||||
if (!value) {
|
||||
searchResults = [];
|
||||
fetchRecords();
|
||||
return;
|
||||
}
|
||||
frappe.call({
|
||||
method: "westech_r2.page.customer-records.customer-records.search_records",
|
||||
args: { field: field, value: value },
|
||||
callback: function(r) {
|
||||
if (r.message) {
|
||||
searchResults = r.message;
|
||||
records = searchResults;
|
||||
if (records.length > 0) loadRecord(0);
|
||||
else {
|
||||
$("#current-index").text(0);
|
||||
$("#total-count").text(records.length);
|
||||
$("input, textarea").val("");
|
||||
}
|
||||
}
|
||||
}
|
||||
});
|
||||
}
|
||||
|
||||
$("#btn-save").click(saveRecord);
|
||||
$("#btn-delete").click(deleteRecord);
|
||||
$("#btn-prev").click(function() { if (currentIdx > 0) loadRecord(currentIdx - 1); });
|
||||
$("#btn-next").click(function() { if (currentIdx < records.length - 1) loadRecord(currentIdx + 1); });
|
||||
$("#btn-first").click(function() { if (records.length > 0) loadRecord(0); });
|
||||
$("#btn-last").click(function() { if (records.length > 0) loadRecord(records.length - 1); });
|
||||
$("#btn-search").click(searchRecords);
|
||||
$("#btn-reset").click(function() { $("#search-value").val(""); searchResults = []; fetchRecords(); });
|
||||
$("#btn-print").click(function() { window.print(); });
|
||||
|
||||
fetchRecords();
|
||||
};
|
||||
Reference in New Issue
Block a user