فاکتورهای الکترونیکی بخشی از حسابداری مدرن هستند
دیجیتالیشدن حسابداری همچنان پیش میرود. قالبهای فاکتور الکترونیکی مدتهاست که چیزی بیش از یک فایل PDF که با ایمیل ارسال میشود، به شمار میآیند.
یک فاکتور الکترونیکی واقعی شامل دادههای ساختاریافته است که سیستمهای حسابداری و ERP میتوانند آنها را بهطور خودکار پردازش کنند.
با پروژهی متنباز جدید ما برای Odoo 19 Community میخواهیم دقیقاً از همین نقطه آغاز کنیم.
ما چندین افزونه توسعه دادهایم که آنها را بهصورت رایگان در اختیار جامعهی Odoo قرار میدهیم.
این پروژه بهصورت عمومی در GitHub در دسترس است:
Odoo 19 Invoice E-Files در GitHub
تمرکز ما بهویژه بر اتریش است، اما بخشی از این راهحل برای شرکتهای خارج از اتریش نیز جالب است.
سه ماژول برای فاکتورهای الکترونیکی
این پروژه در حال حاضر از سه مؤلفهی اصلی تشکیل شده است:
- ebInterface 6.1 برای اتریش
- ZUGFeRD برای فاکتورهای الکترونیکی
- ارسال خودکار به e-Rechnung.gv.at
به این ترتیب، نیازمندیهای گوناگون پیرامون فاکتورهای الکترونیکی را در یک پروژهی متنباز برای Odoo 19 Community گرد هم میآوریم.
ebInterface 6.1 – قالب فاکتور اتریشی
یکی از محورهای اصلی توسعهی ما ebInterface 6.1 است.
ebInterface قالب استاندارد اتریشی برای فاکتورهای الکترونیکی ساختاریافته است.
ماژول ما
l10n_at_ebinterface
از یک فاکتور مشتری یا یادداشت بستانکار در Odoo، یک XML مطابق ebInterface 6.1 میسازد.
در این فرایند، از جمله اطلاعات مربوط از فاکتور Odoo به ساختار XML منتقل میشود:
- صادرکنندهی فاکتور
- دریافتکنندهی فاکتور
- اقلام فاکتور
- مالیاتها
- اطلاعات پرداخت
- اطلاعات حساب بانکی
- دادههای فاکتور
فایل XML تولیدشده مستقیماً به فاکتور پیوند داده میشود.
چرا برای این کار ماژول جداگانهای توسعه دادیم؟
هنگام توسعه متوجه شدیم که برای Odoo 19 Community در حال حاضر هیچ ماژول هستهی Odoo یا ماژول OCA برای استاندارد بومی ebInterface اتریش در دسترس نیست.
دقیقاً از همین نقطه میخواستیم شروع کنیم.
بهجای آنکه یک راهحل اتریشی را فقط برای نصب خودمان بسازیم، آن را بهصورت یک ماژول متنباز مستقل پیادهسازی کردیم.
به این ترتیب بقیهی جامعهی Odoo نیز میتوانند از آن بهره ببرند.
ZUGFeRD بهطور خودکار با هر فاکتور
دومین محور پروژهی ما ZUGFeRD است.
ZUGFeRD یک فاکتور PDF را با یک فاکتور XML ساختاریافته ترکیب میکند.
نتیجه، فاکتور بهاصطلاح ترکیبی (هیبریدی) است: فاکتور برای انسان همچنان بهصورت PDF خوانا میماند، در حالی که نرمافزار میتواند دادههای ساختاریافتهی موجود در آن را بهطور خودکار پردازش کند.
Odoo 19 در اصل از پیش از ZUGFeRD یا CII پشتیبانی میکند.
با این حال در عمل چند محدودیت وجود دارد.
ماژول ما
account_invoice_zugferd_ebinterface_auto
به همین دلیل دقیقاً در همین نقطه وارد عمل میشود.
ZUGFeRD دیگر فقط یک گزینه نیست
ما فرایندی تا حد امکان خودکار میخواستیم.
از این رو هنگام ارسال فاکتور مشتری، ابتدا بررسی نمیشود که آیا مشتری مورد نظر بهطور جداگانه برای ZUGFeRD پیکربندی شده است یا خیر.
در عوض، ZUGFeRD برای فاکتورهای مشتری و یادداشتهای بستانکار بهطور خودکار بهکار میرود.
افزون بر این، XML مطابق ebInterface تولیدشده بهعنوان بخشی از فاکتور همراه آن ارسال میشود.
به این ترتیب یک فرایند یکپارچه پدید میآید:
فاکتور Odoo → PDF → فاکتور الکترونیکی ساختاریافته → ارسال
بدون آنکه کاربر برای هر فاکتور مجبور به انجام مراحل اضافی باشد.
ما کمبودهای Odoo 19 Community را هم برطرف میکنیم
هنگام پیادهسازی با چند ویژگی خاص در پیادهسازی Odoo 19 روبهرو شدیم.
از جمله وابستگیهایی در صادرکنندهی (Exporter) CII وجود دارد که خارج از نصبهای مختص برخی کشورها میتواند مشکلساز شود.
ماژول ما چند مورد از این محدودیتهای عملی را برطرف میکند.
از جمله موارد زیر:
- نبود فیلدهای مربوط به دورههای درآمد معوق (Deferred Revenue)
- محدودیت مربوط به کشور در تبدیل PDF/A-3
- نبود یا تنظیمنشدن اطلاعات حساب بانکی در فاکتورهای موجود
به این ترتیب، ZUGFeRD باید بتواند برای شرکتهای خارج از ترکیب کشوریِ در نظر گرفتهشدهی اولیه نیز بهطور قابلاعتماد بهکار رود.
e-Rechnung.gv.at – ارسال مستقیم به دولت اتریش
مؤلفهی سوم بهویژه برای شرکتهایی جالب است که برای کارفرمایان دولتی فاکتور صادر میکنند.
با
l10n_at_erechnung_gv_at
میتوان یک فاکتور ebInterface را مستقیماً به وبسرویس e-Rechnung.gv.at اتریش ارسال کرد.
به این ترتیب، صدور صرف فاکتور به یک فرایند فاکتور الکترونیکی خودکار تبدیل میشود.
فرایند میتواند برای مثال چنین باشد:
ایجاد فاکتور در Odoo
↓
تولید XML مطابق ebInterface
↓
ارسال فاکتور
↓
ارسال خودکار ebInterface به e-Rechnung.gv.at
به این ترتیب، فرایندی که در غیر این صورت دستی است، مستقیماً در Odoo یکپارچه میشود.
ارسال خودکار فقط برای مشتریان موردنیاز
ارسال به e-Rechnung.gv.at بهصورت یکسان برای همهی مشتریان فعال نمیشود.
در عوض میتوان آن را برای هر مشتری اتریشی بهطور جداگانه فعال کرد.
برای این کار، اطلاعات لازم مانند
- شمارهی تأمینکننده
- گروه خریداران / شمارهی شعبه
- ارجاع سفارش
در پروندهی مشتری ثبت میشود.
ماژول همچنین بررسی میکند که آیا پیشنیازهای فعالسازی برقرار است یا نه.
حالت آزمایشی و عملیاتی
برای e-Rechnung.gv.at میتوان بین یک محیط آزمایشی و محیط عملیاتی یکی را برگزید.
اطلاعات دسترسی به وبسرویس USP در تنظیمات Odoo ثبت میشود.
به این ترتیب میتوان ادغام را ابتدا در یک محیط آزمایشی آماده کرد و سپس برای ارسال عملیاتی فاکتورها به کار گرفت.
خودکارسازی بهجای کار اضافی
هدف ما در توسعه این نبود که دکمههای بیشتری به حسابدار بدهیم.
برعکس.
ایده این است:
تا حد امکان کار دستی کمتر.
فاکتور در Odoo ایجاد میشود.
قالبهای ساختاریافتهی موردنیاز بهطور خودکار تولید میشوند.
هنگام ارسال، فایلهای مربوط بهطور خودکار پیوست میشوند.
و برای مشتریان اتریشی که بهدرستی پیکربندی شدهاند، فاکتور را میتوان بهطور خودکار به e-Rechnung.gv.at نیز ارسال کرد.
همین خودکارسازی است که تفاوت میان یک خروجی سادهی فایل و یک راهحل واقعاً یکپارچهی فاکتور الکترونیکی را رقم میزند.
کیفیت دادهها پنهان نمیشود
نکتهی مهم دیگر در پیادهسازی ما این است:
یک فاکتور الکترونیکی فقط به اندازهی دادههایی که از آنها ساخته میشود خوب است.
از این رو سعی نمیکنیم اطلاعات اجباریِ ناقص را بیسروصدا با مقادیر دلخواه جایگزین کنیم.
اگر برای مثال اطلاعات اجباری برای ZUGFeRD یا ebInterface وجود نداشته باشد، Odoo باید کاربر را از آن آگاه کند.
از جمله موارد زیر:
- نبود کشور در پروندهی مشتری
- نبود اطلاعات مالیاتی در اقلام فاکتور
- نبود اطلاعات حساب بانکی
از دید ما این بهتر از ارسال فاکتور الکترونیکیای است که از نظر شکلی ساخته شده اما از نظر محتوا نادرست است.
متنباز برای جامعهی Odoo
این پروژه را نیز رایگان و بهصورت متنباز در اختیار میگذاریم.
چرا؟
چون خودمان از نرمافزارهای متنباز بهره میبریم.
Odoo Community پایهی فوقالعادهای برای ERP، حسابداری و فرایندهای سازمانی است. اگر در کار روزمره قابلیتی کم داشته باشیم، آن را توسعه میدهیم.
و اگر راهحل برای شرکتهای دیگر هم جالب باشد، آن را در اختیار جامعه قرار میدهیم.
این برای ما متنباز زنده و واقعی است.
تمرکز بر اتریش – اما نه فقط برای اتریش
این پروژه تمرکز روشنی بر اتریش دارد.
ebInterface و e-Rechnung.gv.at بهویژه برای شرکتهای اتریشی جالباند.
در مقابل، پشتیبانی از ZUGFeRD برای شرکتهای خارج از اتریش نیز مناسب است.
بنابراین این پروژه صرفاً یک راهحل اتریشی نیست.
بهویژه ترکیب دادههای ساختاریافتهی فاکتور با یک سند PDF/A-3 که بهطور خودکار تولید میشود، میتواند برای نصبهای دیگر Odoo نیز جالب باشد.
برای Odoo 19 Community
این ماژولها برای Odoo 19 Community توسعه یافتهاند.
مخزن در حال حاضر شامل موارد زیر است:
- l10n_at_ebinterface
- account_invoice_zugferd_ebinterface_auto
- l10n_at_erechnung_gv_at
ماژولها به یکدیگر وابستهاند، بهگونهای که بسته به مورد استفاده فقط مؤلفههای موردنیاز باید نصب شوند.
سهم ما در جامعه
ما این پروژه را نرمافزار تجاری تکمیلشده نمیدانیم، بلکه سهمی در توسعهی جامعهی Odoo میدانیم.
شاید کسی فقط به ebInterface نیاز داشته باشد.
شاید شرکت دیگری به ZUGFeRD نیاز داشته باشد.
شاید شرکتی لازم باشد بهطور منظم از طریق e-Rechnung.gv.at برای کارفرمایان دولتی فاکتور ارسال کند.
در هر سه مورد، پروژهی ما میتواند پایهای فراهم کند.
و چون کد منبع آزادانه در دسترس است، هر کاربر میتواند راهحل را بررسی، سفارشی و بیشتر توسعه دهد.
متنباز یعنی: با هم بهتر شدن
ما متقاعد شدهایم که متنباز بهویژه در سیستمهای ERP مزیت بزرگی دارد.
شرکتها نیازهای متفاوتی دارند.
راهحلی که برای یک شرکت کاملاً کار میکند، ممکن است برای شرکتی دیگر نیاز به تطبیق داشته باشد.
با کد منبع باز این امکانپذیر است.
از این رو از موارد زیر استقبال میکنیم:
- بازخورد
- گزارش اشکال (Bug Report)
- پیشنهادهای بهبود
- Pull Requests
- موارد استفادهی پشتیبانیشدهی بیشتر
یک راهحل خوب جامعهمحور لزوماً با نخستین Commit پدید نمیآید.
بلکه از توسعهی مداوم توسط کاربران و توسعهدهندگان بسیار شکل میگیرد.
استفادهی رایگان از پروژه
کد منبع کامل بهصورت عمومی در GitHub در دسترس است:
GitHub – Odoo 19 Invoice E-Files
اطلاعات نصب و مستندات هر یک از ماژولها نیز در همانجا موجود است.
برای ادغام وبسرویس e-Rechnung.gv.at اتریش، کتابخانهی پایتون Zeep نیز لازم است.
سهم ما در دنیای Odoo باز
با این پروژه میخواهیم نشان دهیم که توسعههای اختصاصی کوچکتر نیز میتوانند برای یک جامعهی کامل ارزش افزوده ایجاد کنند.
ما این ماژولها را در اصل برای رفع نیازهای مشخص توسعه دادیم.
اکنون این راهحلها را رایگان در اختیار همهی کاربران Odoo 19 Community قرار میدهیم.
به این ترتیب، یک توسعهی اختصاصی میتواند به راهحلی برای جامعه تبدیل شود.
Odoo 19. متنباز. فاکتورهای الکترونیکی. اتریش. و رایگان برای جامعه.
دقیقاً به همین دلیل این پروژه را منتشر کردیم.