-
app/Observers/InvoiceObserver.php
Open in GitHubuse App\Enums\Core\IntegrationType; use App\Models\BillItem; use App\Models\Invoice; use App\Operations\Integrations\Accounting\Finance; class InvoiceObserver { static public bool $running = false; // Prevents nested observer calls. public function created(Invoice $invoice) : void { $invoice->update(['previous_balance' => $invoice->account->account_balance]); if ($invoice->total < 0) return; if (self::$running) return; self::$running = true; // Update Finance 3rd Party if (hasIntegration(IntegrationType::Finance)) { Finance::syncInvoice($invoice); } self::$running = false; } public function updated(Invoice $invoice): void { if ($invoice->total < 0) return; if (self::$running) return; self::$running = true; // Update Finance 3rd Party if (hasIntegration(IntegrationType::Finance)) { try { Finance::syncInvoice($invoice); } catch (\Exception $e) { info("Failed to Update Invoice $invoice->id with Finance Module: " . $e->getMessage()); } } self::$running = false; } public function deleted(Invoice $invoice): void { if ($invoice->total < 0) return; if (self::$running) return; self::$running = true; // Update Finance 3rd Party if (hasIntegration(IntegrationType::Finance)) { Finance::deleteInvoice($invoice); } self::$running = false; } }
-
app/Providers/EventServiceProvider.php
Open in GitHubuse App\Models\Invoice; use App\Observers\InvoiceObserver; use Illuminate\Foundation\Support\Providers\EventServiceProvider as ServiceProvider; class EventServiceProvider extends ServiceProvider { // public function boot() { // Invoice::observe(InvoiceObserver::class); // } // }