ultimatepos/DATEPICKER_UPDATES.md

109 lines
4.1 KiB
Markdown
Raw Permalink Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

# 📅 به‌روزرسانی 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 معمولی استفاده می‌کند.
## 📝 مثال کد
```javascript
// بررسی و استفاده از 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` تنظیم شده است:
```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 اعمال شوند.