109 lines
4.1 KiB
Markdown
109 lines
4.1 KiB
Markdown
# 📅 بهروزرسانی 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 اعمال شوند.
|
||
|