Update entity properties
diff --git a/erpnext/hub_node/__init__.py b/erpnext/hub_node/__init__.py
index 01f71c9..b2a98b4 100644
--- a/erpnext/hub_node/__init__.py
+++ b/erpnext/hub_node/__init__.py
@@ -35,15 +35,17 @@
 	# get categories info with parent category and stuff
 	connection = get_client_connection()
 	categories = connection.get_list('Hub Category', filters={'parent_hub_category': parent})
-	# print("============================================================")
-	# print(categories)
+
 	response = [{'value': c.get('name'), 'expandable': c.get('is_group')} for c in categories]
 	return response
 
-	# return [
-	# 	{'value': 'Men', 'expandable': 1},
-	# 	{'value': 'Women', 'expandable': 0}
-	# ]
+@frappe.whitelist()
+def update_category(item_name, category):
+	connection = get_hub_connection()
+	response = connection.update('Hub Item', dict(
+		hub_category = category
+	), item_name)
+	return response.ok
 
 @frappe.whitelist()
 def get_details(hub_sync_id=None, doctype='Hub Item'):
@@ -53,11 +55,6 @@
 	details = connection.get_doc(doctype, hub_sync_id)
 	return details
 
-# @frappe.whitelist()
-# def get_company_details(hub_sync_id):
-# 	connection = get_client_connection()
-# 	return connection.get_doc('Hub Company', hub_sync_id)
-
 def get_client_connection():
 	# frappeclient connection
 	hub_connection = get_hub_connection()
diff --git a/erpnext/patches.txt b/erpnext/patches.txt
index 45a5b11..69d8a47 100644
--- a/erpnext/patches.txt
+++ b/erpnext/patches.txt
@@ -484,7 +484,7 @@
 erpnext.patches.v10_0.update_asset_calculate_depreciation
 erpnext.patches.v10_0.add_guardian_role_for_parent_portal
 erpnext.patches.v10_0.set_numeric_ranges_in_template_if_blank
-#erpnext.patches.v10_0.update_reserved_qty_for_purchase_order
+erpnext.patches.v10_0.update_reserved_qty_for_purchase_order
 erpnext.patches.v10_0.fichier_des_ecritures_comptables_for_france
 erpnext.patches.v10_0.update_assessment_plan
 erpnext.patches.v10_0.update_assessment_result
@@ -493,4 +493,4 @@
 erpnext.patches.v10_0.set_default_payment_terms_based_on_company
 erpnext.patches.v10_0.update_sales_order_link_to_purchase_order
 erpnext.patches.v10_0.added_extra_gst_custom_field_in_gstr2
-#erpnext.patches.v10_0.item_barcode_childtable_migrate
+erpnext.patches.v10_0.item_barcode_childtable_migrate
diff --git a/erpnext/public/js/hub/hub_factory.js b/erpnext/public/js/hub/hub_factory.js
index 0318c99..1578e4d 100644
--- a/erpnext/public/js/hub/hub_factory.js
+++ b/erpnext/public/js/hub/hub_factory.js
@@ -15,30 +15,33 @@
 				'/assets/erpnext/css/hub.css',
 			]
 		};
+		frappe.model.with_doc('Hub Settings', 'Hub Settings', () => {
+			this.hub_settings = frappe.get_doc('Hub Settings');
 
-		if (!erpnext.hub.pages[page_name]) {
-			if (!route[2]) {
-				// page === 'Item' &&
-				frappe.require(assets['List'], () => {
-					erpnext.hub.pages[page_name] = new erpnext.hub[page+'Listing']({
-						doctype: 'Hub Settings',
-						parent: this.make_page(true, page_name)
+			if (!erpnext.hub.pages[page_name]) {
+				if (!route[2]) {
+					frappe.require(assets['List'], () => {
+						erpnext.hub.pages[page_name] = new erpnext.hub[page+'Listing']({
+							parent: this.make_page(true, page_name),
+							hub_settings: this.hub_settings
+						});
+						window.hub_page = erpnext.hub.pages[page_name];
 					});
-					window.hub_page = erpnext.hub.pages[page_name];
-				});
+				} else {
+					frappe.require(assets['Form'], () => {
+						erpnext.hub.pages[page_name] = new erpnext.hub[page+'Page']({
+							unique_id: route[2],
+							doctype: route[2],
+							parent: this.make_page(true, page_name),
+							hub_settings: this.hub_settings
+						});
+						window.hub_page = erpnext.hub.pages[page_name];
+					});
+				}
 			} else {
-				frappe.require(assets['Form'], () => {
-					erpnext.hub.pages[page_name] = new erpnext.hub[page+'Page']({
-						unique_id: route[2],
-						doctype: 'Hub Settings',
-						parent: this.make_page(true, page_name)
-					});
-					window.hub_page = erpnext.hub.pages[page_name];
-				});
+				frappe.container.change_to(page_name);
+				window.hub_page = erpnext.hub.pages[page_name];
 			}
-		} else {
-			frappe.container.change_to(page_name);
-			window.hub_page = erpnext.hub.pages[page_name];
-		}
+		});
 	}
 });
diff --git a/erpnext/public/js/hub/hub_form.js b/erpnext/public/js/hub/hub_form.js
index eb7c6b4..fe39793 100644
--- a/erpnext/public/js/hub/hub_form.js
+++ b/erpnext/public/js/hub/hub_form.js
@@ -4,11 +4,11 @@
 	setup_defaults() {
 		super.setup_defaults();
 		this.method = 'erpnext.hub_node.get_details';
-		//doctype, unique_id,
+		const route = frappe.get_route();
+		this.page_name = route[2];
 	}
 
 	set_breadcrumbs() {
-		this.set_title();
 		frappe.breadcrumbs.add({
 			label: __('Hub'),
 			route: '#Hub/' + this.doctype,
@@ -16,10 +16,6 @@
 		});
 	}
 
-	set_title() {
-		this.page_title = this.data.item_name || this.hub_item_code || 'Hub' + this.doctype;
-	}
-
 	setup_side_bar() {
 		this.sidebar = new frappe.ui.Sidebar({
 			wrapper: this.$page.find('.layout-side-section'),
@@ -56,15 +52,7 @@
 			label: image_html
 		});
 
-		let fields = [];
-		this.fields.map(fieldname => {
-			fields.push({
-				label: toTitle(frappe.model.unscrub(fieldname)),
-				fieldname,
-				fieldtype: 'Data',
-				read_only: 1
-			});
-		});
+		let fields = this.get_field_configs();
 
 		this.form = new frappe.ui.FieldGroup({
 			parent: this.$result,
@@ -93,39 +81,51 @@
 		this.image_field_name = 'image';
 	}
 
-	setup_fields() {
-		this.fields = ['hub_item_code', 'item_name', 'item_code', 'description',
-			'seller', 'company_name', 'country', 'hub_category'];
+	get_field_configs() {
+		let fields = [];
+		this.fields.map(fieldname => {
+			fields.push({
+				label: toTitle(frappe.model.unscrub(fieldname)),
+				fieldname,
+				fieldtype: 'Data',
+				read_only: 1
+			});
+		});
+
+		let category_field = {
+			label: 'Hub Category',
+			fieldname: 'hub_category',
+			fieldtype: 'Data'
+		}
+
+		if(this.data.company_name === this.hub_settings.company) {
+			this.page.set_primary_action(__('Update'), () => {
+				this.update_on_hub();
+			}, 'octicon octicon-plus');
+		} else {
+			category_field.read_only = 1;
+		}
+
+		fields.push(category_field);
+
+		return fields;
 	}
 
-	show_action_modal(item) {
-		return new Promise(res => {
-			let fields = [
-				{ label: __('Item Code'), fieldtype: 'Data', fieldname: 'item_code', default: item.item_code },
-				{ fieldtype: 'Column Break' },
-				{ label: __('Item Group'), fieldtype: 'Link', fieldname: 'item_group', default: item.item_group },
-				{ label: __('Supplier Details'), fieldtype: 'Section Break' },
-				{ label: __('Supplier Name'), fieldtype: 'Data', fieldname: 'supplier_name', default: item.company_name },
-				{ label: __('Supplier Email'), fieldtype: 'Data', fieldname: 'supplier_email', default: item.seller },
-				{ fieldtype: 'Column Break' },
-				{ label: __('Supplier Type'), fieldname: 'supplier_type',
-					fieldtype: 'Link', options: 'Supplier Type' }
-			];
-			fields = fields.map(f => { f.reqd = 1; return f; });
-
-			const d = new frappe.ui.Dialog({
-				title: __('Request for Quotation'),
-				fields: fields,
-				primary_action_label: __('Send'),
-				primary_action: (values) => {
-					res(values);
-					d.hide();
-				}
-			});
-
-			d.show();
+	update_on_hub() {
+		return new Promise((resolve, reject) => {
+			frappe.call({
+				method: 'erpnext.hub_node.update_category',
+				args: { item: this.unique_id, category: this.form.get_value('hub_category') },
+				callback: resolve,
+				freeze: true
+			}).fail(reject);
 		});
 	}
+
+	setup_fields() {
+		this.fields = ['hub_item_code', 'item_name', 'item_code', 'description',
+			'seller', 'company_name', 'country'];
+	}
 }
 
 erpnext.hub.CompanyPage = class CompanyPage extends erpnext.hub.HubForm{
@@ -135,6 +135,20 @@
 		this.image_field_name = 'company_logo';
 	}
 
+	get_field_configs() {
+		let fields = [];
+		this.fields.map(fieldname => {
+			fields.push({
+				label: toTitle(frappe.model.unscrub(fieldname)),
+				fieldname,
+				fieldtype: 'Data',
+				read_only: 1
+			});
+		});
+
+		return fields;
+	}
+
 	setup_fields() {
 		this.fields = ['company_name', 'description', 'route', 'country', 'seller', 'site_name'];
 	}
diff --git a/erpnext/public/js/hub/hub_page.js b/erpnext/public/js/hub/hub_page.js
index beea480..f333fee 100644
--- a/erpnext/public/js/hub/hub_page.js
+++ b/erpnext/public/js/hub/hub_page.js
@@ -126,6 +126,21 @@
 				this.update_category(node.label);
 			}
 		});
+
+		this.sidebar.add_item({
+			label: this.hub_settings.company,
+			on_click: () => frappe.set_route('Form', 'Company', this.hub_settings.company)
+		}, __("Account"));
+
+		this.sidebar.add_item({
+			label: __('Companies'),
+			on_click: () => frappe.set_route('Hub', 'Company')
+		});
+
+		this.sidebar.add_item({
+			label: __("My Orders"),
+			on_click: () => frappe.set_route('List', 'Request for Quotation')
+		}, __("Account"));
 	}
 
 	update_category(label) {
@@ -171,9 +186,10 @@
 						<h5 class="bold">
 							${ title }
 						</h5>
-						<p>${ company_name }</p>
+
 					</div>
 				</a>
+				<a href="${'#Hub/Company/'+company_name}"><p>${ company_name }</p></a>
 			</div>
 		`;
 	}