Skip to Content

کانال اودوکاران

نکته‌های کوتاه اودو، تجربه‌های پیاده‌سازی و خبر نسخه‌های تازه.

@odooers_channel

odoo 2026/08/08

گاهی در پروژه‌های اُدو پیدا کردن یک تصویر کلی از معماری پروژه خودش

اینکه یک ماژول دقیقاً به چه ماژول‌هایی وابسته است، ارتباط مدل‌ها با یکدیگر چگونه است، چه کسی به چه بخش‌هایی دسترسی دارد، زنجیره‌ی وراثت یک نما از کجا شروع می‌شود و کارهای زمان بندی شده یا کنترلرها چه نقشی در سیستم دارند، معمولاً نیازمند باز کردن فایل‌ها و دنبال کردن ارتباطات مختلف در پروژه است.

برای حل همین مسئله ابزاری با نام odoo-arch-wiki توسعه داده شده است.

ایده ساده است:
پروژه اُدو را به ابزار بدهید و یک داشبورد تصویری از معماری آن دریافت کنید شامل:

• وابستگی بین ماژول‌ها
• ارتباط بین مدل ها
• دسترسی کاربران
• نماها و زنجیره‌ی وراثت آن‌ها
• کنترلرها
• کارهای زمان بندی شده
• و ارتباطات مهم دیگر در پروژه

یکی از بخش‌های جالب این ابزار، امکان اجرای آن به‌عنوان یک Skill در AI Coding Agentها مانند Claude Code و OpenCode است.

کافی است از Agent بخواهید:
«معماری این پروژه را مستند کن»

و ابزار می‌تواند تصویر جامع‌تری از ساختار پروژه ارائه دهد.

این ابزار هنوز کامل و بدون نقص نیست و قطعاً جای بهبود دارد اما می‌تواند زمان قابل‌توجهی را در درک پروژه‌های بزرگ اُدو کاهش دهد.

کاربرد آن فقط برای توسعه‌دهندگان نیست؛ برای یادگیری و آموزش اُدو نیز می‌تواند مفید باشد چون به افراد در حال یادگیری کمک می‌کند قبل از ورود به جزئیات کد ابتدا تصویر کلی یک پروژه و ارتباط اجزای آن را ببیند.

همچنین می‌تواند در Onboarding اعضای جدید تیم بسیار کاربردی باشد و به افراد تازه‌وارد کمک کند سریع‌تر ساختار یک پروژه را درک کنند.

این پروژه Open Source و رایگان است و تحت مجوز MIT منتشر شده است.

لینک پروژه:
https://github.com/m101001/odoo-arch-wiki

#odoo | #technical

odoo 2026/07/27

نگاهی به مهم‌ترین مفاهیم مدیریت انبار در اُدو (Odoo)

مدیریت انبار تنها به ثبت ورود و خروج کالا محدود نمی‌شود. یک سیستم انبارداری موفق باید بتواند موجودی را به‌صورت دقیق کنترل کند، فرآیندهای خرید، فروش و تولید را به یکدیگر متصل کند و اطلاعات قابل اعتمادی برای تصمیم‌گیری در اختیار مدیران قرار دهد.
ماژول Inventory در اُدو دقیقاً با همین هدف طراحی شده است. این ماژول مجموعه‌ای از ابزارها را برای مدیریت موجودی، اتوماسیون عملیات انبار، کنترل هزینه‌ها و بهینه‌سازی زنجیره تأمین در اختیار کسب‌وکارها قرار می‌دهد.
در ادامه با مهم‌ترین مفاهیم این ماژول آشنا می‌شویم.

زیرساخت و پیکربندی انبار

۱. Inventory (موجودی کالا)
هسته اصلی مدیریت انبار در اُدو که تمام عملیات دریافت، تحویل، انتقال، شمارش و کنترل موجودی کالاها را مدیریت می‌کند.
۲. Warehouse (انبار)
امکان تعریف یک یا چند انبار مستقل برای کارخانه، شعب یا مراکز توزیع و مدیریت فرآیندهای هر انبار به‌صورت مجزا.
۳. Locations (مکان‌های انبار)
تقسیم هر انبار به سالن، راهرو، قفسه یا هر ساختار دلخواه برای نگهداری و ردیابی دقیق کالاها.
۴. Product Categories (دسته‌بندی کالاها)
گروه‌بندی محصولات برای اعمال تنظیمات مشترک مانند روش ارزش‌گذاری، حساب‌های انبار، سیاست‌های هزینه‌یابی و سایر تنظیمات مرتبط.
۵. Operation Types (انواع عملیات انبار)
مدیریت فرآیندهای اصلی انبار مانند دریافت کالا، تحویل کالا و انتقال داخلی که هر کدام قوانین و گردش‌کار مخصوص خود را دارند.
۶. Units of Measure (واحدهای اندازه‌گیری)
تعریف و مدیریت واحدهای اندازه‌گیری مانند عدد، کیلوگرم، متر و لیتر و تبدیل آن‌ها در فرآیندهای خرید، فروش و انبار.

مدیریت هزینه‌ها و ارزش‌گذاری موجودی

۷. Landed Cost (هزینه‌های جانبی خرید)
محاسبه بهای واقعی کالا با احتساب هزینه‌هایی مانند حمل‌ونقل، بیمه، گمرک و سایر هزینه‌های جانبی.
۸. روش‌های تخصیص هزینه (Landed Cost Allocation Methods)
تقسیم هزینه‌های جانبی میان کالاها بر اساس تعداد، وزن، حجم، هزینه فعلی یا تقسیم مساوی.
۹. Inventory Valuation (ارزش‌گذاری موجودی)
محاسبه ارزش واقعی موجودی انبار که مبنای گزارش‌های مالی و محاسبه بهای تمام‌شده کالا است.
۱۰. Automated & Manual Valuation (ارزش‌گذاری خودکار و دستی)
امکان ثبت خودکار اسناد حسابداری یا مدیریت آن‌ها به‌صورت دستی، متناسب با سیاست‌های مالی سازمان.
۱۱. Valuation Methods (روش‌های ارزش‌گذاری)
استفاده از روش‌هایی مانند Standard Price، FIFO و AVCO برای محاسبه ارزش موجودی و بهای تمام‌شده کالا.

اتوماسیون و برنامه‌ریزی موجودی

۱۲. Replenishment (تأمین مجدد موجودی)
شناسایی کالاهایی که نیاز به تأمین مجدد دارند و پیشنهاد خرید یا تولید آن‌ها.
۱۳. Reordering Rules (قوانین سفارش مجدد)
تعریف حداقل و حداکثر موجودی هر کالا تا سیستم در زمان مناسب، سفارش خرید یا تولید را به‌صورت خودکار پیشنهاد دهد.
۱۴. Lead Time (زمان تأمین)
محاسبه زمان موردنیاز برای تأمین کالا و کمک به برنامه‌ریزی دقیق خرید، تولید و تحویل سفارش‌ها.
۱۵. Routes (مسیرهای گردش کالا)
تعیین نحوه حرکت کالا در زنجیره تأمین؛ از خرید و تولید گرفته تا انتقال داخلی، تولید بر اساس سفارش (Make to Order) و ارسال مستقیم (Drop Shipping).

مدیریت پیشرفته انبار

۱۶. Lots & Serial Numbers (بچ و شماره سریال)
رهگیری دقیق کالاها بر اساس شماره سریال یا شماره بچ، از لحظه ورود به انبار تا فروش یا مصرف در تولید.
۱۷. Consignment (کالای امانی)
مدیریت کالاهایی که در انبار نگهداری می‌شوند اما مالکیت آن‌ها همچنان متعلق به تأمین‌کننده است.
۱۸. Reservation (رزرو موجودی)
اختصاص موجودی به سفارش‌های مشخص تا از استفاده آن برای سایر سفارش‌ها جلوگیری شود.
۱۹. Removal Strategies (استراتژی‌های برداشت کالا)
تعیین روش خروج کالا از انبار بر اساس سیاست‌هایی مانند FIFO، LIFO و FEFO.
۲۰. Inventory Adjustments (اصلاح موجودی)
ثبت اختلاف بین موجودی واقعی و موجودی ثبت‌شده در سیستم پس از شمارش انبار و اصلاح آن در سیستم.

ماژول Inventory در اُدو تنها یک ابزار برای ثبت ورود و خروج کالا نیست؛ بلکه بستری یکپارچه برای مدیریت موجودی، کنترل هزینه‌ها، اتوماسیون عملیات انبار و بهینه‌سازی زنجیره تأمین است.
آشنایی با این مفاهیم، نخستین گام برای استقرار صحیح سیستم انبارداری در اُدو محسوب می‌شود. هرچه این بخش‌ها دقیق‌تر پیکربندی شوند، کنترل موجودی دقیق‌تر، هزینه‌های عملیاتی کمتر و فرآیندهای سازمان روان‌تر خواهد بود.

#odoo | #inventory | #implementation

odoo 2026/07/11

مهارتی که یک توسعه‌دهنده اُدو را متمایز می‌کند

وقتی آگهی‌های استخدام توسعه‌دهنده اُدو (Odoo) را بررسی می‌کنیم، معمولاً فهرست مشابهی از مهارت‌ها را می‌بینیم:

🔹 Python
🔹 ORM
🔹 XML
🔹 PostgreSQL
🔹 OWL
🔹 Docker
🔹 API Integration

بدون شک تسلط بر این فناوری‌ها ضروری است؛ اما آیا همین‌ها برای تبدیل شدن به یک توسعه‌دهنده حرفه‌ای کافی هستند؟

پاسخ معمولاً خیر است.

تفاوت میان یک توسعه‌دهنده خوب و یک توسعه‌دهنده حرفه‌ای بیشتر از آنکه به تعداد فناوری‌هایی که می‌شناسد وابسته باشد به نحوه تفکر و حل مسئله او بستگی دارد.

یک توسعه‌دهنده باتجربه قبل از نوشتن حتی یک خط کد سؤالات زیر را از خود می‌پرسد:

✅ آیا این قابلیت در هسته اُدو از قبل وجود دارد؟

✅ آیا ماژول‌های OCA راه‌حل مناسبی برای این نیاز ارائه کرده‌اند؟

✅ فرآیند کسب‌وکار پشت این درخواست چیست و چرا به این شکل طراحی شده است؟

✅ زنجیره Inheritance را به‌درستی بررسی کرده‌ام؟

✅ آیا می‌توان این نیاز را با سفارشی‌سازی کمتر و نگهداری آسان‌تر پیاده‌سازی کرد؟

در دنیای توسعه اُدو، مهارت واقعی فقط کدنویسی نیست؛ بلکه درک معماری سیستم، شناخت فرآیندهای کسب‌وکار و انتخاب ساده‌ترین راه‌حل ممکن است.

یک اصل مهم در توسعه اُدو این است:

بهترین کد کدی است که مجبور نباشید آن را بنویسید.

هرچه سفارشی‌سازی کمتر و استفاده از قابلیت‌های استاندارد بیشتر باشد هزینه نگهداری، ارتقاء نسخه و توسعه‌های آینده نیز به‌مراتب کمتر خواهد بود.

📌 جمع‌بندی

یک توسعه‌دهنده حرفه‌ای اُدو، زمان بیشتری را صرف مطالعه، تحلیل و درک سیستم می‌کند تا صرفاً نوشتن کد. زیرا کیفیت یک پروژه بیش از آنکه به حجم کد وابسته باشد به کیفیت تصمیم‌هایی بستگی دارد که قبل از شروع توسعه گرفته می‌شوند.

#odoo | #technical | #tip

💡خیلی وقتا یه درخواست به ظاهر ساده میتونه کلی چالش پنهان داشته باشه.
note 2026/06/30

💡خیلی وقتا یه درخواست به ظاهر ساده میتونه کلی چالش پنهان داشته باشه.

تحلیل سیستم فقط اجرای خواسته ها نیست. اودو مثل یه دومینو می مونه. تغییر توی فروش یا قیمت گذاری، فقط همون بخش رو درگیر نمی کنه؛ ممکنه اثرش رو تو حسابداری، عملیات و گزارش ها هم ببینیم.

تفکر سیستمی یعنی قبل از اینکه دست به کیبورد بشیم، به جای تمرکز روی یک چیز، کل زنجیره رو ببینیم. یعنی از خودمون بپرسیم اگه این تغییر رو اعمال کنیم، چه قانونی عوض میشه و چه اثراتی روی مدل داده یا محدودیت های سیستم میذاره؟ این نگاه خیلی کمک می کنه تا به جای رفع مشکل بعد از وقوع، جلوش رو بگیریم.

توی این یادداشت سعی کردم تجربه ام از این نوع نگاه کردن به سیستم رو بنویسم. شاید برای شما هم توی پروژه هاتون مفید باشه.

🔗 مطالعه کامل یادداشت

#note | #odoo | #analysis | #interview

💡پیاده سازی در اودو، بیشتر از اینکه یه چالش فنی برای برنامه نویس
note 2026/06/23

💡پیاده سازی در اودو، بیشتر از اینکه یه چالش فنی برای برنامه نویس

خیلی وقت‌ها سخت ترین بخشِ کار، کدنویسی نیست؛ بلکه فهمیدنِ دقیقِ اینه که مشتری واقعاً چی میخواد. اینجاست که درک درست از چرخه عمر توسعه نرم افزار (SDLC) به دادمون میرسه. اینکه بدونیم چطور قبل از دست به کد شدن، با سوال های درست، قابلیت‌های استانداردِ اودو رو بررسی کنیم تا هم از دوباره کاری جلوگیری کنیم و هم سیستمِ تر و تمیزتری تحویل بدیم.

توی این یادداشت، نقشه راهی نوشتم که چطور میشه از دلِ یه نیازِ خام، به یه راهکارِ درست و حسابی تو اودو رسید. این نوشته برای همه کساییه که می‌خوان فراتر از یه توسعه دهنده، به عنوان یه تحلیلگرِ سیستمِ دقیق، به پایداری پروژه‌ها کمک کنن.

🔗 مطالعه کامل یادداشت

اگه شما هم توی پروژه های اودو به چالش‌هایی توی مرحله تحلیل یا طراحی برخورد کردید، خوشحال میشم توی کامنت ها از تجربه تون بگید. به نظرتون کدوم فاز از چرخه عمرِ توسعه در اودو حساس تر و چالش برانگیزتره؟ 💬

#note | #odoo | #analysis | #interview

💡توی پروژه های Odoo خیلی وقت ها قبل از این که وارد ماژول و پیاده سازی
note 2026/06/06

💡توی پروژه های Odoo خیلی وقت ها قبل از این که وارد ماژول و پیاده سازی

سیستم یعنی یه چرخه که ورودی (Input) می گیره، پردازش (Process) می کنه، خروجی (Output) می ده و با بازخورد (Feedback) خودش رو اصلاح می کنه. وقتی این نگاه رو بیاری توی Odoo، نقش تحلیلگر سیستم هم واضح می شه: نیاز رو تبدیل می کنه به Requirement قابل اجرا، وضعیت AS-IS و TO-BE رو شفاف می کنه، Gap Analysis در میاره و با Module Mapping مشخص می کنه هر نیاز با کدوم ماژول پوشش داده می شه و کجا Configuration یا Development لازم می شه.

🔗 مطالعه کامل یادداشت

#note | #odoo |#analysis | #interview

تسلط بر ORM در اُدو یکی از مهم‌ترین مهارت‌های هر توسعه‌دهنده اُدو
odoo 2026/06/04

تسلط بر ORM در اُدو یکی از مهم‌ترین مهارت‌های هر توسعه‌دهنده اُدو

درک مفاهیمی مانند Modelها، Recordsetها، Domainها، عملیات CRUD، دکوریتورها و روابط بین مدل‌ها نقش مهمی در توسعه ماژول‌های استاندارد، مقیاس‌پذیر و قابل نگهداری دارد.

مهم‌ترین بخش‌هایی که هر توسعه‌دهنده اُدو باید در ORM به آن‌ها مسلط باشد:

✅ تعریف صحیح Modelها و Fieldها
✅ آشنایی با Recordset و Environment
✅ استفاده اصولی از عملیات CRUD
✅ طراحی Domainها برای جستجوی داده‌ها
✅ درک روابط Many2one ،One2many و Many2many
✅ استفاده صحیح از Decoratorها مانند api.depends@ و api.onchange@
✅ مدیریت Security ،Record Rules و ACLها
✅ بهینه‌سازی عملکرد و کاهش Queryهای غیرضروری

درک عمیق ORM علاوه بر افزایش کیفیت کدنویسی به توسعه ماژول‌هایی سریع‌تر، پایدارتر و حرفه‌ای‌تر کمک می‌کند.

#odoo | #technical | #orm | #tip

مطالب تازه را زودتر ببینید

هر مطلبی که اینجا می‌بینید اول در کانال منتشر می‌شود.