123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100 |
- <?php
- /**
- * Copyright © Magento, Inc. All rights reserved.
- * See COPYING.txt for license details.
- */
- namespace Magento\SalesSequence\Model;
- use Magento\Framework\App\ResourceConnection as AppResource;
- use Magento\Framework\DB\Sequence\SequenceInterface;
- /**
- * Class Sequence represents sequence in logic
- *
- * @api
- * @since 100.0.2
- */
- class Sequence implements SequenceInterface
- {
- /**
- * Default pattern for Sequence
- */
- const DEFAULT_PATTERN = "%s%'.09d%s";
- /**
- * @var string
- */
- private $lastIncrementId;
- /**
- * @var Meta
- */
- private $meta;
- /**
- * @var false|\Magento\Framework\DB\Adapter\AdapterInterface
- */
- private $connection;
- /**
- * @var string
- */
- private $pattern;
- /**
- * @param Meta $meta
- * @param AppResource $resource
- * @param string $pattern
- */
- public function __construct(
- Meta $meta,
- AppResource $resource,
- $pattern = self::DEFAULT_PATTERN
- ) {
- $this->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();
- }
- }
|