added accounting failing handles

This commit is contained in:
2026-08-27 16:16:20 +03:30
parent 93834c9f40
commit 6b5b490e2b
9 changed files with 959 additions and 0 deletions
@@ -861,7 +861,19 @@ class ZarinController extends Controller
public function table(Request $request)
{
$view = (string) $request->input('view', 'all');
$query = Zarin::with('customer')->orderByDesc('id');
if ($view === 'ok') {
$query->whereNotNull('zarin_id')->where('zarin_id', '!=', '');
} elseif ($view === 'failed') {
$query->where(function ($q) {
$q->where(function ($inner) {
$inner->whereNull('zarin_id')->orWhere('zarin_id', '');
})->orWhere('sync_status', 'failed');
});
}
\App\DB\Te\TableEngine::create($query, $request)
->initSearch(['desc', 'type'])
->select(['*'])
@@ -1331,6 +1343,46 @@ class ZarinController extends Controller
return response()->json($result, ($result['ok'] ?? false) ? 200 : 422);
}
public function pendingSummary(Request $request)
{
$customerId = $request->filled('customer_id') ? (int) $request->input('customer_id') : null;
return response()->json($this->sync()->pendingSummary($customerId));
}
public function pendingDocs(Request $request)
{
$customerId = $request->filled('customer_id') ? (int) $request->input('customer_id') : null;
$limit = max(1, min(500, (int) $request->input('limit', 200)));
return response()->json([
'rows' => $this->sync()->pendingDocs($customerId, $limit),
'summary' => $this->sync()->pendingSummary($customerId),
]);
}
public function syncOne(Request $request)
{
$type = (string) $request->input('type', '');
$id = (int) $request->input('id', 0);
if ($id <= 0 || ! in_array($type, ['row', 'withdraw', 'order'], true)) {
return response()->json(['ok' => false, 'message' => 'پارامتر نامعتبر'], 422);
}
$result = $this->sync()->syncOne($type, $id);
return response()->json($result, ($result['ok'] ?? false) ? 200 : 422);
}
public function syncAllPending(Request $request)
{
$limit = max(1, min(200, (int) $request->input('limit', 80)));
$customerId = $request->filled('customer_id') ? (int) $request->input('customer_id') : null;
$result = $this->sync()->syncAllPending($limit, $customerId);
return response()->json($result, ($result['ok'] ?? false) ? 200 : 422);
}
public function registerCustomer($customerId)
{
$customer = Customer::findOrFail($customerId);