[hub] make get_items generic, add legacy.py
diff --git a/erpnext/hub_node/api.py b/erpnext/hub_node/api.py
index a1d9e8a..559e22a 100644
--- a/erpnext/hub_node/api.py
+++ b/erpnext/hub_node/api.py
@@ -17,8 +17,6 @@
response = connection.post_request(params)
return response
-
-#### LOCAL ITEMS
@frappe.whitelist()
def get_valid_items(search_value=''):
items = frappe.get_list(
@@ -58,10 +56,6 @@
frappe.throw(e)
def item_sync_preprocess():
- # Call Hub to make a new activity
- # and return an activity ID
- # that will be used as the remote ID for the Migration Run
-
hub_seller = frappe.db.get_value("Hub Settings", "Hub Settings", "company_email")
response = call_hub_method('add_hub_seller_activity', {
@@ -104,182 +98,3 @@
# read-only connection
hub_connection = FrappeClient(frappe.conf.hub_url)
return hub_connection
-
-
-
-# Legacy functionality
-# =============================================================================
-
-@frappe.whitelist()
-def get_item_favourites(start=0, limit=20, fields=["*"], order_by=None):
- doctype = 'Hub Item'
- hub_settings = frappe.get_doc('Hub Settings')
- item_names_str = hub_settings.get('custom_data') or '[]'
- item_names = json.loads(item_names_str)
- filters = json.dumps({
- 'hub_item_code': ['in', item_names]
- })
- return get_list(doctype, start, limit, fields, filters, order_by)
-
-@frappe.whitelist()
-def update_wishlist_item(item_name, remove=0):
- remove = int(remove)
- hub_settings = frappe.get_doc('Hub Settings')
- data = hub_settings.get('custom_data')
- if not data or not json.loads(data):
- data = '[]'
- hub_settings.custom_data = data
- hub_settings.save()
-
- item_names_str = data
- item_names = json.loads(item_names_str)
- if not remove and item_name not in item_names:
- item_names.append(item_name)
- if remove and item_name in item_names:
- item_names.remove(item_name)
-
- item_names_str = json.dumps(item_names)
-
- hub_settings.custom_data = item_names_str
- hub_settings.save()
-
-@frappe.whitelist()
-def update_category(hub_item_code, category):
- connection = get_hub_connection()
-
- # args = frappe._dict(dict(
- # doctype='Hub Category',
- # hub_category_name=category
- # ))
- # response = connection.insert('Hub Category', args)
-
- response = connection.update('Hub Item', frappe._dict(dict(
- doctype='Hub Item',
- hub_category = category
- )), hub_item_code)
-
- return response
-
-def make_opportunity(buyer_name, email_id):
- buyer_name = "HUB-" + buyer_name
-
- if not frappe.db.exists('Lead', {'email_id': email_id}):
- lead = frappe.new_doc("Lead")
- lead.lead_name = buyer_name
- lead.email_id = email_id
- lead.save(ignore_permissions=True)
-
- o = frappe.new_doc("Opportunity")
- o.enquiry_from = "Lead"
- o.lead = frappe.get_all("Lead", filters={"email_id": email_id}, fields = ["name"])[0]["name"]
- o.save(ignore_permissions=True)
-
-@frappe.whitelist()
-def make_rfq_and_send_opportunity(item, supplier):
- supplier = make_supplier(supplier)
- contact = make_contact(supplier)
- item = make_item(item)
- rfq = make_rfq(item, supplier, contact)
- status = send_opportunity(contact)
-
- return {
- 'rfq': rfq,
- 'hub_document_created': status
- }
-
-def make_supplier(supplier):
- # make supplier if not already exists
- supplier = frappe._dict(json.loads(supplier))
-
- if not frappe.db.exists('Supplier', {'supplier_name': supplier.supplier_name}):
- supplier_doc = frappe.get_doc({
- 'doctype': 'Supplier',
- 'supplier_name': supplier.supplier_name,
- 'supplier_group': supplier.supplier_group,
- 'supplier_email': supplier.supplier_email
- }).insert()
- else:
- supplier_doc = frappe.get_doc('Supplier', supplier.supplier_name)
-
- return supplier_doc
-
-def make_contact(supplier):
- contact_name = get_default_contact('Supplier', supplier.supplier_name)
- # make contact if not already exists
- if not contact_name:
- contact = frappe.get_doc({
- 'doctype': 'Contact',
- 'first_name': supplier.supplier_name,
- 'email_id': supplier.supplier_email,
- 'is_primary_contact': 1,
- 'links': [
- {'link_doctype': 'Supplier', 'link_name': supplier.supplier_name}
- ]
- }).insert()
- else:
- contact = frappe.get_doc('Contact', contact_name)
-
- return contact
-
-def make_item(item):
- # make item if not already exists
- item = frappe._dict(json.loads(item))
-
- if not frappe.db.exists('Item', {'item_code': item.item_code}):
- item_doc = frappe.get_doc({
- 'doctype': 'Item',
- 'item_code': item.item_code,
- 'item_group': item.item_group,
- 'is_item_from_hub': 1
- }).insert()
- else:
- item_doc = frappe.get_doc('Item', item.item_code)
-
- return item_doc
-
-def make_rfq(item, supplier, contact):
- # make rfq
- rfq = frappe.get_doc({
- 'doctype': 'Request for Quotation',
- 'transaction_date': nowdate(),
- 'status': 'Draft',
- 'company': frappe.db.get_single_value('Hub Settings', 'company'),
- 'message_for_supplier': 'Please supply the specified items at the best possible rates',
- 'suppliers': [
- { 'supplier': supplier.name, 'contact': contact.name }
- ],
- 'items': [
- {
- 'item_code': item.item_code,
- 'qty': 1,
- 'schedule_date': nowdate(),
- 'warehouse': item.default_warehouse or get_root_of("Warehouse"),
- 'description': item.description,
- 'uom': item.stock_uom
- }
- ]
- }).insert()
-
- rfq.save()
- rfq.submit()
- return rfq
-
-def send_opportunity(contact):
- # Make Hub Message on Hub with lead data
- doc = {
- 'doctype': 'Lead',
- 'lead_name': frappe.db.get_single_value('Hub Settings', 'company'),
- 'email_id': frappe.db.get_single_value('Hub Settings', 'user')
- }
-
- args = frappe._dict(dict(
- doctype='Hub Message',
- reference_doctype='Lead',
- data=json.dumps(doc),
- user=contact.email_id
- ))
-
- connection = get_hub_connection()
- response = connection.insert('Hub Message', args)
-
- return response.ok
diff --git a/erpnext/hub_node/legacy.py b/erpnext/hub_node/legacy.py
new file mode 100644
index 0000000..87d4e1b
--- /dev/null
+++ b/erpnext/hub_node/legacy.py
@@ -0,0 +1,178 @@
+from __future__ import unicode_literals
+import frappe, requests, json
+from frappe.utils import now, nowdate
+from frappe.frappeclient import FrappeClient
+
+@frappe.whitelist()
+def get_item_favourites(start=0, limit=20, fields=["*"], order_by=None):
+ doctype = 'Hub Item'
+ hub_settings = frappe.get_doc('Hub Settings')
+ item_names_str = hub_settings.get('custom_data') or '[]'
+ item_names = json.loads(item_names_str)
+ filters = json.dumps({
+ 'hub_item_code': ['in', item_names]
+ })
+ return get_list(doctype, start, limit, fields, filters, order_by)
+
+@frappe.whitelist()
+def update_wishlist_item(item_name, remove=0):
+ remove = int(remove)
+ hub_settings = frappe.get_doc('Hub Settings')
+ data = hub_settings.get('custom_data')
+ if not data or not json.loads(data):
+ data = '[]'
+ hub_settings.custom_data = data
+ hub_settings.save()
+
+ item_names_str = data
+ item_names = json.loads(item_names_str)
+ if not remove and item_name not in item_names:
+ item_names.append(item_name)
+ if remove and item_name in item_names:
+ item_names.remove(item_name)
+
+ item_names_str = json.dumps(item_names)
+
+ hub_settings.custom_data = item_names_str
+ hub_settings.save()
+
+@frappe.whitelist()
+def update_category(hub_item_code, category):
+ connection = get_hub_connection()
+
+ # args = frappe._dict(dict(
+ # doctype='Hub Category',
+ # hub_category_name=category
+ # ))
+ # response = connection.insert('Hub Category', args)
+
+ response = connection.update('Hub Item', frappe._dict(dict(
+ doctype='Hub Item',
+ hub_category = category
+ )), hub_item_code)
+
+ return response
+
+def make_opportunity(buyer_name, email_id):
+ buyer_name = "HUB-" + buyer_name
+
+ if not frappe.db.exists('Lead', {'email_id': email_id}):
+ lead = frappe.new_doc("Lead")
+ lead.lead_name = buyer_name
+ lead.email_id = email_id
+ lead.save(ignore_permissions=True)
+
+ o = frappe.new_doc("Opportunity")
+ o.enquiry_from = "Lead"
+ o.lead = frappe.get_all("Lead", filters={"email_id": email_id}, fields = ["name"])[0]["name"]
+ o.save(ignore_permissions=True)
+
+@frappe.whitelist()
+def make_rfq_and_send_opportunity(item, supplier):
+ supplier = make_supplier(supplier)
+ contact = make_contact(supplier)
+ item = make_item(item)
+ rfq = make_rfq(item, supplier, contact)
+ status = send_opportunity(contact)
+
+ return {
+ 'rfq': rfq,
+ 'hub_document_created': status
+ }
+
+def make_supplier(supplier):
+ # make supplier if not already exists
+ supplier = frappe._dict(json.loads(supplier))
+
+ if not frappe.db.exists('Supplier', {'supplier_name': supplier.supplier_name}):
+ supplier_doc = frappe.get_doc({
+ 'doctype': 'Supplier',
+ 'supplier_name': supplier.supplier_name,
+ 'supplier_group': supplier.supplier_group,
+ 'supplier_email': supplier.supplier_email
+ }).insert()
+ else:
+ supplier_doc = frappe.get_doc('Supplier', supplier.supplier_name)
+
+ return supplier_doc
+
+def make_contact(supplier):
+ contact_name = get_default_contact('Supplier', supplier.supplier_name)
+ # make contact if not already exists
+ if not contact_name:
+ contact = frappe.get_doc({
+ 'doctype': 'Contact',
+ 'first_name': supplier.supplier_name,
+ 'email_id': supplier.supplier_email,
+ 'is_primary_contact': 1,
+ 'links': [
+ {'link_doctype': 'Supplier', 'link_name': supplier.supplier_name}
+ ]
+ }).insert()
+ else:
+ contact = frappe.get_doc('Contact', contact_name)
+
+ return contact
+
+def make_item(item):
+ # make item if not already exists
+ item = frappe._dict(json.loads(item))
+
+ if not frappe.db.exists('Item', {'item_code': item.item_code}):
+ item_doc = frappe.get_doc({
+ 'doctype': 'Item',
+ 'item_code': item.item_code,
+ 'item_group': item.item_group,
+ 'is_item_from_hub': 1
+ }).insert()
+ else:
+ item_doc = frappe.get_doc('Item', item.item_code)
+
+ return item_doc
+
+def make_rfq(item, supplier, contact):
+ # make rfq
+ rfq = frappe.get_doc({
+ 'doctype': 'Request for Quotation',
+ 'transaction_date': nowdate(),
+ 'status': 'Draft',
+ 'company': frappe.db.get_single_value('Hub Settings', 'company'),
+ 'message_for_supplier': 'Please supply the specified items at the best possible rates',
+ 'suppliers': [
+ { 'supplier': supplier.name, 'contact': contact.name }
+ ],
+ 'items': [
+ {
+ 'item_code': item.item_code,
+ 'qty': 1,
+ 'schedule_date': nowdate(),
+ 'warehouse': item.default_warehouse or get_root_of("Warehouse"),
+ 'description': item.description,
+ 'uom': item.stock_uom
+ }
+ ]
+ }).insert()
+
+ rfq.save()
+ rfq.submit()
+ return rfq
+
+def send_opportunity(contact):
+ # Make Hub Message on Hub with lead data
+ doc = {
+ 'doctype': 'Lead',
+ 'lead_name': frappe.db.get_single_value('Hub Settings', 'company'),
+ 'email_id': frappe.db.get_single_value('Hub Settings', 'user')
+ }
+
+ args = frappe._dict(dict(
+ doctype='Hub Message',
+ reference_doctype='Lead',
+ data=json.dumps(doc),
+ user=contact.email_id
+ ))
+
+ connection = get_hub_connection()
+ response = connection.insert('Hub Message', args)
+
+ return response.ok
diff --git a/erpnext/public/js/hub/pages/item.js b/erpnext/public/js/hub/pages/item.js
index 559a4d6..609479b 100644
--- a/erpnext/public/js/hub/pages/item.js
+++ b/erpnext/public/js/hub/pages/item.js
@@ -41,7 +41,10 @@
}
get_item(hub_item_code) {
- return hub.call('get_item_details', { hub_item_code });
+ return hub.call('get_item_details', {
+ hub_seller: hub.settings.company_email,
+ hub_item_code
+ });
}
render(item) {
@@ -313,4 +316,4 @@
</div>
</div>`;
}
-}
\ No newline at end of file
+}
diff --git a/erpnext/public/js/hub/pages/published_products.js b/erpnext/public/js/hub/pages/published_products.js
index 11cce4d..1b19a51 100644
--- a/erpnext/public/js/hub/pages/published_products.js
+++ b/erpnext/public/js/hub/pages/published_products.js
@@ -18,6 +18,6 @@
}
get_published_products() {
- return hub.call('get_items_by_seller', { hub_seller: hub.settings.company_email });
+ return hub.call('get_items', { hub_seller: hub.settings.company_email });
}
-}
\ No newline at end of file
+}
diff --git a/erpnext/public/js/hub/pages/search.js b/erpnext/public/js/hub/pages/search.js
index dbaecba..33c2b78 100644
--- a/erpnext/public/js/hub/pages/search.js
+++ b/erpnext/public/js/hub/pages/search.js
@@ -22,7 +22,7 @@
}
get_items_by_keyword(keyword) {
- return hub.call('get_items_by_keyword', { keyword });
+ return hub.call('get_items', { keyword });
}
render(items) {
@@ -31,4 +31,4 @@
const html = get_item_card_container_html(items, title);
this.$wrapper.append(html);
}
-}
\ No newline at end of file
+}