In this study, we address the integrated multi-commodity supply chain design problem in which the decision maker needs to take into consideration inventory and distribution costs. Moreover, capacity constraint has been considered both in distribution centers and in interactions among facilities. The goal is to select the optimum numbers, locations and capacities of distribution centers so that, all customers demand is satisfied at minimum total costs of the distribution network. In this way, two mathematical models are proposed. In the first one, considering strategic planning for long time horizon, we study a capacitated multi-commodity supply chain design model that takes into account the impact of nonstrategic decisions (e.g., inventory management and distribution) on strategic decisions (e.g., facility location). It is shown that this problem can be formulated as a nonlinear integer program. With reference to some of theorems, we present a linearized form of model in order to solve the test problems by mathematical programming solvers. The second model, is a more general case of the first one in which we investigate a dynamic, time-dependent, multi-commodity location-inventory model where we may establish new facilities or shut down existing facilities at distribution level over a given time horizon in order to redesign supply chain. In addition, outsourcing has been allowed to cover customers demand as well as carrying over stock in warehouses between consecutive periods. This model is formulated as a mixed-integer linear problem that we propose a Lagrangian approach which relaxes the constraints connecting the distribution levels. A procedure is also developed to solve the resulting, independent sub-problems and, based on this solution, to construct a feasible solution for the original problem. Then, we propose two heuristic procedures to improve this solution. The first one tries to avoid the excessive use of outsourcing whenever outsourced supply is more expensive than supplying from inside the network. The second one is an heuristic which tries to further improve a given solution. Results show the efficiency of heuristic methods with respect to computational time and quality of solutions.