0

I'm building a module for Supplier Inventory.

I created a UI Component for creating Suppliers in the dashboard.

In my Model\Data I added the Supplier Name.

    class Supplier extends AbstractExtensibleObject implements SupplierInterface
    {
    /**
     * Get supplier_id
     *
     * @return string|null
     */
    public function getSupplierId()
    {
        return $this->_get(self::SUPPLIER_ID);
    }

    /**
     * Set supplier_id
     *
     * @param string $supplierId
     *
     * @return SupplierInterface
     */
    public function setSupplierId($supplierId)
    {
        return $this->setData(self::SUPPLIER_ID, $supplierId);
    }

    /**
     * Get supplier_name
     *
     * @return string|null
     */
    public function getSupplierName()
    {
        return $this->_get(self::SUPPLIER_NAME);
    }

    /**
     * Set supplier_name
     *
     * @param string $supplierName
     *
     * @return SupplierInterface
     */
    public function setSupplierName($supplierName)
    {
        return $this->setData(self::SUPPLIER_NAME, $supplierName);
    }

    /**
     * Retrieve existing extension attributes object or create a new one.
     *
     * @return \Vendor\Module\Api\Data\SupplierExtensionInterface|null
     */
    public function getExtensionAttributes()
    {
        return $this->_getExtensionAttributes();
    }

    /**
     * Set an extension attributes object.
     *
     * @param \Vendor\Module\Api\Data\SupplierExtensionInterface $extensionAttributes
     *
     * @return $this
     */
    public function setExtensionAttributes($extensionAttributes)
    {
        return $this->_setExtensionAttributes($extensionAttributes);
    }

    /**
     * Get supplier_shipping_days
     *
     * @return string|null
     */
    public function getSupplierShippingDays()
    {
        return $this->_get(self::SUPPLIER_SHIPPING_DAYS);
    }

    /**
     * Set supplier_shipping_days
     *
     * @param string $supplierShippingDays
     *
     * @return SupplierInterface
     */
    public function setSupplierShippingDays($supplierShippingDays)
    {
        return $this->setData(self::SUPPLIER_SHIPPING_DAYS, $supplierShippingDays);
    }

    /**
     * Get supplier_feed_url
     *
     * @return string|null
     */
    public function getSupplierFeedUrl()
    {
        return $this->_get(self::SUPPLIER_FEED_URL);
    }

    /**
     * Set supplier_feed_url
     *
     * @param string $supplierFeedUrl
     *
     * @return SupplierInterface
     */
    public function setSupplierFeedUrl($supplierFeedUrl)
    {
        return $this->setData(self::SUPPLIER_FEED_URL, $supplierFeedUrl);
    }

    /**
     * Get supplier_feed_separator
     *
     * @return string|null
     */
    public function getSupplierFeedSeparator()
    {
        return $this->_get(self::SUPPLIER_FEED_SEPARATOR);
    }

    /**
     * Set supplier_feed_separator
     *
     * @param string $supplierFeedSeparator
     *
     * @return SupplierInterface
     */
    public function setSupplierFeedSeparator($supplierFeedSeparator)
    {
        return $this->setData(self::SUPPLIER_FEED_SEPARATOR, $supplierFeedSeparator);
    }

    /**
     * Get supplier_feed_sku_field
     *
     * @return string|null
     */
    public function getSupplierFeedSkuField()
    {
        return $this->_get(self::SUPPLIER_FEED_SKU_FIELD);
    }

    /**
     * Set supplier_feed_sku_field
     *
     * @param string $supplierFeedSkuField
     *
     * @return SupplierInterface
     */
    public function setSupplierFeedSkuField($supplierFeedSkuField)
    {
        return $this->setData(self::SUPPLIER_FEED_SKU_FIELD, $supplierFeedSkuField);
    }

    /**
     * Get supplier_feed_stock_field
     *
     * @return string|null
     */
    public function getSupplierFeedStockField()
    {
        return $this->_get(self::SUPPLIER_FEED_STOCK_FIELD);
    }

    /**
     * Set supplier_feed_min_stock_field
     *
     * @param string $supplierFeedStockField
     *
     * @return SupplierInterface
     */
    public function setSupplierFeedStockField($supplierFeedStockField)
    {
        return $this->setData(self::SUPPLIER_FEED_STOCK_FIELD, $supplierFeedStockField);
    }

    /**
     * Get supplier_feed_min_stock
     *
     * @return string|null
     */
    public function getSupplierFeedMinStock()
    {
        return $this->_get(self::SUPPLIER_FEED_MIN_STOCK);
    }

    /**
     * Set supplier_feed_min_stock
     *
     * @param string $supplierFeedMinStock
     *
     * @return SupplierInterface
     */
    public function setSupplierFeedMinStock($supplierFeedMinStock)
    {
        return $this->setData(self::SUPPLIER_FEED_MIN_STOCK, $supplierFeedMinStock);
    }
}

I also add a Product attribute supplier through the Vendor\Module\Setup\Patch\Data\AddSupplierProductAttribute.php

class AddSupplierProductAttribute implements DataPatchInterface, PatchRevertableInterface
{
    /**
     * @var ModuleDataSetupInterface
     */
    private $moduleDataSetup;

    /**
     * @var EavSetupFactory
     */
    private $eavSetupFactory;

    /**
     * Constructor
     *
     * @param ModuleDataSetupInterface $moduleDataSetup
     * @param EavSetupFactory          $eavSetupFactory
     */
    public function __construct(
        ModuleDataSetupInterface $moduleDataSetup,
        EavSetupFactory $eavSetupFactory
    ) {
        $this->moduleDataSetup = $moduleDataSetup;
        $this->eavSetupFactory = $eavSetupFactory;
    }

    /**
     * @return AddSupplierProductAttribute|void
     */
    public function apply()
    {
        $this->moduleDataSetup->getConnection()->startSetup();
        /** @var EavSetup $eavSetup */
        $eavSetup = $this->eavSetupFactory->create(['setup' => $this->moduleDataSetup]);
        $eavSetup->addAttribute(
            \Magento\Catalog\Model\Product::ENTITY,
            'supplier',
            [
                'type' => 'int',
                'label' => 'Supplier',
                'input' => 'select',
                'source' => \Vendor\Module\Model\Product\Attribute\Source\Supplier::class,
                'frontend' => '',
                'required' => false,
                'backend' => '',
                'sort_order' => '30',
                'global' => ScopedAttributeInterface::SCOPE_GLOBAL,
                'default' => null,
                'visible' => true,
                'user_defined' => true,
                'searchable' => false,
                'filterable' => false,
                'comparable' => false,
                'visible_on_front' => false,
                'unique' => false,
                'apply_to' => '',
                'group' => 'General',
                'used_in_product_listing' => false,
                'is_used_in_grid' => true,
                'is_visible_in_grid' => false,
                'is_filterable_in_grid' => false,
                'option' => ''
            ]
        );

        $this->moduleDataSetup->getConnection()->endSetup();
    }

    /**
     * @return void
     */
    public function revert()
    {
        $this->moduleDataSetup->getConnection()->startSetup();
        /** @var EavSetup $eavSetup */
        $eavSetup = $this->eavSetupFactory->create(['setup' => $this->moduleDataSetup]);
        $eavSetup->removeAttribute(\Magento\Catalog\Model\Product::ENTITY, 'supplier');

        $this->moduleDataSetup->getConnection()->endSetup();
    }

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

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

I was wondering how I can add the Supplier Name that is created through the UI Component will automatically add a value to the Product Attribute Supplier.

Your Answer

By clicking “Post Your Answer”, you agree to our terms of service, privacy policy and cookie policy

Browse other questions tagged or ask your own question.