ERPNext Wiki

Your central hub for ERPNext knowledge. Access comprehensive documentation, guides, and best practices to master your ERP system.

ERPNext Wiki - Knowledge Base

Knowledge Base

Browse through our collection of in-depth articles and guides designed to help you get the most out of ERPNext.

How to Dynamically Filter Link Fields in Frappe ERPNext

Learn how to apply dynamic filters to Link and Child Table fields in Frappe ERPNext using the get_query method in custom Client Scripts for context-aware selections.

Read Guide

How to Set Dynamic Field Visibility in Frappe DocTypes

Learn to control field visibility in Frappe DocTypes using `eval:` conditions. This guide covers common scenarios like checking field values, comparing numbers, and using `in_list`.

Read Guide

How to Get Current User Details like Name and Role in a Frappe Client Script

Learn how to fetch the current session user's name, roles, and related Employee details using frappe.session.user and frappe.db.get_value in a Frappe client script.

Read Guide

How to Fetch User Details like Name, Role, and Designation in Frappe

Learn to retrieve user information in Frappe server scripts using frappe.db.get_value and frappe.get_roles. Covers session user, specific users, and related DocType fields.

Read Guide

How to Fetch User Data in Frappe & ERPNext Jinja Templates

Learn how to fetch current session user details, modified by user, and other employee data using frappe.db.get_value and frappe.user in Frappe Jinja templates.

Read Guide

How to Implement Status Colour Coding in ERPNext List Views for Better Visual Status Tracking?

Learn how to customize ERPNext List Views by adding status colour indicators using Frappe ListView settings for improved visual tracking of DocType status fields.

Read Guide

How to Concatenate Fields to Set a Title in a Frappe DocType

Learn to write a Frappe Client Script to automatically merge multiple DocType fields into a single title field using the before_save event and frm.set_value API.

Read Guide

What is the Complete Document Event Lifecycle in Frappe and ERPNext?

A comprehensive guide to the Frappe Framework's document event lifecycle, detailing the sequence of server-side and client-side hooks for Save, Submit, and Cancel actions.

Read Guide

How to Fetch and Populate a Child Table from Another DocType in Frappe?

Learn to use Frappe Client Scripts to dynamically fetch data from a source DocType's child table and populate a target child table upon a trigger event.

Read Guide

How to Set Up a New Site with DNS Multitenancy in Frappe Framework

Learn how to configure DNS-based multitenancy in the Frappe Framework. This step-by-step guide covers creating a new site, setting up Nginx, and installing ERPNext.

Read Guide

How to Install ERPNext on Ubuntu with the Easy Install Script

Step-by-step guide to installing a production-ready ERPNext instance on Ubuntu using the official `install.py` script. Covers different versions and common troubleshooting.

Read Guide

How to Backup and Restore an ERPNext Site Using the Bench CLI

Learn the step-by-step process for creating and restoring backups of your ERPNext site, including database and files, using essential bench commands.

Read Guide

How to Enable or Disable the Scheduler in Frappe and ERPNext

Learn how to manage background jobs in Frappe and ERPNext by enabling or disabling the scheduler for a specific site using the 'bench enable-scheduler' command.

Read Guide

How to Rename a Frappe or ERPNext Site using Bench CLI

Learn the step-by-step process to safely change your Frappe or ERPNext site name (e.g., from site1.local) using essential Bench CLI commands like `bench setup nginx`.

Read Guide

How to Set Up Socket.IO for Real-Time Events in Frappe Framework?

Learn how to configure and enable Socket.IO in your Frappe/ERPNext instance using `bench setup socketio` to facilitate real-time communication and notifications.

Read Guide

How to Create and Add a Swap File on Ubuntu

A step-by-step guide to creating, activating, and making a permanent swap file on Ubuntu to improve system performance and manage virtual memory.

Read Guide

How to Manage Nginx Service for Frappe and ERPNext

Learn how to set up, stop, start, and reload the Nginx service for your Frappe or ERPNext application using Bench CLI commands and locate the Nginx configuration file.

Read Guide

How to Resolve Frappe Bench Update Errors Caused by Git Conflicts?

A step-by-step guide to fix `bench update` failures in Frappe and ERPNext by resetting git repositories, correcting file permissions, and ensuring a clean update process.

Read Guide

How to Fix 'ModuleNotFoundError: No module named psutil' in Frappe Bench?

Resolve the common 'ModuleNotFoundError: No module named psutil' in Frappe and ERPNext by installing the psutil dependency within your bench's virtual environment using pip.

Read Guide

How to Enable Developer Mode in Frappe and ERPNext

Learn to enable developer mode for your Frappe or ERPNext site using the 'bench set-config' command. Essential for debugging and custom app development.

Read Guide

How to Install and Uninstall a Custom Frappe App using Bench

Learn how to create, install, and uninstall custom Frappe applications on your site using the Bench CLI, including commands like new-app, get-app, and install-app.

Read Guide

How to Fetch Party Contact Details in ERPNext Payment Entry

Learn how to write a Frappe Client Script to automatically fetch and set a party's contact person and email in the Payment Entry form using frappe.call.

Read Guide

How to Validate All Rows in a Child Table in Frappe Framework?

Learn how to implement custom validation logic for child table rows in Frappe ERPNext using a Client Script. This snippet demonstrates iterating through items with $.each.

Read Guide

How to Restrict Users from Adding or Deleting Rows in a Frappe Child Table?

Learn how to programmatically disable the 'Add Row' and 'Delete' buttons for a child table in Frappe/ERPNext using the cur_frm.toggle_enable client script method.

Read Guide

How to Trigger a Client Script on Child Table Row Deletion in Frappe?

Learn how to execute a Frappe Client Script when a user adds or removes a row from a Child Table using the `fieldname_add` and `fieldname_remove` triggers.

Read Guide

How to Use Alert, Prompt, and Confirm Dialogs in Frappe

Learn to implement user-facing dialogs in Frappe, including show_alert, frappe.prompt, frappe.confirm, and custom dialogs using frappe.ui.Dialog.

Read Guide

How to Set Dynamic Query Filters for Contact Link Fields in Frappe

Learn to apply dynamic filters to Contact link fields in Frappe/ERPNext using the cur_frm.set_query client script method for both parent and child table fields.

Read Guide

How to Dynamically Filter Link Fields in ERPNext using Server-Side Queries

Learn to apply dynamic, context-aware filters to Link Fields in ERPNext Client Scripts using frm.set_query to call server-side Python methods.

Read Guide

How to Conditionally Remove Rows from a Child Table in Frappe

Learn to write a Frappe Client Script to programmatically remove rows from a child table based on field values using grid.grid_rows[i].remove().

Read Guide

How to Dynamically Filter Link Fields in a Frappe/ERPNext Child Table

Learn how to apply dynamic filters to Link Fields within a child table (Grid) in Frappe ERPNext using the get_query client script method. This snippet demonstrates filtering based on parent document fields and static values.

Read Guide

How to Override Standard DocType Methods in Frappe/ERPNext

Learn how to dynamically override or 'monkey patch' core DocType methods in Frappe and ERPNext using a custom Python script, demonstrated with the Sales Invoice DocType.

Read Guide

How to Call a Python Function from a Client Script for set_query in ERPNext

Learn to dynamically filter a Link Field in Frappe/ERPNext by calling a whitelisted Python server method from a Client Script using frappe.call and cur_frm.set_query.

Read Guide

How to Send Email from a Server Script on Button Click in Frappe?

Learn how to create a Frappe server script to send customized emails to a list of recipients from a child table when a custom button is clicked in a DocType.

Read Guide

How to Make a Field Read-Only Dynamically in Frappe ERPNext

Learn to dynamically set field properties like read-only, required, or options in ERPNext and Frappe using Client Scripts with `cur_frm.set_df_property`.

Read Guide

How to Populate a Child Table in ERPNext Using a Custom Button and frappe.call?

Learn to create a custom button in an ERPNext DocType that triggers a Client Script to fetch data via frappe.call and dynamically populate a child table.

Read Guide

How to Build a Dynamic SQL WHERE Clause in a Frappe Server Script

Learn how to create flexible server-side APIs in Frappe by dynamically constructing SQL WHERE clauses based on user input. This snippet uses frappe.whitelist and frappe.db.sql.

Read Guide

How to Add, Remove, and Manage Custom Buttons in Frappe Forms

Learn to dynamically add, remove, and clear custom buttons on Frappe forms using the frm.add_custom_button and related client script APIs for enhanced UI.

Read Guide

How to Create a Mapped Document from a Custom Button in Frappe

Learn how to add a custom button to a Frappe form that triggers the creation of a new, mapped document using the `frappe.model.open_mapped_doc` method in a Client Script.

Read Guide

How to Create Mapped Documents in Frappe for ERPNext Customizations?

Learn how to map and create new documents from existing ones in ERPNext using Frappe's get_mapped_doc API in server scripts for automation.

Read Guide

How to Create a Custom Calendar View for a DocType in Frappe/ERPNext

Learn to configure a custom calendar view in Frappe/ERPNext by creating a doctype_calendar.js file and a get_events Python method. Guide covers field mapping and filters.

Read Guide

How to Create a Custom Server-Side Method for Calendar Views in Frappe

Learn to implement a whitelisted Python method in Frappe to fetch dynamic data for Calendar and Gantt views using frappe.db.sql and JSON filters.

Read Guide

How to Programmatically Create a Communication in the ERPNext Timeline

Learn to use a Frappe server script in Python to automatically create 'Communication' DocType entries, making them visible in the timeline of reference documents like Leads.

Read Guide

How to Maintain a Counter Outside a Loop in Frappe Jinja Templates?

Overcome Jinja's loop scoping in Frappe Print Formats. Learn to use dictionaries and namespaces to maintain and access variable values, like counters, outside a for loop.

Read Guide

How to Fetch Party Details with a Server Script in Frappe

Learn to create a whitelisted Python server script in Frappe to fetch comprehensive party details, including default addresses and contacts for Customers or Suppliers.

Read Guide

How to Gracefully Reload Gunicorn Without Downtime

Learn the command to gracefully reload a Gunicorn master process using 'pkill -HUP'. This method avoids service interruption and is ideal for deploying updates.

Read Guide

How to Install Python using pyenv on Unsupported Environments in Ubuntu

Step-by-step guide to install Python 3.10.15 on Ubuntu unsupported environments via pyenv, enabling flexible Python version management.

Read Guide
Need More Help?

Can't Find What You're Looking For?

Our support team is here to assist you with specific questions and deeper insights into ERPNext.

Expert assistance available
ERPNext Wiki | Comprehensive Knowledge Base