Advance Odoo Configurations: Routes & Procurement

Advance Odoo Configurations:

A route is a group of procurement rules and pushes rules. Odoo can manage advanced push/pull routes configuration.

Configuration: Procurement rules are the part of the routes.

First, go to the Inventory–>Configuration–>Settings–> and click on Advance routing of products using rules

Pre – Configured routes:

In the Inventory, Application goes to the Configuration–> warehouse.

In the warehouse configuration tab, incoming shipment and outgoing shipments you can set options as per your choice.

Custom Routes:

In the inventory –> Configuration –>Routes

First, you have to select the places where this route can be selected. You can combine several choices.

Routes applied on warehouses:

If you choose warehouse, you have to choose which warehouse it will be applied. The route will be set for all transfer in that warehouse that would meet the condition of the procurement and push rules.

Routes applied to products:

If you tick Products, you have to manually set on which product it will be applied.

Open the product which you want to apply the routes

Inventory Control –> Products

Routes applied to Product Category

Tick on product category you have to manually set on which categories it will be applied.

Open the product on which you want to apply the routes (Configuration –> Product Categories). Select the routes under the Logistics section


Routes applied on Sales Order lines

If you click on sales order line you can set manually routes for every time to make a sale order.

To make it work you can also have to activate the use of the routes on the sales order.

You can now choose the routes for each line of your sales orders:

Procurement configuration

On the product Inventory Control –> Products and then click on procurement request. And choose the preferred routs.

Procurement routes setting:

Procurement rules are part of the routes.

Go to the Inventory application—>Configuration—>Settings and tick “Advance routing of products using rules“.

Go to configuration –> routes. In the procurement rules section click on add item.

Push rules settings

The push rules are set on the routes. Go to Configuration –> Routes.

In the push rule section, click on Add an item.

Here you can set the conditions for your rule. In this example, when a good is in Input location, it needs to be moved to the quality control. In the 3 steps receipts, another push rule will make the goods that are in the quality control location move to the stock.

Stock transfers

The push rule will trigger the stock transfer. According to the rule set on your route, you will see that some transfers might be ready and others are waiting.

The push rule that was set above will create moves from WH/Input location to the WH/Quality Control location.

 

We are the first distributor of Nextcloud in India.

We are proud to announce that we are a first NextCloud partner in India. The most reliable secure file sharing platform. Collaboration is a key! NextCloud 11 is available with many integrations and hence, it is more than just a file storage to boost your business.

Utmost security and data privacy are being provided by the underlying code itself. Moreover, as a NextCloud partner in India, we are offering secure and highly reliable on-premise infrastructure setup. You can have a choice of the infrastructure and you can count on us for administration services.

Being a first next cloud distributor in India, we are providing next cloud customization services as well. We can brand NextCloud client for you. Leverage the power of open source and rebrand the NextCloud in the name of your own organization.

Security Offered

  • Brute force protection
  • Advanced File Access Control
  • Password confirmation for sensitive actions
  • Server-side encryption
  • Support for Kerberos authentication
  • CSP 3.0 protection and Same-site Cookies Support improvements
  • App-specific tokens can be forbidden file system access

Authentication

  • Integration with LDAP
  • Provision for Token based authentication

Scalability

  • Nextcloud architecture can be scaled horizontally with multiple serving instances and capabilities of plugging in the NFS storage which provides added reliability.
  • It offers to use various types of data stores to secure data separately than the main server.

 

Why are we unique odoo team?

Odoo Administration – This skill set makes us unique throughout Odoo community. It’s not about the deployment of Odoo on the servers, it’s about to keep it operational and keep it performing for years.

We have experience expertise who furnishes the track of your business with their designing & developing, transforming ideas they are compelling ideas into the digital experience.

We are anticipating the all-platform means desktop application, mobile application and mobile application means we are nourishing end-to-end solution for our client.

We are the most innovative company which is accommodated the enterprise resource planning solution for all business.

Our odoo expertizes are below:

(1) We are holding Odoo administration + odoo programming skill set.

  • ERP system is vital for any business and here we have a team of wizards who administer the odoo system with their programming for any organization.
  • Here is tech virtuosos deliver the impressive values to the respective organization.
  • We have arrangements for the hosting, installation, implementation, configuration, and support.
  • Our resources are customized the odoo module as per the business requisites.
  • We are helping with the odoo based solution and e-commerce maintenance service.
  • We have strong suits on Enterprise Email / Collaboration Solutions, ERP (Odoo) / CRM – Enterprise solutions, Web Application Development, Server Administration Services, Mobile Application Development, Cloud Application Hosting, CNC Software Solution, Healthcare Solutions in odoo.
  • Our server administration service is available for Windows, Linux, and Unix platform.

(2) we can scale odoo horizontally to keep the data safe and distribute the traffic.

  • We have an expert who prolongs your data in horizontal scale to circumvent the traffic. 
  • At silent infotech, we auspiciously established the odoo cluster using rancher platform in order to administer the huge number of users and a good amount of concurrent user load. 
  • By our service, you will get auxiliary amenities into your system by adding more gadget to your network, dispensing the managing and memory workload beyond multiple devices.
  • We will provide you expeditious and ceaseless accessibility
  • No limit to hardware capacity
  • You are not unbudgeable to recompensing for peak appetite.

(3) we can optimize odoo and make it up to 150% faster.

  • At silent infotech, we can recast the extreme coherence in storage capacity or time.
  • Our experts recommend superior assistance requisites to your business. We guarantee you that ERP module marvelous tailored and calculatedly accomplished. 
  • Our ODOO solutions can benefit an existing Magento Store. With the latest features of ODOO integration, it is possible to manage inventory, integrate sales orders and POS, and deliver faster results.

(4) Odoo architectural layout designing experience.

Our experience delivers you the reliable validation of powerful validity checks.

Our experts in odoo emerge the heterogeneous departments of an enterprise such as Sales, HR, Finance, Marketing, Production, Warehouse, in highly extensible and adaptive CRM for leads and customer management.

  • We have Customized Odoo CRM.
  • Odoo Module integrating with RoyalMail Shipment Services.
  • We have integrated Odoo with DPD printers and shipping services
  • Payment gateway integration for Odoo, we have integrated payfort with Odoo.

(5) Some of us have been part of core development team of Odoo.

  • During Era of OpenERP 6 & 7 (known as Odoo now), some of our team members have been part of the core Odoo team.
  • It was a time when Odoo was growing and architectural layout was being improved. Our team has played a key role in core architecture design as well.

(6) we are affordable as we are located in the best Geographical area of this planet in terms of economy. It’s the same city where Odoo is having their main development center.

 

Remove deleted files from git repository history

Remove deleted files from git repository | Silent Infotech

Sometimes it happens that a teammate commits unwanted files to the git repository and later we delete them from the repo. But still these files are in git history, so every clone of repository will fetch these files history which consumes time, bandwidth and disk space.

Let’s check way to clean up the git repository for deleted files.

“Make sure you take a backup copy of local repository for anything that goes wrong in your case.”

git filter-branch

Use git filter-branch command to remove a file from all the commits:

git filter-branch --prune-empty -d /dev/shm/scratch \
 --index-filter "git rm --cached -f --ignore-unmatch filename" \
 --tag-name-filter cat -- --all

git filter-branch options used:

  • --prune-empty removes commits that become empty (i.e., do not change the tree) as a result of the filter operation. In the typical case, this option produces a cleaner history.
  • -d names a temporary directory that does not yet exist to use for building the filtered history. If you are running on a modern Linux distribution, specifying a tree in /dev/shm will result in faster execution.
  • --index-filter is the main event and runs against the index at each step in the history. You want to remove oops.iso wherever it is found, but it isn’t present in all commits. The command git rm --cached -f --ignore-unmatch oops.iso deletes the DVD-rip when it is present and does not fail otherwise.
  • --tag-name-filter describes how to rewrite tag names. A filter of cat is the identity operation. Your repository, like the sample above, may not have any tags, but I included this option for full generality.
  • -- specifies the end of options to git filter-branch
  • --all following -- is shorthand for all refs. Your repository, like the sample above, may have only one ref (master), but I included this option for full generality.

You can also  remove a whole directory:

git filter-branch --prune-empty -d /dev/shm/scratch \
 --index-filter "git rm --cached -rf --ignore-unmatch dirname" \
 --tag-name-filter cat -- --all

You can check that, commits including the file have been modified and commit with only that file are removed from the log. Check using gitk or git log.

Shrink the repository

We used git-filter-branch to get rid of files from commits. People expect the resulting repository to be smaller than the original, but you need a few more steps to actually make it smaller because Git tries hard not to lose your objects until you tell it to.

  • Remove the original refs backed up by git-filter-branch (do this for all branches):
    git update-ref -d refs/original/refs/heads/master
    
  • Expire all reflogs with:
    git reflog expire --expire=now --all
  • Garbage collect all unreferenced objects with
git gc --prune=now

You are ready to push now.

git push

Push your updated tree on the git repository. Make sure you have enough rights to do so.

git push -f

Installing high availability Odoo 11 on ubuntu 16.04

You must be aware that now odoo has released version 11 officially. To know odoo 11 features click here

In this tutorial I’ll explain you how to install high availability odoo version 11(Community version) on ubuntu 16.04

Note : There is no major difference for installing odoo community and odoo enterprise version.

Overall System Architecture

 

If python is already installed, make sure you have installed python version 3.5 or above. Previous versions of python are not compatible with odoo 11.

Installation Guide

In this tutorial, I assume that you have properly configured your network for the required servers and you have basic networking knowledge to replace/change ip addresses mentioned throughout this tutorial with the appropriate ip addresses.

Database Server(s) Installation

Step 1 : Installation

Before you proceed for the installation, make sure you have configured locale settings properly.

sudo apt-get -y install postgresql postgresql-contrib

Step 2 : Create user with password

sudo -u postgres createuser odoo11
sudo -u postgres psql
psql=# alter user odoo11 with encrypted password '<password>';

 

Step 3 : Allow remote connection from application servers

All below lines in /etc/postgresql/9.5/main/pg_hba.conf file on top

host all odoo8 192.168.1.51/32 trust
host all odoo8 192.168.1.52/32 trust
host all odoo8 192.168.1.53/32 trust
host all odoo8 192.168.1.54/32 trust

Restart postgresql service

systemctl restart postgresql

Application Server(s) Installation

Follow mentioned steps on each of the application server(s) to install odoo application only. For simplicity I will be using the debian package to install the odoo server, you can also follow the manual installation process from other tutorials.

Step 1 : Download latest version

http://nightly.odoo.com/11.0/nightly/deb/odoo_11.0.latest_all.deb

Step 2 : Install odoo

Before you proceed for this command make sure that your locale is setup properly if you are using VPS.

dpkg -i odoo_11.0.latest_all.deb

If you encounter the blow error during the installation

# dpkg -i odoo_11.0.latest_all.deb 
Selecting previously unselected package odoo.
(Reading database ... 26866 files and directories currently installed.)
Preparing to unpack odoo_11.0.latest_all.deb ...
Unpacking odoo (11.0.20171114) ...
dpkg: dependency problems prevent configuration of odoo:
 odoo depends on python3-babel; however:
 Package python3-babel is not installed.
 odoo depends on python3-dateutil; however:
 Package python3-dateutil is not installed.
 odoo depends on python3-decorator; however:
 Package python3-decorator is not installed.
 odoo depends on python3-docutils; however:
 Package python3-docutils is not installed.
 odoo depends on python3-feedparser; however:
 Package python3-feedparser is not installed.
 odoo depends on python3-gevent; however:
 Package python3-gevent is not installed.
 odoo depends on python3-html2text; however:
 Package python3-html2text is not installed.
 odoo depends on python3-jinja2; however:
 Package python3-jinja2 is not installed.
 odoo depends on python3-lxml; however:
 Package python3-lxml is not installed.
 odoo depends on python3-mako; however:
 Package python3-mako is not installed.
 odoo depends on python3-mock; however:
 Package python3-mock is not installed.
 odoo depends on python
dpkg: error processing package odoo (--install):
 dependency problems - leaving unconfigured
Processing triggers for systemd (229-4ubuntu12) ...
Errors were encountered while processing:
 odoo

You can run,

apt-get install -f

This command will installed all the dependency libraries on the system.

Note : Debian package installer by default install postgresql as dependent package, we can stop the postgresql service and remove service from the system startup service list.

sudo systemctl stop postgresql
sudo update-rc.d postgresql disable

Step 3 : Database configurations

Let’s help application server to find the database from the configuration file. (/etc/odoo/openerp-server.conf)

db_host = 192.168.1.61
db_port = 5432
db_user = odoo11
db_password = xxxx

Note : Don’t forgot to replace your database name and database password with appropriate values.

Step 4 : Custom Modules

To install the custom modules on all application server, you need to configure NFS to share the directory which can be accessible from all the application and which should be mounted automatically on system startup.

After successful configuration of NFS on all application server you can add mount path in addons_path param(can be found on odoo configuration file)

Load Balancer Installation

Step 1 : Install nginx

sudo apt-get install nginx

Step 2 : Nginx site configuration

Create a configuration file under /etc/nginx/sites-enabled/xyz.com.conf with below content. Don’t forgot to change the domain name and SSL certificate path.

upstream backend  {
       server 192.168.1.51:8069;
       server 192.168.1.52:8069;
       server 192.168.1.53:8069;
       server 192.168.1.54:8069;
}

upstream backend-longpolling {
server 192.168.1.51:8072;
server 192.168.1.52:8072;
server 192.168.1.53:8072;
server 192.168.1.54:8072;
}

server {
   server_name xyz.com www.xyz.com;

   location / {
       return 301 https://$server_name$request_uri;
    }
}




server {
listen          443 ssl;

server_name xyz.com www.xyz.com;
proxy_connect_timeout       60000;
proxy_send_timeout          60000;
proxy_read_timeout          60000;
send_timeout                60000;

ssl_dhparam /etc/ssl/certs/dhparam.pem;
proxy_set_header Host $host;
proxy_set_header X-Real-IP $remote_addr;
proxy_set_header X-Forward-For $proxy_add_x_forwarded_for;
proxy_set_header X-Forwarded-Proto https;
proxy_intercept_errors on;

location /longpolling {
     proxy_pass http://backend-longpolling;
}

location / {
          proxy_pass http://backend;
}

ssl_certificate /etc/nginx/ssl/www_xyz_com.crt; 
ssl_certificate_key /etc/nginx/ssl/www_xyz_com.key;
}

Step 3 : Restart nginx service

systemctl restart nginx.service

Step 4 : Access odoo application from the browser.

Navigate from your public ip address if port 80 and 443 are already forwarded from the firewall.

How to install odoo 11 on UBUNTU 16.04

Hello Everyone, You must be aware about the odoo has released it’s most awaiting version odoo 11 with exiting new features. To know odoo 11 features click here

In this tutorial I will teach you how to install odoo 11 from debian package.

Step 1 : Download latest version

http://nightly.odoo.com/11.0/nightly/deb/odoo_11.0.latest_all.deb

Step 2 : Install odoo

Before you proceed for this command make sure that your locale is setup properly if you are using VPS.

dpkg -i odoo_11.0.latest_all.deb

If you encounter the blow error during the installation

# dpkg -i odoo_11.0.latest_all.deb 
Selecting previously unselected package odoo.
(Reading database ... 26866 files and directories currently installed.)
Preparing to unpack odoo_11.0.latest_all.deb ...
Unpacking odoo (11.0.20171114) ...
dpkg: dependency problems prevent configuration of odoo:
 odoo depends on python3-babel; however:
 Package python3-babel is not installed.
 odoo depends on python3-dateutil; however:
 Package python3-dateutil is not installed.
 odoo depends on python3-decorator; however:
 Package python3-decorator is not installed.
 odoo depends on python3-docutils; however:
 Package python3-docutils is not installed.
 odoo depends on python3-feedparser; however:
 Package python3-feedparser is not installed.
 odoo depends on python3-gevent; however:
 Package python3-gevent is not installed.
 odoo depends on python3-html2text; however:
 Package python3-html2text is not installed.
 odoo depends on python3-jinja2; however:
 Package python3-jinja2 is not installed.
 odoo depends on python3-lxml; however:
 Package python3-lxml is not installed.
 odoo depends on python3-mako; however:
 Package python3-mako is not installed.
 odoo depends on python3-mock; however:
 Package python3-mock is not installed.
 odoo depends on python
dpkg: error processing package odoo (--install):
 dependency problems - leaving unconfigured
Processing triggers for systemd (229-4ubuntu12) ...
Errors were encountered while processing:
 odoo

You can run,

apt-get install -f

This command will installed all the dependency libraries on the system.

Step 3 : Navigate to odoo web url

Congratulations you have completed odoo 11 installation, Wasn’t it too easy!!

http://localhost:8069 or http://<your computer ip>:8069

What is difference between Bitrix64 and Odoo CRM?

Here is a basic difference of any closed source CRM (Bitrix, MS Dynamics, ZOHO CRM, Suger CRM etc) & Open source CRM (e.g. Odoo, Orange etc)

Open Source CRM

  • There will be no licensing terms and you will own the system.
  • You’ll have to rent/own infrastructure and yourself will be responsible to manage it.
  • You have full rights to customize it as you will have the source code.
  • You can establish your own business process on rather than accepting already established process of some software.
  • TCO (Total Cost of Ownership) might be more than hosted ones. It might have bit more operational cost.
  • Export the data and migrate to some other software will be easy as you own that software.
  • Data privacy and confidentiality will be maintained.
  • You will have built in website already connected with CRM/backend (Tight coupling)
  • Extensibility of having accounting, sales, purchase, payroll, inventory on a single click installation without any extra cost.

Hosted CRM (Closed Source)

  • No/little setup cost
  • You don’t need to worry about infrastructure and maintenance.
  • You will not own the software and will need to accept the licensing terms.
  • Very small customization might be allowed.
  • You will need to adopt the business process (workflow) of that software.
  • Migration to other software in future might be difficult.
  • No TCO (Total cost of ownership) as you will not own the software.
  • You will need to write/develop middleware interface to connect with any website (Loose coupling)

 

How to use Office365 as an outgoing mail/smtp server with odoo?

If you are getting an error like “SMTPDataError:… SMTP; Client does not have permissions to send as this sender

It seems a normal scenario to use office 365 as a email server with Odoo but there are some known issues while you configure it.

  1. It will not directly allow you to use multiple FROM address or different FROM address then the sender address which is being used in authentication. E.g. you have configured alice@example.com and you would like to set no-reply@example.com as a FROM address. This will be needed when you want all your Odoo users to send emails using same FROM address.

As a solution, you have a couple of options,

  1. You can relay your outbound emails from an another MTA like Sendgrid and use the multiple sender addresses.
  2. You may create a security group and follow the steps below,
    1. Create a security group e.g. no-reply@example.com
    2. Add all email accounts to that group and give send as permission.
    3. Try sending an email and it should work!
  3. Check out reverse DNS settings of your domain name and make sure that its mapped to the return path properly.

 

How to run first blockchain hello world program!

I assume that you have read a lot about the block chain technology and where it can be applied. Now you must be wondering where should I develop the Smart Contract and run the program

Do I need to,

  • Spent Ether to run program on Ethereum main network to test it
  • Download the Ethereum wallet and connect to Ropsten or Rinkeby  test network? Even if you connect to it and download the data from the peers you will find difficulty to execute the program.

Answer is no

Here are the simple steps you need to follow in order to run your first Hello World! etherum smart contract.

Overall Architecture

Step 1 : Setting up testrpc virtual environment

Download the Ethereumjs test rpc Docker image & run it. If you haven’t already installed docker engine follow this instruction.

docker pull silentinfotech/ethereumjs-testrpc
docker run -d -p 8545:8545 silentinfotech/ethereumjs-testrpc:latest -a 10 --debug

When you run the docker it will start the docker container and will forward port 8545 to it.  testrpc is Node.js based ethereum client for development and testing.  Find more information on testrpc from here

Step 2 : Remix IDE

We will use the remix IDE for the ethereum smart contract( In developer language program) development. Navigate to https://remix.ethereum.org/ and allow unsafe script to load.

As a part of first program, We will run hello world “Your first citizen: the greeter” program from ethereum.org. Find more information about hello world program from here

Step 3 : Copy & Paste Hello world contract

Copy “Your first citizen: the greeter” program and paste it on remix IDE window. Contract will be compiled automatically if Auto compile is selected already. Ignore the warning(s) for now.

Hello world block chain program at Remix IDE

Step 4 : Run program

Navigate to Run tab from top right corner.  Choose Web3 Provider as environment. Enter appropriate URL – if you are running docker on local computer you won’t need to change the url. We are now connected to testrpc ethereum test environment. We can find the account dropdown auto populated with all test accounts with having 100EHR by default – which are more than sufficient to run the program. 😉

Let’s run the program,

Pass the constructor parameters in create method(e.g “Hello world!”. Click on create, Wow!!! we have generated a first block. You can even call the greet method on newly created block.

You can also read the existing blocks methods/variables by providing block address in At Address text field.

Ethereum Network Charges

In a nutshell, you will be charged when ever you/program will change the state of the variable. e.g Increment value of variable, store the value in variable, destroy value of variable. there is no charge for reading the blocks.

References

https://remix.ethereum.org/

https://www.ethereum.org/greeter

 

Odoo won’t start after pysftp installed

Environment

  • UBUNTU 16.04
  • Odoo 9

Problem

Today I came across the situation where after installing pysftp suddenly I won’t be able to start odoo again. I have tried to do

service odoo restart
service odoo stop ; service odoo start

When I have tried to uninstall pysftp, I was having SSL_ST_INIT error

root@erp:~# pip uninstall pysftp
Traceback (most recent call last):
 File "/usr/bin/pip", line 9, in <module>
 from pip import main
 File "/usr/lib/python2.7/dist-packages/pip/__init__.py", line 13, in <module>
 from pip.exceptions import InstallationError, CommandError, PipError
 File "/usr/lib/python2.7/dist-packages/pip/exceptions.py", line 6, in <module>
 from pip._vendor.six import iteritems
 File "/usr/lib/python2.7/dist-packages/pip/_vendor/__init__.py", line 64, in <module>
 vendored("cachecontrol")
 File "/usr/lib/python2.7/dist-packages/pip/_vendor/__init__.py", line 36, in vendored
 __import__(modulename, globals(), locals(), level=0)
 File "/usr/share/python-wheels/CacheControl-0.11.5-py2.py3-none-any.whl/cachecontrol/__init__.py", line 9, in <module>
 File "/usr/share/python-wheels/CacheControl-0.11.5-py2.py3-none-any.whl/cachecontrol/wrapper.py", line 1, in <module>
 File "/usr/share/python-wheels/CacheControl-0.11.5-py2.py3-none-any.whl/cachecontrol/adapter.py", line 3, in <module>
 File "/usr/share/python-wheels/requests-2.9.1-py2.py3-none-any.whl/requests/__init__.py", line 53, in <module>
 File "/usr/share/python-wheels/urllib3-1.13.1-py2.py3-none-any.whl/urllib3/contrib/pyopenssl.py", line 54, in <module>
 File "/usr/lib/python2.7/dist-packages/OpenSSL/__init__.py", line 8, in <module>
 from OpenSSL import rand, crypto, SSL
 File "/usr/lib/python2.7/dist-packages/OpenSSL/SSL.py", line 118, in <module>
 SSL_ST_INIT = _lib.SSL_ST_INIT
AttributeError: 'module' object has no attribute 'SSL_ST_INIT'

Solution

Step 1: Backup existing directory on OpenSSL and pyOpenSSL from dist-packages folder.

cp -r /usr/lib/python2.7/dist-packages/OpenSSL /tmp/
cp -r /usr/lib/python2.7/dist-packages/pyOpenSSL-0.15.1.egg-info /tmp/

Step 2: Remove directory OpenSSL and pyOpenSSL from dist-packages folder and install pyopenssl module

# rm -rf /usr/lib/python2.7/dist-packages/OpenSSL 
# rm -rf /usr/lib/python2.7/dist-packages/pyOpenSSL-0.15.1.egg-info 
# sudo pip install pyopenssl

Step 3: Start odoo service.