frappe / non_profit

Non Profit module for Frappe/ERPNext
GNU General Public License v3.0
35 stars 55 forks source link

frm.doc.member not defined in erpnext/non_profit/doctype/member/member.js #18

Open dasistwas opened 1 year ago

dasistwas commented 1 year ago

Information about bug

When the webservice "get_last_membership" is called, the argument "member" is undefined. This is because the object value frm.doc.member just does not exist in the JavaScript object frm.

Solution

In erpnext/non_profit/doctype/member/member.js replace

frm.doc.member with frm.doc.name

Git diff

diff --git a/erpnext/non_profit/doctype/member/member.js b/erpnext/non_profit/doctype/member/member.js
index f72d4d958b..3e31d5cbbd 100644
--- a/erpnext/non_profit/doctype/member/member.js
+++ b/erpnext/non_profit/doctype/member/member.js
@@ -53,7 +53,7 @@ frappe.ui.form.on('Member', {
                        frappe.call({
                                method: "erpnext.get_last_membership",
                                args: {
-                                       member: frm.doc.member
+                                       member: frm.doc.name
                                },
                                callback: function(data) {
                                        if (data.message) {

Other mentions of this bug

I am not the only one who encountered this bug. It is also mentioned there:

https://discuss.frappe.io/t/back-dating-memberships/61738/2 It has also been reported there: https://github.com/frappe/non_profit/issues/10

Link to the line to be changed: https://github.com/frappe/erpnext/blob/6a9660de65c4ef7d39debc72bee9b7419831f482/erpnext/non_profit/doctype/member/member.js#L56

The non_profit has apparently been remove in v14:

The 'frappe/erpnext' repository doesn't contain the 'erpnext/non_profit/doctype/member/member.js' path in 'version-14'.

Module

non-profit

Version

ERPNext: v13.39.1 (HEAD) Frappe Framework: v13.41.2 (HEAD)

Installation method

manual install

Relevant log output / Stack trace / Full Error Message.

### App Versions

{ "erpnext": "13.39.1", "erpnextswiss": "1.19.0", "frappe": "13.41.2" }

### Route

Form/Member/GEN-MTGLD-00082

### Trackeback

Traceback (most recent call last): File "apps/frappe/frappe/app.py", line 69, in application response = frappe.api.handle() File "apps/frappe/frappe/api.py", line 55, in handle return frappe.handler.handle() File "apps/frappe/frappe/handler.py", line 38, in handle data = execute_cmd(cmd) File "apps/frappe/frappe/handler.py", line 76, in execute_cmd return frappe.call(method, *frappe.form_dict) File "apps/frappe/frappe/init.py", line 1457, in call return fn(args, **newargs) TypeError: get_last_membership() missing 1 required positional argument: 'member'

### Request Data

{ "type": "POST", "args": {}, "headers": {}, "error_handlers": {}, "url": "/api/method/erpnext.get_last_membership" }

### Response Data

{ "exception": "TypeError: get_last_membership() missing 1 required positional argument: 'member'" }

dasistwas commented 1 year ago

In v14 this issue should have been resolved. The member.js has been rewritten: https://github.com/frappe/non_profit/blob/develop/non_profit/non_profit/doctype/member/member.js

dasistwas commented 1 year ago

@deepeshgarg007 thank you for moving that issue. In fact, this is not a problem anymore in v14. It only affects the non-profit module of erpnext v13. So I think it should be moved back again. Or if you don't fix the issue for v13 then close it as a won't fix.