Skip to content

Opportunity Summary by Sales Stage Report Error #45576

Open
@Paulsudhan-craft

Description

Information about bug

Image

Module

CRM

Version

version 15

Installation method

None

Relevant log output / Stack trace / Full Error Message.

Activity

Paulsudhan-craft

Paulsudhan-craft commented on Jan 29, 2025

@Paulsudhan-craft
Author

remainder

ljain112

ljain112 commented on Jan 29, 2025

@ljain112
Collaborator

Can you share the full traceback ?
Use Copy error to clipboard.

Paulsudhan-craft

Paulsudhan-craft commented on Jan 30, 2025

@Paulsudhan-craft
Author

App Versions

{
	"ain_alshams": "0.0.1",
	"erpnext": "15.47.1",
	"frappe": "15.51.0",
	"hrms": "15.36.1",
	"sc_project": "0.0.1",
	"xitefitness": "0.0.1"
}

Route

query-report/Opportunity Summary by Sales Stage

Traceback

Traceback (most recent call last):
  File "apps/frappe/frappe/app.py", line 114, in application
    response = frappe.api.handle(request)
  File "apps/frappe/frappe/api/__init__.py", line 49, in handle
    data = endpoint(**arguments)
  File "apps/frappe/frappe/api/v1.py", line 36, in handle_rpc_call
    return frappe.handler.handle()
  File "apps/frappe/frappe/handler.py", line 50, in handle
    data = execute_cmd(cmd)
  File "apps/frappe/frappe/handler.py", line 86, in execute_cmd
    return frappe.call(method, **frappe.form_dict)
  File "apps/frappe/frappe/__init__.py", line 1726, in call
    return fn(*args, **newargs)
  File "apps/frappe/frappe/utils/typing_validations.py", line 31, in wrapper
    return func(*args, **kwargs)
  File "apps/frappe/frappe/__init__.py", line 879, in wrapper_fn
    retval = fn(*args, **get_newargs(fn, kwargs))
  File "apps/frappe/frappe/desk/query_report.py", line 224, in run
    result = generate_report_result(report, filters, user, custom_columns, is_tree, parent_field)
  File "apps/frappe/frappe/__init__.py", line 879, in wrapper_fn
    retval = fn(*args, **get_newargs(fn, kwargs))
  File "apps/frappe/frappe/desk/query_report.py", line 84, in generate_report_result
    res = get_report_result(report, filters) or []
  File "apps/frappe/frappe/desk/query_report.py", line 65, in get_report_result
    res = report.execute_script_report(filters)
  File "apps/frappe/frappe/core/doctype/report/report.py", line 163, in execute_script_report
    res = self.execute_module(filters)
  File "apps/frappe/frappe/core/doctype/report/report.py", line 180, in execute_module
    return frappe.get_attr(method_name)(frappe._dict(filters))
  File "apps/erpnext/erpnext/crm/report/opportunity_summary_by_sales_stage/opportunity_summary_by_sales_stage.py", line 14, in execute
    return OpportunitySummaryBySalesStage(filters).run()
  File "apps/erpnext/erpnext/crm/report/opportunity_summary_by_sales_stage/opportunity_summary_by_sales_stage.py", line 23, in run
    self.get_data()
  File "apps/erpnext/erpnext/crm/report/opportunity_summary_by_sales_stage/opportunity_summary_by_sales_stage.py", line 83, in get_data
    self.get_rows()
  File "apps/erpnext/erpnext/crm/report/opportunity_summary_by_sales_stage/opportunity_summary_by_sales_stage.py", line 126, in get_rows
    self.get_formatted_data()
  File "apps/erpnext/erpnext/crm/report/opportunity_summary_by_sales_stage/opportunity_summary_by_sales_stage.py", line 159, in get_formatted_data
    assignments = json.loads(d.get(based_on))
  File "/usr/lib/python3.10/json/__init__.py", line 346, in loads
    return _default_decoder.decode(s)
  File "/usr/lib/python3.10/json/decoder.py", line 337, in decode
    obj, end = self.raw_decode(s, idx=_w(s, 0).end())
  File "/usr/lib/python3.10/json/decoder.py", line 355, in raw_decode
    raise JSONDecodeError("Expecting value", s, err.value) from None
json.decoder.JSONDecodeError: Expecting value: line 1 column 1 (char 0)

Request Data

{
	"type": "GET",
	"args": {
		"report_name": "Opportunity Summary by Sales Stage",
		"filters": "{\"based_on\":\"Opportunity Owner\",\"data_based_on\":\"Number\",\"status\":[],\"company\":\"XITE FITNESS TRADING LLC\"}",
		"ignore_prepared_report": false,
		"are_default_filters": true
	},
	"headers": {},
	"error_handlers": {},
	"url": "/api/method/frappe.desk.query_report.run",
	"request_id": null
}

Response Data

{
	"exception": "json.decoder.JSONDecodeError: Expecting value: line 1 column 1 (char 0)",
	"exc_type": "JSONDecodeError",
	"_exc_source": "erpnext (app)"
}
Paulsudhan-craft

Paulsudhan-craft commented on Jan 30, 2025

@Paulsudhan-craft
Author
def get_formatted_data(self):
	self.formatted_data = frappe._dict()

	for d in self.query_result:
		data_based_on = {"Number": "count", "Amount": "amount"}[self.filters.get("data_based_on")]

		based_on = {
			"Opportunity Owner": "_assign",
			"Source": "source",
			"Opportunity Type": "opportunity_type",
		}[self.filters.get("based_on")]

		if self.filters.get("based_on") == "Opportunity Owner":
			value = d.get(based_on)
			if not value or value in ["[]", "null", "Not Assigned"]:
				assignments = ["Not Assigned"]
			else:
				try:
					assignments = json.loads(value)
				except json.JSONDecodeError:
					assignments = ["Not Assigned"]

			sales_stage = d.get("sales_stage")
			count = d.get(data_based_on)

			if assignments:
				for assigned_to in assignments:
					self.set_formatted_data_based_on_sales_stage(assigned_to, sales_stage, count)
		else:
			value = d.get(based_on)
			sales_stage = d.get("sales_stage")
			count = d.get(data_based_on)
			self.set_formatted_data_based_on_sales_stage(value, sales_stage, count)

my updated function solved the issue

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Metadata

Assignees

No one assigned

    Labels

    Type

    No type

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions

      Opportunity Summary by Sales Stage Report Error · Issue #45576 · frappe/erpnext