Thursday 29 September 2022

Remove unwanted columns in the Database

 bench --site [my_site] console

from frappe.model.meta import trim_tables

trim_tables()

Sunday 28 August 2022

Installing Frappe & ERPNext 14 on Ubuntu 22

 Thanks to GEOFFREY KARANI for his excellent guidelines in 

https://codewithkarani.com/2022/08/18/install-erpnext-version-14

==================================================================================

Prerequisites

The below prerequisites are advised in order to get an optimal functionality of ERPNext on your server.

Software Requirements

  • Updated Ubuntu 22.04
  • A user with sudo privileges
  • Python 3.10+
  • Node.js 16

Hardware Requirements

  • 4GB RAM
  • 40GB Hard Disk

Server Settings

Update and Upgrade Packages

sudo apt-get update -y
sudo apt-get upgrade -y

Create a new user – (bench user)

In linux, the root user processes escalated privileges to perform any tasks within the system. This is why it is not advisable to use this user on a daily basis. We will create a user that we can use, and this will be the user we will also use as the Frappe Bench User.

sudo adduser [frappe-user]
usermod -aG sudo [frappe-user]
su [frappe-user] 
cd /home/[frappe-user]

Ensure you have replaced [frappe-user] with your username. eg. sudo adduser frappe

Install Required Packages

A software like ERPNext, which is built on Frappe Framework, requires a number of packages in order to run smoothly. These are the packages we will be installing in this step.

Install GIT

sudo apt-get install git

Install Python

ERPNext version 14 requires Python version 3.10+. This is what we will install in this step.

sudo apt-get install python3-dev python3.10-dev python3-setuptools python3-pip python3-distutils

Install Python Virtual Environment

A virtual environment helps in managing the dependencies for one software at one place, without having to interfere with other sections in the computer or server in which the software is running.

sudo apt-get install python3.10-venv

Install Software Properties Common

Software Properties Common will help in repository management.

sudo apt-get install software-properties-common

Install MariaDB

ERPNext is built to naively run on MariaDB. The team is working to have the same working on PostgreSQL, but this is not ready yet.

sudo apt install mariadb-server mariadb-client

Install Redis Server

sudo apt-get install redis-server

Install other packages

ERPNext functionality also relies on other packages we will install in this step. These will load fonts, PDFs, and other resources to our instance.

sudo apt-get install xvfb libfontconfig wkhtmltopdf
sudo apt-get install libmysqlclient-dev

Configure MYSQL Server

Setup the server

sudo mysql_secure_installation

When you run this command, the server will show the following prompts. Please follow the steps as shown below to complete the setup correctly.

  • Enter current password for root: (Enter your SSH root user password)
  • Switch to unix_socket authentication [Y/n]: Y
  • Change the root password? [Y/n]: Y
    It will ask you to set new MySQL root password at this step. This can be different from the SSH root user password.
  • Remove anonymous users? [Y/n] Y
  • Disallow root login remotely? [Y/n]: N
    This is set as N because we might want to access the database from a remote server for using business analytics software like Metabase / PowerBI / Tableau, etc.
  • Remove test database and access to it? [Y/n]: Y
  • Reload privilege tables now? [Y/n]: Y

Edit MYSQL default config file

sudo nano /etc/mysql/my.cnf

Add the following block of code exactly as is:

[mysqld]
character-set-client-handshake = FALSE
character-set-server = utf8mb4
collation-server = utf8mb4_unicode_ci

[mysql]
default-character-set = utf8mb4

Restart the MYSQL Server

sudo service mysql restart

Instal CURL, Node, NPM and Yarn

Install CURL

sudo apt install curl

Install Node

curl https://raw.githubusercontent.com/creationix/nvm/master/install.sh | bash

source ~/.profile

nvm install 16.15.0

Install NPM

sudo apt-get install npm

Install Yarn

sudo npm install -g yarn

Install Frappe Bench

sudo pip3 install frappe-bench

Initialize Frappe Bench

bench init --frappe-branch version-14 frappe-bench

Switch directories into the Frappe Bench directory

cd frappe-bench

Change user directory permissions

This will give the bench user execution permission to the home directory.

chmod -R o+rx /home/[frappe-user]

Create a New Site

A site is a requirement in ERPNext, Frappe and all the other apps we will be needing to install. We will create the site in this step.

bench new-site [site-name]

Install ERPNext and other Apps

Download all the apps we want to install

The first app we will download is the payments app. This app is required when setting up ERPNext.

bench get-app payments

Next, we will download ERPNext app

bench get-app --branch version-14 erpnext

Download any other app you may be interested in in a similar manner. For instance, if you need the Human Resource app to be installed, use the following command.

bench get-app hrms

Install all the apps on our site

bench --site [site-name] install-app erpnext

Install all the other apps you downloaded in the same way. For example, if you downloaded the human resource app, use the below command to install it.

bench --site [site-name] install-app hrms

We have successfully setup ERPNext version 14 on ubuntu 22.04. You can start the server by running the below command:

bench start

If you didn’t have any other ERPNext instance running on the same server, ERPNext will get started on port 8000. If you visit [YOUR SERVER IP:8000], you should be able to see ERPNext version 14 running.

Please note that instances which are running on develop mode, like the one we just setup, will not get started when you restart your server. You will need to run the bench start command every time the server restarts.

In the below steps, we will learn how to deploy the production mpde.

Setting ERPNext for Production

Enable Scheduler

bench --site [site-name] enable-scheduler

Disable maintenance mode

bench --site [site-name] set-maintenance-mode off

Setup production config

sudo bench setup production [frappe-user]

Setup NGINX to apply the changes

bench setup nginx

Restart Supervisor and Launch Production Mode

sudo supervisorctl restart all
sudo bench setup production [frappe-user]

If you are prompted to save the new/existing config file, respond with a Y.

When this completes doing the settings, your instance is now on production mode and can be accessed using your IP, without needing to use the port.

This also will mean that your instance will start automatically even in the event you restart the server.

Sunday 13 February 2022

Upgrade ERPNext from V12 to V13

 # update

cd ~/frappe-bench bench update # update to major release ex. v12 --> v13 # nodejs >= 10 required cd ~ curl -sL https://deb.nodesource.com/setup_10.x -o nodesource_setup.sh sudo bash nodesource_setup.sh sudo apt install nodejs nodejs -v # now upgrade cd ~/frappe-bench bench switch-to-branch version-13-beta frappe erpnext --upgrade bench update --patch bench migrate bench update --build

bench retry-upgrade
bench --site yoursitename migrate

Thursday 11 November 2021

Increase Swap size of server

 

  1. First disable the swap and delete it

     sudo swapoff /swapfile  
     sudo rm  /swapfile
    
  2. Create new swap space of size 16 GB (16 * 1024 = 16384). bs is the block size. Basically bs * count = bytes to be allocated (in this case 16 GB). Here bs = 1M (M stands for mega, so we are assigning 1MB block size) and we are allocating 16384 * 1MB (=16GB) to swap.

     sudo dd if=/dev/zero of=/swapfile bs=1M count=16384
    
  3. Give it the read/write permission for root

     sudo chmod 600 /swapfile
    
  4. Format it to swap

     sudo mkswap /swapfile
    
  5. Turn on swap again

     sudo swapon /swapfile
    
  6. Now reboot the PC for the above changes to take place.

Thursday 21 October 2021

ERPNext13 installation in Ubuntu 20

 On a clean fresh server on “root” login make sure to add a user for the ERPNext install…

(Obviously replace [USER] with your username everywhere in this posting)

adduser frappe
usermod -aG sudo frappe

Then while still logged in as root, update the system to the latest packages…

apt-get update
apt-get upgrade

Now, logout as the root user and login with the new user you just created. Perform the following steps:

export LC_ALL=C.UTF-8

sudo apt install git libffi-dev python3-minimal build-essential python3-distutils python3-setuptools python3-pip python3-testresources libssl-dev wkhtmltopdf redis

Nest we need to fix a potential problem in the redis config file:

sudo vi /etc/redis/redis.conf

When the editor is open, search for: bind 127.0.0.1 ::1 and edit our the 2 colons and the 1 so it looks like bind 127.0.0.1 then save the file.

wget https://raw.githubusercontent.com/frappe/bench/develop/install.py

sudo python3 install.py --verbose --production --user [USER] --mariadb-version 10.5 --frappe-branch version-13 --erpnext-branch version-13


Tuesday 19 October 2021

Sales Invoice Custom report

<table>
<tr>
<td style="width: 20%;">
&nbsp;<br>
</td>
<td style="width: 35%;">
<br><small>{{doc.branch_address}}</small>
</td>
<td style="width: 45%;">
GSTIN: {{ doc.gstin }}<br>
(Under Composition Scheme)<br>
<h2>Invoice: {{ doc.name }}<br><small>Date: {{ doc.get_formatted("posting_date") }}</small></h2>
</td>
</tr>
</table>
<hr>
<table style="width: 100%;">
<tr>
<td >
<strong>Customer Name: {{doc.customer_name}}</strong>
</td>
<td>
&nbsp;
</td>
</tr>
</table>
<table style="width: 100%;" border="1">
<tr>
<td width: 10%; text-align: left;"><strong>S.No.</strong></td>
<td width: 15%; text-align: left;"><strong>Item Code</strong></td>
<td width: 40%; text-align: center;"><strong>Item Name</strong></td>
<td width: 10%; text-align: center;"><strong>Quantity</strong></td>
<td width: 25%; text-align: center;"><strong>Amount</strong></td>
</tr>
{%- for row in doc.items -%}
<tr>
<td> {{ row.idx }}</td>
<td> {{ row.item_code }}</td>
<td class='alnleft';"> {{ row.item_name }}</td>
<td class='alnright';">{{ row.qty }}</td>
<td class='alnright';">{{row.get_formatted("amount", doc) }}</td>
</tr>
{%- endfor -%}
</table>
<table style="width: 100%;" border="0">
<tr>
<td style="width: 75%;" class='alnright';>
<strong>
Total Amount:<br>
Discount Amount:<br>
Net Total:
</strong>
</td>
<td style="width: 25%;" class='alnright';>
<strong>
{{ "₹ {:,.2f}".format(doc.total) }}<br>
{{ "₹ {:,.2f}".format(doc.discount_amount) }}<br>
{{ "₹ {:,.2f}".format(doc.grand_total) }}
</strong>
</td>
</tr>
</table>

Set current form field through client script

 frappe.ui.form.on("Journal Entry", {

            after_save: function(frm) {

            frm.doc.title = frm.doc.name;

            }

            });