Frappe Core DocTypes can't be customized in Version 11

SAP’s practice is to strictly control the modification to standard feature/code, on code level enhancement via user exit( the hooks in ERPNext), on user interface level via transaction variant or field status configuration settings.

if it is really needed to change the standard code, it is possible to apply a developer access code, with this developer access code registered in the system, it is possible to change the code!

1 Like

…but you already have restrictions on the standard fields which users cannot edit or even re-arrange without being in developer mode. Why restrict custom fields? Is restricting creativity really the way to go?

Kind regards,

2 Likes

If we need to associate other information with user accounts, is there another approach you would suggest? If we need users to have an “Employee ID number”, for example, is there a way to do that without, as you say, shooting ourselves in the foot?

@peterg

try this custom script:

function ID () {
var Employee ID number = “”
frappe.call({
method: “frappe.client.get_value”,
args: {
doctype: “Employee”,
fieldname: “Employee ID number”,
filters: {
user_id: frappe.session.user
}
},
async: false,
callback: function(r) {
Employee ID number = r.message.Employee ID number
}
})
return company
}

1 Like

Thanks Eli,

It’s a handy workaround, but mostly I’m trying to understand the change.

Are more documents likely to become “core” in the future? Custom fields had been working great for us, because they allowed us to integrate with other systems effectively without needing to make unsustainable customizations to code.

From the mixed messages in this thread, it’s not clear to me whether custom fields are still a recommended approach.

@peterg

I think core documents are quite limited . The list will not grow exponentially. To get an idea of what they mean by core documents, simply install the frappe framework and DON’T install the ERPNext app. Login to the system and you’ll see what they mean by core documents.

Custom fields are without a doubt handy and are in no way going away soon. Custom fields and custom docs are the essence of an agile solution.

I understand it can be annoying when something is changed, but I’m pretty confident the Frappe team have got their valid reasons for tweaking the system.

2 Likes

Hi @lasalesi , may I ask you about the procedure you followed to resolve the issue using fixtures of a custom app, because I’m having a similar problem.

Thanks

Hi @youssef,

sure, I used a custom app with fixtures enabled: in your hooks.py file, add “Custom Fields”

fixtures = ["Custom Field"]

Then, run

$ bench --site mysite export-fixtures

This will create the base fixture file. You can effectively remove the content. What I did was copy one variable section and manually entered the definition for my core doctype field:

{
  "allow_on_submit": 0,
  "bold": 0,
  "collapsible": 0,
  "collapsible_depends_on": null,
  "columns": 0,
  "default": null,
  "depends_on": null,
  "description": null,
  "docstatus": 0,
  "doctype": "Custom Field",
  "dt": "User",
  "fetch_from": null,
  "fieldname": "section_signature_cost_center",
  "fieldtype": "Section Break",
  "hidden": 0,
  "ignore_user_permissions": 0,
  "ignore_xss_filter": 0,
  "in_global_search": 0,
  "in_list_view": 0,
  "in_standard_filter": 0,
  "insert_after": "mute_sounds",
  "label": "Signature and Cost Center",
  "modified": "2019-03-06 21:52:14.685977",
  "name": "User-section_signature_cost_center",
  "no_copy": 0,
  "options": "",
  "permlevel": 0,
  "precision": "",
  "print_hide": 0,
  "print_hide_if_no_value": 0,
  "print_width": null,
  "read_only": 0,
  "report_hide": 0,
  "reqd": 0,
  "search_index": 0,
  "translatable": 0,
  "unique": 0,
  "width": null
 },

I then saved the fixture file, checked in the changes and ran

$ bench migrate

This will load the changes in the database and you will have your customisation of a core doctype. Hope this helps.

3 Likes

Thank you, it was very helpful .

I think not allowing user to add customize field from the front end is a bad idea. We talk about what SAP allow or not. I have over 15 years of experience in ERP spanning SAP ECC or SAP B1 on Hanna, IBM and Oracle. You are not allow to customized core document but for sure you can used some kind of user interface and create your customized field to capture data with out coding. However if you need additional detail logic you will need to write code. 99% of user just want a field to capture some data in the app. No detail logic. I thing the method of adding new field and store them in separate table is not core customization. If you remove the field from the custom field table the core remain in tack. Personally i thing this is one of ERPNext strength. the ability to quickly adding custom field in doctype export those custom field then import them in another instant.

1 Like

In User doctype, without developer mode not able to add any fields or do any changes in v14 also. So for linking any doctypes or adding/changing any fields, can you please explain how it can be done?

Thanks in advance

This definitely needs a solution, it’s been a few years and there is still no alternative way to achieve this. I argue that at least adding Custom Field programmatically should be allowed with proper warnings.

I’ve tried using the fixtures method on Frappe version 15 and it does not work anymore

bench update never affects the custom apps, not the Core. I have tried with the custom fields in Core-User app. after updating the bench. Those custom fields are missed from the doctype. But data is there in the database. Anyone knows the working solution for this??