دستور خروجی گرفتن سال مالی (fiscal-year:export)
این دستور Artisan دادههای مرتبط با یک سال مالی (که بهصورت یک رکورد Company نمایش داده میشود) را به یک فایل JSON منتقل میکند. این فایل میتواند برای پشتیبانگیری، مهاجرت دادهها یا بهعنوان ورودی برای دستور fiscal-year:import استفاده شود.
هدف
استخراج بخشهای مشخصی از دادهها (مانند بانکها، مشتریها، محصولات، تنظیمات و غیره) مرتبط با یک سال مالی خاص از پایگاه داده و ذخیره آنها در قالب JSON ساختاریافته.
نحوه استفاده
php artisan fiscal-year:export <source_id> [options]
آرگومانها
| آرگومان | توضیحات | الزامی |
|---|---|---|
source_id |
شناسه عددی رکورد Company که باید منتقل شود | بله |
گزینهها
| گزینه | توضیحات | الزامی | مقدار پیشفرض |
|---|---|---|---|
--output |
مسیر نسبی داخل storage/app برای فایل خروجی JSON (مثلاً my_exports/fy_export.json). در صورت عدم تعیین، نام پیشفرض تولید میشود. |
خیر | exports/fiscal_year_<source_id>_<timestamp>.json |
--sections |
لیست بخشهای موردنظر برای خروجی بهصورت جداشده با کاما (مثل banks,customers,products). بخشهای معتبر در FiscalYearService::getAvailableSections() تعریف شدهاند. |
خیر | همه بخشهای موجود |
بخشهای قابل دسترس (از FiscalYearService):
configsbanksbank_accountscustomer_groupscustomersproduct_groupsproductssubjects
مثالها
- خروجی گرفتن از تمام دادههای سال مالی با ID برابر 1:
sail artisan fiscal-year:export 1
خروجی:
storage/app/exports/fiscal_year_1_<timestamp>.json
- خروجی گرفتن فقط از بانکها و مشتریها برای سال مالی ID برابر 5:
sail artisan fiscal-year:export 5 --output=data_exports/fy5_banks_customers.json --sections=banks,customers
خروجی:
storage/app/data_exports/fy5_banks_customers.json
- خروجی گرفتن کامل با مسیر سفارشی:
sail artisan fiscal-year:export 2 --output=archive/fiscal_year_2_full.json
خروجی:
storage/app/archive/fiscal_year_2_full.json
خروجی
- مسیر کامل فایل JSON تولید شده نمایش داده میشود.
- JSON شامل کلیدهایی برای هر بخش صادر شده است (مثل
"banks"،"customers"). -
همچنین یک کلید
"meta"شامل اطلاعات زیر وجود دارد:source_idcompany_nametimestampsections_exported
مدیریت خطا
- اگر
source_idمعتبر نباشد، خطا نمایش داده میشود. - اگر نام بخشها در
--sectionsاشتباه باشد، هشدار داده میشود. اگر هیچ بخش معتبری باقی نماند، دستور متوقف میشود. - خطاهای دیگر (مثل مشکل دسترسی به فایل) در لاگ
storage/logs/laravel.logثبت میشوند.
دستور وارد کردن سال مالی (fiscal-year:import)
این دستور Artisan دادهها را از یک فایل JSON (که معمولاً توسط fiscal-year:export ساخته شده است) به یک سال مالی جدید (رکورد Company جدید) وارد میکند.
هدف
ایجاد یک سال مالی جدید و پر کردن آن با دادههای قبلی (بانکها، مشتریها، محصولات و غیره). این قابلیت برای بازیابی بکاپ یا انتقال دادهها بین محیطها استفاده میشود.
نحوه استفاده
php artisan fiscal-year:import <file> <fiscal_year> --name=<new_name> [options]
آرگومانها
| آرگومان | توضیحات | الزامی |
|---|---|---|
file |
مسیر فایل JSON ورودی نسبت به storage/app |
بله |
fiscal_year |
شناسه سال مالی (عدد مثبت) | بله |
گزینهها
| گزینه | توضیحات | الزامی | مقدار پیشفرض |
|---|---|---|---|
--name |
نام سال مالی جدید که ایجاد خواهد شد | بله | — |
--force |
رد کردن پیام تأیید قبل از شروع عملیات (با احتیاط استفاده شود) | خیر | false |
توجه: بسته به ساختار مدل
Companyممکن است فیلدهای دیگری نیز درFiscalYearService::importDataلازم باشد.
مثالها
- وارد کردن داده از فایل backup به سال مالی جدید 2024:
sail artisan fiscal-year:import exports/fy1_backup.json 2024 --name="سال مالی ۱۴۰۳"
قبل از اجرا تأیید گرفته میشود.
- وارد کردن داده بدون تأیید (اجباری):
sail artisan fiscal-year:import archive/old_data.json 2023 --name="بازیابی شده" --force
روند اجرا
- اعتبارسنجی
- بررسی وجود گزینه
--name - بررسی مثبت بودن
fiscal_year - بررسی وجود فایل در
storage/app
- بررسی وجود گزینه
- تأیید کاربر
- نمایش مسیر فایل و اطلاعات سال مالی جدید
- درخواست تأیید (مگر با
--force)
- اجرای عملیات واردسازی
- خواندن و decode کردن JSON
- آمادهسازی دادهها برای ایجاد رکورد جدید
Company - فراخوانی
FiscalYearService::importDataبرای ایجاد دادهها
- خروجی
- نمایش پیام موفقیت همراه با ID و نام سال مالی جدید
- در صورت خطا، نمایش پیام مناسب
مدیریت خطا
- نبود گزینه
--name - نامعتبر بودن
fiscal_year - نبود فایل ورودی
- خراب بودن JSON
- خطاهای داخلی سرویس
FiscalYearService - لغو عملیات توسط کاربر
تمام خطاها در storage/logs/laravel.log ثبت میشوند.