![]() Server : Apache System : Linux server2.corals.io 4.18.0-348.2.1.el8_5.x86_64 #1 SMP Mon Nov 15 09:17:08 EST 2021 x86_64 User : corals ( 1002) PHP Version : 7.4.33 Disable Function : exec,passthru,shell_exec,system Directory : /home/corals/old/vendor/magento/module-sales-sequence/Model/ |
<?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(); } }