app/Console/Commands/LaundryCodeReview.php:14:    protected $description = 'Diff-aware static Code Review Agent for a patch: checksum, path safety, PHP/Blade lint and financial/ZATCA risk scan';
app/Console/Commands/LaundryCodeReview.php:213:            if ($this->isZatcaSensitiveChange($file, $changed)) {
app/Console/Commands/LaundryCodeReview.php:214:                $manual[] = $file . ': ZATCA-sensitive changed code';
app/Console/Commands/LaundryCodeReview.php:243:        // lines are scanned, so pre-existing financial/ZATCA code does not create noise.
app/Console/Commands/LaundryCodeReview.php:305:    protected function isZatcaSensitiveChange($file, $changed)
app/Console/Commands/LaundryCodeReview.php:307:        if (preg_match('/zatca|invoice.*xml|signed.*xml|qr(code)?/i', $file)) {
app/Console/Commands/LaundryCodeReview.php:311:        return (bool) preg_match('/\b(Zatca|submitZatca|QueueZatca|InvoiceXml|SignedXml|QRCode|qr_code|invoiceHash|onboardJournal)\b/i', $changed);
app/Console/Commands/LaundryCodingAgent.php:41:                    'Do not edit signed/submitted ZATCA documents or historical XML/QR payloads.',
app/Console/Commands/LaundryCodingAgent.php:82:        $lines[] = '2. Preserve accounting/ZATCA history.';
app/Console/Commands/LaundryRegressionTest.php:77:        $zatcaEnabledBefore = (string) Setting::findByKey('zatca_enabled', '0');
app/Console/Commands/LaundryRegressionTest.php:78:        $zatcaAutoSubmitBefore = (string) Setting::findByKey('zatca_auto_submit', '0');
app/Console/Commands/LaundryRegressionTest.php:82:            $zatcaEnabledSetting = Setting::where('key', 'zatca_enabled')->first();
app/Console/Commands/LaundryRegressionTest.php:83:            $zatcaAutoSubmitSetting = Setting::where('key', 'zatca_auto_submit')->first();
app/Console/Commands/LaundryRegressionTest.php:85:            if (!$zatcaEnabledSetting || !$zatcaAutoSubmitSetting) {
app/Console/Commands/LaundryRegressionTest.php:86:                throw new RuntimeException('ZATCA regression isolation settings are missing.');
app/Console/Commands/LaundryRegressionTest.php:89:            $zatcaEnabledSetting->value = '0';
app/Console/Commands/LaundryRegressionTest.php:90:            $zatcaEnabledSetting->save();
app/Console/Commands/LaundryRegressionTest.php:92:            $zatcaAutoSubmitSetting->value = '0';
app/Console/Commands/LaundryRegressionTest.php:93:            $zatcaAutoSubmitSetting->save();
app/Console/Commands/LaundryRegressionTest.php:97:                (string) Setting::findByKey('zatca_enabled', 'MISSING'),
app/Console/Commands/LaundryRegressionTest.php:98:                'ZATCA_DISABLED_INSIDE_TEST_TX'
app/Console/Commands/LaundryRegressionTest.php:102:                (string) Setting::findByKey('zatca_auto_submit', 'MISSING'),
app/Console/Commands/LaundryRegressionTest.php:103:                'ZATCA_AUTO_SUBMIT_DISABLED_INSIDE_TEST_TX'
app/Console/Commands/LaundryRegressionTest.php:168:                $zatcaEnabledBefore,
app/Console/Commands/LaundryRegressionTest.php:169:                (string) Setting::findByKey('zatca_enabled', 'MISSING'),
app/Console/Commands/LaundryRegressionTest.php:170:                'ZATCA_ENABLED_RESTORED_AFTER_ROLLBACK'
app/Console/Commands/LaundryRegressionTest.php:173:                $zatcaAutoSubmitBefore,
app/Console/Commands/LaundryRegressionTest.php:174:                (string) Setting::findByKey('zatca_auto_submit', 'MISSING'),
app/Console/Commands/LaundryRegressionTest.php:175:                'ZATCA_AUTO_SUBMIT_RESTORED_AFTER_ROLLBACK'
app/Console/Commands/LaundryRegressionTest.php:238:        if ((string) Setting::findByKey('zatca_enabled', '0') === '1'
app/Console/Commands/LaundryRegressionTest.php:239:            || (string) Setting::findByKey('zatca_auto_submit', '0') === '1') {
app/Console/Commands/LaundryRegressionTest.php:240:            $this->line('ZATCA_PREFLIGHT=ENABLED_WILL_BE_ISOLATED_IN_TRANSACTION');
app/Console/Commands/LaundryRegressionTest.php:242:        $this->pass('ZATCA_TEST_ISOLATION_READY');
app/Events/OrderCreated.php:23:    public $order,$productStore,$deferZatca;
app/Events/OrderCreated.php:24:    public function __construct(Order $order,$productStores=[], $deferZatca = false)
app/Events/OrderCreated.php:28:        $this->deferZatca = (bool) $deferZatca;
app/Http/Controllers/Api/V1/InvoiceController.php:6:use App\Jobs\ProcessNextZatcaInvoiceJob;
app/Http/Controllers/Api/V1/InvoiceController.php:11:use App\Services\Zatca\FatooraInvoiceService;
app/Http/Controllers/Api/V1/InvoiceController.php:18:    protected $zatcaSettings;
app/Http/Controllers/Api/V1/InvoiceController.php:42:        // ZATCA status filter for the mobile ZATCA screen. "pending" and
app/Http/Controllers/Api/V1/InvoiceController.php:45:        $zatcaStatus = strtolower((string) $request->input('zatca_status', ''));
app/Http/Controllers/Api/V1/InvoiceController.php:46:        if (in_array($zatcaStatus, ['sent', 'failed', 'pending', 'unsent'], true)) {
app/Http/Controllers/Api/V1/InvoiceController.php:47:            if ($zatcaStatus === 'sent') {
app/Http/Controllers/Api/V1/InvoiceController.php:48:                $query->whereNotNull('zatca_submitted_at')
app/Http/Controllers/Api/V1/InvoiceController.php:50:                        $q->whereNull('zatca_reporting_status')
app/Http/Controllers/Api/V1/InvoiceController.php:51:                          ->orWhereRaw('UPPER(zatca_reporting_status) IN (?, ?)', ['REPORTED', 'CLEARED']);
app/Http/Controllers/Api/V1/InvoiceController.php:53:            } elseif ($zatcaStatus === 'failed') {
app/Http/Controllers/Api/V1/InvoiceController.php:54:                $query->whereNotNull('zatca_submitted_at')
app/Http/Controllers/Api/V1/InvoiceController.php:55:                    ->whereNotNull('zatca_reporting_status')
app/Http/Controllers/Api/V1/InvoiceController.php:56:                    ->whereRaw('UPPER(zatca_reporting_status) NOT IN (?, ?)', ['REPORTED', 'CLEARED']);
app/Http/Controllers/Api/V1/InvoiceController.php:58:                $query->whereNull('zatca_submitted_at');
app/Http/Controllers/Api/V1/InvoiceController.php:346:     * Includes QR / ZATCA QR. Never embeds logo_base64 (Flutter branding cache).
app/Http/Controllers/Api/V1/InvoiceController.php:395:                'zatca_qr_payload' => $order->zatca_qr_payload,
app/Http/Controllers/Api/V1/InvoiceController.php:402:    public function submitZatca($id, FatooraInvoiceService $zatca)
app/Http/Controllers/Api/V1/InvoiceController.php:404:        if (Setting::findByKey('zatca_enabled', '0') != '1') {
app/Http/Controllers/Api/V1/InvoiceController.php:407:                'message' => 'ZATCA غير مفعّل',
app/Http/Controllers/Api/V1/InvoiceController.php:415:        if ($order->zatca_submitted_at) {
app/Http/Controllers/Api/V1/InvoiceController.php:423:        $next = $zatca->getNextPendingDocument();
app/Http/Controllers/Api/V1/InvoiceController.php:432:        // The force flag bypasses only the auto-submit setting; all ZATCA
app/Http/Controllers/Api/V1/InvoiceController.php:433:        // enablement, ordering, duplicate, signing and reporting checks remain.
app/Http/Controllers/Api/V1/InvoiceController.php:434:        ProcessNextZatcaInvoiceJob::dispatch($order->id, true);
app/Http/Controllers/Api/V1/InvoiceController.php:439:            'message' => $order->zatca_submitted_at
app/Http/Controllers/Api/V1/InvoiceController.php:443:        ], $order->zatca_submitted_at ? 200 : 202);
app/Http/Controllers/Api/V1/InvoiceController.php:447:     * Submit every pending ZATCA document in the same strict sequence used by
app/Http/Controllers/Api/V1/InvoiceController.php:448:     * the web dashboard's "Send All" loop. Signing, reporting, clearance and
app/Http/Controllers/Api/V1/InvoiceController.php:449:     * ordering remain owned by FatooraInvoiceService.
app/Http/Controllers/Api/V1/InvoiceController.php:451:    public function submitAllZatca(FatooraInvoiceService $zatca)
app/Http/Controllers/Api/V1/InvoiceController.php:453:        if (Setting::findByKey('zatca_enabled', '0') != '1') {
app/Http/Controllers/Api/V1/InvoiceController.php:456:                'message' => 'ZATCA غير مفعّل',
app/Http/Controllers/Api/V1/InvoiceController.php:461:                    'blocking_reason' => 'ZATCA غير مفعّل',
app/Http/Controllers/Api/V1/InvoiceController.php:473:            $next = $zatca->getNextPendingDocument();
app/Http/Controllers/Api/V1/InvoiceController.php:487:                    $result = $zatca->submitOrder($next['model']);
app/Http/Controllers/Api/V1/InvoiceController.php:490:                    $result = $zatca->submitSalesReturn($next['model']);
app/Http/Controllers/Api/V1/InvoiceController.php:494:                \Log::error('ZATCA mobile submit-all exception', [
app/Http/Controllers/Api/V1/InvoiceController.php:523:                    . ' لدى ZATCA، لكن التحقق الصارم لم ينجح: '
app/Http/Controllers/Api/V1/InvoiceController.php:532:        if ($submitted >= $maxDocuments && $zatca->getNextPendingDocument()) {
app/Http/Controllers/Api/V1/InvoiceController.php:558:        if ($this->zatcaSettings === null) {
app/Http/Controllers/Api/V1/InvoiceController.php:560:                ->whereIn('key', ['zatca_enabled', 'zatca_auto_submit'])
app/Http/Controllers/Api/V1/InvoiceController.php:563:            $this->zatcaSettings = [
app/Http/Controllers/Api/V1/InvoiceController.php:564:                'enabled' => (string) ($settings['zatca_enabled'] ?? '0') === '1',
app/Http/Controllers/Api/V1/InvoiceController.php:565:                'auto_submit' => (string) ($settings['zatca_auto_submit'] ?? '0') === '1',
app/Http/Controllers/Api/V1/InvoiceController.php:568:        $zatcaEnabled = $this->zatcaSettings['enabled'];
app/Http/Controllers/Api/V1/InvoiceController.php:569:        $zatcaAutoSubmit = $this->zatcaSettings['auto_submit'];
app/Http/Controllers/Api/V1/InvoiceController.php:591:            'zatca_submitted_at' => optional($order->zatca_submitted_at)->toDateTimeString(),
app/Http/Controllers/Api/V1/InvoiceController.php:592:            'zatca_reporting_status' => $order->zatca_reporting_status,
app/Http/Controllers/Api/V1/InvoiceController.php:593:            'zatca_validation_status' => $order->zatca_validation_status,
app/Http/Controllers/Api/V1/InvoiceController.php:594:            'zatca_qr_payload' => $order->zatca_qr_payload,
app/Http/Controllers/Api/V1/InvoiceController.php:595:            'zatca_enabled' => $zatcaEnabled,
app/Http/Controllers/Api/V1/InvoiceController.php:596:            'zatca_auto_submit' => $zatcaAutoSubmit,
app/Http/Controllers/Api/V1/InvoiceController.php:597:            'zatca_pending' => $zatcaEnabled && !$zatcaAutoSubmit && !$order->zatca_submitted_at,
app/Http/Controllers/Api/V1/LaundryTicketController.php:530:     * payment, refund, wallet, or ZATCA side effects.
app/Http/Controllers/Api/V1/LaundryTicketController.php:726:                    'zatca_enabled' => Setting::findByKey('zatca_enabled', '0') == '1',
app/Http/Controllers/Api/V1/LaundryTicketController.php:727:                    'zatca_auto_submit' => Setting::findByKey('zatca_auto_submit', '0') == '1',
app/Http/Controllers/Api/V1/LaundryTicketController.php:728:                    'zatca_submitted_at' => optional($order->zatca_submitted_at)->toDateTimeString(),
app/Http/Controllers/Api/V1/LaundryTicketController.php:729:                    'zatca_pending' => Setting::findByKey('zatca_enabled', '0') == '1'
app/Http/Controllers/Api/V1/LaundryTicketController.php:730:                        && Setting::findByKey('zatca_auto_submit', '0') != '1'
app/Http/Controllers/Api/V1/LaundryTicketController.php:731:                        && empty($order->zatca_submitted_at),
app/Http/Controllers/Api/V1/ReturnApiController.php:165:            'zatca_submitted_at' => optional($return->zatca_submitted_at)->toDateTimeString(),
app/Http/Controllers/Api/V1/ReturnApiController.php:166:            'zatca_reporting_status' => $return->zatca_reporting_status,
app/Http/Controllers/Api/V1/SettingsController.php:34:            'zatca_enabled',
app/Http/Controllers/Api/V1/SettingsController.php:35:            'zatca_auto_submit',
app/Http/Controllers/Api/V1/SettingsController.php:90:                'zatca_enabled' => (string) ($data['zatca_enabled'] ?? '2') === '1',
app/Http/Controllers/Api/V1/SettingsController.php:91:                'zatca_auto_submit' => (string) ($data['zatca_auto_submit'] ?? '2') === '1',
app/Http/Controllers/Api/V1/ShiftApiController.php:31:     * Listing/reporting on shared POS tablets uses treasury (or all for admin).
app/Http/Controllers/Api/V1/ShiftApiController.php.bak-20260917-transfer-banks:32:     * Listing/reporting on shared POS tablets uses treasury (or all for admin).
app/Http/Controllers/Api/V1/ShiftApiController.php.bak-20260917-confirm:31:     * Listing/reporting on shared POS tablets uses treasury (or all for admin).
app/Http/Controllers/Api/V1/SettingsController.php.bak-20260917-confirm:34:            'zatca_enabled',
app/Http/Controllers/Api/V1/SettingsController.php.bak-20260917-confirm:35:            'zatca_auto_submit',
app/Http/Controllers/Api/V1/SettingsController.php.bak-20260917-confirm:90:                'zatca_enabled' => (string) ($data['zatca_enabled'] ?? '2') === '1',
app/Http/Controllers/Api/V1/SettingsController.php.bak-20260917-confirm:91:                'zatca_auto_submit' => (string) ($data['zatca_auto_submit'] ?? '2') === '1',
app/Http/Controllers/CurrenciesController.php:61:         * This Saudi/ZATCA installation does not allow
app/Http/Controllers/ZatcaCredentialController.php:5:use App\Services\Zatca\ZatcaOnboardingService;
app/Http/Controllers/ZatcaCredentialController.php:6:use App\ZatcaCredential;
app/Http/Controllers/ZatcaCredentialController.php:9:class ZatcaCredentialController extends Controller
app/Http/Controllers/ZatcaCredentialController.php:13:        $credentials = ZatcaCredential::query()->orderBy('id', 'desc')->get();
app/Http/Controllers/ZatcaCredentialController.php:15:        return view('zatca.credentials.index', compact('credentials'));
app/Http/Controllers/ZatcaCredentialController.php:20:        $lastCredential = ZatcaCredential::query()->orderBy('id', 'desc')->first();
app/Http/Controllers/ZatcaCredentialController.php:22:        return view('zatca.credentials.create', compact('lastCredential'));
app/Http/Controllers/ZatcaCredentialController.php:25:    public function store(Request $request, ZatcaOnboardingService $onboarding)
app/Http/Controllers/ZatcaCredentialController.php:51:            ->route('zatca-credentials.edit', $credential)
app/Http/Controllers/ZatcaCredentialController.php:55:    public function edit(ZatcaCredential $zatca_credential)
app/Http/Controllers/ZatcaCredentialController.php:57:        return view('zatca.credentials.edit', ['credential' => $zatca_credential]);
app/Http/Controllers/ZatcaCredentialController.php:60:    public function update(Request $request, ZatcaCredential $zatca_credential)
app/Http/Controllers/ZatcaCredentialController.php:76:        $zatca_credential->fill($data);
app/Http/Controllers/ZatcaCredentialController.php:77:        $zatca_credential->is_active = (bool) (int) $request->input('is_active', $zatca_credential->is_active ? 1 : 0);
app/Http/Controllers/ZatcaCredentialController.php:78:        if ($zatca_credential->is_active) {
app/Http/Controllers/ZatcaCredentialController.php:79:            ZatcaCredential::query()->where('id', '!=', $zatca_credential->id)->update(['is_active' => false]);
app/Http/Controllers/ZatcaCredentialController.php:81:        $zatca_credential->save();
app/Http/Controllers/ZatcaCredentialController.php:83:        return redirect()->route('zatca-credentials.index')->with('alert-success', 'تم تحديث بيانات الاعتماد.');
app/Http/Controllers/ZatcaCredentialController.php:86:    public function destroy(ZatcaCredential $zatca_credential)
app/Http/Controllers/ZatcaCredentialController.php:88:        if ($zatca_credential->is_active) {
app/Http/Controllers/ZatcaCredentialController.php:89:            return redirect()->route('zatca-credentials.index')
app/Http/Controllers/ZatcaCredentialController.php:93:        $zatca_credential->delete();
app/Http/Controllers/ZatcaCredentialController.php:95:        return redirect()->route('zatca-credentials.index')->with('alert-success', 'تم حذف الاعتماد.');
app/Http/Controllers/ZatcaCredentialController.php:98:    public function renew(Request $request, ZatcaCredential $zatca_credential, ZatcaOnboardingService $onboarding)
app/Http/Controllers/ZatcaCredentialController.php:107:                'email_address'            => $zatca_credential->email_address,
app/Http/Controllers/ZatcaCredentialController.php:108:                'common_name'              => $zatca_credential->common_name,
app/Http/Controllers/ZatcaCredentialController.php:109:                'organizational_unit_name' => $zatca_credential->organizational_unit_name,
app/Http/Controllers/ZatcaCredentialController.php:110:                'organization_name'        => $zatca_credential->organization_name,
app/Http/Controllers/ZatcaCredentialController.php:111:                'tax_number'               => $zatca_credential->tax_number,
app/Http/Controllers/ZatcaCredentialController.php:112:                'registered_address'       => $zatca_credential->registered_address,
app/Http/Controllers/ZatcaCredentialController.php:113:                'business_category'        => $zatca_credential->business_category,
app/Http/Controllers/ZatcaCredentialController.php:114:                'egs_serial_number'        => $zatca_credential->egs_serial_number,
app/Http/Controllers/ZatcaCredentialController.php:115:                'registration_number'      => $zatca_credential->registration_number,
app/Http/Controllers/ZatcaCredentialController.php:116:                'environment'              => $zatca_credential->environment,
app/Http/Controllers/ZatcaCredentialController.php:122:            $zatca_credential->otp         = $request->input('otp');
app/Http/Controllers/ZatcaCredentialController.php:123:            $zatca_credential->private_key = $result->private_key;
app/Http/Controllers/ZatcaCredentialController.php:124:            $zatca_credential->csr         = $result->csr ?? null;
app/Http/Controllers/ZatcaCredentialController.php:125:            $zatca_credential->public_key  = $result->public_key ?? null;
app/Http/Controllers/ZatcaCredentialController.php:126:            $zatca_credential->certificate = $result->cert_production;
app/Http/Controllers/ZatcaCredentialController.php:127:            $zatca_credential->secret      = $result->secret_production;
app/Http/Controllers/ZatcaCredentialController.php:128:            $zatca_credential->save();
app/Http/Controllers/ZatcaCredentialController.php:134:            ->route('zatca-credentials.edit', $zatca_credential)
app/Http/Controllers/ZatcaDashboardController.php:8:use App\Services\Zatca\FatooraInvoiceService;
app/Http/Controllers/ZatcaDashboardController.php:9:use App\Services\Zatca\ZatcaPdfA3Service;
app/Http/Controllers/ZatcaDashboardController.php:13:class ZatcaDashboardController extends Controller
app/Http/Controllers/ZatcaDashboardController.php:15:    public function index(Request $request, FatooraInvoiceService $zatca, ZatcaPdfA3Service $pdfA3)
app/Http/Controllers/ZatcaDashboardController.php:22:        $zatcaEnabled = Setting::findByKey('zatca_enabled', '0') == '1';
app/Http/Controllers/ZatcaDashboardController.php:23:        $nextDoc = $zatca->getNextPendingDocument();
app/Http/Controllers/ZatcaDashboardController.php:27:            return $this->returnsDashboard($request, $from, $to, $filter, $zatcaEnabled, $nextDoc, $nextDocLabel, $zatca);
app/Http/Controllers/ZatcaDashboardController.php:42:        $orders = $this->applyZatcaFilter($orders, $filter);
app/Http/Controllers/ZatcaDashboardController.php:44:        $nextOrder = $zatca->getNextPendingOrder();
app/Http/Controllers/ZatcaDashboardController.php:59:            && $zatcaEnabled
app/Http/Controllers/ZatcaDashboardController.php:61:            && !$selected->zatca_submitted_at
app/Http/Controllers/ZatcaDashboardController.php:68:        return view('zatca.dashboard', [
app/Http/Controllers/ZatcaDashboardController.php:80:            'zatcaEnabled' => $zatcaEnabled,
app/Http/Controllers/ZatcaDashboardController.php:92:        bool $zatcaEnabled,
app/Http/Controllers/ZatcaDashboardController.php:95:        FatooraInvoiceService $zatca
app/Http/Controllers/ZatcaDashboardController.php:111:        $returns = $this->applyReturnZatcaFilter($returns, $filter);
app/Http/Controllers/ZatcaDashboardController.php:126:            && $zatcaEnabled
app/Http/Controllers/ZatcaDashboardController.php:128:            && !$selectedReturn->zatca_submitted_at
app/Http/Controllers/ZatcaDashboardController.php:129:            && optional($selectedReturn->order)->zatca_submitted_at
app/Http/Controllers/ZatcaDashboardController.php:134:        return view('zatca.dashboard', [
app/Http/Controllers/ZatcaDashboardController.php:143:            'next' => $zatca->getNextPendingReturn(),
app/Http/Controllers/ZatcaDashboardController.php:146:            'zatcaEnabled' => $zatcaEnabled,
app/Http/Controllers/ZatcaDashboardController.php:157:    protected function applyReturnZatcaFilter($returns, string $filter)
app/Http/Controllers/ZatcaDashboardController.php:164:                    return empty($r->zatca_submitted_at);
app/Http/Controllers/ZatcaDashboardController.php:168:                    return !empty($r->zatca_submitted_at);
app/Http/Controllers/ZatcaDashboardController.php:172:                    return $r->zatca_submitted_at && !$this->clientHasKsaVat(optional(optional($r->order)->client)->taxnumber);
app/Http/Controllers/ZatcaDashboardController.php:176:                    return $r->zatca_submitted_at && $this->clientHasKsaVat(optional(optional($r->order)->client)->taxnumber);
app/Http/Controllers/ZatcaDashboardController.php:180:                    return empty($r->zatca_submitted_at) && !$this->clientHasKsaVat(optional(optional($r->order)->client)->taxnumber);
app/Http/Controllers/ZatcaDashboardController.php:184:                    return empty($r->zatca_submitted_at) && $this->clientHasKsaVat(optional(optional($r->order)->client)->taxnumber);
app/Http/Controllers/ZatcaDashboardController.php:216:    protected function applyZatcaFilter($orders, string $filter)
app/Http/Controllers/ZatcaDashboardController.php:223:                    return empty($o->zatca_submitted_at);
app/Http/Controllers/ZatcaDashboardController.php:227:                    return !empty($o->zatca_submitted_at);
app/Http/Controllers/ZatcaDashboardController.php:231:                    return $o->zatca_submitted_at && !$this->clientHasKsaVat(optional($o->client)->taxnumber);
app/Http/Controllers/ZatcaDashboardController.php:235:                    return $o->zatca_submitted_at && $this->clientHasKsaVat(optional($o->client)->taxnumber);
app/Http/Controllers/ZatcaDashboardController.php:239:                    return empty($o->zatca_submitted_at) && !$this->clientHasKsaVat(optional($o->client)->taxnumber);
app/Http/Controllers/ZatcaDashboardController.php:243:                    return empty($o->zatca_submitted_at) && $this->clientHasKsaVat(optional($o->client)->taxnumber);
app/Http/Controllers/ZatcaDashboardController.php:251:    public function sendNext(Request $request, FatooraInvoiceService $zatca)
app/Http/Controllers/ZatcaDashboardController.php:257:        if (Setting::findByKey('zatca_enabled', '0') != '1') {
app/Http/Controllers/ZatcaDashboardController.php:258:            return response()->json(['success' => false, 'done' => false, 'message' => 'ZATCA غير مفعّل']);
app/Http/Controllers/ZatcaDashboardController.php:261:        $next = $zatca->getNextPendingDocument();
app/Http/Controllers/ZatcaDashboardController.php:269:                $result = $zatca->submitOrder($next['model']);
app/Http/Controllers/ZatcaDashboardController.php:272:                $result = $zatca->submitSalesReturn($next['model']);
app/Http/Controllers/ZatcaDashboardController.php:305:            $nextAfter = $zatca->getNextPendingDocument();
app/Http/Controllers/ZatcaDashboardController.php:310:                'message'    => 'تم إرسال ' . $label . ' — الحالة: ' . ($result['reporting_status'] ?? 'OK'),
app/Http/Controllers/ZatcaDashboardController.php:314:            \Log::error('ZATCA real exception from ZatcaDashboardController', [
app/Http/Controllers/ZatcaDashboardController.php:322:            return response()->json(['success' => false, 'done' => false, 'message' => 'ZATCA: ' . $e->getMessage()]);
app/Http/Controllers/LaundryWebController.php:292:        $order->zatca_qr_payload = null;
app/Http/Controllers/LaundryWebController.php:618:            // ZATCA: follow settings only (auto via OrderCreated, or pending ask when manual).
app/Http/Controllers/LaundryWebController.php:622:                && Setting::findByKey('zatca_enabled', '0') == '1'
app/Http/Controllers/LaundryWebController.php:623:                && Setting::findByKey('zatca_auto_submit', '0') != '1'
app/Http/Controllers/LaundryWebController.php:624:                && empty($order->zatca_submitted_at)
app/Http/Controllers/LaundryWebController.php:627:                    'zatca_pending_order_id' => $order->id,
app/Http/Controllers/LaundryWebController.php:628:                    'zatca_pending_invoice_number' => $order->invoice_number,
app/Http/Controllers/OrdersController.php:30:use App\Services\Zatca\FatooraInvoiceService;
app/Http/Controllers/OrdersController.php:31:use App\Services\Zatca\ZatcaPdfA3Service;
app/Http/Controllers/OrdersController.php:32:use App\Services\Zatca\Exceptions\ZatcaSubmissionOutOfOrderException;
app/Http/Controllers/OrdersController.php:330:            $datatable->addColumn('zatca_status', function ($order) {
app/Http/Controllers/OrdersController.php:331:                if ($order->zatca_submitted_at) {
app/Http/Controllers/OrdersController.php:332:                    return e($order->zatca_reporting_status ?: 'SENT');
app/Http/Controllers/OrdersController.php:410:                // TESTMOBILE_ZATCA_IMMUTABLE_DOCUMENT_LOCK_20260721
app/Http/Controllers/OrdersController.php:411:                $zatcaLocked =
app/Http/Controllers/OrdersController.php:412:                    \App\Services\Zatca\ZatcaDocumentLock::isLocked(
app/Http/Controllers/OrdersController.php:416:                if ($zatcaLocked) {
app/Http/Controllers/OrdersController.php:418:                        . ' title="المستند مقفل بعد الإرسال إلى ZATCA">'
app/Http/Controllers/OrdersController.php:430:                        $order->zatca_submitted_at
app/Http/Controllers/OrdersController.php:436:                                $order->zatca_reporting_status
app/Http/Controllers/OrdersController.php:483:                if ($type === 'sales' && Setting::findByKey('zatca_enabled', '0') == '1' && !$order->zatca_submitted_at && $currentUser->can('edit OrdersController')) {
app/Http/Controllers/OrdersController.php:484:                    $btn .= '<button type="button" class="btn btn-xs btn-default btn-zatca-submit" title="ZATCA"'
app/Http/Controllers/OrdersController.php:485:                        . ' data-action="' . route('orders.zatca.submit', $order) . '"'
app/Http/Controllers/OrdersController.php:494:                if (!$zatcaLocked && $currentUser->can('edit OrdersController')) {
app/Http/Controllers/OrdersController.php:518:                if (!$zatcaLocked && $currentUser->can('destroy OrdersController')) {
app/Http/Controllers/OrdersController.php:583:            $raw[] = 'zatca_status';
app/Http/Controllers/OrdersController.php:1163:                Setting::findByKey('zatca_enabled', '0') == '1' &&
app/Http/Controllers/OrdersController.php:1164:                Setting::findByKey('zatca_auto_submit', '0') != '1'
app/Http/Controllers/OrdersController.php:1167:                    'zatca_pending_order_id'      => $order->id,
app/Http/Controllers/OrdersController.php:1168:                    'zatca_pending_invoice_number' => $order->invoice_number,
app/Http/Controllers/OrdersController.php:1305:        // TESTMOBILE_ZATCA_IMMUTABLE_DOCUMENT_LOCK_20260721
app/Http/Controllers/OrdersController.php:1306:        \App\Services\Zatca\ZatcaDocumentLock::abortIfLocked(
app/Http/Controllers/OrdersController.php:1318:        // TESTMOBILE_ZATCA_IMMUTABLE_DOCUMENT_LOCK_20260721
app/Http/Controllers/OrdersController.php:1319:        \App\Services\Zatca\ZatcaDocumentLock::abortIfLocked(
app/Http/Controllers/OrdersController.php:1375:        // TESTMOBILE_ZATCA_IMMUTABLE_DOCUMENT_LOCK_20260721
app/Http/Controllers/OrdersController.php:1376:        \App\Services\Zatca\ZatcaDocumentLock::abortIfLocked(
app/Http/Controllers/OrdersController.php:2138:    public function submitZatca(Order $order, Request $request, FatooraInvoiceService $zatca)
app/Http/Controllers/OrdersController.php:2147:            $result = $zatca->submitOrder($order);
app/Http/Controllers/OrdersController.php:2158:                        'zatca.dashboard',
app/Http/Controllers/OrdersController.php:2172:            $next = $zatca->getNextPendingDocument();
app/Http/Controllers/OrdersController.php:2175:                return redirect()->route('zatca.dashboard', ['filter' => 'unsent', 'order' => $nextId])
app/Http/Controllers/OrdersController.php:2176:                    ->with('alert-success', 'تم الإرسال — الحالة: ' . ($result['reporting_status'] ?? '') . ' | التالي: ' . $next['model']->invoice_number);
app/Http/Controllers/OrdersController.php:2180:                return redirect()->route('zatca.dashboard', ['filter' => 'unsent', 'view' => 'returns', 'return' => $nextId])
app/Http/Controllers/OrdersController.php:2181:                    ->with('alert-success', 'تم الإرسال — الحالة: ' . ($result['reporting_status'] ?? '') . ' | التالي: مردود #' . $nextId);
app/Http/Controllers/OrdersController.php:2184:            return redirect()->route('zatca.dashboard', ['filter' => 'unsent'])
app/Http/Controllers/OrdersController.php:2185:                ->with('alert-success', 'تم الإرسال للهيئة — الحالة: ' . ($result['reporting_status'] ?? '') . ' | لا يوجد مزيد في الطابور');
app/Http/Controllers/OrdersController.php:2186:        } catch (ZatcaSubmissionOutOfOrderException $e) {
app/Http/Controllers/OrdersController.php:2189:            \Log::error('ZATCA real exception from OrdersController', [
app/Http/Controllers/OrdersController.php:2200:            return back()->with('alert-danger', 'ZATCA: ' . $e->getMessage());
app/Http/Controllers/OrdersController.php:2204:    public function queueZatcaManual(Request $request)
app/Http/Controllers/OrdersController.php:2208:        if (Setting::findByKey('zatca_enabled', '0') != '1') {
