invoice = $invoice; } public function run() { /* Check again!! */ if (!$this->invoice->invoiceCancellable($this->invoice)) { return $this->invoice; } $adjustment = $this->invoice->balance*-1; //set invoice balance to 0 $this->invoice->ledger()->updateInvoiceBalance($adjustment, "Invoice cancellation"); $this->invoice->balance = 0; $this->invoice = $this->invoice->service()->setStatus(Invoice::STATUS_CANCELLED)->save(); //adjust client balance $this->invoice->client->service()->updateBalance($adjustment)->save(); event(new InvoiceWasCancelled($this->invoice)); return $this->invoice; } }