feat(marketplace): unpublish item from hub
diff --git a/erpnext/hub_node/api.py b/erpnext/hub_node/api.py
index 0d01c67..b0b00b2 100644
--- a/erpnext/hub_node/api.py
+++ b/erpnext/hub_node/api.py
@@ -70,7 +70,7 @@
 	field_mappings = get_field_mappings()
 	table_fields = [d.fieldname for d in frappe.get_meta('Item').get_table_fields()]
 
-	hub_seller_name = frappe.db.get_value('Marketplace Settings' , 'Marketplace Settings', 'hub_seller_name')
+	hub_seller_name = frappe.db.get_value('Marketplace Settings', 'Marketplace Settings', 'hub_seller_name')
 
 	for item in items:
 		for fieldname in table_fields:
@@ -148,6 +148,23 @@
 		frappe.log_error(message=e, title='Hub Sync Error')
 
 @frappe.whitelist()
+def unpublish_item(item):
+	''' Remove item listing from the marketplace '''
+	item = json.loads(item)
+
+	item_code = item.get('item_code')
+	frappe.db.set_value('Item', item_code, 'publish_in_hub', 0)
+
+	item = map_fields([item])[0]
+
+	try:
+		connection = get_hub_connection()
+		connection.set_value('Hub Item', item.get('name'), 'published', 0)
+
+	except Exception as e:
+		frappe.log_error(message=e, title='Hub Sync Error')
+
+@frappe.whitelist()
 def get_unregistered_users():
 	settings = frappe.get_single('Marketplace Settings')
 	registered_users = [user.user for user in settings.users] + ['Administrator', 'Guest']
diff --git a/erpnext/public/js/hub/pages/Item.vue b/erpnext/public/js/hub/pages/Item.vue
index 841d004..285f696 100644
--- a/erpnext/public/js/hub/pages/Item.vue
+++ b/erpnext/public/js/hub/pages/Item.vue
@@ -300,7 +300,21 @@
 		},
 
 		unpublish_item() {
-			frappe.msgprint(__('This feature is under development...'));
+			let me = this;
+			frappe.confirm(__(`Unpublish ${this.item.item_name}?`), function () {
+				frappe.call(
+					'erpnext.hub_node.api.unpublish_item',
+					{
+						item: me.item
+					}
+				)
+				.then((r) => {
+					frappe.set_route(`marketplace/home`);
+					frappe.show_alert(__('Item listing removed'))
+
+				})
+				
+			})
 		}
 	}
 }