meta = $meta; $this->connection = $resource->getConnection('sales'); $this->pattern = $pattern; } /** * Retrieve current value * * @return string */ public function getCurrentValue() { if (!isset($this->lastIncrementId)) { return null; } return sprintf( $this->pattern, $this->meta->getActiveProfile()->getPrefix(), $this->calculateCurrentValue(), $this->meta->getActiveProfile()->getSuffix() ); } /** * Retrieve next value * * @return string */ public function getNextValue() { $this->connection->insert($this->meta->getSequenceTable(), []); $this->lastIncrementId = $this->connection->lastInsertId($this->meta->getSequenceTable()); return $this->getCurrentValue(); } /** * Calculate current value depends on start value * * @return string */ private function calculateCurrentValue() { return ($this->lastIncrementId - $this->meta->getActiveProfile()->getStartValue()) * $this->meta->getActiveProfile()->getStep() + $this->meta->getActiveProfile()->getStartValue(); } }