Skip to Content
Menu
This question has been flagged

Business Analysts: Guillermo Urquidi, Diego Novoa, Odoo Technologies MX

Odoo allows the creation of branches linked to a parent company, facilitating the differentiation of operations between them. However, for certain types of businesses or workflows, it is necessary to perform warehouse transfers between branches without a purchase or sale involved, which can complicate operations if the correct configuration is not known.

At the database level, branches belong to the same legal entity but are managed as separate companies to enjoy the same benefits offered by the multi-company functionality. While this is advantageous in many areas, it complicates inventory operations between branches.

This guide will walk you through configuring a route that enables operations between branches and even between different companies.

No Studio or technical configurations are required.

Tools Required

Ensure that the "Multi-Step Routes" and "Storage Locations" settings are enabled.

Location Configuration

  1. Create a “View” Location:
  • Create a "View" location with a name that references transfers between branches or companies.
  • Example: Intercompany.

Note: Do not define any company in the "Company" field.

  1. Create a "Transit" Location:
  • Name it to represent the route the product will follow, and set the newly created "View" location as its parent.
  • Example: Main to Branch 1.

Note: Create a "Transit" location for each warehouse you want to send goods to (e.g., Main to Branch 2, Main to Branch 3).

Route Configuration: Ensure that you are within the branches and companies that will be part of this configuration.

  1. Create a New Route:
  • Go to Inventory Settings -> Routes -> New.
  • Name the route to reference transfers between branches or companies.
  • Example: Transfers Between Branches / Companies.
  • Configuration:
    • Do not define any company.
    • Do not define any supplied warehouse.
    • Enable the checkbox to manage by product.
    • Enable the checkbox to manage by warehouse and select the participating ones.

Route Rule Configuration

  1. Action: Deliver to
  2. Operation Type: Receipts for the warehouse receiving the goods.
  3. Manual Operation: Leave the company selection as automatic.

Flow

(Video Demonstration)

  1. Activate Route on the Product: Ensure the route is activated on the necessary products.

  1. Create a New Internal Transfer:
  • Note: The destination location should be one of the transit locations created earlier.

  1. Receive Goods in the Branch Warehouse or Company:
  • Validate the receipt once the goods have arrived.

BUT WAIT… THERE’S MORE 

Automation for Inter-Branch/Company Replenishment

Now, imagine companies want to automate the replenishment process between branches or companies even further.

What if multiple customers purchase multiple products from various branches that lack available stock and need to request it directly from the parent company?

Manually creating transfers between branches can be tedious and inefficient for companies with high product movement. Here's an alternative solution:

First Route Rule Configuration:

  1. Create a New Rule: "Deliver to Virtual Transit Location":
  • Action: Pull & Push.
  • Source Location: Main/Stock.
  • Destination Location: Intercompany/From Main to Branch 1.
  • Operation Type: Internal Transfer from the warehouse shipping the goods (Main).
  • Manual Operation: Yes.
  • Replenishment Method: Take from stock.
  • Warehouse: From the Main company.
  • Company: Select the Main company from which the products will be sourced.

Second Route Rule Configuration:

  1. Create a New Rule: "Receive at Branch 1":
  • Action: Pull & Push.
  • Source Location: Intercompany/From Main to Branch 1.
  • Destination Location: Branch 1/Stock.
  • Operation Type: Receipts for the warehouse receiving the goods (Branch 1).
  • Manual Operation: Yes.
  • Replenishment Method: Trigger another rule.
  • Warehouse: From Branch 1 company.
  • Company: Select Branch 1 company from which the products will be sourced.
  • Propagation (Warehouse to Propagate): Select the warehouse of the "Main" company.

Automated Process Flow

(Video Demonstration 1 - Process Triggered by a Sale)

(Video Demonstration 2 - Process Triggered by Automated Replenishment)

  1. Activate Route on Necessary Products:
  • This route automates the process triggered by a sales order or inventory withdrawal where the necessary products are not available in the Branch 1 warehouse.

  1. Place an Order:
  • Select the products and click "Order" to trigger the material request from the "Main" company.

  1. Internal Transfer in Main Company:
  • A pending operation will be generated in "Internal Transfers" to supply the products and send them to the transit location created earlier.

  1. Receiving in Branch 1:
  • In "Receipts" for Branch 1, the corresponding operation will be generated to receive the products.

  1. Validate Outbound Products in Main Company:
  • The Main company validates the product shipment once they are dispatched to Branch 1.


(Main Company POV)


(Branch1 POV)

  1. Receive Products in Branch 1:
  • In the Branch 1 receipt operation, click on the "Availability" button. If the product is en route, the receipt operation will be marked as "Ready" for validation.

  1. Complete the Order:
  • Once the products arrive at Branch 1, validate the receipt to fulfill the sales order to the end customer.


ENJOY! 😃

Avatar
Discard

This is one of the best articles I've come across on Odoo's forum, thank you for that.

I have a question. I tried to apply the same concept for a client, but I'm facing an issue. When you created the first rule for the "Replenishment between Branches/Companies" route, you chose the "Pull & Push" action.

Currently, when I purchase stock in my main company, this rule triggers and automatically creates an internal transfer in my main company and a receipt in my branch, which isn't right. I only want to request stock when it's not available in the branch.

So, I changed the action to "Pull From." Now, there is no internal transfer or receipt, but when I replenish the stock as you mentioned, it creates a receipt with 2 lines (screenshot: https://drive.google.com/file/d/18EDH80i4SMvQVRzone9xsBdffsNl_8nE/view?usp=sharing).

Could you confirm if I missed something?

I have requested access to the videos. Looking forward to your response, thanks!

How do you want to move the products with the costs from one company to another? without using the buy/sell option that Odoo comes with by default

Guillermo muchas gracias por tu explicación. Me has ayudado a entender los traslados o transferencias entre branch.

Best Answer

A very nice one.
But what if, let's say, I assign my main company warehouse admin (to which I only granted main company warehouse permission only) to validate the order? I tested it, and it can't. The user must have access to the other branch and have to tick the checkbox between the companies.
Is there any workaround for this case?

Avatar
Discard

solved it by deactivated the stock_move multi-company record rules

Best Answer

How we can deal with the lot numbers? When we are validating the receipt in the destination branch / company, we get and error because the lots numbers has a brach / company, and odoo do not allow to validate in in a different branch.

Avatar
Discard

i have problem how to add cost when I transfer product between 2 warehouse ?

Best Answer

If you are going to Pull & Push with another Company and not with a Branch you are going to have the following error:


The instructions in the post are misleading.


Avatar
Discard
Related Posts Replies Views Activity
1
Jun 24
1882
1
Feb 23
1599
0
Nov 24
2959
4
Apr 25
12923
2
Apr 25
213