* fix: readonly primary contact fields. * refactor: supplier and customer quick entry form into common class.
		
			
				
	
	
		
			101 lines
		
	
	
		
			2.1 KiB
		
	
	
	
		
			JavaScript
		
	
	
	
	
	
			
		
		
	
	
			101 lines
		
	
	
		
			2.1 KiB
		
	
	
	
		
			JavaScript
		
	
	
	
	
	
| frappe.provide('frappe.ui.form');
 | |
| 
 | |
| frappe.ui.form.ContactAddressQuickEntryForm = class ContactAddressQuickEntryForm extends frappe.ui.form.QuickEntryForm {
 | |
| 	constructor(doctype, after_insert, init_callback, doc, force) {
 | |
| 		super(doctype, after_insert, init_callback, doc, force);
 | |
| 		this.skip_redirect_on_error = true;
 | |
| 	}
 | |
| 
 | |
| 	render_dialog() {
 | |
| 		this.mandatory = this.mandatory.concat(this.get_variant_fields());
 | |
| 		super.render_dialog();
 | |
| 	}
 | |
| 
 | |
| 	insert() {
 | |
| 		/**
 | |
| 		 * Using alias fieldnames because the doctype definition define "email_id" and "mobile_no" as readonly fields.
 | |
| 		 * Therefor, resulting in the fields being "hidden".
 | |
| 		 */
 | |
| 		const map_field_names = {
 | |
| 			"email_address": "email_id",
 | |
| 			"mobile_number": "mobile_no",
 | |
| 		};
 | |
| 
 | |
| 		Object.entries(map_field_names).forEach(([fieldname, new_fieldname]) => {
 | |
| 			this.dialog.doc[new_fieldname] = this.dialog.doc[fieldname];
 | |
| 			delete this.dialog.doc[fieldname];
 | |
| 		});
 | |
| 
 | |
| 		return super.insert();
 | |
| 	}
 | |
| 
 | |
| 	get_variant_fields() {
 | |
| 		var variant_fields = [{
 | |
| 			fieldtype: "Section Break",
 | |
| 			label: __("Primary Contact Details"),
 | |
| 			collapsible: 1
 | |
| 		},
 | |
| 		{
 | |
| 			label: __("Email Id"),
 | |
| 			fieldname: "email_address",
 | |
| 			fieldtype: "Data",
 | |
| 			options: "Email",
 | |
| 		},
 | |
| 		{
 | |
| 			fieldtype: "Column Break"
 | |
| 		},
 | |
| 		{
 | |
| 			label: __("Mobile Number"),
 | |
| 			fieldname: "mobile_number",
 | |
| 			fieldtype: "Data"
 | |
| 		},
 | |
| 		{
 | |
| 			fieldtype: "Section Break",
 | |
| 			label: __("Primary Address Details"),
 | |
| 			collapsible: 1
 | |
| 		},
 | |
| 		{
 | |
| 			label: __("Address Line 1"),
 | |
| 			fieldname: "address_line1",
 | |
| 			fieldtype: "Data"
 | |
| 		},
 | |
| 		{
 | |
| 			label: __("Address Line 2"),
 | |
| 			fieldname: "address_line2",
 | |
| 			fieldtype: "Data"
 | |
| 		},
 | |
| 		{
 | |
| 			label: __("ZIP Code"),
 | |
| 			fieldname: "pincode",
 | |
| 			fieldtype: "Data"
 | |
| 		},
 | |
| 		{
 | |
| 			fieldtype: "Column Break"
 | |
| 		},
 | |
| 		{
 | |
| 			label: __("City"),
 | |
| 			fieldname: "city",
 | |
| 			fieldtype: "Data"
 | |
| 		},
 | |
| 		{
 | |
| 			label: __("State"),
 | |
| 			fieldname: "state",
 | |
| 			fieldtype: "Data"
 | |
| 		},
 | |
| 		{
 | |
| 			label: __("Country"),
 | |
| 			fieldname: "country",
 | |
| 			fieldtype: "Link",
 | |
| 			options: "Country"
 | |
| 		},
 | |
| 		{
 | |
| 			label: __("Customer POS Id"),
 | |
| 			fieldname: "customer_pos_id",
 | |
| 			fieldtype: "Data",
 | |
| 			hidden: 1
 | |
| 		}];
 | |
| 
 | |
| 		return variant_fields;
 | |
| 	}
 | |
| }
 |