client = $client; $this->invoice = $invoice; } public function run() { /* Return immediately if status is not draft */ if ($this->invoice->status_id != Invoice::STATUS_DRAFT) { return $this->invoice; } $this->invoice->markInvitationsSent(); $this->invoice->setReminder(); event(new InvoiceWasMarkedSent($this->invoice, $this->invoice->company)); $this->client->service()->updateBalance($this->invoice->balance)->save(); $this->invoice->service()->setStatus(Invoice::STATUS_SENT)->applyNumber()->save(); UpdateCompanyLedgerWithInvoice::dispatchNow($this->invoice, $this->invoice->balance, $this->invoice->company); return $this->invoice; } }