frappe.ui.form.on('Scheduled Pickup', {
    customer_number: function(frm) {
        var customer = frm.doc.customer_number;
        if (!customer) {
            clear_customer_fields(frm);
            return;
        }
        frappe.call({
            method: 'frappe.client.get',
            args: {doctype: 'Customer', name: customer},
            callback: function(r) {
                if (!r.message) return;
                var c = r.message;
                if (!frm.doc.company_name && c.customer_name) {
                    frm.set_value('company_name', c.customer_name);
                }
                // Get primary contact
                if (c.customer_primary_contact) {
                    frappe.call({
                        method: 'frappe.client.get',
                        args: {doctype: 'Contact', name: c.customer_primary_contact},
                        callback: function(cr) {
                            if (!cr.message) return;
                            var ct = cr.message;
                            var full_name = [ct.first_name, ct.last_name].filter(Boolean).join(' ');
                            if (!frm.doc.contact_name) frm.set_value('contact_name', full_name);
                            if (!frm.doc.contact_phone) frm.set_value('contact_phone', ct.phone || '');
                            if (!frm.doc.contact_email) frm.set_value('contact_email', ct.email_id || '');
                        }
                    });
                }
                // Get primary address
                if (c.customer_primary_address) {
                    frappe.call({
                        method: 'frappe.client.get',
                        args: {doctype: 'Address', name: c.customer_primary_address},
                        callback: function(ar) {
                            if (!ar.message) return;
                            var a = ar.message;
                            if (!frm.doc.address_line) frm.set_value('address_line', a.address_line1 || '');
                            if (!frm.doc.city) frm.set_value('city', a.city || '');
                            if (!frm.doc.state) frm.set_value('state', a.state || '');
                            if (!frm.doc.zip_code) frm.set_value('zip_code', a.pincode || '');
                        }
                    });
                }
            }
        });
    }
});

function clear_customer_fields(frm) {
    frm.set_value('company_name', '');
    frm.set_value('contact_name', '');
    frm.set_value('contact_phone', '');
    frm.set_value('contact_email', '');
    frm.set_value('address_line', '');
    frm.set_value('city', '');
    frm.set_value('state', '');
    frm.set_value('zip_code', '');
    frm.set_value('latitude', '');
    frm.set_value('longitude', '');
    frm.set_value('geocoded', 0);
}
