dbm 5 år sedan
förälder
incheckning
f5e9d57258

+ 55 - 0
ShippingNotifications/Api/Data/ShippingCategoryInterface.php

@@ -0,0 +1,55 @@
+<?php
+
+namespace Cpcommerce\ShippingNotifications\Api\Data;
+
+interface ShippingCategoryInterface
+{
+    const SHIP_CATEG_ID = 'ship_categ_id';
+    const OPTION_ID = 'option_id';
+    const IS_DELAYED = 'is_delayed';
+
+    /**
+     * Get Ship Categ Id
+     *
+     * @return int|null
+     */
+    public function getShipCategId();
+
+    /**
+     * Set Ship Categ Id
+     *
+     * @param int $shipCategId
+     * @return $this
+     */
+    public function setShipCategId($shipCategId);
+
+    /**
+     * Get Option Id
+     *
+     * @return int|null
+     */
+    public function getOptionId();
+
+    /**
+     * Set Option Id
+     *
+     * @param int $optionId
+     * @return $this
+     */
+    public function setOptionId($optionId);
+
+    /**
+     * Get Is Delayed
+     *
+     * @return int|null
+     */
+    public function getIsDelayed();
+
+    /**
+     * Set Option Id
+     *
+     * @param int $isDelayed
+     * @return $this
+     */
+    public function setIsDelayed($isDelayed);
+}

+ 32 - 0
ShippingNotifications/Block/ShippingCategory.php

@@ -0,0 +1,32 @@
+<?php 
+
+namespace Cpcommerce\ShippingNotifications\Block;
+
+use Magento\Catalog\Block\Product\View\Description;
+use Magento\Catalog\Model\Product\Attribute\Repository;
+use Magento\Framework\View\Element\Template;
+use Magento\Framework\View\Element\Template\Context;
+
+class ShippingCategory extends Template
+{
+    public function __construct(
+        Description $description,
+        Repository $attribute,
+        Context $context,
+        array $data = []
+    ) {
+        $this->description = $description;
+        $this->attribute = $attribute;
+        return parent::__construct($context, $data);
+    }
+
+    public function getAttributeData($attribute_code){
+        return $this->attribute->get($attribute_code);
+    }
+
+    public function getShippingCategory(){
+        $_product = $this->description->getProduct();
+        $shipping_category = $_product->getResource()->getAttribute('shipping_category')->getFrontend()->getValue($_product);
+        return $shipping_category;
+    }
+}

+ 12 - 0
ShippingNotifications/Model/ResourceModel/ShippingCategory.php

@@ -0,0 +1,12 @@
+<?php
+
+namespace Cpcommerce\ShippingNotifications\Model\ResourceModel;
+
+use \Magento\Framework\Model\ResourceModel\Db\AbstractDb;
+
+class ShippingCategory extends AbstractDb
+{
+    protected function _construct(){
+        $this->_init('cpcommerce_shipping_notification_categories', 'ship_categ_id');
+    }
+}

+ 13 - 0
ShippingNotifications/Model/ResourceModel/ShippingCategory/Collection.php

@@ -0,0 +1,13 @@
+<?php
+
+namespace Cpcommerce\ShippingNotification\Model\ResourceModel\ShippingCategory;
+
+use \Magento\Framework\Model\ResourceModel\Db\Collection\AbstractCollection;
+
+class Collection extends AbstractCollection
+{
+    protected function _construct()
+    {
+        $this->_init('Cpcommerce\ShippingNotifications\Model\ShippingCategory','Cpcommerce\ShippingNotifications\Model\ResourceModel\ShippingCategory');
+    }
+}

+ 78 - 0
ShippingNotifications/Model/ShippingCategory.php

@@ -0,0 +1,78 @@
+<?php
+namespace Cpcommerce\ShippingNotifications\Model;
+
+use \Magento\Framework\Model\AbstractModel;
+use \Magento\Framework\DataObject\IdentityInterface;
+use \Cpcommerce\ShippingNotifications\Api\Data\ShippingCategoryInterface;
+
+class ShippingCategory extends AbstractModel implements ShippingCategoryInterface, IdentityInterface
+{
+    protected function _construct()
+    {
+        $this->_init('Cpcommerce\ShippingNotifications\Model\ResourceModel\ShippingCategory');
+    }
+
+    /**
+     * Get Ship Categ Id
+     *
+     * @return int|null
+     */
+    public function getShipCategId()
+    {
+        return $this->getData(self::SHIP_CATEG_ID);
+    }
+
+    /**
+     * Set Ship Categ Id
+     *
+     * @param int $shipCategId
+     * @return $this
+     */
+    public function setShipCategId($shipCategId)
+    {
+        return $this->setData(self::SHIP_CATEG_ID, $shipCategId);
+    }
+
+    /**
+     * Get Option Id
+     *
+     * @return int|null
+     */
+    public function getOptionId()
+    {
+        return $this->getData(self::OPTION_ID);
+    }
+
+    /**
+     * Set Option Id
+     *
+     * @param int $optionId
+     * @return $this
+     */
+    public function setOptionId($optionId)
+    {
+        return $this->setData(self::OPTION_ID, $optionId);
+    }
+
+    /**
+     * Get Is Delayed
+     *
+     * @return int|null
+     */
+    public function getIsDelayed()
+    {
+        return $this->getData(self::IS_DELAYED);
+    }
+
+    /**
+     * Set Option Id
+     *
+     * @param int $isDelayed
+     * @return $this
+     */
+    public function setIsDelayed($isDelayed)
+    {
+        return $this->setIsDelayed(self::IS_DELAYED, $isDelayed);
+    }
+
+}

+ 16 - 0
ShippingNotifications/etc/acl.xml

@@ -0,0 +1,16 @@
+<?xml version="1.0"?>
+<config xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:noNamespaceSchemaLocation="../../../../../lib/internal/Magento/Framework/Acl/etc/acl.xsd">
+    <acl>
+        <resources>
+            <resource id="Magento_Backend::admin">
+                <resource id="Magento_Backend::stores">
+                    <resource id="Magento_Backend::stores_settings">
+                        <resource id="Magento_Config::config">
+                            <resource id="Cpcommerce_ShippingNotifications::config" title="CPCommerce Shipping Notification Section" sortOrder="100" />
+                        </resource>
+                    </resource>
+                </resource>
+            </resource>
+        </resources>
+    </acl>
+</config>

+ 16 - 0
ShippingNotifications/etc/adminhtml/system.xml

@@ -0,0 +1,16 @@
+<?xml version="1.0"?>
+<config xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:noNamespaceSchemaLocation="urn:magento:module:Magento_Config:etc/system_file.xsd">
+    <system>
+        <section id="cpcommerce_shipping_notifications" translate="label" sortOrder="100" showInDefault="1" showInWebsite="1" showInStore="1">
+            <class>separator-top</class>
+            <label>Shipping Notification</label>
+            <tab>cpcommerce</tab>
+            <resource>Cpcommerce_ShippingNotifications::config</resource>
+            <group id="general" translate="label" sortOrder="10" showInDefault="1" showInWebsite="1" showInStore="1">
+                <field id="shipping_categories" translate="label" type="multiselect" sortOrder="10" showInDefault="1" showInWebsite="1" showInStore="1" canRestore="1">
+                    <label>Shipping Categories</label>
+                </field>
+            </group>
+        </section>
+    </system>
+</config>

+ 8 - 5
ShippingNotifications/etc/db_schema.xml

@@ -1,10 +1,13 @@
+<?xml version="1.0"?>
+
 <schema xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:noNamespaceSchemaLocation="urn:magento:framework:Setup/Declaration/Schema/etc/schema.xsd">
     <table name="cpcommerce_shipping_notification_categories" resource="default" engine="innodb" comment="CP-Commerce Shipping Notification Delayed Categories">
-        <column xsi:type="int" name="ship_categ_id" padding="6" nullabe="false" identity="true"/>
-        <column xsi:type="varchar" name="ship_categ" length="255" nullable="false" />
-
-        <constraint xsi:type="primary" referenceId="ship_categ_id">
-            <column name="ship_categ_id" />
+        <column xsi:type="int" name="ship_categ_id" nullable="false" identity="true"/>
+        <column xsi:type="int" padding="10" name="option_id" nullabe="false" default="0" unsigned="true"/>
+        <column xsi:type="boolean" name="is_delayed" nullable="false"/>
+        <constraint xsi:type="foreign" referenceId="SHIP_NOTIF_CATEG_ATTRIB_OPTION_VALUE" table="cpcommerce_shipping_notification_categories" column="option_id" referenceTable="eav_attribute_option_value" referenceColumn="option_id" OnDelete="CASCADE" />
+        <constraint xsi:type="primary" refrenceId="ship_categ_id">
+            <column name="ship_categ_id"/>
         </constraint>
     </table>
 </schema>

+ 16 - 0
ShippingNotifications/etc/db_schema_whitelist.json

@@ -0,0 +1,16 @@
+{
+    "cpcommerce_shipping_notification_categories": {
+        "column": {
+            "ship_categ_id": true,
+            "ship_categ": true,
+            "value_id": true,
+            "is_delayed": true,
+            "option_id": true
+        },
+        "constraint": {
+            "PRIMARY": true,
+            "CPCOMMERCE_SHPP_NTFC_CATEGORIES_VAL_ID_EAV_ATTR_OPT_VAL_VAL_ID": true,
+            "CPCOMMERCE_SHPP_NTFC_CATEGORIES_OPT_ID_EAV_ATTR_OPT_VAL_OPT_ID": true
+        }
+    }
+}

+ 1 - 1
ShippingNotifications/etc/module.xml

@@ -1,6 +1,6 @@
 <?xml version="1.0"?>
 <config xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:noNamespaceSchemaLocation="urn:magento:framework:Module/etc/module.xsd">
-	<module name="Cpcommerce_ShippingNotifications" setup_version="0.0.2">
+	<module name="Cpcommerce_ShippingNotifications" setup_version="0.0.9">
 		<sequence>
 			<module name="Magento_Catalog" />
 		</sequence>

+ 1 - 1
ShippingNotifications/view/frontend/layout/catalog_product_view_type_simple.xml

@@ -2,7 +2,7 @@
 <page xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:noNamespaceSchemaLocation="urn:magento:framework:View/Layout/etc/page_configuration.xsd">
 <body>
     <referenceContainer name="product.info.form.content">
-        <block class="Magento\Catalog\Block\Product\View\Description" name="shipping_notification" before="addtocart" template="Cpcommerce_ShippingNotifications::shipping_notification.phtml"/>
+        <block class="Cpcommerce\ShippingNotifications\Block\ShippingCategory" name="shipping_notification" before="addtocart" template="Cpcommerce_ShippingNotifications::shipping_notification.phtml"/>
     </referenceContainer>
 
     <referenceBlock name="shipping_notification">

+ 4 - 2
ShippingNotifications/view/frontend/templates/shipping_notification.phtml

@@ -1,6 +1,8 @@
 <?php
-    $_product = $block->getProduct();
-    $shipping_category = $_product->getResource()->getAttribute('shipping_category')->getFrontend()->getValue($_product);
+    
+    $shipping_category = $block->getShippingCategory();
+
+    $attribute_info = $block->get('shipping_category');
 
     if($shipping_category == 'Late'){
         $ship_notif_enable = 1;