fix pargar and login
This commit is contained in:
@@ -25,7 +25,8 @@ use Rooyesh\Wallet\models\Transaction;
|
||||
* 4) ماندهٔ تازهٔ پرگار (از جمله صفر/تغییر دستی حسابدار) بلافاصله اعمال میشود —
|
||||
* دیگر منتظر دو snapshot یکسان یا بلوک صفر نمیمانیم.
|
||||
* 5) اگر واریز/برداشت ریالیای اصلاً سند پرگار نداشته باشد، مانده اعمال نمیشود؛
|
||||
* پرگار از آن پول خبر ندارد و اعمال مانده موجودی مشتری را پاک میکند.
|
||||
* همزمان سند جاافتاده خودکار صف میشود. پرگار از آن پول خبر ندارد و اعمال مانده
|
||||
* موجودی مشتری را پاک میکند.
|
||||
* 6) دکمهٔ ادمین با force میتواند گیتهای سند pending را رد کند (ابزار اصلاح دستی).
|
||||
*/
|
||||
class PargarInboundWalletService
|
||||
@@ -502,11 +503,28 @@ class PargarInboundWalletService
|
||||
|
||||
$missing = $this->unexportedCashMovement($customer, $lastConfirmedAt);
|
||||
if ($missing !== null) {
|
||||
// ترمیم خودکار: سند جاافتاده را صف کن تا pending بماند و بعد از ثبت در پرگار مانده باز شود
|
||||
$queued = 0;
|
||||
try {
|
||||
$queued = app(PargarSyncService::class)->queueMissingCashDocuments(
|
||||
$customer,
|
||||
$missing['rows'],
|
||||
'mande_auto_missing'
|
||||
);
|
||||
} catch (\Throwable $e) {
|
||||
report($e);
|
||||
}
|
||||
|
||||
$suffix = $queued > 0
|
||||
? ' — سند در صف ثبت قرار گرفت؛ تا تأیید پرگار، مانده اعمال نمیشود'
|
||||
: ' — تا ثبت سند، مانده اعمال نمیشود';
|
||||
|
||||
return [
|
||||
'reason' => 'unexported_wallet_movement',
|
||||
'message' => 'حرکت ریالی '
|
||||
. number_format($missing['amount'])
|
||||
. ' ریال هنوز سندی در پرگار ندارد — تا ثبت سند، مانده اعمال نمیشود',
|
||||
. ' ریال هنوز سندی در پرگار ندارد'
|
||||
. $suffix,
|
||||
];
|
||||
}
|
||||
|
||||
@@ -529,7 +547,7 @@ class PargarInboundWalletService
|
||||
* تا وقتی پرگار از این حرکت خبر ندارد، ماندهٔ آن هم شامل این پول نیست؛ اعمال آن
|
||||
* موجودی مشتری را پاک میکند. پس مانده را نگه میداریم تا سند ساخته و ثبت شود.
|
||||
*
|
||||
* @return array{amount: float, withdraw_ids: list<int>}|null
|
||||
* @return array{amount: float, withdraw_ids: list<int>, rows: \Illuminate\Support\Collection}|null
|
||||
*/
|
||||
private function unexportedCashMovement(Customer $customer, ?Carbon $lastConfirmedAt): ?array
|
||||
{
|
||||
@@ -552,7 +570,7 @@ class PargarInboundWalletService
|
||||
->whereColumn('pargar_sync_logs.withdraw_id', 'transactions.withdraw_id')
|
||||
->where('pargar_sync_logs.type', PargarSyncService::TYPE_WALLET_CASH);
|
||||
})
|
||||
->get(['withdraw_id', 'cash']);
|
||||
->get(['withdraw_id', 'cash', 'note']);
|
||||
|
||||
if ($rows->isEmpty()) {
|
||||
return null;
|
||||
@@ -561,6 +579,7 @@ class PargarInboundWalletService
|
||||
return [
|
||||
'amount' => (float) $rows->sum(fn ($row) => abs((float) $row->cash)),
|
||||
'withdraw_ids' => $rows->pluck('withdraw_id')->map(fn ($id) => (int) $id)->all(),
|
||||
'rows' => $rows,
|
||||
];
|
||||
}
|
||||
|
||||
|
||||
Reference in New Issue
Block a user