ERPNext and Frappe Framework release v13.14.0, and v13.15.0

A highlight of what’s new in ERPNext and Frappe Framework v13.14.0, and v13.15.0.

 · 6 min read

cover image

A bunch of Engineers at Frappe and few members from the ERPNext community worked on a handful of features and enhancements in ERPNext and the Frappe framework. Let us take a look at the same.

ERPNext v13.14 and v13.15

KSA E-Invoicing and VAT report

Ahmad from Pakistan worked on generating a report for the VAT on Sales and Purchases for the Saudi Arabia location. He updated workspace (accounting), added a new doctype under taxes as “KSA VAT Setting”. He added a new report under the reports as, KAS VAT. Alongside, he also worked on QR Code generation that is created with new sales invoices.


(Invoice - KSA)

Tax for recurring additional salary

Nabin added “is recurring additional salary checkbox” to the salary slip detail. Taxable Amounts will be calculated considering future recurring additional salary records.

recurring salary slip

(Salary slip)

E-Invoicing dispatch address

Saqib added dispatch address of sales invoice into e-invoice, earlier it was missing from the invoice.

Initial work history of employee is updated when the transfer takes place

Earlier when an employee was transferred their initially work history was not updated in the internal work history table only the new transfer details were updated in the table so it was an issue to track their previous detail.

Yusuf fixed this feature and from here on, the initial history as well as the new transfer details will be updated in the employee internal work history table.

Work history

(Work history)

Provision to have limited parameters for in-process quality inspection

Dee Mysterio made a couple of provisions where the users can fetch a custom QI template of job card while creating a Quality Inspection from a Job card. They can also fetch min max numeric values or formula for its readings table from the QI template set on item of that Job Card on saving of the Quality Inspection.

Add count for Healthcare Practitioner on Healthcare dashboard

Yadav added count for Healthcare Practitioner on Healthcare shortcuts. Now, the users will be able to see the active practitioners.

healthcare count

(Practitioner count)

Improved loading time of the financial statement

Saqib removed sorting from SQL query while fetching the ledger entries, since balances of these entries are going to be consolidated by account, later on, so sorted entries aren't necessary. This reduced the loading time of a Trial Balance report from ~18 secs to ~7secs, which is a good 60% improvement.

Auto-update price list

Sagar added new check field "update_existing_price_list_rate" in "Stock Settings" DocType. Now the rate is only being updated if this field is checked.

Splitting outstanding rows as per payment terms

Some of the Outstanding invoices get repeated in Payment Entry irrespective of their Payment Terms. It occurs while fetching Outstanding Invoices (split as per Payment Terms) in the Payment Entry. Anuja enabled Allocate Payment Based on Payment Terms in Payment Terms Template. The user can create 3 or more Purchase Invoices which has Payment Terms. They can try fetching these invoices in a Payment Entry, you would get one or two of the invoices multiple times and one of the outstanding invoices would be missing

Make status filter in Fixed Asset Register optional

Ganga made the status filter optional and added an empty option, which when picked, selects both assets that are in location and those that have been disposed of.

status filter

(Status Filter)

Frappe Framework v13.14.0 and 13.15.0

Google drive picker

Raffael ensured that the user can select files from Google Drive, using Google Picker. The Google Drive icon is only shown if the Google integration is enabled. The behavior in the background is like attaching a URL. If it's the first time, the user needs to sign in to google and/or authorize frappe to access it. The access token is saved in a frappe.boot.user.google_drive_token so this can be skipped most of the time. Also, google remembers the authorization and will skip the authorization page in the future.

Frappe's FileUploader is closed and instead, the Google Picker appears. The user can click on a file and confirm with "Select". The selected file is added as an attachment to the doc.

The current implementation of website search was very picky, unless you type the whole word correctly it won't show you the right result. Ankush added FuzzyTerm as the default option for the parser. This permits an edit distance of 1 by default, changed it to 2 for better UX. He also removed hardcoded search fields. Added boosting to title/name field to give higher preference to them over the content of the page.

Introduced rate-limiting for web forms

Shadrak added rate-limiting on web forms with a limit of 5 requests in 60 seconds for the same type of web form. He added IP-based validation in the rate-limit decorator since using a different key for each request still bypasses the rate limit. Also, the key is now optional in the decorator.

Improved design for fetching values using add_fetch

Redesign frm.fetchdict to allow multiple child tables to have _target and link fields of the same name. Sagar fixed the bug in ERPNext v13. A new parameter called target_doctype has been introduced.

Handle timeout and deadlocks in db.sql

Saqib worked on showing a user-friendly message for query timeouts & deadlocks.

request timeout

(Request Timeout)

Allow tuple of DocTypes as key

Previously, createcustomfields accepted a dict of DocTypes and custom fields. Now the user can add the same fields to multiple DocTypes at once. This is useful for transaction DocTypes that many times all need the same fields. For example, you might want to add a "Hide Item In Print" checkbox to all item tables of all sales transactions (Quotation, Sales Order, Sales Invoice).

Add format to dateutils is a common date format in Germany. Raffael added it here, so that parse_date can recognize dates in a particular format. It is only intended to enhance the capabilities of dateutils.

Prepared report read from replica

Luk added @frappe.readonly() to generatereport_result function so prepared report also read from replica database.

Change custom button type

Saqib added a method to change the custom button type on a page.To make a custom button primary you can just do. frm.change_custom_button_type("Allocate", null, "primary");

Multilevel custom report

If a Custom Report (Custom Report 1) is created from an existing report (Existing Report) and another Custom Report (Custom Report 2) is created using the custom report (Custom Report 1) this creates a multi-level report. Saqib fixed the same.

Dashboard child to support child table doctype

Sharique added a new field parentdocumenttype in Dashboard Chart which will be visible if documenttype selected is a child table. If there is more than one parent document for selected documenttype if it only has one parent document it will be selected in parentdocumenttype field and the field will be hidden

Exporting from report builder not exporting all rows

If Sales Order (can be any doctype) has multiple suppose 2 items. If the user was to view it in report view and add an extra item column, they should be able to see 2 records for that Sales Order. But if we export the same data to Excel we still do not get 2 records. Shariq fixed that issue.

report builder

(Report Builder)

CSS for Primary navbar template

If you select Primary Navbar in the Navbar Template field in Website Settings, now check the Home screen in Mobile View, the color of Home, and the navbar toggler button is also blue.



Give select permission to 'All' for workflow state

If a Workflow is created for any doctype (Purchase Order). If a user without a System Manager role tries to create a Purchase Order he/she will get an error You do not have Read or Select Permissions for Workflow State.Shariq fixed giving select permission to All for Workflow State doctype.

Filter pop-up overlaps the Notification Window

When the user tried opening the notification window and filter pop-up window, both of them used to overlap. It is fixed now.

Filter Popup

(Filter Popup)

Translate preview popover data

The users were unable to see the data in preview popover getting translated, Lev fixed the same.

For further queries on ERPNext and Frappe Framework, please visit the discuss forum:

Add a comment
Ctrl+Enter to add comment

JavaScript Tester 2 years ago


mohit 3 years ago