متنباز برای ما یعنی: به اشتراک گذاشتن دانش و راهحلها
ما فقط برای نیازهای خودمان نرمافزار توسعه نمیدهیم — میخواهیم راهحلهایی را که میتوانند به دیگر کاربران Odoo نیز کمک کنند، در اختیار جامعه قرار دهیم.
به همین دلیل ماژولهای وارد کردن اطلاعات بانکی ما برای Odoo 19 Community را بهصورت پروژهای متنباز منتشر کردیم.
کل پروژه بهصورت رایگان در GitHub در دسترس است:
وارد کردن صورتحساب بانکی Odoo 19 در GitHub
هدف ما در این میان بسیار ساده است:
ایجاد روشی کارآمد و تا حد امکان ساده برای وارد کردن صورتحسابهای بانکی در Odoo 19 Community — بدون نیاز به افزونهای پولی.
اصلاً چرا یک پروژه اختصاصی؟
Odoo اصولاً امکانات گستردهای برای حسابداری و پردازش تراکنشهای بانکی دارد. اما بهویژه در وارد کردن صورتحساب بانکی، تعیینکننده این است که هر بانک چه قالبهایی در اختیار میگذارد.
در عمل با قالبهایی مانند موارد زیر، از جمله، روبهرو میشویم:
- CAMT.053
- CAMT.054
- OFX
- SWIFT MT940
همهی این قالبها در همهی نسخههای Odoo به یک اندازه در دسترس نیستند.
بهویژه هنگام مهاجرت به Odoo 19 با کمبودهایی روبهرو شدیم که برای نصبهای موجود میتوانند کاملاً مهم باشند.
بهجای آنکه این مشکلات را فقط برای نصب خودمان حل کنیم، تصمیم گرفتیم راهحل را بهصورت عمومی و رایگان در دسترس قرار دهیم.
Odoo 19 Community – درونریزی صورتحسابهای بانکی
مخزن (Repository) ما بر پایهی مؤلفههای مربوطهی OCA برای Odoo 19 ساخته شده و آنها را با قابلیتهایی که در کاربرد عملی لازم است تکمیل میکند.
این پروژه از جمله شامل زیرساخت پایه برای صورتحسابهای بانکی و درونریزی فایل و همچنین مفسرهایی (Parser) برای قالبهای مختلف بانکی است.
برای نمونه میتوان قالبهای زیر را پردازش کرد:
| قالب | پشتیبانی |
|---|---|
| CAMT.053 | بله |
| CAMT.054 | بله |
| OFX | بله |
| OFX همراه با تطبیق ACCTID | بله |
| SWIFT MT940 | بله |
بدین ترتیب این پروژه بخش بزرگی از قالبهای کلاسیک صورتحساب بانکی را پوشش میدهد.
پشتیبانی از OFX برای Odoo 19
نکته ویژه پروژه ما پشتیبانی از OFX است.
OFX در نسخههای قدیمیتر Odoo/OCA موجود بود، اما از شاخه OCA 19.0 حذف شد. پروژه ما این قابلیت را برای Odoo 19 دوباره در کنار سایر ماژولهای وارد کردن گرد هم میآورد.
این امر بهویژه برای شرکتهایی جالب است که بانک آنها هنوز فایلهای OFX را برای صورتحساب الکترونیکی ارائه میدهد.
ما نمیخواستیم صرفاً راهحلی کاملاً تازه و مجزا بسازیم.
در عوض، پایه متنباز موجود را به کار گرفتیم و آن را متناسب با Odoo 19 گردآوری کردیم.
علاوه بر این: SWIFT MT940
قابلیت دیگر پروژه ما وارد کردن SWIFT MT940 است.
MT940 قالبی جاافتاده برای صورتحسابهای الکترونیکی بانکی است و بهویژه در بانکها و یکپارچهسازیهای بانکی قدیمیتر هنوز استفاده میشود.
بر اساس مستندات پروژه ما، برای نسخههای فعلی Odoo راهحل متناظری در OCA وجود ندارد.
به همین دلیل برای این منظور ماژولی اختصاصی توسعه دادهایم:
account_statement_import_mt940
به این ترتیب فایلهای MT940 نیز مستقیماً در Odoo 19 قابل پردازش هستند.
ساختار ماژولار
ما عمداً نمیخواستیم افزونهای یکپارچه و یکتکه بسازیم.
عملکردها در ماژولهای جداگانه Odoo تقسیم شدهاند:
- account_statement_base
- account_statement_import_base
- account_statement_import_file
- account_statement_import_camt
- account_statement_import_camt54
- account_statement_import_ofx
- account_statement_import_ofx_by_acctid
- account_statement_import_mt940
به این ترتیب کاربران میتوانند دقیقاً همان مؤلفههایی را نصب کنند که واقعاً به آنها نیاز دارند.
این با روح متنباز نیز همخوان است: یک راهحل نباید فقط به این دلیل که کاربران مختلف نیازهای متفاوتی دارند، بیجهت پیچیده شود.
رایگان برای Odoo Community
و شاید مهمتر از همه:
این نرمافزار بهصورت رایگان در دسترس است.
ما افزونههایی را که توسعه دادهایم در اختیار Odoo Community قرار میدهیم.
برای استفاده از افزونههای ما هیچ هزینه مجوزی وجود ندارد.
کد منبع بهصورت عمومی در GitHub در دسترس است و میتوان آن را در آنجا مشاهده، استفاده، تغییر و توسعه داد.
این پروژه مطابق با پایه OCA مورد استفاده، تحت مجوز AGPL-3 قرار دارد.
چرا این کار را انجام میدهیم؟
متنباز تنها زمانی در بلندمدت کار میکند که همه فقط نگیرند، بلکه چیزی هم بازگردانند.
انجمن Odoo Community Association (OCA) دقیقاً همین ایده را دنبال میکند و افزونههای فراوانی را برای Odoo بهصورت متنباز ارائه میدهد. در حوزه وارد کردن صورتحساب بانکی نیز مجموعهای گسترده از ماژولهای جامعه وجود دارد.
میخواهیم سهم خود را ادا کنیم.
خود ما از پروژههای متنباز بهره میبریم.
بنابراین ما هم چیزی بازمیگردانیم.
توسعه متنباز لزوماً نباید همیشه یک چارچوب عظیم یا یک سیستم ERP کاملاً جدید باشد.
گاهی یک افزونه کوچک که مشکلی مشخص را حل میکند، کافی است.
اگر این راهحل پس از آن از زحمت ده، صد یا هزار کاربر دیگر Odoo بکاهد، توسعه آن همین حالا هم ارزشش را داشته است.
برای Odoo Community — نه فقط برای نصب خودمان
نکته مهم برای ما در توسعه این بود که ماژولها را مخصوصاً برای محیط خودمان طراحی نکنیم.
میخواهیم مخزن برای دیگر نصبهای Odoo 19 Community نیز جذاب باشد.
به همین دلیل ماژولها با هم در یک مخزن عمومی قرار دارند و مستقل از نصب Odoo خودمان قابل استفاده هستند.
البته یک بانک بسته به قالب خروجی ممکن است ویژگیهای متفاوتی داشته باشد. به همین دلیل از بازخورد، گزارش خطا و پیشنهادهای بهبود از سوی جامعه نیز استقبال میکنیم.
متنباز با مشارکت زنده است
این پروژه صراحتاً بهعنوان یک توسعه پایانیافته در نظر گرفته نشده است.
اگر کسی خطایی پیدا کند، مورد کاربرد دیگری داشته باشد یا بخواهد بهبودی را مشارکت دهد، میتواند مستقیماً در پروژه مشارکت کند.
این یکی از مزیتهای بزرگ متنباز است:
یک راهحل نباید در دست توسعهدهنده اولیهاش متوقف بماند.
یک کاربر میتواند توسعهدهنده شود.
یک توسعهدهنده میتواند بهبودی را مشارکت دهد.
و این بهبود پس از آن دوباره در اختیار همه دیگران قرار میگیرد.
نصب و کد منبع
کد منبع کامل، ساختار ماژولها و راهنمای نصب در GitHub قرار دارد:
GitHub – Odoo 19 Bank Statement Import
برای وارد کردن OFX و MT940 علاوه بر این به کتابخانههای Python مربوطه نیاز است. وابستگیهای دقیق نیز در مخزن مستند شدهاند.
سهم ما در جامعه Odoo Community
ما میخواهیم با این پروژه نشانهای کوچک بگذاریم:
برای ارزشمند بودن توسعه یک نرمافزار، لازم نیست حتماً آن را فروخت.
گاهی بیشترین فایده زمانی است که یک راهحل آزادانه در دسترس باشد و تا حد امکان افراد بیشتری بتوانند از آن استفاده کنند و آن را توسعه دهند.
ما نرمافزار را در ابتدا توسعه میدهیم چون خودمان به راهحل نیاز داریم.
اگر از این کار در نهایت افزونهای کاربردی برای دیگر کاربران Odoo پدید آید، با کمال میل آن را در اختیار جامعه قرار میدهیم.
دقیقاً به همین دلیل Odoo 19 Bank Statement Import Module را منتشر کردیم.
رایگان. متنباز. برای جامعهی Odoo.
پروژه در GitHub
به پروژهی GitHub: Odoo 19 Bank Statement Import
از دریافت بازخورد، گزارش مشکل (Issue)، پیشنهاد بهبود و البته مشارکتهای جامعه خوشحال میشویم.
متنباز زمانی بهترین عملکرد را دارد که با هم روی آن کار کنیم.