تقویم شمسی (جلالی) در اودو؛ چه چیزهایی باید شمسی شود، کجا ماژول‌ها کم می‌آورند و چطور آزمایشش کنیم

· ۷ دقیقه مطالعه · تیم وستا

تقویم شمسی در اودو یعنی کاربر همه‌جا تاریخ را شمسی ببیند و وارد کند: در فرم و لیست، در گروه‌بندی و فیلتر، در سال مالی و گزارش، و در فاکتور و فیش حقوقی چاپی. اودو به‌صورت پیش‌فرض فقط تقویم میلادی دارد و بیشتر ماژول‌های تقویم فقط تاریخ‌نما (date picker) را شمسی می‌کنند. این راهنما لایه‌به‌لایه می‌گوید تقویم جلالی کامل در Odoo چه چیزهایی را باید پوشش دهد و پیش از پذیرفتن یک ماژول چه چیزهایی را آزمایش کنید.

تقویم شمسی در اودو؛ چهار سطح پوشش

وقتی کسی می‌گوید «اودو شمسی است»، بپرسید تا کدام سطح:

سطحچه چیزی شمسی استکجا کم می‌آورد
۱. تاریخ‌نماانتخاب تاریخ در فرم‌هالیست‌ها، گزارش‌ها و چاپ هنوز میلادی‌اند
۲. نمایشتاریخ در فرم، لیست، کانبان و تقویمگروه‌بندی «بر اساس ماه» و فیلترهای آماده میلادی می‌مانند
۳. گزارشگروه‌بندی، فیلتر، پیوت و نمودار با ماه شمسیاگر قالب‌های چاپی پوشش داده نشوند، PDFها میلادی‌اند
۴. کاملسال مالی و دوره‌ها، چاپ، ایمیل و پیامک‌ها هم شمسی—

برای یک سازمان که حسابداری و انبارش در اودوست، کمتر از سطح ۳ کافی نیست؛ حسابدار گزارش ماهانه را با ماه شمسی می‌خواهد.

ذخیره‌ی میلادی، نمایش شمسی؛ چرا؟

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

  • محاسبه‌ها: سررسید فاکتور، استهلاک، مرخصی و هر جا که اودو با تاریخ حساب می‌کند.
  • اتصال‌ها: هر سیستم بیرونی، از بانک تا سامانه‌ی مودیان، تاریخ استاندارد می‌خواهد.
  • ارتقای نسخه: اسکریپت‌های ارتقای اودو و ماژول‌های دیگر فرض می‌کنند تاریخ‌ها میلادی‌اند.

پس شمسی بودن باید در لایه‌ی نمایش، ورود، گروه‌بندی و چاپ باشد، نه در داده.

تقویم شمسی را روی اودوی خودتان ببینید

در ۹۰ دقیقه گفت‌وگوی رایگان، پوشش تقویم شمسی و بقیه‌ی لایه‌های بومی‌سازی را برای نسخه‌ی شما مشخص می‌کنیم؛ اگر اودو جواب شما نبود، همین را می‌گوییم.

رزرو مشاوره‌ی اودو

گروه‌بندی ماهانه و فیلترها؛ جایی که بیشتر ماژول‌ها کم می‌آورند

وقتی در اودو لیست فاکتورها را «بر اساس ماه» گروه می‌کنید یا در پیوت فروش را ماه‌به‌ماه می‌بینید، خود پایگاه داده تاریخ‌ها را به ماه میلادی می‌بُرد. ماه میلادی با ماه شمسی هم‌مرز نیست؛ ژانویه از ۱۱ یا ۱۲ دی شروع می‌شود. نتیجه این است که «فروش دی» در گزارش با فروش واقعی دی یکی نیست.

دو راه رایج برای حل این:

  1. فیلد ذخیره‌شده‌ی سال و ماه شمسی: کنار هر تاریخ مهم (تاریخ فاکتور، تاریخ سند، تاریخ انتقال انبار) یک فیلد محاسبه‌ای ذخیره‌شده که سال و ماه شمسی را نگه دارد، و گروه‌بندی روی آن انجام شود. ساده و سریع است، اما باید برای هر مدل جدا ساخته شود.
  2. بازنویسی گروه‌بندی تاریخ: ماژول، گروه‌بندی ماه و سه‌ماهه و سال را برای همه‌ی فیلدهای تاریخ با مرز شمسی حساب می‌کند. کامل‌تر است، اما به نسخه‌ی اودو وابسته‌تر است.

فیلترهای آماده‌ی اودو («این ماه»، «سه‌ماهه‌ی قبل»، «امسال») هم همین مشکل را دارند و باید با مرز ماه و سال شمسی ساخته شوند.

سال مالی شمسی و دوره‌ها در اودو

اودو سال مالی را با «روز و ماه پایان» تعریف می‌کند. پایان اسفند در تقویم میلادی ثابت نیست؛ اسفند ۲۹ یا ۳۰ روز است و اول فروردین ۲۰ یا ۲۱ مارس می‌افتد. پس سال مالی شمسی را نمی‌شود با یک تاریخ ثابت میلادی تعریف کرد؛ سال‌ها و دوره‌ها باید با تاریخ شروع و پایان دقیق ساخته شوند.

  • دوره‌های ماهانه: ماه‌های ۳۱، ۳۰ و ۲۹ یا ۳۰ روزه، از روی تقویم شمسی ساخته شوند.
  • تاریخ قفل: بستن دوره (lock date) با پایان ماه شمسی تنظیم شود تا سند در ماه بسته‌شده ثبت نشود.
  • گزارش‌های مالی: تراز و سود و زیان «امسال» و «ماه قبل» با مرز سال و ماه شمسی گرفته شوند.

ماژولی مثل l10n_ir_fiscalyear در فروشگاه اودو برای ساخت سال و دوره‌های شمسی منتشر شده است؛ نسخه‌ی پشتیبانی‌شده‌اش را با نسخه‌ی خودتان بسنجید. بقیه‌ی لایه‌ی مالی در راهنمای حسابداری اودو آمده است.

منطقه‌ی زمانی، شروع هفته و تعطیلات

  • منطقه‌ی زمانی تهران: ایران از ۱۴۰۲ ساعت تابستانی ندارد و همه‌ی سال روی UTC+3:30 است. اودو ساعت را به منطقه‌ی زمانی کاربر نشان می‌دهد؛ اگر بسته‌ی منطقه‌ی زمانی (tzdata) سرور یا مرورگر قدیمی باشد، ساعت‌ها در نیمه‌ی اول سال یک ساعت جابه‌جا دیده می‌شوند. منطقه‌ی زمانی هر کاربر را Asia/Tehran بگذارید و tzdata سرور را به‌روز نگه دارید.
  • شروع هفته از شنبه: در تنظیمات زبان فارسی اودو، روز اول هفته را شنبه بگذارید تا تقویم‌ها، برنامه‌ی شیفت و گزارش‌های هفتگی از شنبه شروع شوند.
  • تعطیلات رسمی: تعطیلات مذهبی بر پایه‌ی تقویم قمری‌اند و هر سال در تاریخ شمسی دیگری می‌افتند. فهرست تعطیلات باید هر سال به‌روز شود؛ ماژولی مثل ir_public_holidays برای نسخه‌های ۱۸ و ۱۹ منتشر شده است.

تاریخ شمسی در فاکتور و گزارش‌های چاپی

قالب‌های چاپی اودو روی سرور به PDF تبدیل می‌شوند و تاریخ را جدا از رابط وب قالب‌بندی می‌کنند. ماژولی که فقط رابط وب را شمسی کرده، فاکتور، رسید، حواله و فیش حقوقی را میلادی چاپ می‌کند. همین درباره‌ی قالب‌های ایمیل و پیامک هم صدق می‌کند. فونت فارسی و راست‌چین PDF در بخش چاپ راهنمای بومی‌سازی اودو آمده است.

آزمون تقویم شمسی اودو پیش از پذیرفتن ماژول

این هشت آزمون را روی همان نسخه‌ی اودویی انجام دهید که مستقر می‌کنید:

  1. یک فاکتور با تاریخ ۱ فروردین و یکی با تاریخ ۳۰ اسفندِ یک سال کبیسه ثبت کنید.
  2. لیست فاکتورها را بر اساس ماه گروه کنید؛ ماه‌ها فروردین و اردیبهشت باشند و جمع هر ماه با جمع دستی همان ماه یکی باشد.
  3. فیلتر «این ماه» را بزنید؛ فقط فاکتورهای ماه شمسی جاری بیایند.
  4. پیوت فروش را سه‌ماهه ببینید؛ فصل اول از فروردین شروع شود.
  5. تراز آزمایشی «امسال» را بگیرید؛ از ۱ فروردین شروع شود.
  6. یک فاکتور و یک حواله‌ی انبار را PDF کنید؛ تاریخ شمسی باشد.
  7. ساعت یک رویداد در تیر را با ساعت واقعی مقایسه کنید.
  8. تقویم و برنامه‌ی هفتگی را باز کنید؛ هفته از شنبه شروع شود.

ماژول تقویمی که برای یک نسخه نوشته شده، روی نسخه‌ی بعدی خودبه‌خود کار نمی‌کند، چون رابط وب اودو بین نسخه‌های اصلی بازنویسی شده است؛ این را در راهنمای ارتقای نسخه‌ی اودو ببینید.

پرسش‌های رایج درباره‌ی تقویم شمسی در اودو

آیا اودو تقویم شمسی دارد؟

نه به‌صورت پیش‌فرض. اودو تقویم میلادی دارد و تقویم شمسی با ماژول جانبی یا اختصاصی اضافه می‌شود. در استقرار بومی‌سازی‌شده، تاریخ‌ها در فرم‌ها، لیست‌ها، گزارش‌ها و فاکتورها شمسی نمایش داده و وارد می‌شوند.

تقویم شمسی در اودو چه چیزهایی را باید پوشش دهد؟

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

تاریخ شمسی در پایگاه داده‌ی اودو ذخیره شود یا میلادی؟

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

چرا گزارش ماهانه‌ی اودو با ماه شمسی جور نیست؟

چون گروه‌بندی پیش‌فرض اودو تاریخ را به ماه میلادی می‌بُرد و ماه میلادی با ماه شمسی هم‌مرز نیست. ماژول تقویم باید گروه‌بندی را با مرز ماه شمسی حساب کند، مثلاً با فیلد ذخیره‌شده‌ی سال و ماه شمسی.

ساعت‌ها در اودو یک ساعت جابه‌جا نشان داده می‌شوند؛ چرا؟

ایران از ۱۴۰۲ ساعت تابستانی ندارد. اگر بسته‌ی منطقه‌ی زمانی (tzdata) سرور یا مرورگر قدیمی باشد، هنوز ساعت تابستانی اعمال می‌شود. منطقه‌ی زمانی کاربران را Asia/Tehran بگذارید و tzdata را به‌روز کنید.

منابع

  1. راهنمای بومی‌سازی اودو، وستا
  2. تاریخ‌نمای شمسی برای اودو ۱۹ (persian_calendar_knk)، فروشگاه اودو
  3. ماژول سال مالی شمسی l10n_ir_fiscalyear، فروشگاه اودو
  4. ماژول تعطیلات رسمی ایران ir_public_holidays، فروشگاه اودو
  5. پرسش تقویم جلالی در اودو ۱۸، انجمن رسمی اودو
  6. به‌روزرسانی tzdata برای حذف ساعت تابستانی ایران، فهرست پستی tz در IANA
تقویم شمسی را روی اودوی خودتان ببینید

در ۹۰ دقیقه گفت‌وگوی رایگان، پوشش تقویم شمسی و بقیه‌ی لایه‌های بومی‌سازی را برای نسخه‌ی شما مشخص می‌کنیم؛ اگر اودو جواب شما نبود، همین را می‌گوییم.

رزرو مشاوره‌ی اودو