ultimatepos/DATEPICKER_UPDATES.md

4.1 KiB
Raw Permalink Blame History

📅 به‌روزرسانی Datepicker ها به تقویم شمسی

فایل‌های به‌روزرسانی شده

تمام datepicker های سیستم به Persian Date Picker تبدیل شدند:

1. public/js/app.js

  • .start-date-picker: برای تاریخ شروع
  • #user_dob: برای تاریخ تولد کاربر
  • .dob-date-picker: برای تاریخ تولد در modal

2. public/js/common.js

  • تنظیمات پیش‌فرض datepicker
  • datetimepicker پشتیبانی از تقویم شمسی

3. public/js/opening_stock.js

  • .os_exp_date: برای تاریخ انقضای موجودی اولیه
  • datepicker های داینامیک در modal

4. public/js/login.js

  • .start-date-picker: برای تاریخ شروع کسب‌وکار در صفحه ثبت‌نام

5. public/js/labels.js

  • .label-date-picker: برای تاریخ در برچسب‌های محصول

6. public/js/purchase.js

  • .expiry_datepicker: برای تاریخ انقضای محصولات در خرید
  • پشتیبانی از متد update و clear برای Persian Date Picker

7. public/js/purchase_return.js

  • .expiry_datepicker: برای تاریخ انقضای محصولات در برگشت خرید

8. public/js/report.js

  • #exp_date_expiry_modal: برای تاریخ انقضا در modal گزارش‌ها

9. public/js/pos.js

  • .os_exp_date: برای تاریخ انقضای موجودی در صفحه POS

🔄 نحوه کار

همه datepicker ها به صورت خودکار بررسی می‌کنند که:

  1. آیا زبان فارسی فعال است؟ (is_persian_lang)
  2. آیا Persian Date Picker موجود است؟ ($.fn.persianDatepicker)

در صورت مثبت بودن هر دو، از Persian Date Picker استفاده می‌کند، در غیر این صورت از datepicker معمولی استفاده می‌کند.

📝 مثال کد

// بررسی و استفاده از Persian Date Picker
if (typeof is_persian_lang !== 'undefined' && is_persian_lang && typeof $.fn.persianDatepicker !== 'undefined') {
    $('.date-picker').persianDatepicker({
        calendarType: 'persian',
        format: datepicker_date_format,
        autoClose: true
    });
} else {
    $('.date-picker').datepicker({
        autoclose: true,
        format: datepicker_date_format,
    });
}

🎯 ویژگی‌ها

  • تمام datepicker ها به صورت خودکار به تقویم شمسی تبدیل می‌شوند
  • پشتیبانی از update و clear برای Persian Date Picker
  • سازگاری با datepicker های قدیمی (fallback)
  • استفاده از فرمت تاریخ مناسب (YYYY/MM/DD برای فارسی)

🔧 تنظیمات

فرمت تاریخ پیش‌فرض در resources/views/layouts/partials/javascripts.blade.php تنظیم شده است:

// برای فارسی
$datepicker_date_format = 'yyyy/mm/dd';

⚠️ نکات مهم

  1. متدهای Persian Date Picker:

    • setDate() به جای datepicker('update', date)
    • clear() به جای datepicker('update', '')
  2. فرمت تاریخ:

    • Persian Date Picker از فرمت YYYY/MM/DD استفاده می‌کند
    • نه dd-mm-yyyy یا فرمت‌های دیگر
  3. کتابخانه‌های مورد نیاز:

    • persian-datepicker (CSS و JS)
    • persian-date (برای کار با تاریخ‌های شمسی)
    • moment-jalaali (برای moment.js)

چک‌لیست تست

  • تمام datepicker ها تقویم شمسی را نمایش می‌دهند
  • تاریخ‌های انقضا به درستی انتخاب می‌شوند
  • تاریخ تولد کاربر با تقویم شمسی کار می‌کند
  • تاریخ شروع کسب‌وکار در ثبت‌نام شمسی است
  • تاریخ‌های موجودی اولیه شمسی هستند
  • تاریخ‌های خرید و برگشت خرید شمسی هستند

نکته: پس از تغییرات، حتماً Cache مرورگر را پاک کنید تا تغییرات JavaScript اعمال شوند.