client = $client; } public function run($quote) { if ($quote->number != '') { return $quote; } switch ($this->client->getSetting('counter_number_applied')) { case 'when_saved': $quote = $this->trySaving($quote); // $quote->number = $this->getNextQuoteNumber($this->client, $quote); break; case 'when_sent': if ($quote->status_id == Quote::STATUS_SENT) { $quote = $this->trySaving($quote); // $quote->number = $this->getNextQuoteNumber($this->client, $quote); } break; default: // code... break; } return $quote; } private function trySaving($quote) { $x=1; do{ try{ $quote->number = $this->getNextQuoteNumber($this->client, $quote); $quote->saveQuietly(); $this->completed = false; } catch(QueryException $e){ $x++; if($x>10) $this->completed = false; } } while($this->completed); return $quote; } }