Can you share the site name?
Hi,
I did a patch release now the issue is fixed. Just update CRM version to v1.23.4
Its working
Shall check in detail
Hi @shariquerik
I get this error message when trying to link to ERPNext, same site, self hosted
Error
/api/method/frappe.client.set_value ModuleNotFoundError: Internal Server Error
Any ideas?
version
Share full error, check Error log doctype or check console
error log doctype data
Title
âNoneTypeâ object has no attribute ânameâ
method
Error
Traceback with variables (most recent call last):
File âapps/frappe/frappe/app.pyâ, line 114, in application
response = frappe.api.handle(request)
request = <Request âhttps://sitename/api/method/frappe.client.set_valueâ [POST]>
response = None
rollback = True
e = AttributeError(ââNoneTypeâ object has no attribute ânameââ)
File âapps/frappe/frappe/api/init.pyâ, line 49, in handle
data = endpoint(**arguments)
request = <Request âhttps://sitename/api/method/frappe.client.set_valueâ [POST]>
endpoint = <function handle_rpc_call at 0x7fad1aaf8160>
arguments = {âmethodâ: âfrappe.client.set_valueâ}
File âapps/frappe/frappe/api/v1.pyâ, line 36, in handle_rpc_call
return frappe.handler.handle()
method = âfrappe.client.set_valueâ
frappe = <module âfrappeâ from âapps/frappe/frappe/init.pyâ>
File âapps/frappe/frappe/handler.pyâ, line 49, in handle
data = execute_cmd(cmd)
cmd = âfrappe.client.set_valueâ
data = None
File âapps/frappe/frappe/handler.pyâ, line 85, in execute_cmd
return frappe.call(method, **frappe.form_dict)
cmd = âfrappe.client.set_valueâ
from_async = False
server_script = None
method = <function set_value at 0x7fad1aac0160>
File âapps/frappe/frappe/init.pyâ, line 1775, in call
return fn(*args, **newargs)
fn = <function set_value at 0x7fad1aac0160>
args = ()
kwargs = {âdoctypeâ: âCRM Dealâ, ânameâ: âCRM-DEAL-2024-00001â, âfieldnameâ: âstatusâ, âvalueâ: âWonâ, âcmdâ: âfrappe.client.set_valueâ}
newargs = {âdoctypeâ: âCRM Dealâ, ânameâ: âCRM-DEAL-2024-00001â, âfieldnameâ: âstatusâ, âvalueâ: âWonâ}
File âapps/frappe/frappe/utils/typing_validations.pyâ, line 31, in wrapper
return func(*args, **kwargs)
args = ()
kwargs = {âdoctypeâ: âCRM Dealâ, ânameâ: âCRM-DEAL-2024-00001â, âfieldnameâ: âstatusâ, âvalueâ: âWonâ}
apply_condition = <function whitelist..innerfn.. at 0x7fad1aac00d0>
func = <function set_value at 0x7fad1aac0040>
File âapps/frappe/frappe/client.pyâ, line 188, in set_value
doc.save()
doctype = âCRM Dealâ
name = âCRM-DEAL-2024-00001â
fieldname = âstatusâ
value = âWonâ
values = {âstatusâ: âWonâ}
doc = <CRMDeal: CRM-DEAL-2024-00001>
File âapps/frappe/frappe/model/document.pyâ, line 337, in save
return self._save(*args, **kwargs)
self = <CRMDeal: CRM-DEAL-2024-00001>
args = ()
kwargs = {}
File âapps/frappe/frappe/model/document.pyâ, line 390, in _save
self.run_post_save_methods()
self = <CRMDeal: CRM-DEAL-2024-00001>
ignore_permissions = None
ignore_version = None
File âapps/frappe/frappe/model/document.pyâ, line 1128, in run_post_save_methods
self.run_method(âon_updateâ)
self = <CRMDeal: CRM-DEAL-2024-00001>
File âapps/frappe/frappe/model/document.pyâ, line 962, in run_method
out = Document.hook(fn)(self, *args, **kwargs)
self = <CRMDeal: CRM-DEAL-2024-00001>
args = ()
kwargs = {}
fn = <function Document.run_method..fn at 0x7fad16cd1240>
method = âon_updateâ
File âapps/frappe/frappe/model/document.pyâ, line 1322, in composer
return composed(self, method, args, **kwargs)
self = <CRMDeal: CRM-DEAL-2024-00001>
args = ()
kwargs = {}
hooks = [<function create_customer_in_erpnext at 0x7fad16e679a0>, <function clear_doctype_notifications at 0x7fad18baee60>, <function process_workflow_actions at 0x7fad16bf2d40>, <function attach_files_to_document at 0x7fad1b440ee0>, <function apply at 0x7fad16be8ca0>, <function update_due_date at 0x7fad16be8d30>, <function apply_permissions_for_non_standard_user_type at 0x7fad18bae680>]
method = âon_updateâ
doc_events = {'': {âon_updateâ: [âfrappe.desk.notifications.clear_doctype_notificationsâ, âfrappe.workflow.doctype.workflow_action.workflow_action.process_workflow_actionsâ, âfrappe.core.doctype.file.utils.attach_files_to_documentâ, âfrappe.automation.doctype.assignment_rule.assignment_rule.applyâ, âfrappe.automation.doctype.assignment_rule.assignment_rule.update_due_dateâ, âfrappe.core.doctype.user_type.user_type.apply_permissions_for_non_standard_user_typeâ], âafter_renameâ: [âfrappe.desk.notifications.clear_doctype_notificationsâ], âon_cancelâ: [âfrappe.desk.notifications.clear_doctype_notificationsâ, âfrappe.workflow.doctype.workflow_action.workflow_action.process_workflow_actionsâ, âfrappe.automation.doctype.assignment_rule.assignment_rule.applyâ], âon_trashâ: [âfrappe.desk.notifications.clear_doctype_notificationsâ, âfrappe.workflow.doctype.workflow_action.workflow_action.process_workflow_actionsâ], âon_update_after_submitâ: ['frappe.workflow.doctype.workflow_action.workflow_action.process_wâŚ
handler = âfrappe.core.doctype.user_type.user_type.apply_permissions_for_non_standard_user_typeâ
composed = <function Document.hook..compose..runner at 0x7fad16cd1090>
compose = <function Document.hook..compose at 0x7fad16cd2200>
f = <function Document.run_method..fn at 0x7fad16cd1240>
File âapps/frappe/frappe/model/document.pyâ, line 1306, in runner
add_to_return_value(self, f(self, method, *args, **kwargs))
self = <CRMDeal: CRM-DEAL-2024-00001>
method = âon_updateâ
args = ()
kwargs = {}
f = <function create_customer_in_erpnext at 0x7fad16e679a0>
add_to_return_value = <function Document.hook..add_to_return_value at 0x7fad16cd24d0>
fn = <function Document.run_method..fn at 0x7fad16cd1240>
hooks = (<function create_customer_in_erpnext at 0x7fad16e679a0>, <function clear_doctype_notifications at 0x7fad18baee60>, <function process_workflow_actions at 0x7fad16bf2d40>, <function attach_files_to_document at 0x7fad1b440ee0>, <function apply at 0x7fad16be8ca0>, <function update_due_date at 0x7fad16be8d30>, <function apply_permissions_for_non_standard_user_type at 0x7fad18bae680>)
File âapps/crm/crm/fcrm/doctype/erpnext_crm_settings/erpnext_crm_settings.pyâ, line 199, in create_customer_in_erpnext
address = get_organization_address(doc.organization)
doc = <CRMDeal: CRM-DEAL-2024-00001>
method = âon_updateâ
erpnext_crm_settings = <ERPNextCRMSettings: ERPNext CRM Settings>
contacts = [{âcontactâ: âAsh anâ, âfull_nameâ: âAsh anâ, âemailâ: âas@gmail.comâ, âmobile_noâ: â0987654321â, âgenderâ: âMaleâ, âis_primaryâ: 1}]
File âapps/crm/crm/fcrm/doctype/erpnext_crm_settings/erpnext_crm_settings.pyâ, line 177, in get_organization_address
ânameâ: address.name,
organization = âasdfâ
address = None
builtins.AttributeError: âNoneTypeâ object has no attribute ânameâ
Raised a fix and released in version 1.23.5
Thank You So much,
Issue resolved.
then itâs going to be a one time migration
Will there be an automated migration path?
Thanks, upgrading to v15.36.1 solved the issue.
I have started reviewing, looks interesting.
I was a bit dissapointed that on creating a quote, there is no reference to the quote in the CRM, even a tab that contains basic details of quotations and a link to open them in ERPNext will do.
Zero reference to quotations in the CRM is a no no. This gives an incomplete view of the deal/lead
A serious architectural question here. Why when developing a new app like CRM do you not also embed and replace the CRM functions in erpnext?
I know the challenge will be the doc type relationships but this would double the value of any new app that could also enhance erpnext.
- Create new app roadmap
- Could this app also completely replace a module in eprnext - Yes/No
- If yes, build app so you can be a separate app and replace core module in erpnexr.
- If not, just a stand alone app.
This approach will serve all community and customers.
Would love to hear from frappe on this!
In my opinion next priority after integrating with ERPNext should be integration of communication channels especially email.
Iâve mentioned this before, but itâs baffling to me that the official app launched without ERPNext integration in the MVP.
Especially since Frappe said they were splitting up the monolith and putting ERPNext CRM on the back burner.
Experienced ERPNext users might find workarounds in the meantime, but for the average IT/admin assistant, itâs a challenge to figure out. This lack of clarity and integration absolutely deters companies from subscribing to their cloud service.
ERPNext and CRM are great, and Frappe is an amazing company. But their implementation strategies feel unclear, almost like thereâs no plan.
Edit: Also, Iâm happy to contribute to GitHub for simple features like UI tweaks, mobile support, or call logs. But when it comes to how CRM integrates with ERPNext? Thatâs where the Frappe team needs to take the lead and provide guidance. Which again, should have been at the very least roadmapped, if not released as a part of the MVP app when it became available on frappe cloud.
@olamide_shodunke where you able to resolve same site, self hosted ERPNext and Frappe CRM? Please share details. Thanks
Iâm facing this issue. Please check if the integration has been completed.
Thanks You!
Hi everyone,
i have a issue with ERPNext v15 & Frappe CRM. If i mark a deal as won only the contact will be created but not the company name. Is it a bug? I have seen the issue on two erpnext sites.
Regards
Kevin
Hi Michelle,
Do we need to paid API service if the instance is not hosted frappe cloud for integrating Frappe CRM with ERPNext
No, frappe apps are open source you donât have to pay for anything related to frappe.