Skip to Content
odoo 2026/04/17

در محیط چندشرکتی (Multi-Company)، اُدو ابزارهای قدرتمندی برای مدیریت

در ادامه با سه مفهوم مهم آشنا می‌شویم:

👉 company_dependent
👉 _check_company
👉 with_company()

🔹 1️⃣ company_dependent

فیلدی که به‌صورت company-dependent تعریف می‌شود می‌تواند برای یک رکورد یکسان در هر شرکت مقدار متفاوتی داشته باشد.
👈 یک رکورد یکسان » مقادیر متفاوت برای هر شرکت

🔹 مثال:

price = fields.Float(company_dependent=True)

✔ قیمت یک محصول می‌تواند در هر شرکت متفاوت باشد
✔ نیازی به ایجاد رکوردهای جداگانه نیست

🔹2️⃣ _check_company

ویژگی _check_company تضمین می‌کند که رکوردهای مرتبط، به یک شرکت تعلق داشته باشند و از بروز ناهماهنگی داده‌ها جلوگیری می‌کند.
👈 جلوگیری از ارتباطات نادرست بین شرکت‌ها

🔹 مثال:

partner_id = fields.Many2one('res.partner', check_company=True)

✔ اگر پارتنر متعلق به شرکت دیگری باشد » خطا ایجاد می‌شود
✔ تضمین‌کننده یکپارچگی داده‌ها

🔹 3️⃣ _with_company()

متد with_company() به شما این امکان را می‌دهد که کد را در بستر یک شرکت خاص اجرا کنید.
👈 تغییر موقت شرکت فعال

🔹 مثال:

orders = self.env['sale.order'].with_company(company_A).search([])

✔ داده‌ها بر اساس شرکت A واکشی می‌شوند
✔ بسیار کاربردی در منطق‌های چندشرکتی

🔥 نکات مهم برای توسعه‌دهندگان

✔ برای مقادیر وابسته به شرکت از company_dependent استفاده کنید
✔ برای جلوگیری از ارتباطات اشتباه از check_company=True بهره ببرید
✔ هنگام نیاز به تغییر کانتکست از with_company() استفاده کنید
✔ حتماً سناریوهای چندشرکتی را تست کنید

🔑 جمع‌بندی

این قابلیت‌ها به شما کمک می‌کنند تا در یک پایگاه داده‌ی واحد در اُدو هم انعطاف‌پذیری داشته باشید و هم یکپارچگی داده‌ها را در محیط چندشرکتی حفظ کنید

#odoo | #technical | #tip