در محیط چندشرکتی (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