Webkul
Services
Technologies Bagisto QloApps
iOS Android SAP BigCommerce Wix
Trusted by
Samsung Intel Toyota Walmart Disney Nokia Nestlé Decathlon
See all customers
Back to Top
DEV

How to create Doctypes in ERPNext

In this blog, we will learn how to create new doctypes in ERPNext.

DocType is similar to a Model in other frameworks (like odoo).

When we create doctypes in ERPNext, then database table with the same name gets created (with tab prefix)

e.g – If the doctype name is Library -> the db table name will be tabLibrary

The directory structure for doctypes:-

library_management/library_management/doctype/__init__.py

    library_management/library_management/doctype/library/__init__.py

    library_management/library_management/doctype/library/library.js

    library_management/library_management/doctype/library/library.json

    library_management/library_management/doctype/library/library.py

    library_management/library_management/doctype/library/test_library.py

library.json:- JSON file that defines the doctype attributes and fields(table columns)

library.js:- Client-side controller for the Form view

library.py:- Python controller (server side) for library doctype

test_library.py:- Python Unit Test boilerplate for writing tests

library.json

** (This file creates the doctype) **

{
  "autoname": "format: PS-{####}",
  "doctype": "DocType",
  "fields": [
    {
      "fieldname": "section1",
      "fieldtype": "Section Break",
      "label": "Section 1"
  },
  {
   "fieldname": "field_1",
   "fieldtype": "Data",
   "in_list_view": 1,
   "label": "Field 1 Label",
   "reqd": 1
  },
  {
   "fieldname": "column_break1",
   "fieldtype": "Column Break",
   "label": ""
  },
  {
   "fieldname": "field_2",
   "fieldtype": "Select",
   "in_list_view": 1,
   "label": "Field 2 Label",
   "options": "option1\option2",
   "reqd": 1
  }
 ],
 "module": "library_management",
 "name": "Doctype Name",
 "owner": "Administrator",
 "permissions": [
  {
   "amend": 0,
   "cancel": 0,
   "create": 1,
   "delete": 1,
   "email": 1,
   "export": 1,
   "if_owner": 0,
   "import": 0,
   "permlevel": 0,
   "print": 1,
   "read": 1,
   "report": 1,
   "role": "System Manager",
   "set_user_permissions": 0,
   "share": 1,
   "submit": 0,
   "write": 1
  },
  {
    "amend": 0,
    "cancel": 0,
    "create": 1,
    "delete": 0,
    "email": 0,
    "export": 0,
    "if_owner": 0,
    "import": 0,
    "permlevel": 0,
    "print": 0,
    "read": 1,
    "report": 0,
    "role": "All",
    "set_user_permissions": 0,
    "share": 0,
    "submit": 0,
    "write": 1
   }
 ],
 "quick_entry": 1,
 "show_name_in_global_search": 1,
 "sort_field": "field1",
 "sort_order": "DESC",
 "title_field": "field1",
 "track_changes": 1,
 "track_seen": 1,
 "track_views": 1
}

library.py

** (This file contains business logic for particular doctype) **

import frappe

from frappe.model.document import Document

class Library(Document):

    def before_save(self):

        # code to execute before saving a library record #

library.js

** (This file contains the js code for the form view) **

frappe.ui.form.on('Library', {

    refresh: function(frm) {                 

        // refresh method will run every time a form is refreshed

        // frm if the form object

    }

});

Read how to create a new app in ERPNext- App Creation and App installation process in ERPNext

Single doctypes in ERPNext

When a DocType has Is Single enabled, it becomes a Single DocType.

It does not create a new database table. All single values stored in the tabSingles table. You can use it for storing global settings.

We will use `frappe.db.get_single_value(doctype_name, field_name)` method to get the value of a field from the single doctype.

NEED HELP?

Hope you find the guide helpful! Please feel free to share your feedback in the comments below.

If you still have any issues/queries regarding the same, please raise a ticket at https://webkul.uvdesk.com/en/customer/create-ticket/.

Also, please explore our Odoo development services & an extensive range of quality Odoo Apps.

For any doubt, contact us at [email protected].

Thanks for paying attention!!

. . .

Leave a Comment

Your email address will not be published. Required fields are marked*


Be the first to comment.

Back to Top

Message Sent!

If you have more details or questions, you can reply to the received confirmation email.

Back to Home