client = $client; } public function __invoke($invoice) { if ($invoice->number != '') return $invoice; switch ($this->client->getSetting('counter_number_applied')) { case 'when_saved': $invoice->number = $this->getNextInvoiceNumber($this->client); break; case 'when_sent': if ($invoice->status_id == Invoice::STATUS_SENT) { $invoice->number = $this->getNextInvoiceNumber($this->client); } break; default: # code... break; } return $invoice; } }