mirror of
https://github.com/frappe/erpnext.git
synced 2026-05-05 06:28:29 +00:00
style: bulk format code with black
v13 port because otherwise backports will result in conflicts always
This commit is contained in:
@@ -7,12 +7,13 @@ import frappe
|
||||
|
||||
@frappe.whitelist()
|
||||
def enable_hub():
|
||||
hub_settings = frappe.get_doc('Marketplace Settings')
|
||||
hub_settings = frappe.get_doc("Marketplace Settings")
|
||||
hub_settings.register()
|
||||
frappe.db.commit()
|
||||
return hub_settings
|
||||
|
||||
|
||||
@frappe.whitelist()
|
||||
def sync():
|
||||
hub_settings = frappe.get_doc('Marketplace Settings')
|
||||
hub_settings = frappe.get_doc("Marketplace Settings")
|
||||
hub_settings.sync()
|
||||
|
||||
@@ -1,4 +1,3 @@
|
||||
|
||||
import json
|
||||
|
||||
import frappe
|
||||
@@ -14,24 +13,24 @@ current_user = frappe.session.user
|
||||
def register_marketplace(company, company_description):
|
||||
validate_registerer()
|
||||
|
||||
settings = frappe.get_single('Marketplace Settings')
|
||||
settings = frappe.get_single("Marketplace Settings")
|
||||
message = settings.register_seller(company, company_description)
|
||||
|
||||
if message.get('hub_seller_name'):
|
||||
if message.get("hub_seller_name"):
|
||||
settings.registered = 1
|
||||
settings.hub_seller_name = message.get('hub_seller_name')
|
||||
settings.hub_seller_name = message.get("hub_seller_name")
|
||||
settings.save()
|
||||
|
||||
settings.add_hub_user(frappe.session.user)
|
||||
|
||||
return { 'ok': 1 }
|
||||
return {"ok": 1}
|
||||
|
||||
|
||||
@frappe.whitelist()
|
||||
def register_users(user_list):
|
||||
user_list = json.loads(user_list)
|
||||
|
||||
settings = frappe.get_single('Marketplace Settings')
|
||||
settings = frappe.get_single("Marketplace Settings")
|
||||
|
||||
for user in user_list:
|
||||
settings.add_hub_user(user)
|
||||
@@ -40,14 +39,16 @@ def register_users(user_list):
|
||||
|
||||
|
||||
def validate_registerer():
|
||||
if current_user == 'Administrator':
|
||||
frappe.throw(_('Please login as another user to register on Marketplace'))
|
||||
if current_user == "Administrator":
|
||||
frappe.throw(_("Please login as another user to register on Marketplace"))
|
||||
|
||||
valid_roles = ['System Manager', 'Item Manager']
|
||||
valid_roles = ["System Manager", "Item Manager"]
|
||||
|
||||
if not frappe.utils.is_subset(valid_roles, frappe.get_roles()):
|
||||
frappe.throw(_('Only users with {0} role can register on Marketplace').format(', '.join(valid_roles)),
|
||||
frappe.PermissionError)
|
||||
frappe.throw(
|
||||
_("Only users with {0} role can register on Marketplace").format(", ".join(valid_roles)),
|
||||
frappe.PermissionError,
|
||||
)
|
||||
|
||||
|
||||
@frappe.whitelist()
|
||||
@@ -57,9 +58,7 @@ def call_hub_method(method, params=None):
|
||||
if isinstance(params, string_types):
|
||||
params = json.loads(params)
|
||||
|
||||
params.update({
|
||||
'cmd': 'hub.hub.api.' + method
|
||||
})
|
||||
params.update({"cmd": "hub.hub.api." + method})
|
||||
|
||||
response = connection.post_request(params)
|
||||
return response
|
||||
@@ -67,81 +66,81 @@ def call_hub_method(method, params=None):
|
||||
|
||||
def map_fields(items):
|
||||
field_mappings = get_field_mappings()
|
||||
table_fields = [d.fieldname for d in frappe.get_meta('Item').get_table_fields()]
|
||||
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:
|
||||
item.pop(fieldname, None)
|
||||
|
||||
for mapping in field_mappings:
|
||||
local_fieldname = mapping.get('local_fieldname')
|
||||
remote_fieldname = mapping.get('remote_fieldname')
|
||||
local_fieldname = mapping.get("local_fieldname")
|
||||
remote_fieldname = mapping.get("remote_fieldname")
|
||||
|
||||
value = item.get(local_fieldname)
|
||||
item.pop(local_fieldname, None)
|
||||
item[remote_fieldname] = value
|
||||
|
||||
item['doctype'] = 'Hub Item'
|
||||
item['hub_seller'] = hub_seller_name
|
||||
item.pop('attachments', None)
|
||||
item["doctype"] = "Hub Item"
|
||||
item["hub_seller"] = hub_seller_name
|
||||
item.pop("attachments", None)
|
||||
|
||||
return items
|
||||
|
||||
|
||||
@frappe.whitelist()
|
||||
def get_valid_items(search_value=''):
|
||||
def get_valid_items(search_value=""):
|
||||
items = frappe.get_list(
|
||||
'Item',
|
||||
"Item",
|
||||
fields=["*"],
|
||||
filters={
|
||||
'disabled': 0,
|
||||
'item_name': ['like', '%' + search_value + '%'],
|
||||
'publish_in_hub': 0
|
||||
},
|
||||
order_by="modified desc"
|
||||
filters={"disabled": 0, "item_name": ["like", "%" + search_value + "%"], "publish_in_hub": 0},
|
||||
order_by="modified desc",
|
||||
)
|
||||
|
||||
valid_items = filter(lambda x: x.image and x.description, items)
|
||||
|
||||
def prepare_item(item):
|
||||
item.source_type = "local"
|
||||
item.attachments = get_attachments('Item', item.item_code)
|
||||
item.attachments = get_attachments("Item", item.item_code)
|
||||
return item
|
||||
|
||||
valid_items = map(prepare_item, valid_items)
|
||||
|
||||
return valid_items
|
||||
|
||||
|
||||
@frappe.whitelist()
|
||||
def update_item(ref_doc, data):
|
||||
data = json.loads(data)
|
||||
|
||||
data.update(dict(doctype='Hub Item', name=ref_doc))
|
||||
data.update(dict(doctype="Hub Item", name=ref_doc))
|
||||
try:
|
||||
connection = get_hub_connection()
|
||||
connection.update(data)
|
||||
except Exception as e:
|
||||
frappe.log_error(message=e, title='Hub Sync Error')
|
||||
frappe.log_error(message=e, title="Hub Sync Error")
|
||||
|
||||
|
||||
@frappe.whitelist()
|
||||
def publish_selected_items(items_to_publish):
|
||||
items_to_publish = json.loads(items_to_publish)
|
||||
items_to_update = []
|
||||
if not len(items_to_publish):
|
||||
frappe.throw(_('No items to publish'))
|
||||
frappe.throw(_("No items to publish"))
|
||||
|
||||
for item in items_to_publish:
|
||||
item_code = item.get('item_code')
|
||||
frappe.db.set_value('Item', item_code, 'publish_in_hub', 1)
|
||||
item_code = item.get("item_code")
|
||||
frappe.db.set_value("Item", item_code, "publish_in_hub", 1)
|
||||
|
||||
hub_dict = {
|
||||
'doctype': 'Hub Tracked Item',
|
||||
'item_code': item_code,
|
||||
'published': 1,
|
||||
'hub_category': item.get('hub_category'),
|
||||
'image_list': item.get('image_list')
|
||||
"doctype": "Hub Tracked Item",
|
||||
"item_code": item_code,
|
||||
"published": 1,
|
||||
"hub_category": item.get("hub_category"),
|
||||
"image_list": item.get("image_list"),
|
||||
}
|
||||
frappe.get_doc(hub_dict).insert(ignore_if_duplicate=True)
|
||||
|
||||
@@ -157,65 +156,67 @@ def publish_selected_items(items_to_publish):
|
||||
|
||||
item_sync_postprocess()
|
||||
except Exception as e:
|
||||
frappe.log_error(message=e, title='Hub Sync Error')
|
||||
frappe.log_error(message=e, title="Hub Sync Error")
|
||||
|
||||
|
||||
@frappe.whitelist()
|
||||
def unpublish_item(item_code, hub_item_name):
|
||||
''' Remove item listing from the marketplace '''
|
||||
"""Remove item listing from the marketplace"""
|
||||
|
||||
response = call_hub_method('unpublish_item', {
|
||||
'hub_item_name': hub_item_name
|
||||
})
|
||||
response = call_hub_method("unpublish_item", {"hub_item_name": hub_item_name})
|
||||
|
||||
if response:
|
||||
frappe.db.set_value('Item', item_code, 'publish_in_hub', 0)
|
||||
frappe.delete_doc('Hub Tracked Item', item_code)
|
||||
frappe.db.set_value("Item", item_code, "publish_in_hub", 0)
|
||||
frappe.delete_doc("Hub Tracked Item", item_code)
|
||||
else:
|
||||
frappe.throw(_('Unable to update remote activity'))
|
||||
frappe.throw(_("Unable to update remote activity"))
|
||||
|
||||
|
||||
@frappe.whitelist()
|
||||
def get_unregistered_users():
|
||||
settings = frappe.get_single('Marketplace Settings')
|
||||
registered_users = [user.user for user in settings.users] + ['Administrator', 'Guest']
|
||||
all_users = [user.name for user in frappe.db.get_all('User', filters={'enabled': 1})]
|
||||
settings = frappe.get_single("Marketplace Settings")
|
||||
registered_users = [user.user for user in settings.users] + ["Administrator", "Guest"]
|
||||
all_users = [user.name for user in frappe.db.get_all("User", filters={"enabled": 1})]
|
||||
unregistered_users = [user for user in all_users if user not in registered_users]
|
||||
return unregistered_users
|
||||
|
||||
|
||||
def item_sync_preprocess(intended_item_publish_count):
|
||||
response = call_hub_method('pre_items_publish', {
|
||||
'intended_item_publish_count': intended_item_publish_count
|
||||
})
|
||||
response = call_hub_method(
|
||||
"pre_items_publish", {"intended_item_publish_count": intended_item_publish_count}
|
||||
)
|
||||
|
||||
if response:
|
||||
frappe.db.set_value("Marketplace Settings", "Marketplace Settings", "sync_in_progress", 1)
|
||||
return response
|
||||
else:
|
||||
frappe.throw(_('Unable to update remote activity'))
|
||||
frappe.throw(_("Unable to update remote activity"))
|
||||
|
||||
|
||||
def item_sync_postprocess():
|
||||
response = call_hub_method('post_items_publish', {})
|
||||
response = call_hub_method("post_items_publish", {})
|
||||
if response:
|
||||
frappe.db.set_value('Marketplace Settings', 'Marketplace Settings', 'last_sync_datetime', frappe.utils.now())
|
||||
frappe.db.set_value(
|
||||
"Marketplace Settings", "Marketplace Settings", "last_sync_datetime", frappe.utils.now()
|
||||
)
|
||||
else:
|
||||
frappe.throw(_('Unable to update remote activity'))
|
||||
frappe.throw(_("Unable to update remote activity"))
|
||||
|
||||
frappe.db.set_value('Marketplace Settings', 'Marketplace Settings', 'sync_in_progress', 0)
|
||||
frappe.db.set_value("Marketplace Settings", "Marketplace Settings", "sync_in_progress", 0)
|
||||
|
||||
|
||||
def convert_relative_image_urls_to_absolute(items):
|
||||
from six.moves.urllib.parse import urljoin
|
||||
|
||||
for item in items:
|
||||
file_path = item['image']
|
||||
file_path = item["image"]
|
||||
|
||||
if file_path.startswith('/files/'):
|
||||
item['image'] = urljoin(frappe.utils.get_url(), file_path)
|
||||
if file_path.startswith("/files/"):
|
||||
item["image"] = urljoin(frappe.utils.get_url(), file_path)
|
||||
|
||||
|
||||
def get_hub_connection():
|
||||
settings = frappe.get_single('Marketplace Settings')
|
||||
settings = frappe.get_single("Marketplace Settings")
|
||||
marketplace_url = settings.marketplace_url
|
||||
hub_user = settings.get_hub_user(frappe.session.user)
|
||||
|
||||
|
||||
@@ -10,82 +10,82 @@ from frappe.utils import cint
|
||||
|
||||
|
||||
class MarketplaceSettings(Document):
|
||||
|
||||
def register_seller(self, company, company_description):
|
||||
|
||||
country, currency, company_logo = frappe.db.get_value('Company', company,
|
||||
['country', 'default_currency', 'company_logo'])
|
||||
country, currency, company_logo = frappe.db.get_value(
|
||||
"Company", company, ["country", "default_currency", "company_logo"]
|
||||
)
|
||||
|
||||
company_details = {
|
||||
'company': company,
|
||||
'country': country,
|
||||
'currency': currency,
|
||||
'company_description': company_description,
|
||||
'company_logo': company_logo,
|
||||
'site_name': frappe.utils.get_url()
|
||||
"company": company,
|
||||
"country": country,
|
||||
"currency": currency,
|
||||
"company_description": company_description,
|
||||
"company_logo": company_logo,
|
||||
"site_name": frappe.utils.get_url(),
|
||||
}
|
||||
|
||||
hub_connection = self.get_connection()
|
||||
|
||||
response = hub_connection.post_request({
|
||||
'cmd': 'hub.hub.api.add_hub_seller',
|
||||
'company_details': json.dumps(company_details)
|
||||
})
|
||||
response = hub_connection.post_request(
|
||||
{"cmd": "hub.hub.api.add_hub_seller", "company_details": json.dumps(company_details)}
|
||||
)
|
||||
|
||||
return response
|
||||
|
||||
|
||||
def add_hub_user(self, user_email):
|
||||
'''Create a Hub User and User record on hub server
|
||||
"""Create a Hub User and User record on hub server
|
||||
and if successfull append it to Hub User table
|
||||
'''
|
||||
"""
|
||||
|
||||
if not self.registered:
|
||||
return
|
||||
|
||||
hub_connection = self.get_connection()
|
||||
|
||||
first_name, last_name = frappe.db.get_value('User', user_email, ['first_name', 'last_name'])
|
||||
first_name, last_name = frappe.db.get_value("User", user_email, ["first_name", "last_name"])
|
||||
|
||||
hub_user = hub_connection.post_request({
|
||||
'cmd': 'hub.hub.api.add_hub_user',
|
||||
'user_email': user_email,
|
||||
'first_name': first_name,
|
||||
'last_name': last_name,
|
||||
'hub_seller': self.hub_seller_name
|
||||
})
|
||||
hub_user = hub_connection.post_request(
|
||||
{
|
||||
"cmd": "hub.hub.api.add_hub_user",
|
||||
"user_email": user_email,
|
||||
"first_name": first_name,
|
||||
"last_name": last_name,
|
||||
"hub_seller": self.hub_seller_name,
|
||||
}
|
||||
)
|
||||
|
||||
self.append('users', {
|
||||
'user': hub_user.get('user_email'),
|
||||
'hub_user_name': hub_user.get('hub_user_name'),
|
||||
'password': hub_user.get('password')
|
||||
})
|
||||
self.append(
|
||||
"users",
|
||||
{
|
||||
"user": hub_user.get("user_email"),
|
||||
"hub_user_name": hub_user.get("hub_user_name"),
|
||||
"password": hub_user.get("password"),
|
||||
},
|
||||
)
|
||||
|
||||
self.save()
|
||||
|
||||
def get_hub_user(self, user):
|
||||
'''Return the Hub User doc from the `users` table if password is set'''
|
||||
"""Return the Hub User doc from the `users` table if password is set"""
|
||||
|
||||
filtered_users = list(filter(
|
||||
lambda x: x.user == user and x.password,
|
||||
self.users
|
||||
))
|
||||
filtered_users = list(filter(lambda x: x.user == user and x.password, self.users))
|
||||
|
||||
if filtered_users:
|
||||
return filtered_users[0]
|
||||
|
||||
|
||||
def get_connection(self):
|
||||
return FrappeClient(self.marketplace_url)
|
||||
|
||||
|
||||
def unregister(self):
|
||||
"""Disable the User on hubmarket.org"""
|
||||
|
||||
|
||||
@frappe.whitelist()
|
||||
def is_marketplace_enabled():
|
||||
if not hasattr(frappe.local, 'is_marketplace_enabled'):
|
||||
frappe.local.is_marketplace_enabled = cint(frappe.db.get_single_value('Marketplace Settings',
|
||||
'disable_marketplace'))
|
||||
if not hasattr(frappe.local, "is_marketplace_enabled"):
|
||||
frappe.local.is_marketplace_enabled = cint(
|
||||
frappe.db.get_single_value("Marketplace Settings", "disable_marketplace")
|
||||
)
|
||||
|
||||
return frappe.local.is_marketplace_enabled
|
||||
|
||||
@@ -1,4 +1,3 @@
|
||||
|
||||
import json
|
||||
|
||||
import frappe
|
||||
@@ -11,9 +10,10 @@ from frappe.utils.nestedset import get_root_of
|
||||
def get_list(doctype, start, limit, fields, filters, order_by):
|
||||
pass
|
||||
|
||||
|
||||
def get_hub_connection():
|
||||
if frappe.db.exists('Data Migration Connector', 'Hub Connector'):
|
||||
hub_connector = frappe.get_doc('Data Migration Connector', 'Hub Connector')
|
||||
if frappe.db.exists("Data Migration Connector", "Hub Connector"):
|
||||
hub_connector = frappe.get_doc("Data Migration Connector", "Hub Connector")
|
||||
hub_connection = hub_connector.get_connection()
|
||||
return hub_connection.connection
|
||||
|
||||
@@ -21,10 +21,11 @@ def get_hub_connection():
|
||||
hub_connection = FrappeClient(frappe.conf.hub_url)
|
||||
return hub_connection
|
||||
|
||||
|
||||
def make_opportunity(buyer_name, email_id):
|
||||
buyer_name = "HUB-" + buyer_name
|
||||
|
||||
if not frappe.db.exists('Lead', {'email_id': email_id}):
|
||||
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
|
||||
@@ -32,9 +33,10 @@ def make_opportunity(buyer_name, email_id):
|
||||
|
||||
o = frappe.new_doc("Opportunity")
|
||||
o.opportunity_from = "Lead"
|
||||
o.lead = frappe.get_all("Lead", filters={"email_id": email_id}, fields = ["name"])[0]["name"]
|
||||
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)
|
||||
@@ -43,105 +45,110 @@ def make_rfq_and_send_opportunity(item, supplier):
|
||||
rfq = make_rfq(item, supplier, contact)
|
||||
status = send_opportunity(contact)
|
||||
|
||||
return {
|
||||
'rfq': rfq,
|
||||
'hub_document_created': status
|
||||
}
|
||||
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()
|
||||
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)
|
||||
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)
|
||||
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,
|
||||
'is_primary_contact': 1,
|
||||
'links': [
|
||||
{'link_doctype': 'Supplier', 'link_name': supplier.supplier_name}
|
||||
]
|
||||
})
|
||||
contact = frappe.get_doc(
|
||||
{
|
||||
"doctype": "Contact",
|
||||
"first_name": supplier.supplier_name,
|
||||
"is_primary_contact": 1,
|
||||
"links": [{"link_doctype": "Supplier", "link_name": supplier.supplier_name}],
|
||||
}
|
||||
)
|
||||
contact.add_email(supplier.supplier_email, is_primary=True)
|
||||
contact.insert()
|
||||
else:
|
||||
contact = frappe.get_doc('Contact', contact_name)
|
||||
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()
|
||||
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)
|
||||
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('Marketplace 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 = frappe.get_doc(
|
||||
{
|
||||
"doctype": "Request for Quotation",
|
||||
"transaction_date": nowdate(),
|
||||
"status": "Draft",
|
||||
"company": frappe.db.get_single_value("Marketplace 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('Marketplace Settings', 'company'),
|
||||
'email_id': frappe.db.get_single_value('Marketplace Settings', 'user')
|
||||
"doctype": "Lead",
|
||||
"lead_name": frappe.db.get_single_value("Marketplace Settings", "company"),
|
||||
"email_id": frappe.db.get_single_value("Marketplace Settings", "user"),
|
||||
}
|
||||
|
||||
args = frappe._dict(dict(
|
||||
doctype='Hub Message',
|
||||
reference_doctype='Lead',
|
||||
data=json.dumps(doc),
|
||||
user=contact.email_id
|
||||
))
|
||||
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)
|
||||
response = connection.insert("Hub Message", args)
|
||||
|
||||
return response.ok
|
||||
|
||||
Reference in New Issue
Block a user