How we can not add same item multiple times for different locations

We want to make different companies for accounting(different chart of accounts) purposes.
By these companies we want to sell items. Further we want to replicate this solution to different cities too.
Our approach is:-

  1. Warehouses with different distinguished items in items table; where each warehouse is associated to different company. So there will be a double entry for items (lets say carrot); which is being sold by a particular company.
  2. So that consumption from a particular warehouse results in change in accounting figures of particular company. Stock ledger, profit, loss reports etc.
    It is a good solution to have different items for different companies.
    But what to do if we want to have same company operating in different cities. Do we need to declare warehouse for customers based on city?

You can create a warehouse for a company, and child warehouses under it based on locations.