added zarin
This commit is contained in:
@@ -0,0 +1,49 @@
|
||||
<?php
|
||||
|
||||
use Illuminate\Database\Migrations\Migration;
|
||||
use Illuminate\Database\Schema\Blueprint;
|
||||
use Illuminate\Support\Facades\Schema;
|
||||
|
||||
return new class extends Migration
|
||||
{
|
||||
public function up(): void
|
||||
{
|
||||
if (! Schema::hasTable('zarin')) {
|
||||
Schema::create('zarin', function (Blueprint $table) {
|
||||
$table->id();
|
||||
$table->unsignedBigInteger('customer_id')->nullable()->index();
|
||||
$table->unsignedBigInteger('order_id')->nullable()->index();
|
||||
$table->unsignedBigInteger('withdraw_id')->nullable()->index();
|
||||
$table->decimal('amount', 18, 4)->nullable();
|
||||
$table->string('desc')->nullable();
|
||||
$table->string('type', 32)->nullable();
|
||||
$table->timestamp('date')->nullable();
|
||||
$table->string('zarin_id')->nullable()->index();
|
||||
$table->string('sh_factor')->nullable();
|
||||
$table->string('factor_number')->nullable();
|
||||
$table->longText('data')->nullable();
|
||||
$table->longText('res')->nullable();
|
||||
$table->string('sync_status', 20)->default('pending');
|
||||
$table->text('sync_log')->nullable();
|
||||
$table->timestamps();
|
||||
});
|
||||
}
|
||||
|
||||
if (Schema::hasTable('products') && ! Schema::hasColumn('products', 'finance_p_name')) {
|
||||
Schema::table('products', function (Blueprint $table) {
|
||||
$table->string('finance_p_name')->nullable()->after('group_type');
|
||||
});
|
||||
}
|
||||
}
|
||||
|
||||
public function down(): void
|
||||
{
|
||||
Schema::dropIfExists('zarin');
|
||||
|
||||
if (Schema::hasTable('products') && Schema::hasColumn('products', 'finance_p_name')) {
|
||||
Schema::table('products', function (Blueprint $table) {
|
||||
$table->dropColumn('finance_p_name');
|
||||
});
|
||||
}
|
||||
}
|
||||
};
|
||||
@@ -0,0 +1,92 @@
|
||||
<?php
|
||||
|
||||
use Illuminate\Database\Migrations\Migration;
|
||||
use Illuminate\Support\Facades\DB;
|
||||
|
||||
/**
|
||||
* کلیدهای اتصال زرین — فقط از settings، can_edit=0 (مثل تهحساب/پرگار).
|
||||
* value ردیف موجود را تغییر نمیدهد.
|
||||
*/
|
||||
return new class extends Migration
|
||||
{
|
||||
private const KEYS = [
|
||||
'zarin_api' => [
|
||||
'value' => '',
|
||||
'title_fa' => 'آدرس API زرین',
|
||||
'description' => 'آدرس پایه وبسرویس زرین (بدون /ZarrinService/accounting).',
|
||||
'type' => 'text',
|
||||
],
|
||||
'zarin_token' => [
|
||||
'value' => '',
|
||||
'title_fa' => 'توکن زرین',
|
||||
'description' => 'توکن مکمل API زرین که در نرمافزار زرین تعریف میشود.',
|
||||
'type' => 'text',
|
||||
],
|
||||
'zarin_noe_kar' => [
|
||||
'value' => '16',
|
||||
'title_fa' => 'نوع کار پیشفرض زرین',
|
||||
'description' => 'کد noeKar هنگام ساخت کار ساخته در زرین.',
|
||||
'type' => 'number',
|
||||
],
|
||||
'zarin_gorohe_kar' => [
|
||||
'value' => '52',
|
||||
'title_fa' => 'گروه کار پیشفرض زرین',
|
||||
'description' => 'کد gorooheKar هنگام ساخت/جستجوی کار در زرین. برای جداسازی چند پنل روی یک زرین، برای هر پنل مقدار متفاوت بگذارید.',
|
||||
'type' => 'number',
|
||||
],
|
||||
'zarin_name_g' => [
|
||||
'value' => '',
|
||||
'title_fa' => 'نام گروه حساب مشتریان زرین',
|
||||
'description' => 'پارامتر nameG در addhesab. اگر چند پنل یک توکن زرین دارند، برای هر پنل نام گروه متفاوت بگذارید. خالی = نام برند (name_fa).',
|
||||
'type' => 'text',
|
||||
],
|
||||
'zarin_uid_prefix' => [
|
||||
'value' => '',
|
||||
'title_fa' => 'پیشوند عددی uid زرین',
|
||||
'description' => 'فقط عدد. وقتی چند پنل یک زرین دارند باید متفاوت باشد تا uid تکراری نشود. مثال: 11 برای این پنل، 12 برای پنل دیگر.',
|
||||
'type' => 'text',
|
||||
],
|
||||
];
|
||||
|
||||
public function up(): void
|
||||
{
|
||||
foreach (self::KEYS as $key => $meta) {
|
||||
$exists = DB::table('settings')->where('key', $key)->exists();
|
||||
if (! $exists) {
|
||||
DB::table('settings')->insert([
|
||||
'key' => $key,
|
||||
'value' => $meta['value'],
|
||||
'title_fa' => $meta['title_fa'],
|
||||
'can_edit' => 0,
|
||||
'is_active' => 1,
|
||||
'description' => $meta['description'],
|
||||
'type' => $meta['type'],
|
||||
]);
|
||||
continue;
|
||||
}
|
||||
|
||||
// فقط متادیتا — value دستنخورده
|
||||
DB::table('settings')->where('key', $key)->update([
|
||||
'title_fa' => $meta['title_fa'],
|
||||
'description' => $meta['description'],
|
||||
'type' => $meta['type'],
|
||||
'can_edit' => 0,
|
||||
'is_active' => 1,
|
||||
]);
|
||||
}
|
||||
|
||||
if (DB::table('settings')->where('key', 'accounting_provider')->exists()) {
|
||||
DB::table('settings')->where('key', 'accounting_provider')->update([
|
||||
'title_fa' => 'سیستم حسابداری',
|
||||
'type' => 'select',
|
||||
'can_edit' => 0,
|
||||
'description' => 'none,pargar,tahesab,zarin',
|
||||
]);
|
||||
}
|
||||
}
|
||||
|
||||
public function down(): void
|
||||
{
|
||||
// کلیدهای حسابداری حذف نمیشوند
|
||||
}
|
||||
};
|
||||
@@ -489,9 +489,33 @@ SELECT 'send_to_tahesab', 'false', 'ارسال به تهحساب (قدیمی)
|
||||
WHERE NOT EXISTS (SELECT 1 FROM `settings` WHERE `key` = 'send_to_tahesab' LIMIT 1);
|
||||
|
||||
INSERT INTO `settings` (`key`, `value`, `title_fa`, `can_edit`, `is_active`, `description`)
|
||||
SELECT 'accounting_provider', 'none', 'سیستم حسابداری', 0, 1, 'none,pargar,tahesab'
|
||||
SELECT 'accounting_provider', 'none', 'سیستم حسابداری', 0, 1, 'none,pargar,tahesab,zarin'
|
||||
WHERE NOT EXISTS (SELECT 1 FROM `settings` WHERE `key` = 'accounting_provider' LIMIT 1);
|
||||
|
||||
INSERT INTO `settings` (`key`, `value`, `title_fa`, `can_edit`, `is_active`, `description`, `type`)
|
||||
SELECT 'zarin_api', '', 'آدرس API زرین', 0, 1, 'آدرس پایه وبسرویس زرین (بدون /ZarrinService/accounting).', 'text'
|
||||
WHERE NOT EXISTS (SELECT 1 FROM `settings` WHERE `key` = 'zarin_api' LIMIT 1);
|
||||
|
||||
INSERT INTO `settings` (`key`, `value`, `title_fa`, `can_edit`, `is_active`, `description`, `type`)
|
||||
SELECT 'zarin_token', '', 'توکن زرین', 0, 1, 'توکن مکمل API زرین که در نرمافزار زرین تعریف میشود.', 'text'
|
||||
WHERE NOT EXISTS (SELECT 1 FROM `settings` WHERE `key` = 'zarin_token' LIMIT 1);
|
||||
|
||||
INSERT INTO `settings` (`key`, `value`, `title_fa`, `can_edit`, `is_active`, `description`, `type`)
|
||||
SELECT 'zarin_noe_kar', '16', 'نوع کار پیشفرض زرین', 0, 1, 'کد noeKar هنگام ساخت کار ساخته در زرین.', 'number'
|
||||
WHERE NOT EXISTS (SELECT 1 FROM `settings` WHERE `key` = 'zarin_noe_kar' LIMIT 1);
|
||||
|
||||
INSERT INTO `settings` (`key`, `value`, `title_fa`, `can_edit`, `is_active`, `description`, `type`)
|
||||
SELECT 'zarin_gorohe_kar', '52', 'گروه کار پیشفرض زرین', 0, 1, 'کد gorooheKar هنگام ساخت/جستجوی کار در زرین. برای جداسازی چند پنل روی یک زرین، برای هر پنل مقدار متفاوت بگذارید.', 'number'
|
||||
WHERE NOT EXISTS (SELECT 1 FROM `settings` WHERE `key` = 'zarin_gorohe_kar' LIMIT 1);
|
||||
|
||||
INSERT INTO `settings` (`key`, `value`, `title_fa`, `can_edit`, `is_active`, `description`, `type`)
|
||||
SELECT 'zarin_name_g', '', 'نام گروه حساب مشتریان زرین', 0, 1, 'پارامتر nameG در addhesab. اگر چند پنل یک توکن زرین دارند، برای هر پنل نام گروه متفاوت بگذارید. خالی = نام برند (name_fa).', 'text'
|
||||
WHERE NOT EXISTS (SELECT 1 FROM `settings` WHERE `key` = 'zarin_name_g' LIMIT 1);
|
||||
|
||||
INSERT INTO `settings` (`key`, `value`, `title_fa`, `can_edit`, `is_active`, `description`, `type`)
|
||||
SELECT 'zarin_uid_prefix', '', 'پیشوند عددی uid زرین', 0, 1, 'فقط عدد. وقتی چند پنل یک زرین دارند باید متفاوت باشد تا uid تکراری نشود.', 'text'
|
||||
WHERE NOT EXISTS (SELECT 1 FROM `settings` WHERE `key` = 'zarin_uid_prefix' LIMIT 1);
|
||||
|
||||
INSERT INTO `settings` (`key`, `value`, `title_fa`, `can_edit`, `is_active`, `description`)
|
||||
SELECT 'send_to_pargar', 'false', 'ارسال به پرگار (قدیمی)', 0, 0, NULL
|
||||
WHERE NOT EXISTS (SELECT 1 FROM `settings` WHERE `key` = 'send_to_pargar' LIMIT 1);
|
||||
@@ -903,7 +927,7 @@ UPDATE `settings` SET `type` = 'longtext' WHERE `key` IN (
|
||||
);
|
||||
|
||||
-- select (+ گزینهها در description)
|
||||
UPDATE `settings` SET `type` = 'select', `description` = 'none,pargar,tahesab' WHERE `key` = 'accounting_provider';
|
||||
UPDATE `settings` SET `type` = 'select', `description` = 'none,pargar,tahesab,zarin' WHERE `key` = 'accounting_provider';
|
||||
UPDATE `settings` SET `type` = 'select', `description` = 'منبع فعال قیمت|montzar,zaarbox,main_product' WHERE `key` = 'price_provider';
|
||||
UPDATE `settings` SET `type` = 'switch', `title_fa` = 'کد معرف اجباری', `description` = 'روشن = اجباری در ثبتنام | خاموش = اختیاری' WHERE `key` = 'referral_id';
|
||||
UPDATE `settings` SET `type` = 'select', `description` = 'sepal,' WHERE `key` = 'payping_gateway_name';
|
||||
@@ -1697,12 +1721,22 @@ UPDATE `settings` SET `can_edit` = 0, `is_active` = 0 WHERE `key` IN ('send_to_t
|
||||
UPDATE `settings` SET `can_edit` = 0 WHERE `key` IN (
|
||||
'accounting_provider',
|
||||
'tahesab_host', 'tahesab_port', 'tahesab_token', 'tahesab_db', 'tahesab_bank_account',
|
||||
'zarin_api', 'zarin_token', 'zarin_noe_kar', 'zarin_gorohe_kar', 'zarin_name_g', 'zarin_uid_prefix',
|
||||
'pargar_username', 'pargar_password', 'pargar_api_token',
|
||||
'pargar_item_id_rial', 'pargar_item_id_gold'
|
||||
);
|
||||
UPDATE `settings` SET `title_fa` = 'سیستم حسابداری', `type` = 'select', `description` = 'none,pargar,tahesab'
|
||||
UPDATE `settings` SET `can_edit` = 0, `is_active` = 1 WHERE `key` LIKE 'zarin_%';
|
||||
UPDATE `settings` SET `type` = 'text', `can_edit` = 0 WHERE `key` IN ('zarin_api', 'zarin_token', 'zarin_name_g', 'zarin_uid_prefix');
|
||||
UPDATE `settings` SET `type` = 'number', `can_edit` = 0 WHERE `key` IN ('zarin_noe_kar', 'zarin_gorohe_kar');
|
||||
UPDATE `settings` SET `title_fa` = 'سیستم حسابداری', `type` = 'select', `description` = 'none,pargar,tahesab,zarin'
|
||||
WHERE `key` = 'accounting_provider';
|
||||
UPDATE `settings` SET `description` = 'سیستم حسابداری: none=هیچکدام، pargar=API پرگار، tahesab=ارسال خودکار تهحساب.' WHERE `key` = 'accounting_provider';
|
||||
UPDATE `settings` SET `description` = 'سیستم حسابداری: none=هیچکدام، pargar=API پرگار، tahesab=ارسال خودکار تهحساب، zarin=ارسال خودکار زرین.' WHERE `key` = 'accounting_provider';
|
||||
UPDATE `settings` SET `title_fa` = 'آدرس API زرین', `description` = 'آدرس پایه وبسرویس زرین (بدون /ZarrinService/accounting).' WHERE `key` = 'zarin_api';
|
||||
UPDATE `settings` SET `title_fa` = 'توکن زرین', `description` = 'توکن مکمل API زرین که در نرمافزار زرین تعریف میشود.' WHERE `key` = 'zarin_token';
|
||||
UPDATE `settings` SET `title_fa` = 'نوع کار پیشفرض زرین', `type` = 'number', `description` = 'کد noeKar هنگام ساخت کار ساخته در زرین.' WHERE `key` = 'zarin_noe_kar';
|
||||
UPDATE `settings` SET `title_fa` = 'گروه کار پیشفرض زرین', `type` = 'number', `description` = 'کد gorooheKar هنگام ساخت/جستجوی کار در زرین. برای جداسازی چند پنل روی یک زرین، برای هر پنل مقدار متفاوت بگذارید.' WHERE `key` = 'zarin_gorohe_kar';
|
||||
UPDATE `settings` SET `title_fa` = 'نام گروه حساب مشتریان زرین', `type` = 'text', `description` = 'پارامتر nameG در addhesab. اگر چند پنل یک توکن زرین دارند، برای هر پنل نام گروه متفاوت بگذارید. خالی = نام برند (name_fa).' WHERE `key` = 'zarin_name_g';
|
||||
UPDATE `settings` SET `title_fa` = 'پیشوند عددی uid زرین', `type` = 'text', `description` = 'فقط عدد. وقتی چند پنل یک زرین دارند باید متفاوت باشد تا uid تکراری نشود.' WHERE `key` = 'zarin_uid_prefix';
|
||||
UPDATE `settings` SET `value` = 'pargar'
|
||||
WHERE `key` = 'accounting_provider'
|
||||
AND TRIM(COALESCE(`value`, '')) IN ('', 'none')
|
||||
|
||||
@@ -444,9 +444,33 @@ SELECT 'send_to_tahesab', 'false', 'ارسال به تهحساب (قدیمی)
|
||||
WHERE NOT EXISTS (SELECT 1 FROM `settings` WHERE `key` = 'send_to_tahesab' LIMIT 1);
|
||||
|
||||
INSERT INTO `settings` (`key`, `value`, `title_fa`, `can_edit`, `is_active`, `description`)
|
||||
SELECT 'accounting_provider', 'none', 'سیستم حسابداری', 0, 1, 'none,pargar,tahesab'
|
||||
SELECT 'accounting_provider', 'none', 'سیستم حسابداری', 0, 1, 'none,pargar,tahesab,zarin'
|
||||
WHERE NOT EXISTS (SELECT 1 FROM `settings` WHERE `key` = 'accounting_provider' LIMIT 1);
|
||||
|
||||
INSERT INTO `settings` (`key`, `value`, `title_fa`, `can_edit`, `is_active`, `description`, `type`)
|
||||
SELECT 'zarin_api', '', 'آدرس API زرین', 0, 1, 'آدرس پایه وبسرویس زرین (بدون /ZarrinService/accounting).', 'text'
|
||||
WHERE NOT EXISTS (SELECT 1 FROM `settings` WHERE `key` = 'zarin_api' LIMIT 1);
|
||||
|
||||
INSERT INTO `settings` (`key`, `value`, `title_fa`, `can_edit`, `is_active`, `description`, `type`)
|
||||
SELECT 'zarin_token', '', 'توکن زرین', 0, 1, 'توکن مکمل API زرین که در نرمافزار زرین تعریف میشود.', 'text'
|
||||
WHERE NOT EXISTS (SELECT 1 FROM `settings` WHERE `key` = 'zarin_token' LIMIT 1);
|
||||
|
||||
INSERT INTO `settings` (`key`, `value`, `title_fa`, `can_edit`, `is_active`, `description`, `type`)
|
||||
SELECT 'zarin_noe_kar', '16', 'نوع کار پیشفرض زرین', 0, 1, 'کد noeKar هنگام ساخت کار ساخته در زرین.', 'number'
|
||||
WHERE NOT EXISTS (SELECT 1 FROM `settings` WHERE `key` = 'zarin_noe_kar' LIMIT 1);
|
||||
|
||||
INSERT INTO `settings` (`key`, `value`, `title_fa`, `can_edit`, `is_active`, `description`, `type`)
|
||||
SELECT 'zarin_gorohe_kar', '52', 'گروه کار پیشفرض زرین', 0, 1, 'کد gorooheKar هنگام ساخت/جستجوی کار در زرین. برای جداسازی چند پنل روی یک زرین، برای هر پنل مقدار متفاوت بگذارید.', 'number'
|
||||
WHERE NOT EXISTS (SELECT 1 FROM `settings` WHERE `key` = 'zarin_gorohe_kar' LIMIT 1);
|
||||
|
||||
INSERT INTO `settings` (`key`, `value`, `title_fa`, `can_edit`, `is_active`, `description`, `type`)
|
||||
SELECT 'zarin_name_g', '', 'نام گروه حساب مشتریان زرین', 0, 1, 'پارامتر nameG در addhesab. اگر چند پنل یک توکن زرین دارند، برای هر پنل نام گروه متفاوت بگذارید. خالی = نام برند (name_fa).', 'text'
|
||||
WHERE NOT EXISTS (SELECT 1 FROM `settings` WHERE `key` = 'zarin_name_g' LIMIT 1);
|
||||
|
||||
INSERT INTO `settings` (`key`, `value`, `title_fa`, `can_edit`, `is_active`, `description`, `type`)
|
||||
SELECT 'zarin_uid_prefix', '', 'پیشوند عددی uid زرین', 0, 1, 'فقط عدد. وقتی چند پنل یک زرین دارند باید متفاوت باشد تا uid تکراری نشود.', 'text'
|
||||
WHERE NOT EXISTS (SELECT 1 FROM `settings` WHERE `key` = 'zarin_uid_prefix' LIMIT 1);
|
||||
|
||||
INSERT INTO `settings` (`key`, `value`, `title_fa`, `can_edit`, `is_active`, `description`)
|
||||
SELECT 'send_to_pargar', 'false', 'ارسال به پرگار (قدیمی)', 0, 0, NULL
|
||||
WHERE NOT EXISTS (SELECT 1 FROM `settings` WHERE `key` = 'send_to_pargar' LIMIT 1);
|
||||
@@ -1389,11 +1413,21 @@ UPDATE `settings` SET `can_edit` = 0, `is_active` = 0 WHERE `key` IN ('send_to_t
|
||||
UPDATE `settings` SET `can_edit` = 0 WHERE `key` IN (
|
||||
'accounting_provider',
|
||||
'tahesab_host', 'tahesab_port', 'tahesab_token', 'tahesab_db', 'tahesab_bank_account',
|
||||
'zarin_api', 'zarin_token', 'zarin_noe_kar', 'zarin_gorohe_kar', 'zarin_name_g', 'zarin_uid_prefix',
|
||||
'pargar_username', 'pargar_password', 'pargar_api_token'
|
||||
);
|
||||
UPDATE `settings` SET `title_fa` = 'سیستم حسابداری', `type` = 'select', `description` = 'none,pargar,tahesab'
|
||||
UPDATE `settings` SET `can_edit` = 0, `is_active` = 1 WHERE `key` LIKE 'zarin_%';
|
||||
UPDATE `settings` SET `type` = 'text', `can_edit` = 0 WHERE `key` IN ('zarin_api', 'zarin_token', 'zarin_name_g', 'zarin_uid_prefix');
|
||||
UPDATE `settings` SET `type` = 'number', `can_edit` = 0 WHERE `key` IN ('zarin_noe_kar', 'zarin_gorohe_kar');
|
||||
UPDATE `settings` SET `title_fa` = 'سیستم حسابداری', `type` = 'select', `description` = 'none,pargar,tahesab,zarin'
|
||||
WHERE `key` = 'accounting_provider';
|
||||
UPDATE `settings` SET `description` = 'سیستم حسابداری: none=هیچکدام، pargar=API پرگار، tahesab=ارسال خودکار تهحساب.' WHERE `key` = 'accounting_provider';
|
||||
UPDATE `settings` SET `description` = 'سیستم حسابداری: none=هیچکدام، pargar=API پرگار، tahesab=ارسال خودکار تهحساب، zarin=ارسال خودکار زرین.' WHERE `key` = 'accounting_provider';
|
||||
UPDATE `settings` SET `title_fa` = 'آدرس API زرین', `description` = 'آدرس پایه وبسرویس زرین (بدون /ZarrinService/accounting).' WHERE `key` = 'zarin_api';
|
||||
UPDATE `settings` SET `title_fa` = 'توکن زرین', `description` = 'توکن مکمل API زرین که در نرمافزار زرین تعریف میشود.' WHERE `key` = 'zarin_token';
|
||||
UPDATE `settings` SET `title_fa` = 'نوع کار پیشفرض زرین', `type` = 'number', `description` = 'کد noeKar هنگام ساخت کار ساخته در زرین.' WHERE `key` = 'zarin_noe_kar';
|
||||
UPDATE `settings` SET `title_fa` = 'گروه کار پیشفرض زرین', `type` = 'number', `description` = 'کد gorooheKar هنگام ساخت/جستجوی کار در زرین. برای جداسازی چند پنل روی یک زرین، برای هر پنل مقدار متفاوت بگذارید.' WHERE `key` = 'zarin_gorohe_kar';
|
||||
UPDATE `settings` SET `title_fa` = 'نام گروه حساب مشتریان زرین', `type` = 'text', `description` = 'پارامتر nameG در addhesab. اگر چند پنل یک توکن زرین دارند، برای هر پنل نام گروه متفاوت بگذارید. خالی = نام برند (name_fa).' WHERE `key` = 'zarin_name_g';
|
||||
UPDATE `settings` SET `title_fa` = 'پیشوند عددی uid زرین', `type` = 'text', `description` = 'فقط عدد. وقتی چند پنل یک زرین دارند باید متفاوت باشد تا uid تکراری نشود.' WHERE `key` = 'zarin_uid_prefix';
|
||||
UPDATE `settings` SET `value` = 'pargar'
|
||||
WHERE `key` = 'accounting_provider'
|
||||
AND TRIM(COALESCE(`value`, '')) IN ('', 'none')
|
||||
|
||||
Reference in New Issue
Block a user