Spamworldpro Mini Shell
Spamworldpro


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/app/code/Ecombricks/InventoryCustomerSourceSelection/Setup/Patch/Data/

Upload File :
current_dir [ Writeable ] document_root [ Writeable ]

 

Current File : /home/corals/old/app/code/Ecombricks/InventoryCustomerSourceSelection/Setup/Patch/Data/CopyData.php
<?php
/**
 * Copyright © eComBricks. All rights reserved.
 * See LICENSE.txt for license details.
 */
declare(strict_types=1);

namespace Ecombricks\InventoryCustomerSourceSelection\Setup\Patch\Data;

/**
 * Copy data
 */
class CopyData implements \Magento\Framework\Setup\Patch\DataPatchInterface
{
    /**
     * Default source provider
     * 
     * @var \Magento\InventoryCatalogApi\Api\DefaultSourceProviderInterface
     */
    private $defaultSourceProvider;
    
    /**
     * Module data setup
     *
     * @var \Magento\Framework\Setup\ModuleDataSetupInterface
     */
    private $moduleDataSetup;

    /**
     * Construct
     *
     * @param \Magento\Framework\Setup\ModuleDataSetupInterface $moduleDataSetup
     * @param \Magento\InventoryCatalogApi\Api\DefaultSourceProviderInterface $defaultSourceProvider
     */
    public function __construct(
        \Magento\Framework\Setup\ModuleDataSetupInterface $moduleDataSetup,
        \Magento\InventoryCatalogApi\Api\DefaultSourceProviderInterface $defaultSourceProvider
    )
    {
        $this->defaultSourceProvider = $defaultSourceProvider;
        $this->moduleDataSetup = $moduleDataSetup;
    }
    
    /**
     * Copy data
     * 
     * @param string $sourceTableName
     * @param string $tableName
     * @param array $columns
     * @param string|null $sourceCode
     * @return void
     */
    private function copyData(string $sourceTableName, string $tableName, array $columns, string $sourceCode = null): void
    {
        $connection = $this->moduleDataSetup->getConnection();
        if (
            $connection->fetchOne(
                $connection->select()
                    ->from(
                        $this->moduleDataSetup->getTable($tableName),
                        [
                            'count' => new \Zend_Db_Expr('COUNT(*)'),
                        ]
                    )
            )
        ) {
            return;
        }
        $connection->query(
            $connection->insertFromSelect(
                $connection->select()
                    ->from(
                        $this->moduleDataSetup->getTable($sourceTableName),
                        $columns
                    )
                    ->columns(
                        [
                            \Magento\InventoryApi\Api\Data\SourceInterface::SOURCE_CODE => $sourceCode ? new \Zend_Db_Expr($connection->quote($sourceCode)) : new \Zend_Db_Expr('NULL'),
                        ]
                    ),
                $this->moduleDataSetup->getTable($tableName),
                array_merge($columns, [\Magento\InventoryApi\Api\Data\SourceInterface::SOURCE_CODE]),
                \Magento\Framework\DB\Adapter\AdapterInterface::INSERT_ON_DUPLICATE
            )
        );
    }

    /**
     * {@inheritdoc}
     */
    public function apply()
    {
        $sourceCode = $this->defaultSourceProvider->getCode();
        $this->copyData(
            'quote_item',
            'ecombricks_inventory__quote_item_source',
            [
                'item_id',
            ],
            $sourceCode
        );
        $this->copyData(
            'sales_order_item',
            'ecombricks_inventory__sales_order_item_source',
            [
                'item_id',
            ],
            $sourceCode
        );
        $this->copyData(
            'shipping_tablerate',
            'ecombricks_inventory__source_shipping_tablerate',
            [
                'website_id',
                'dest_country_id',
                'dest_region_id',
                'dest_zip',
                'condition_name',
                'condition_value',
                'price',
                'cost',
            ]
        );
        return $this;
    }

    /**
     * {@inheritdoc}
     */
    public static function getDependencies()
    {
        return [];
    }

    /**
     * {@inheritdoc}
     */
    public function getAliases()
    {
        return [];
    }
}

Spamworldpro Mini