| 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();
 
-     }
 
- }
 
 
  |