fix(zarin): post rial wallet docs as cash via payment, not pooli buy-fi

Zarin kind=payment creates type 55 cash-only rows; it needs zarin_idbank as the counterpart account.

Co-authored-by: Cursor <cursoragent@cursor.com>
This commit is contained in:
2026-09-01 16:51:16 +03:30
co-authored by Cursor
parent c09dcfc704
commit e27a8ac397
5 changed files with 95 additions and 22 deletions
@@ -0,0 +1,49 @@
<?php
use Illuminate\Database\Migrations\Migration;
use Illuminate\Support\Facades\DB;
/**
* کد حساب بانک/صندوق زرین برای سند وجه نقد (kind=payment).
* value ردیف موجود را تغییر نمی‌دهد.
*/
return new class extends Migration
{
public function up(): void
{
$key = 'zarin_idbank';
$meta = [
'title_fa' => 'کد حساب بانک زرین',
'description' => 'کد حساب بانک یا صندوق در زرین (idbank) برای واریز/برداشت ریالی کیف. سند نوع وجه نقد است، نه خرید فی. از لیست حساب‌های زرین همان کد عددی را بگذارید.',
'type' => 'number',
];
$exists = DB::table('settings')->where('key', $key)->exists();
if (! $exists) {
DB::table('settings')->insert([
'key' => $key,
'value' => '',
'title_fa' => $meta['title_fa'],
'can_edit' => 0,
'is_active' => 1,
'description' => $meta['description'],
'type' => $meta['type'],
]);
return;
}
DB::table('settings')->where('key', $key)->update([
'title_fa' => $meta['title_fa'],
'description' => $meta['description'],
'type' => $meta['type'],
'can_edit' => 0,
'is_active' => 1,
]);
}
public function down(): void
{
// کلید را حذف نمی‌کنیم
}
};
+9 -2
View File
@@ -709,6 +709,11 @@ WHERE NOT EXISTS (SELECT 1 FROM `settings` WHERE `key` = 'referral_limit' LIMIT
-- SELECT 'zarin_uid_prefix', '', 'پیشوند عددی uid زرین', 0, 1, 'فقط عدد. وقتی چند پنل یک زرین دارند باید متفاوت باشد تا uid تکراری نشود.', 'text'
-- WHERE NOT EXISTS (SELECT 1 FROM `settings` WHERE `key` = 'zarin_uid_prefix' LIMIT 1);
-- [super-admin can_edit=0]
-- INSERT INTO `settings` (`key`, `value`, `title_fa`, `can_edit`, `is_active`, `description`, `type`)
-- SELECT 'zarin_idbank', '', 'کد حساب بانک زرین', 0, 1, 'کد حساب بانک یا صندوق در زرین (idbank وب‌سرویس payment) برای واریز/برداشت ریالی کیف. سند نوع وجه نقد است نه خرید فی.', 'number'
-- WHERE NOT EXISTS (SELECT 1 FROM `settings` WHERE `key` = 'zarin_idbank' LIMIT 1);
-- [super-admin can_edit=0]
-- INSERT INTO `settings` (`key`, `value`, `title_fa`, `can_edit`, `is_active`, `description`)
-- SELECT 'send_to_pargar', 'false', 'ارسال به پرگار (قدیمی)', 0, 0, NULL
@@ -2398,7 +2403,7 @@ WHERE `key` = 'deposit_method_shetab';
-- 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_noe_kar_tedadi', 'zarin_gorohe_kar', 'zarin_name_g', 'zarin_uid_prefix',
-- 'zarin_api', 'zarin_token', 'zarin_noe_kar', 'zarin_noe_kar_tedadi', 'zarin_gorohe_kar', 'zarin_name_g', 'zarin_uid_prefix', 'zarin_idbank',
-- 'pargar_username', 'pargar_password', 'pargar_api_token',
-- 'pargar_item_id_rial', 'pargar_item_id_gold'
-- );
@@ -2407,7 +2412,7 @@ WHERE `key` = 'deposit_method_shetab';
-- [super-admin can_edit=0 sync]
-- UPDATE `settings` SET `type` = 'text', `can_edit` = 0 WHERE `key` IN ('zarin_api', 'zarin_token', 'zarin_name_g', 'zarin_uid_prefix');
-- [super-admin can_edit=0 sync]
-- UPDATE `settings` SET `type` = 'number', `can_edit` = 0 WHERE `key` IN ('zarin_noe_kar', 'zarin_noe_kar_tedadi', 'zarin_gorohe_kar');
-- UPDATE `settings` SET `type` = 'number', `can_edit` = 0 WHERE `key` IN ('zarin_noe_kar', 'zarin_noe_kar_tedadi', 'zarin_gorohe_kar', 'zarin_idbank');
-- درگاه شارژ آنلاین (Montify) — متادیتا + can_edit=0 (value دست نخورده)
-- [super-admin can_edit=0]
@@ -2497,6 +2502,8 @@ WHERE `key` = 'deposit_method_shetab';
-- [super-admin can_edit=0]
-- UPDATE `settings` SET `title_fa` = 'پیشوند عددی uid زرین', `type` = 'text', `description` = 'فقط عدد. وقتی چند پنل یک زرین دارند باید متفاوت باشد تا uid تکراری نشود.' WHERE `key` = 'zarin_uid_prefix';
-- [super-admin can_edit=0]
-- UPDATE `settings` SET `title_fa` = 'کد حساب بانک زرین', `type` = 'number', `description` = 'کد حساب بانک یا صندوق در زرین (idbank وب‌سرویس payment) برای واریز/برداشت ریالی کیف. سند نوع وجه نقد است نه خرید فی.' WHERE `key` = 'zarin_idbank';
-- [super-admin can_edit=0]
-- UPDATE `settings` SET `value` = 'pargar'
-- WHERE `key` = 'accounting_provider'
-- AND TRIM(COALESCE(`value`, '')) IN ('', 'none')
@@ -592,6 +592,11 @@ WHERE NOT EXISTS (SELECT 1 FROM `settings` WHERE `key` = 'referral_limit' LIMIT
-- SELECT 'zarin_uid_prefix', '', 'پیشوند عددی uid زرین', 0, 1, 'فقط عدد. وقتی چند پنل یک زرین دارند باید متفاوت باشد تا uid تکراری نشود.', 'text'
-- WHERE NOT EXISTS (SELECT 1 FROM `settings` WHERE `key` = 'zarin_uid_prefix' LIMIT 1);
-- [super-admin can_edit=0]
-- INSERT INTO `settings` (`key`, `value`, `title_fa`, `can_edit`, `is_active`, `description`, `type`)
-- SELECT 'zarin_idbank', '', 'کد حساب بانک زرین', 0, 1, 'کد حساب بانک یا صندوق در زرین (idbank وب‌سرویس payment) برای واریز/برداشت ریالی کیف. سند نوع وجه نقد است نه خرید فی.', 'number'
-- WHERE NOT EXISTS (SELECT 1 FROM `settings` WHERE `key` = 'zarin_idbank' LIMIT 1);
-- [super-admin can_edit=0]
-- INSERT INTO `settings` (`key`, `value`, `title_fa`, `can_edit`, `is_active`, `description`)
-- SELECT 'send_to_pargar', 'false', 'ارسال به پرگار (قدیمی)', 0, 0, NULL
@@ -1723,7 +1728,7 @@ UPDATE `settings` SET `type` = 'number' WHERE `key` IN (
-- 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',
-- 'zarin_api', 'zarin_token', 'zarin_noe_kar', 'zarin_gorohe_kar', 'zarin_name_g', 'zarin_uid_prefix', 'zarin_idbank',
-- 'pargar_username', 'pargar_password', 'pargar_api_token'
-- );
-- [super-admin can_edit=0 sync]
@@ -1731,7 +1736,7 @@ UPDATE `settings` SET `type` = 'number' WHERE `key` IN (
-- [super-admin can_edit=0 sync]
-- UPDATE `settings` SET `type` = 'text', `can_edit` = 0 WHERE `key` IN ('zarin_api', 'zarin_token', 'zarin_name_g', 'zarin_uid_prefix');
-- [super-admin can_edit=0 sync]
-- UPDATE `settings` SET `type` = 'number', `can_edit` = 0 WHERE `key` IN ('zarin_noe_kar', 'zarin_gorohe_kar');
-- UPDATE `settings` SET `type` = 'number', `can_edit` = 0 WHERE `key` IN ('zarin_noe_kar', 'zarin_gorohe_kar', 'zarin_idbank');
-- [super-admin can_edit=0]
-- UPDATE `settings` SET `title_fa` = 'سیستم حسابداری', `type` = 'select', `description` = 'none,pargar,tahesab,zarin'
-- WHERE `key` = 'accounting_provider';
@@ -1753,6 +1758,8 @@ UPDATE `settings` SET `type` = 'number' WHERE `key` IN (
-- [super-admin can_edit=0]
-- UPDATE `settings` SET `title_fa` = 'پیشوند عددی uid زرین', `type` = 'text', `description` = 'فقط عدد. وقتی چند پنل یک زرین دارند باید متفاوت باشد تا uid تکراری نشود.' WHERE `key` = 'zarin_uid_prefix';
-- [super-admin can_edit=0]
-- UPDATE `settings` SET `title_fa` = 'کد حساب بانک زرین', `type` = 'number', `description` = 'کد حساب بانک یا صندوق در زرین (idbank وب‌سرویس payment) برای واریز/برداشت ریالی کیف. سند نوع وجه نقد است نه خرید فی.' WHERE `key` = 'zarin_idbank';
-- [super-admin can_edit=0]
-- UPDATE `settings` SET `value` = 'pargar'
-- WHERE `key` = 'accounting_provider'
-- AND TRIM(COALESCE(`value`, '')) IN ('', 'none')