A B C of Activity based costing in Odoo

Costing is one of the most familiar term in Accounting, you can certainly think of that Activity Based Costing is an extended version of it! As we all know that revenue and costing are equally important for any business, because based on those figures company can view its current situation and predict future. Here you can say that Activity Based Costing goes few steps inside of general costing, through which you can identify all your costing which are being spent on different activity of your business. That costing can be related with both, time and money.

This concept is discovered in mid 80’s, and during that time, it was mostly used for manufacturing. Although when time goes by, it has started to be included into service sector as well. Though as we know, situation of both are different, but as both runs with more than one activities, it was being implemented there also. And yes, as you can think of, at initial state, as it was quite different from general costing, it does not get that much notification and was not popular also, as it was very much hard to implement with existing system. But in time frame, it was simplified and started gathering popularity. Company were started to see potential into that and look forward to adept it. Let’s see some of that vital aspects of it.

Identify your costly activities!

In most case, this concept is used for manufacturing sectors. While producing goods, a manufacturing unit does many process, and when raw material goes pass through all those, at the end, we have finish products. Costing of the product will be included into valuation of end product, with conventional costing (contain material, labour and overhead costs), what happens that those costing being spread equally to all produced product. Now, one can think that what is wrong into that ?? Let’s take an example of that. In one company, before giving approval to their final product, it needs to go through quality control test. In product A only one check is required, while in product B, they need to check it 3 times! So actually cost of product B should be higher than product A, but in conventional costing, it’s being divided equally to both, and in the end company cannot have right data that which is more beneficial for them, as they will not have right margin data for those.

Listing few of those here,

We have seen that in certain case, we need to do more inspection for certain kind of products, if company is doing business of requirement based operations, there will be more different activities to look out for. Like to manufacture same object, at certain time, they need to purchase raw material less, while in certain circumstances, they need to purchase it more. Same applies for production time, and number of resources being used into those orders and quality control check.

Besides that, there will be an R&D department, which always keep finding new solutions to make product more and more competitive with others. And even more, for that new product, their sales team needs to find new customers, those all things needs to include in that “new and improved” product.

“Cost Pool”, a term used in ABC

Like we discuss regarding different activities, related to costing, there are few of those, which cannot relate directly to manufacturing. Things like administrative expenses, salary of employee etc. So in such case, what we need to do, is to bifurcate those costs into different “pools”, like those activities, which directly attached to manufacturing, should be in first pool, while others will go into second cost pool.  Such pools can also have costings like on-site customer services, after sales services, and by after making analysis those data, one can identify most costly order.

With getting details from ABC, we can easily identify those products, which in certain circumstances, costs more, and some of those costs less. With the help of those data, management can take premeditated decision which can be more beneficial for company. Here, past history of those data can be very much helpful as they can predict expected costing and determine sales price of that. Yes, those data may not be 100% accurate, but it can certainly help. While we have all the activities and their cost pre-defined, one can try to remove/replace few of those to make it more cost effective.

Things to watch out for

ABC is indeed a very nice tool, but also it has few things which can make this tough to implement into your existing system. One of the main thing is to initialized costs with different activities, and if some of those not being measured into your system, that it will be not possible to get those details, and some time it’s become even more costly to manage those activities into your system. Also, there can be situation that it can be hard to define exact time of particular machine, worked how much for one particular product, as it’s doing multi tasking for more than one product at the same time! And that effect into end report as well, where we may not have accurate details for those.

Even more, it’s become more hard to expect right data, when input of that is dependent on end user. So when asking end user to enter worked hours into system, most of them have tendency to add full 100% of their hours, which is very near to impossible, as there will be such time, on which they have not worked.

There are more pros than cons of ABC, as now most of the manufacturing units have started to implement it. While it needs to be taken care of while implementing, proper details should be gathered, right activities has to identified and appropriate costing method is applied to each product. Because than only it can sustain for a long period of time, and company can take good benefit from those details.

ABC in Odoo

Like other well known ERP system, Odoo also provides basic concept of ABC. In Odoo, one can get those details via Analytic Accounting. However, ABC touches many such activities, which currently cannot be managed automatically, even in Odoo. Yes, if those being entered manually into system, with quite a good care, than we can have those details. But to make system to get those things done automatically, high level of customization is required. So that can save time and cost of company, and can have required details on their dashboard!

Cash Flow – Things to Know About It

“Cash”, when we hear this term, our “Flow” of thinking always goes into one direction of related topic being discussed on that point of time! It is fact that we all are now moving into such age, where virtual money is taking place of actual money! And even more, Bitcoin has become a reality now, and we have to accept it as well. As it does not matter now, from which form, the money transfer form person to person or place to place, important thing is to track its transactions and get all related details.

Even more, if we go into depth of such transactions such requirement arises, especially in corporate world, to prepare such statements which identify incoming and outgoing details of cash in/from company. Here novice like me, think that why we need such details, as in the end of day, when checking all details of accounts, we will have final figure of cash in hand, than why we even need to bother about that ?

Well, that stuff is important, the reason, is that based on that one can identify that how many ways are there into their company, from cash comes in and goes out. Let’s have some example from where cash comes in,

  • Selling service or goods
  • Bringing equity in
  • Reduce cost as much as possible
  • Borrow from bank or other financial sector as loan
  • Selling company assets

As counterpart of these, there are points, which reduce cash from your company, such as

  • Purchasing goods, assets in company
  • loan & it’s interest payment
  • Tax payment to government
  • Payroll of employees

But still, why need of such statement ?

Though such statement do have importance on day to day basis, but in certain period of time, like 6 months, or in a year, weight-age of such statement is even more, as we can get such details that do we have cash as positive or negative. (Here, one thing needs to taken care of that if flow of cash is too high, than it does not mean that it’s good sigh, and if it’s low, than position of company is not that good). Having related data, it helps management to take decision, such that in future, how much stuff they require to achieve their goals, how much they can spent on different expenses, which in the end, comes up with direct (or indirect) benefit of company, or even help to avoid bankruptcy !

It does not mean Cash’ only !

As the name  suggests, cash flow to measure cash of the company, but it also includes other liquidity which can in no time can be converted into cash, like stock/shares of other companies, bonds (either from other private sectors or from government). Here we can also include cash deposit, as we can any time withdraw it and have cash on hand. We could have extended list by including goodwill into it, but that is debatable one, as many thinks that it’s not that easy and quick to convert it into form of cash.

Measure company’s liquidity

Based on size of company, team of management needs to identify that what should be an ideal figure for them as liquidity, as that can vary from company to company. With such statements, management gets all cash related details, for past and present as well, based on that, they can make analysis for the future, and extract liquidity related details for future as well, which than can help them to do balancing act between income and expense.

This does not include Profitability!

Though both cash and profit can sound similar, but there is difference between those, as positive cash in statement does not mean that business has profit, it may also indicate that payables of that business not being paid into time. Which currently raise the cash into high positive while in the end, cash balance goes deep into negative, and makes even harder to run business (here it does not mean that you should pay to your suppliers in advance or few days before payment term ends, obviously, you have to take full advantage of those days). This could lead to business into bankruptcy as at some point of time and there will be no cash left for them to pay to their debts, employee and other costs.

Helping out to reduce costs

As we know, there are quite a ways to get more cash flow into company, or we can also say that there are ways, which stop more cash to go out from company, which generally is costs, being spent on company. While preparing such statements, we can identify those hidden costs, and later on, we can get rid of some of those, or can make more cost effective methods, which in the end, help company to have better report card.

Helpful on Repurchase or Resale of your own assets / bonds / shares

As management aspect, many time company repurchase their own assets, based on their need (or due to some accounting aspects), here with such statement, they do have idea about current and future financial position. With cash having on hand, company can buy-back their own assets/shares. Based on figures on those statements, company can take advantage of volatile (or declining) market and can do stock buyback. Such decisions has more value related to accounting, rather than actual business, but if such option is available, than company do prefer to take it with the help of such statements.

It’s much easier to prepare cash flow statements, but it’s very much tricky to make analysis of that, as it may create illusion and present different position of company, than actual one.  As it says in accounting world that it’s very easy to be profitable into paper, than actual! This is perfectly relates to cash flow statements, as one has to be more careful while doing analysis of it. This is really a nice tool, helping out management to take decision, both for long term as well as day to day basis.

Appraisal – An Essence to Enhance Employee’s Performance

It is fact that whether in a small business or in big corporate, even though they have many assets, their true assets are their employees, honest, dedicated, and hard-working  ( and it’s also the fact that those employees are really rare to find! ). Though any company never expects their employee to work like bee in hive, but do expect more or less kind of dedication like them, because based on that, the company can sight their future goal and workout plan those to achieve it. Let’s have another one,

“First, you need to win workplace, than you can win marketplace.”

Those are really nice to read, and shows the importance of employee in the company. And we believe that you might agree with those as well. But here our main concern is how to get best out of the guys which are working in a company. This seems very general and base issue for any company to address, also there are many ways to sort out this problem as well, like giving more salary, more facility or more freedom to do their work.But those should only be done after evaluating them via some kind of conversations, where employee can give/discuss/explain their views for their current working scenario and make a little space, to make it a better place.

Then it’s management’s turn, to use those details and help-out/encourage them and upgrade their performance level, and today we are going to discuss on the importance of appraisal, how we can use it go sort out things related to performance of the employee.

Appraisal, as in general term, is kind of one form, in which employee fills out details or seniors put details of their juniors, mostly related to their behaviors, performance, approach etc. and submit to higher authority. While it’s better that this should not be only used for evaluating purpose of any person, but using this information, helping out employee and train them (or help them out) to improve their performance in their related field of the company.Let’s discuss some of the aspects of of it and how it helps employee.

What is appraisal ?

It’s all about evaluation, understanding one’s strength and scope of improvement. Generally, in self evaluation, it is expected that the employee gives all the details with a positive approach, and not an extravagant detail of themselves. And the same applies while evaluating others. Employees, based on their daily working life and experience, give suggestions to make working place a better one, which help them to improve their performance.While on management part, they are the one, who listen/go-through all the things, and after getting all the details, can take best possible decisions, which proves beneficial for their company. Where number of employees are less, it becomes an easy process to have communication with each one, get review and measure performances.Where-else number of employees are very high, in such case, better hierarchy should be maintained and in such, appraisal has to be collected in the form of written communication, especially on Questions & Answers.

Why (Do) we need it ?

Yes, Certainly. Like mentioned before, there has to be one communication medium between employee and management, otherwise there will be stereotyped work for all the peoples working into the company, and that is very dangerous for any company! Because without evaluation company cannot encourage right person to enhance their work to the next level.So here we need to see appraisal not only in a way to transfer information from one end to another, we need to see that how companies can use it to help out employee to raise their work efforts. Moreover, based on such evaluation data of employees, it can help companies to plan their goal for the future, set targets for each one, and help distinguish employee for different pay structure also! (This point is also quite important as well).

Ask Right Questions

It’s not possible to have different questions for each individual, otherwise, there will not be any end of that questionnaire, and it will be near to impossible to evaluate employee as it will take a lot’s of time to get answer of those. So in such case, it’s preferable to have general questions for each job position. Before preparing such list, it’s important to go through all possible aspects which relates employee directly or indirectly. Starting for their own time management to customer feedback, from their cell phone use in company to handle company’s property as well.As it is said that asking the right question is an art, and based on that answer, you can have more than expected details. Like if asking for next year’s sales prediction compare to previous years, we can get potential of sales for that particular person, based on his/her answer. Things like these does matters for management aspect, as they can extract such details from those information, and plan ahead for their company.

Reaching out to Employee

Things are becoming tough to accept that company and employees are not either communicating or connecting emotionally! In large scale, this is a bit more to expect from either party, but in small scale, this is preferable. Because after doing an evaluation of an employee, it’s required to encourage them to perform better, set realistic goals for them and help them out to achieve those, because every company prefers their workers/employee to help out their colleague and not having such approach for passing the buck to others! And at the time of doing appraisal, the approach should be critical and not negative, this has to be distinguished, because then only improvement can be visible to end person.

Managerial aspect of it

Report. Managerial part depends on this one word! Because they are the person or group of persons, who are supposed to take decisions, and obviously, they take decisions based on reports, which they have. Here, it is expected that in the appraisal, should contain a choice of answers. Because then it will become very easy to form those in computer format, and generate different kind of reports. Which in the end helps them to take decisions accordingly in right time.

As this famous quote said “I never fire my employee, because I spent a lot on their training, why should I allow others to buy his experience ?“, appraisal, used smartly and with the right intent, can sort out many internal hurdles of company and help out to get more out of their employees.

Odoo v8 Point of sale – Pricelist options

As we have already developed a module to apply pricelist in v7 Point of Sale but there are some changes we made for Odoo v8 point of sale.

As we normally do, here we have created a pricelist of 10%.

Odoo pricelist

Now in this screen, we assign pricelist to customer.

Assign pricelist to customer

Now, when we select customer from Point of Sale, then automatically, we can see in drop down list, particular pricelist will be visible.

pricelist in pos from customer

When we click on product, then that pricelist will be applied in the list.

Apply pricelist on products

Here are the list of pricelist options available. We can directly select pricelist from here also if we do not assign pricelist to customer but yes, as we normally do in Sales, for pricelist we must need customer to be selected.

Odoo pricelist options in pos

Odoo Point of Sale – Self Service

We are introducing Odoo POS module which can be use for KIOSK system. It is useful during ‘Self Service’ type area where user can deposit some amount in advance and use that amount during purchase. User can able to purchase according to available balance.

It requires to configure type and journal first as we can see in below screen.

POS Configuration for self service

User will login into system by click on ‘Select User’ button. It is possible to login by unique barcode value assigned to each user. User has to ‘Validate’ order for completing payment process and amount will be deduct from his account.

POS Self Service Session

User can be selected by name.

Select user from POS

User can be selected by barcode also.

Select user barcode from POS

User has to enter assigned PIN for verification.

Enter user pin

As we can see on top, after successful login, user can get information about his balance.

POS Login User Detail

On each product add, POS will check available balance and notify if insufficient balance.

User's balance

At the end, user will get an Email and SMS for successful transaction like below.

Transaction Email

Odoo Multi Company Configuration

Odoo-8 has Multicompany configuration, It is simple to use and handle. Now let us see about it.

To get multicompany options First go to Settings–>General Settings , in that check on the Manage multiple companiesoption. Check below multi

Now you set the Multicompany. Dont get panic that no difference in Screen.. but you should have one admin to handle multicompany so that he can view Company hierarchy,etc.

Now next step give one user Multicompany rights(probably admin)… By going to        Settings–>Users       in that go to admin and check on the Multi Companies .. as below

multi2

Now Everything is set.. now you can view company hierarchy, Allowed companies, etc…

Work Arounding:

As a sample I will create some companies and work around it.

I have created 3 companies with one company as parent company..

Parent company– Rabel CO

3 child named rabel 1 , rabel 2 , rabel 3

So company hierarchy is as follows…

mutli3

Create users and give Access rights to them to particular company as below…

multi5

Now anand can see only the data or record of “rebel 1” only. You can restrict users by giving values to allowed companies.

But..!

According to security Rule you may see parent company details like customers,etc, also Security Rules define what data who should see…

Major diff is.. If a user is Multicompany user then he will see Company (Drop down box)… If a user is not Multicompany user he will not see Company (Drop down box)…

Allowed companies will filter the record of other child companies…..

Thats It,..

….

Thank you all.,,:):)

Odoo POS Pop Ups

In odoo retailers will be mostly concentrating on POS because that minimizes their effort to more extreme,….

Now on developer side it is tough work to customize that pos.. since it is collaboration of js, jquery with python…  Some times head ache..😛:) ..

No problem now we will see how to create a pop up in odoo POS,,,,

For this you need some basic knowledge in

1) js, jquery

2)python

3)odoo qweb widgets

Now we are going to create a popup asking name to enter in pos….

create a module in odoo.. with init and openerp file…

Now normally on creation of wizard we used to create a form for pop right.. like that create one as below..

create model.py file with following code:

from openerp import api, fields, models
from openerp.osv import osv

class pos_model(models.Model):
_name = ‘pos.popup’

name=fields.Char(‘Name’,size=30,required=True)

def okay_refresh(self,cr,uid,ids,context=None):

return{

‘type’:’ir.actions.client’,

‘tag’:’reload’,

}

view.xml file has this:

<?xml version=”1.0″ encoding=”utf-8″?>
<openerp>
<data>
<record model=”ir.actions.act_window” id=”create_pop_up”>
<field name=”name”>Pop up</field>
<field name=”res_model”>pos.popup</field>
<field name=”view_mode”>form</field>
</record>

<record id=”create_pop_form” model=”ir.ui.view”>
<field name=”name”>Pop up</field>
<field name=”model”>pos.popup</field>
<field name=”type”>form</field>
<field name=”arch” type=”xml”>
<form string=”Pop up” version=”7.0″>

<br />
<h2>Enter the name:</h2>
<br /><br />
<label for=”name” style=”clear:left;text-align:right;padding-right:10px;float:left;padding-left:5em “/>
<field name=”name” nolable=”1″ style=”float:left;padding-left:5em “/><br /><br />

<br />
<br />

</form>
</field>
</record>

Now its turn for POS module change..

TO add button to POS.. create static–>src–>xml–>pop_up.xml

<?xml version=”1.0″ encoding=”UTF-8″?>
<template id=”payment_screen”>
<t t-extend=”PosWidget”>

<t t-jquery=”div.pos-branding” t-operation=”inner”>
<button class=”popup-misc” style=”position:absolute;left:300px; top:7px;width: 100px; height: 37px; font-size:15px;”>Name popup</button>
</t>
</t>

</template>

Now create a file static–>src–>js–>pos_pop.js

in that paste it

openerp.module_name = function(instance){

var module = instance.point_of_sale; 
var QWeb = instance.web.qweb;

module.PosWidget.include({
build_widgets: function(){
var self = this;
this._super();

this.$el.find(‘.popup-misc’).click(function(){
self.do_action({
type: ‘ir.actions.act_window’,
res_model: “pos.popup”,

views: [[false, ‘form’]],
target: ‘new’,
context: {},

});

});

}
});

};

create a file template.xml in that paste the following code

<openerp>
<data>

<template id=”assets_frontend” inherit_id=”web.assets_common”>
<xpath expr=”.” position=”inside”>

/module_name/static/src/js/pos_pop.js
</xpath>
</template>

</data>
</openerp>

This will add your js to odoo frond end..

Finally add all the xml files in _openerp__.py…

Thats it.. popup is now okay…. Ping me if you get any dout or any suggestions…

Thank you…:)

Supplier’s own Product Code and Name on RFQ, PO and Invoice instead of default product name and code

Normally in real life scenarios, all suppliers have their own calling code/name for their supplies products.
Today I am going to show you,
How to use supplier’s own product code and name on Purchase Quotation (RFQ), Purchase Order

(PO) and Purchase Invoice.

Step 1: Select any product and goto Formview > Procurements > add supplier’s information.
 
 
 
Step 2: Here I have added Asustak and configuring it’s product code and name.
             Product : Apple In-Ear Headphones
             Supplier : ASUSTek
             Product Code : ASUSE – APPLE-EAR-PHONE
             Product Name : Asus – Apple In-Ear Headphones
Step 3: Create Purchase Quotation (RFQ) with product Apple In-Ear Headphones.
 
             Product Description field will automatically pop out with Supplier’s product code and name.
Step 4: Confirm Quotation and convert to PO. Same Product Description will be used for PO.
Step 5: Transfer PO and Receive Incoming shipments. Now go for supplier’s invoice.
             Invoice is also pop out with supplier’s product code and name.

 

So here by configuring supplier’s product code and name, we will get same effect at RFQ, PO and Invoice.

Autostart Odoo/OpenERP server at System reboots (Ubuntu)

Here I am going to show you few easy steps to create a script that will automatically starts your odoo/openerp server when Ubuntu starts (reboots).
Step 1: First of all you need to setup your odoo server by installing odoo packages as well as postgresql database configuration Odoo Installation guide.
Step 2: Once you have done with odoo installation,
            Locate openerp-server.conf file from odoo server files.

                Default path : /opt/openerp/server/install/openerp-server.conf

                Manual Search from terminal:
           locate openerp-server.conf
Step 3: Open file and set following basic parameters for default configuration:
 [options]   
    ; This is the password that allows database operations:   
    ; admin_passwd = admin   
    db_host = False   
    db_port = False   
    db_user = odoo   
    db_password = False   
    dbfilter = .*  
    xmlrpc_port = 8069  
    addons_path = /usr/lib/python2.7/dist-packages/openerp/addons  
                 ; (Custom addons path can be added and separated by commas (,))  
      
 
Step 4: Check your odoo server is running from above configured openerp-server.conf file.

       Terminal:

           ~/odoo-8.0$ ./odoo.py -c /opt/odoo/server/install/openerp-server.conf

Step 5: Create new script file named odoo-server.sh and place this in path /etc/init.d/

odoo-server.sh

 #!/bin/sh  
 ### BEGIN INIT INFO  
 # Provides:       odoo-server  
 # Required-Start:    $remote_fs $syslog  
 # Required-Stop:    $remote_fs $syslog  
 # Should-Start:     $network  
 # Should-Stop:     $network  
 # Default-Start:    2 3 4 5  
 # Default-Stop:     0 1 6  
 # Short-Description:  Complete Business Application software  
 # Description:     Odoo is a complete suite of business tools.  
 ### END INIT INFO  
 PATH=/bin:/sbin:/usr/bin  
 DAEMON=/opt/odoo/openerp-server  
 NAME=odoo-server  
 DESC=odoo-server  
 # Specify the user name (Default: odoo).  
 USER=odoo  
 # Specify an alternate config file (Default: /etc/odoo-server.conf).  
 CONFIGFILE="/opt/openerp/server/install/openerp-server.conf"  
 # pidfile  
 PIDFILE=/var/run/$NAME.pid  
 # Additional options that are passed to the Daemon.  
 DAEMON_OPTS="-c $CONFIGFILE"  
 [ -x $DAEMON ] || exit 0  
 [ -f $CONFIGFILE ] || exit 0  
 checkpid() {  
   [ -f $PIDFILE ] || return 1  
   pid=`cat $PIDFILE`  
   [ -d /proc/$pid ] && return 0  
   return 1  
 }  
 case "${1}" in  
     start)  
         echo -n "Starting ${DESC}: "  
         start-stop-daemon --start --quiet --pidfile ${PIDFILE} \  
             --chuid ${USER} --background --make-pidfile \  
             --exec ${DAEMON} -- ${DAEMON_OPTS}  
         echo "${NAME}."  
         ;;  
     stop)  
         echo -n "Stopping ${DESC}: "  
         start-stop-daemon --stop --quiet --pidfile ${PIDFILE} \  
             --oknodo  
         echo "${NAME}."  
         ;;  
     restart|force-reload)  
         echo -n "Restarting ${DESC}: "  
         start-stop-daemon --stop --quiet --pidfile ${PIDFILE} \  
             --oknodo  
         sleep 1  
         start-stop-daemon --start --quiet --pidfile ${PIDFILE} \  
             --chuid ${USER} --background --make-pidfile \  
             --exec ${DAEMON} -- ${DAEMON_OPTS}  
         echo "${NAME}."  
         ;;  
     *)  
         N=/etc/init.d/${NAME}  
         echo "Usage: ${NAME} {start|stop|restart|force-reload}" >&2  
         exit 1  
         ;;  
 esac  
 exit 0  

Step 6: to make it executable, we need to give some permission.

      sudo chmod 755 /etc/init.d/odoo-server
Step 7: Testing the script:

        1. To start odoo server:

            sudo /etc/init.d/odoo-server start

            Once the service is start, check it in browser by typing IP_or_Domain_name:8069
        2. To stop odoo server:

            sudo /etc/init.d/odoo-server stop
Step 8: at last we need to hit one more final command to make odoo-server script activate automatically.
 
            sudo update-rc.d odoo-server defaults
Step 9: All is setup now. Just reboot the system and open terminal to check whether the odoo service is start automatic.
             ps aux | grep odoo

you will see something like this,
 odoo 15786 0.1 10.6 207132 53596 ? Sl 22:23 0:02 python /usr/lib/python2.7/dist-packages/openerp/addons -c /opt/odoo/server/install/openerp-server.conf  
It says that you odoo server is running and you can also check this out from web browser.

 

Have fun 🙂

Odoo Warehouse Stock Removal Strategy : FIFO, LIFO, FEFO

Normally in real time scenarios, there are several products comes with expiry dates like pharmaceutical products, food products etc. It is tedious to manage manually to select that products to sold out based onFIRST EXPIRY FIRST OUT.
Here I am going to show you some of configuration in Odoo that automatically manage your stock based onexpiry date/removal date set on product and removal strategy set on warehouse location.
Manage your stock using Removal strategy in Odoo. Some of removal strategy are as follows,
  1. First In First Out (FIFO)
  2. Last In Last Out (LIFO)
  3. First Expiry First Out (FEFO)
I know, Everyone loves Ice Cream and Chocolate, so here I am going to show you demo with Ice Cream as a Product 😀
Ice cream comes with expiry date, it should be sold out before it gets outdated and causes health issues to customers.
Ok, Lets begin with First Expiry First Out (FEFO)
Step 1: Here is list of Warehouse locations, you can create your own warehouse location also.

 

 
Step 2: Set configuration to make menus visible for ‘Serial Numbers’ and ‘Removal Strategy’
Step 3 : Once you have done with configuration, Removal Strategy field get visible.
Here is three type of Removal Strategy are as follows,
1. First In First Out (FIFO)
2. Last In Last Out (LIFO)
3. First Expiry First Out (FEFO)
Step 4: I am going to set ‘First Expiry First Out (FEFO)’ Removal Strategy.
Step 5: Lets create a Purchase Quotation > Confirm > Receive Products > Transfer
Step 6: Click on ‘Transfer’ button, wizard will be pop up. now click on ‘Lot/Serial number’ field and create Lot of Incoming Shipment to receive product batch wise.
Step 7: Set Desired dates for this Lot : 0000007
           1. Best Before Date
           2. End of Life Date : It is an Expiry date
           3. Removal Date : It should be less then ‘End of Life Date’ 
           4. Alert Date
Step 8: Transfer the incoming shipment to ‘WH/Stock’ Location
Step 9: follow step 5,6,7. create second incoming shipment Lot : 0000008
           Set Desired dates for this Lot : 0000008
             1. Best Before Date
             2. End of Life Date : It is an Expiry date
             3. Removal Date : It should be less then ‘End of Life Date’
             4. Alert Date
Step 10: Now we are going to sale this imported product from our location ‘WH/Stock’ where the removal strategy has been configured.
              Create Sale Quotation > Confirm > View Delivery Order
 
Step 11: Click on ‘Check Availability’ button, Odoo will reserve Quants based on Removal strategy on warehouse location.
Step 12: Here we go 🙂
              Click on move line, you can see the Reserved Quants details. product quantity has been selected from Lot 0000008 due to following removal date and expiry date,
             Product Lot        Lot 0000007         Lot 0000008
             Removal Date    08/28/2015            08/13/2015
             Expiry Date       08/31/2015            08/15/2015
            i.e : Lot 0000008 is a batch having earliest expiry date
You can select FIFO or LIFO removal strategy as per your requirements.
Have fun 🙂