متنباز برای ما یعنی بهاشتراکگذاشتن دانش و راهکارها
ما فقط برای نیازهای خودمان نرمافزار توسعه نمیدهیم؛ میخواهیم راهکارهایی را که میتوانند به سایر کاربران 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 – ورود صورتحسابهای بانکی
مخزن ما بر پایه اجزای مرتبط 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 قالبی جاافتاده برای صورتحسابهای بانکی الکترونیکی است و همچنان، بهویژه در بانکها و اتصالهای بانکی قدیمیتر، استفاده میشود.
طبق مستندات پروژه ما، راهکار متناظری از OCA برای نسخههای فعلی Odoo وجود ندارد.
به همین دلیل، برای این کار ماژول اختصاصی توسعه دادیم:
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
شاید مهمترین نکته:
این نرمافزار بهرایگان در دسترس است.
افزونههایی را که توسعه دادهایم در اختیار جامعه Odoo قرار میدهیم.
استفاده از افزونههای ما هیچ هزینهای بابت مجوز ندارد.
کد منبع بهصورت عمومی در 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
با این پروژه میخواهیم گامی هرچند کوچک در این مسیر برداریم:
ارزش توسعه نرمافزار همیشه به فروش آن وابسته نیست.
گاهی بیشترین فایده زمانی حاصل میشود که یک راهکار آزادانه در دسترس باشد و افراد هرچه بیشتری بتوانند از آن استفاده کنند و آن را توسعه دهند.
نرمافزار را در وهله اول به این دلیل توسعه میدهیم که خودمان به یک راهکار نیاز داریم.
اگر نتیجه این کار افزونهای کاربردی برای سایر کاربران Odoo باشد، با کمال میل آن را در اختیار جامعه قرار میدهیم.
دقیقاً به همین دلیل، ماژولهای Odoo 19 Bank Statement Import را منتشر کردیم.
رایگان. متنباز. برای جامعه Odoo.
پروژه در GitHub
مشاهدهٔ پروژه در GitHub: Odoo 19 Bank Statement Import
از بازخوردها، گزارش مشکلات، پیشنهادهای بهبود و البته مشارکت اعضای جامعه استقبال میکنیم.
متنباز زمانی بهترین نتیجه را میدهد که با هم روی آن کار کنیم.