Magento 2 Module that adds Donation Product Type. Enables the customer to add a donation (product) of a preferred amount to the cart.

Overview

Magento 2 Module Experius DonationProduct (RC1.0)

Installation

Add the module to your composer.json composer require experius/module-donationproduct "~1.0.0"

Run the Magento Setup Upgrade bin/magento setup:upgrade

Install Sample Data (optional)

A number of international charities will be created for testing purposes

(Oxfam, Greenpeace, Save the Children, Amnesty International, World Wildlife Fund)

bin/magento experius_donationproduct:sampledata:deploy

Remove Sample Data (optional)

bin/magento experius_donationproduct:sampledata:remove

Frontend

  • This module adds a new product type "Donation Product" to your Magento 2 installation.
  • A customer can add this donation product to the cart with a self chosen amount.

The donation products can be viewed on several standard locations in your Magento 2 webshop

  • Homepage
  • Sidebar
  • Cart
  • Checkout

Off course it is possible to implement this block on any location by a Magento frontend developer. Or in a cms of category layout update via the Magento Admin. Xml example is provided in the 'Full Size Block' chapter.

When clicked on a charity of the customers choice a popup will open with the charities details and a add to cart button.

You can also create a regular category with all the donation products with a regular product detail page.

A "Donation Product" has a lot in common with a "Virtual Product". It has no stock, weight and doesn't need a shipping method or address to be set in the checkout.

Donation Popup

Product Page

Category Page

To view the donation products in a category (just like the screenshot below). Create a category in the Magento Admin and add the donation products to that category.

  • Categories can be added in Magento Admin > Catalog > Categories
  • After the category is made add the products to the Category via the 'Products in Category' tab.

Sidebar Block

This block wil be visible on every page wich has a layout with a sidebar implemented. It can be disabled in the settings. See settings chapter.

Full Size Block (Homepage)

The full size block is visible on the homepage. It can be disabled in the settings. See settings chapter.

  • A frontend Magento developer can implement this in custom position in you template by using the following xml.
  • You can also use the xml below to add the block to a cms page. For example your 404 page. Edit the cms page and add the xml to the 'Design' tab > 'Layout Update XML' field.
<referenceContainer name="content">
  <block class="Experius\DonationProduct\Block\Donation\ListProduct" name="donation.block" after="-" template="Experius_DonationProduct::donation.phtml"/>
</referenceContainer>  

Checkout Block

The checkout donation block is visible in the checkout totals block. It can be disabled in the settings. See settings chapter.

Cart Page

The cart page donation block is visible on the cart page. It can be disabled in the settings. See settings chapter.

Backend

Product Type

Add a new product with type 'Donation Product'

Edit Product

You can configure the minimum donation amount.

Report

Reports > Sales > Donations

A report table is made to store every single "Donation Product" sale. You can make an export, sum up the amount per charity and transfer the money.

Settings

Stores > Settings > Configuration > Catalog > Donation Product

There is a setting to enable or disable the complete module. There are settings to enable and disable the visibility of blocks on several locations in your webshop.

Uninstall

Follow the step below to uninstall the module.

  1. Login in to Magento
  2. Go to Catalog > Products. Filter on product type 'Donation Product'
  3. Delete all the Products with the type 'Donation Product'
  4. Go to System > Attributes > Product
  5. Search the attribute 'experius_donation_min_amount' (Minimal Donation Amount) and delete it
  6. Run the following in the command line bin/magento module:uninstall Experius_DonationProduct

FAQ

Can i combine the 'Donation product options' with 'Custom options / Customizable Options'?

Although its not supported, it can be done! You have change the following template by overwriting it with your own custom template version. vendor/magento/module-catalog/view/frontend/templates/product/view/form.phtml. You probaly have to hide or remove a duplicate addtocart button

The donation product uses the 'product_info_form_content' container. This is only rendered when no 'Custom options' are found.

<?php if (!$block->hasOptions()):?>
    <?= $block->getChildHtml('product_info_form_content') ?>
<?php else:?>
    <?php if ($_product->isSaleable() && $block->getOptionsContainer() == 'container1'):?>
        <?= $block->getChildChildHtml('options_container') ?>
    <?php endif;?>
<?php endif; ?>

If you want to render both 'Custom options' and 'Donation options'. Change the if statement.

<?php if (!$block->hasOptions() || $_product->getTypeId()=='donation'):?>
    <?= $block->getChildHtml('product_info_form_content') ?>
<?php else:?>
    <?php if ($_product->isSaleable() && $block->getOptionsContainer() == 'container1'):?>
        <?= $block->getChildChildHtml('options_container') ?>
    <?php endif;?>
<?php endif; ?>
You might also like...
Mobile detect change theme and redirect based on device type. Magento 2 module.

Magento 2 Mobile Detect Theme Change Magento 2 Mobile detect system can be used to load different themes base on the client device (desktop, tablet, m

Akaunting module to use employee as a customer

Associate Employee to customer App for Akaunting to associate employee to customer. With this app contacts with the employee type can be used as custo

Re-skinning BotCloaker enables you to add a SMART button at the end of all posts on your blog.

Re-skinning BotCloaker Wordpress Plugin Re-skinning BotCloaker enables you to add a SMART button at the end of all posts on your blog. Re-skinning Bot

Steam store auto add to cart game

Steam store auto add to cart game use it for steam trading card farm How does it work? link.php explode and find link from link.txt and next open all

A Magento 2 module that allows for creating discrete PDP (Product Detail Pages) page layouts for customers landing on the site from a PPC (Pay Per Click) link/ad by allowing routing to the same pages using a `/ppc/` prefix in the URL path.
A Magento 2 module that allows for creating discrete PDP (Product Detail Pages) page layouts for customers landing on the site from a PPC (Pay Per Click) link/ad by allowing routing to the same pages using a `/ppc/` prefix in the URL path.

A Magento 2 module that allows for creating discrete PDP (Product Detail Pages) page layouts for customers landing on the site from a PPC (Pay Per Click) link/ad by allowing routing to the same pages using a `/ppc/` prefix in the URL path.

This Magento 2 module adds the option to use Flagpack icons in your Hyvä frontend.

Siteation - Hyva Icon Pack - Flags This Magento 2 module adds the option to use Flagpack icons in your Hyvä frontend. This requires that you have a wo

Extends the customer functionality of Magento.
Extends the customer functionality of Magento.

FireGento_Customer This extension extends the core functionality of the customer module of Magento. It is possible to temporarily lock the user accoun

Magento extension which makes it impossible for a customer to log in until the account has been activated by the administrator.

This Magento 1 extension is orphaned, unsupported and no longer maintained. If you use it, you are effectively adopting the code for your own project.

Set a customer password with bin/magento.

Set a customer password Since Magento 2 no longer provides facilities to set a customers password, this command can come in handy during development w

Comments
  • Cannot install on Magento 2.3.1

    Cannot install on Magento 2.3.1

    When I run setup:upgrade on an installation of 2.3.1, I get:

    Module '.Magento_Cart.' required by '.Experius_DonationProduct.' (or one of its requirements) is not found.

    I'd love to use this module -- is this a known issue?

    opened by skukla 2
  • M2QP scan results

    M2QP scan results

    FILE: .../code/Experius/DonationProduct/Observer/Sales/OrderSaveAfter.php

    FOUND 0 ERRORS AND 2 WARNINGS AFFECTING 2 LINES

    72 | WARNING | Model LSD method load() detected in loop 74 | WARNING | Model LSD method save() detected in loop

    FILE: ...dev.nl/app/code/Experius/DonationProduct/Setup/InstallSchema.php

    FOUND 0 ERRORS AND 1 WARNING AFFECTING 1 LINE

    29 | WARNING | There was not found any index in database schema | | file.

    FILE: .../Experius/DonationProduct/view/frontend/templates/donation.phtml

    FOUND 0 ERRORS AND 1 WARNING AFFECTING 1 LINE

    77 | WARNING | Missing JS component initialization. Use | | "x-magento-init" or "x-magento-template".

    opened by dheesbeen 0
  • Clicking Reports->Sales->Donations gives error

    Clicking Reports->Sales->Donations gives error "Class argument is invalid"

    {"0":"Class argument is invalid: Magento\\Framework\\View\\Element\\UiComponent\\Context","1":"#1 Magento
    \\Framework\\Data\\Argument\\InterpreterInterface\\Proxy->evaluate(array('name' => 'context', 'argument'
    => array('class' => array('name' => 'class', 'xsi:type' => 'string', 'value' => 'Magento\\Framewor...'),
    'namespace' => array('name' => 'namespace', 'xsi:type' => 'string', 'value' => 'experius_donatio...'))))
    called at [vendor\/magento\/framework\/Data\/Argument\/Interpreter\/Composite.php:61]\n#2 Magento\\Framew
    ork\\Data\\Argument\\Interpreter\\Composite->evaluate(array('name' => 'context', 'argument' => array('cla
    ss' => array('name' => 'class', 'xsi:type' => 'string', 'value' => 'Magento\\Framewor...'), 'namespace' =
    > array('name' => 'namespace', 'xsi:type' => 'string', 'value' => 'experius_donatio...')))) called at [ve
    ndor\/magento\/module-ui\/Config\/Data.php:164]\n#3 Magento\\Ui\\Config\\Data->evaluateComponentArguments
    (array('experius_donatio...' => array('attributes' => array('name' => 'experius_donatio...', 'sorting' =>
     'true', 'class' => 'Magento\\Ui\\Compo...', 'component' => 'uiComponent'), 'arguments' => array('data' =
    > array('config' => array('component' => 'uiComponent'), 'template' => 'templates\/listin...', 'save_para
    meters_...' => 1, 'client_root' => 'mui\/index\/render', 'js_config' => array('provider' => 'experius_don
    atio...', 'deps' => 'experius_donatio...'), 'spinner' => 'experius_donatio...'), 'context' => array('name
    ' => 'context', 'xsi:type' => 'configurableObje...', 'argument' => array('class' => array('name' => 'clas
    s', 'xsi:type' => 'string', 'value' => 'Magento\\Framewor...'), 'namespace' => array('name' => 'namespace
    ', 'xsi:type' => 'string', 'value' => 'experius_donatio...')))), 'children' => array('experius_donatio...
    ' => array('attributes' => array('class' => 'Magento\\Ui\\Compo...', 'name' => 'experius_donatio...'), 'c
    hildren' => array(), 'arguments' => array('dataProvider' => array('name' => 'dataProvider', 'xsi:type' =>
     'configurableObje...', 'argument' => array('class' => array('name' => 'class', 'xsi:type' => 'string', '
    value' => 'Magento\\Framewor...'), 'name' => array('name' => 'name', 'xsi:type' => 'string', 'value' => '
    experius_donatio...'), 'primaryFieldName' => array('name' => 'primaryFieldName', 'xsi:type' => 'string',
    'value' => 'donations_id'), 'requestFieldName' => array('name' => 'requestFieldName', 'xsi:type' => 'stri
    ng', 'value' => 'id'), 'data' => array('name' => 'data', 'xsi:type' => 'array', 'item' => array('config'
    => array('name' => 'config', 'xsi:type' => 'array', 'item' => array('component' => array('name' => 'compo
    nent', 'xsi:type' => 'string', 'value' => 'Magento_Ui\/js\/gr...'), 'update_url' => array('name' => 'upda
    te_url', 'path' => 'mui\/index\/render', 'xsi:type' => 'url'), 'storageConfig' => array('name' => 'storag
    eConfig', 'xsi:type' => 'array', 'item' => array('indexField' => array('name' => 'indexField', 'xsi:type'
     => 'string', 'value' => 'donations_id'))))))))))), 'listing_top' => array('arguments' => array('data' =>
     array('name' => 'data', 'xsi:type' => 'array', 'item' => array('config' => array('name' => 'config', 'xs
    i:type' => 'array', 'item' => array('component' => array('name' => 'component', 'xsi:type' => 'string', '
    value' => 'Magento_Ui\/js\/gr...'), 'sticky' => array('name' => 'sticky', 'xsi:type' => 'boolean', 'value
    ' => 'true')))))), 'attributes' => array('class' => 'Magento\\Ui\\Compo...', 'component' => 'Magento_Ui\/
    js\/gr...', 'name' => 'listing_top'), 'children' => array('bookmarks' => array('arguments' => array('data
    ' => array('name' => 'data', 'xsi:type' => 'array', 'item' => array('config' => array('name' => 'config',
     'xsi:type' => 'array', 'item' => array('component' => array('name' => 'component', 'xsi:type' => 'string
    ', 'value' => 'Magento_Ui\/js\/gr...'), 'displayArea' => array('name' => 'displayArea', 'xsi:type' => 'st
    ring', 'value' => 'dataGridActions'), 'storageConfig' => array('name' => 'storageConfig', 'xsi:type' => '
    array', 'item' => array('namespace' => array('name' => 'namespace', 'xsi:type' => 'string', 'value' => '$
    { $.ns }'), 'saveUrl' => array('name' => 'saveUrl', 'xsi:type' => 'url', 'path' => 'mui\/bookmark\/sav...
    '), 'deleteUrl' => array('name' => 'deleteUrl', 'xsi:type' => 'url', 'path' => 'mui\/bookmark\/del...')))
    ))))), 'attributes' => array('class' => 'Magento\\Ui\\Compo...', 'component' => 'Magento_Ui\/js\/gr...',
    'displayArea' => 'dataGridActions', 'name' => 'bookmarks'), 'children' => array()), 'columns_controls' =>
     array('arguments' => array('data' => array('name' => 'data', 'xsi:type' => 'array', 'item' => array('con
    fig' => array('name' => 'config', 'xsi:type' => 'array', 'item' => array('component' => array('name' => '
    component', 'xsi:type' => 'string', 'value' => 'Magento_Ui\/js\/gr...')))))), 'attributes' => array('clas
    s' => 'Magento\\Ui\\Compo...', 'component' => 'Magento_Ui\/js\/gr...', 'name' => 'columns_controls'), 'ch
    ildren' => array()), 'listing_filters' => array('arguments' => array('data' => array('name' => 'data', 'x
    si:type' => 'array', 'item' => array('config' => array('name' => 'config', 'xsi:type' => 'array', 'item'
    => array('component' => array('name' => 'component', 'xsi:type' => 'string', 'value' => 'Magento_Ui\/js\/
    gr...'), 'displayArea' => array('name' => 'displayArea', 'xsi:type' => 'string', 'value' => 'dataGridFilt
    ers'), 'storageConfig' => array('name' => 'storageConfig', 'xsi:type' => 'array', 'item' => array('namesp
    ace' => array('name' => 'namespace', 'xsi:type' => 'string', 'value' => 'current.filters'), 'provider' =>
     array('name' => 'provider', 'xsi:type' => 'string', 'value' => 'ns = ${ $.ns }, ...'))), 'dataScope' =>
    array('name' => 'dataScope', 'xsi:type' => 'string', 'value' => 'filters'))), 'observers' => array('name'
     => 'observers', 'xsi:type' => 'array', 'item' => array('column' => array('name' => 'column', 'xsi:type'
    => 'string', 'value' => 'column')))))), 'attributes' => array('class' => 'Magento\\Ui\\Compo...', 'compon
    ent' => 'Magento_Ui\/js\/gr...', 'displayArea' => 'dataGridFilters', 'name' => 'listing_filters'), 'child
    ren' => array()), 'listing_paging' => array('arguments' => array('data' => array('name' => 'data', 'xsi:t
    ype' => 'array', 'item' => array('config' => array('name' => 'config', 'xsi:type' => 'array', 'item' => a
    rray('component' => array('name' => 'component', 'xsi:type' => 'string', 'value' => 'Magento_Ui\/js\/gr..
    .'), 'displayArea' => array('name' => 'displayArea', 'xsi:type' => 'string', 'value' => 'bottom'), 'stora
    geConfig' => array('name' => 'storageConfig', 'xsi:type' => 'array', 'item' => array('namespace' => array
    ('name' => 'namespace', 'xsi:type' => 'string', 'value' => 'current.paging'), 'provider' => array('name'
    => 'provider', 'xsi:type' => 'string', 'value' => 'ns = ${ $.ns }, ...')))))))), 'attributes' => array('c
    lass' => 'Magento\\Ui\\Compo...', 'component' => 'Magento_Ui\/js\/gr...', 'displayArea' => 'bottom', 'nam
    e' => 'listing_paging'), 'children' => array()), 'export_button' => array('arguments' => array('data' =>
    array('name' => 'data', 'xsi:type' => 'array', 'item' => array('config' => array('name' => 'config', 'xsi
    :type' => 'array', 'item' => array('options' => array('name' => 'options', 'xsi:type' => 'array', 'item'
    => array('csv' => array('name' => 'csv', 'xsi:type' => 'array', 'item' => array('value' => array('name' =
    > 'value', 'xsi:type' => 'string', 'value' => 'csv'), 'label' => array('name' => 'label', 'xsi:type' => '
    string', 'translate' => 'true', 'value' => 'CSV'), 'url' => array('name' => 'url', 'xsi:type' => 'string'
    , 'value' => 'mui\/export\/gridT...'))), 'xml' => array('name' => 'xml', 'xsi:type' => 'array', 'item' =>
     array('value' => array('name' => 'value', 'xsi:type' => 'string', 'value' => 'xml'), 'label' => array('n
    ame' => 'label', 'xsi:type' => 'string', 'translate' => 'true', 'value' => 'Excel XML'), 'url' => array('
    name' => 'url', 'xsi:type' => 'string', 'value' => 'mui\/export\/gridT...'))))), 'component' => array('na
    me' => 'component', 'xsi:type' => 'string', 'value' => 'Magento_Ui\/js\/gr...'), 'displayArea' => array('
    name' => 'displayArea', 'xsi:type' => 'string', 'value' => 'dataGridActions')))))), 'attributes' => array
    ('class' => 'Magento\\Ui\\Compo...', 'component' => 'Magento_Ui\/js\/gr...', 'displayArea' => 'dataGridAc
    tions', 'name' => 'export_button'), 'children' => array()))), 'experius_donatio...' => array('arguments'
    => array('data' => array('name' => 'data', 'xsi:type' => 'array', 'item' => array('config' => array('name
    ' => 'config', 'xsi:type' => 'array', 'item' => array('childDefaults' => array('name' => 'childDefaults',
     'xsi:type' => 'array', 'item' => array('storageConfig' => array('name' => 'storageConfig', 'xsi:type' =>
     'array', 'item' => array('provider' => array('name' => 'provider', 'xsi:type' => 'string', 'value' => 'n
    s = ${ $.ns }, ...'), 'root' => array('name' => 'root', 'xsi:type' => 'string', 'value' => 'columns.${ $.
    ind...'), 'namespace' => array('name' => 'namespace', 'xsi:type' => 'string', 'value' => 'current.${ $.st
    o...'))))), 'component' => array('name' => 'component', 'xsi:type' => 'string', 'value' => 'Magento_Ui\/j
    s\/gr...'), 'storageConfig' => array('name' => 'storageConfig', 'xsi:type' => 'array', 'item' => array('n
    amespace' => array('name' => 'namespace', 'xsi:type' => 'string', 'value' => 'current'), 'provider' => ar
    ray('name' => 'provider', 'xsi:type' => 'string', 'value' => 'ns = ${ $.ns }, ...'))), 'componentType' =>
     array('name' => 'componentType', 'xsi:type' => 'string', 'value' => 'columns')))))), 'attributes' => arr
    ay('class' => 'Magento\\Ui\\Compo...', 'component' => 'Magento_Ui\/js\/gr...', 'name' => 'experius_donati
    o...'), 'children' => array('ids' => array('arguments' => array('data' => array('name' => 'data', 'xsi:ty
    pe' => 'array', 'item' => array('config' => array('name' => 'config', 'xsi:type' => 'array', 'item' => ar
    ray('component' => array('name' => 'component', 'xsi:type' => 'string', 'value' => 'Magento_Ui\/js\/gr...
    '), 'indexField' => array('name' => 'indexField', 'xsi:type' => 'string', 'value' => 'donations_id'))))))
    , 'attributes' => array('class' => 'Magento\\Ui\\Compo...', 'component' => 'Magento_Ui\/js\/gr...', 'name
    ' => 'ids'), 'children' => array()), 'donations_id' => array('arguments' => array('data' => array('name'
    => 'data', 'xsi:type' => 'array', 'item' => array('config' => array('name' => 'config', 'xsi:type' => 'ar
    ray', 'item' => array('dataType' => array('name' => 'dataType', 'xsi:type' => 'string', 'value' => 'text'
    ), 'component' => array('name' => 'component', 'xsi:type' => 'string', 'value' => 'Magento_Ui\/js\/gr...'
    ), 'componentType' => array('name' => 'componentType', 'xsi:type' => 'string', 'value' => 'column'), 'fil
    ter' => array('name' => 'filter', 'xsi:type' => 'string', 'value' => 'text'), 'sorting' => array('name' =
    > 'sorting', 'xsi:type' => 'string', 'value' => 'asc'), 'label' => array('name' => 'label', 'translate' =
    > 'true', 'xsi:type' => 'string', 'value' => 'ID')))))), 'attributes' => array('class' => 'Magento\\Ui\\C
    ompo...', 'component' => 'Magento_Ui\/js\/gr...', 'name' => 'donations_id'), 'children' => array()), 'nam
    e' => array('arguments' => array('data' => array('name' => 'data', 'xsi:type' => 'array', 'item' => array
    ('config' => array('name' => 'config', 'xsi:type' => 'array', 'item' => array('dataType' => array('name'
    => 'dataType', 'xsi:type' => 'string', 'value' => 'text'), 'component' => array('name' => 'component', 'x
    si:type' => 'string', 'value' => 'Magento_Ui\/js\/gr...'), 'componentType' => array('name' => 'componentT
    ype', 'xsi:type' => 'string', 'value' => 'column'), 'filter' => array('name' => 'filter', 'xsi:type' => '
    string', 'value' => 'text'), 'label' => array('name' => 'label', 'translate' => 'true', 'xsi:type' => 'st
    ring', 'value' => 'Charity Name')))))), 'attributes' => array('class' => 'Magento\\Ui\\Compo...', 'compon
    ent' => 'Magento_Ui\/js\/gr...', 'name' => 'name'), 'children' => array()), 'sku' => array('arguments' =>
     array('data' => array('name' => 'data', 'xsi:type' => 'array', 'item' => array('config' => array('name'
    => 'config', 'xsi:type' => 'array', 'item' => array('dataType' => array('name' => 'dataType', 'xsi:type'
    => 'string', 'value' => 'text'), 'component' => array('name' => 'component', 'xsi:type' => 'string', 'val
    ue' => 'Magento_Ui\/js\/gr...'), 'componentType' => array('name' => 'componentType', 'xsi:type' => 'strin
    g', 'value' => 'column'), 'filter' => array('name' => 'filter', 'xsi:type' => 'string', 'value' => 'text'
    ), 'label' => array('name' => 'label', 'translate' => 'true', 'xsi:type' => 'string', 'value' => 'Sku')))
    ))), 'attributes' => array('class' => 'Magento\\Ui\\Compo...', 'component' => 'Magento_Ui\/js\/gr...', 'n
    ame' => 'sku'), 'children' => array()), 'amount' => array('arguments' => array('data' => array('name' =>
    'data', 'xsi:type' => 'array', 'item' => array('config' => array('name' => 'config', 'xsi:type' => 'array
    ', 'item' => array('dataType' => array('name' => 'dataType', 'xsi:type' => 'string', 'value' => 'text'),
    'component' => array('name' => 'component', 'xsi:type' => 'string', 'value' => 'Magento_Ui\/js\/gr...'),
    'componentType' => array('name' => 'componentType', 'xsi:type' => 'string', 'value' => 'column'), 'filter
    ' => array('name' => 'filter', 'xsi:type' => 'string', 'value' => 'text'), 'label' => array('name' => 'la
    bel', 'translate' => 'true', 'xsi:type' => 'string', 'value' => 'Amount')))))), 'attributes' => array('cl
    ass' => 'Magento\\Ui\\Compo...', 'component' => 'Magento_Ui\/js\/gr...', 'name' => 'amount'), 'children'
    => array()), 'order_id' => array('arguments' => array('data' => array('name' => 'data', 'xsi:type' => 'ar
    ray', 'item' => array('config' => array('name' => 'config', 'xsi:type' => 'array', 'item' => array('dataT
    ype' => array('name' => 'dataType', 'xsi:type' => 'string', 'value' => 'text'), 'component' => array('nam
    e' => 'component', 'xsi:type' => 'string', 'value' => 'Magento_Ui\/js\/gr...'), 'componentType' => array(
    'name' => 'componentType', 'xsi:type' => 'string', 'value' => 'column'), 'filter' => array('name' => 'fil
    ter', 'xsi:type' => 'string', 'value' => 'text'), 'label' => array('name' => 'label', 'translate' => 'tru
    e', 'xsi:type' => 'string', 'value' => 'Order')))))), 'attributes' => array('class' => 'Magento\\Ui\\Comp
    o...', 'component' => 'Magento_Ui\/js\/gr...', 'name' => 'order_id'), 'children' => array()), 'order_stat
    us' => array('arguments' => array('data' => array('name' => 'data', 'xsi:type' => 'array', 'item' => arra
    y('config' => array('name' => 'config', 'xsi:type' => 'array', 'item' => array('dataType' => array('name'
     => 'dataType', 'xsi:type' => 'string', 'value' => 'text'), 'component' => array('name' => 'component', '
    xsi:type' => 'string', 'value' => 'Magento_Ui\/js\/gr...'), 'componentType' => array('name' => 'component
    Type', 'xsi:type' => 'string', 'value' => 'column'), 'filter' => array('name' => 'filter', 'xsi:type' =>
    'string', 'value' => 'text'), 'label' => array('name' => 'label', 'translate' => 'true', 'xsi:type' => 's
    tring', 'value' => 'Order Status')))))), 'attributes' => array('class' => 'Magento\\Ui\\Compo...', 'compo
    nent' => 'Magento_Ui\/js\/gr...', 'name' => 'order_status'), 'children' => array()), 'invoiced' => array(
    'arguments' => array('data' => array('name' => 'data', 'xsi:type' => 'array', 'item' => array('config' =>
     array('name' => 'config', 'xsi:type' => 'array', 'item' => array('dataType' => array('name' => 'dataType
    ', 'xsi:type' => 'string', 'value' => 'text'), 'component' => array('name' => 'component', 'xsi:type' =>
    'string', 'value' => 'Magento_Ui\/js\/gr...'), 'componentType' => array('name' => 'componentType', 'xsi:t
    ype' => 'string', 'value' => 'column'), 'filter' => array('name' => 'filter', 'xsi:type' => 'string', 'va
    lue' => 'text'), 'label' => array('name' => 'label', 'translate' => 'true', 'xsi:type' => 'string', 'valu
    e' => 'Invoiced')))))), 'attributes' => array('class' => 'Magento\\Ui\\Compo...', 'component' => 'Magento
    _Ui\/js\/gr...', 'name' => 'invoiced'), 'children' => array()), 'created_at' => array('arguments' => arra
    y('data' => array('name' => 'data', 'xsi:type' => 'array', 'item' => array('config' => array('name' => 'c
    onfig', 'xsi:type' => 'array', 'item' => array('dataType' => array('name' => 'dataType', 'xsi:type' => 's
    tring', 'value' => 'text'), 'component' => array('name' => 'component', 'xsi:type' => 'string', 'value' =
    > 'Magento_Ui\/js\/gr...'), 'componentType' => array('name' => 'componentType', 'xsi:type' => 'string', '
    value' => 'column'), 'filter' => array('name' => 'filter', 'xsi:type' => 'string', 'value' => 'text'), 'l
    abel' => array('name' => 'label', 'translate' => 'true', 'xsi:type' => 'string', 'value' => 'Created At')
    ))))), 'attributes' => array('class' => 'Magento\\Ui\\Compo...', 'component' => 'Magento_Ui\/js\/gr...',
    'name' => 'created_at'), 'children' => array()))))))) called at [vendor\/magento\/module-ui\/Config\/Data
    .php:111]\n#4 Magento\\Ui\\Config\\Data->initData() called at [vendor\/magento\/module-ui\/Config\/Data.p
    hp:136]\n#5 Magento\\Ui\\Config\\Data->get('experius_donatio...') called at [vendor\/magento\/framework\/
    View\/Layout\/Reader\/UiComponent.php:100]\n#6 Magento\\Framework\\View\\Layout\\Reader\\UiComponent->int
    erpret(&Magento\\Framework\\View\\Layout\\Reader\\Context#000000005ec444af00000000552218f6#, &Magento\\Fr
    amework\\View\\Layout\\Element#000000005ec4445400000000552218f6#, &Magento\\Framework\\View\\Layout\\Elem
    ent#000000005ec4445d00000000552218f6#) called at [vendor\/magento\/framework\/View\/Layout\/ReaderPool.ph
    p:105]\n#7 Magento\\Framework\\View\\Layout\\ReaderPool->interpret(&Magento\\Framework\\View\\Layout\\Rea
    der\\Context#000000005ec444af00000000552218f6#, &Magento\\Framework\\View\\Layout\\Element#000000005ec444
    5d00000000552218f6#) called at [vendor\/magento\/framework\/View\/Layout\/Reader\/Container.php:84]\n#8 M
    agento\\Framework\\View\\Layout\\Reader\\Container->interpret(&Magento\\Framework\\View\\Layout\\Reader\\
    Context#000000005ec444af00000000552218f6#, &Magento\\Framework\\View\\Layout\\Element#000000005ec4445d000
    00000552218f6#, &Magento\\Framework\\View\\Layout\\Element#000000005ec4445700000000552218f6#) called at [
    vendor\/magento\/framework\/View\/Layout\/ReaderPool.php:105]\n#9 Magento\\Framework\\View\\Layout\\Reade
    rPool->interpret(&Magento\\Framework\\View\\Layout\\Reader\\Context#000000005ec444af00000000552218f6#, &M
    agento\\Framework\\View\\Layout\\Element#000000005ec4445700000000552218f6#) called at [vendor\/magento\/f
    ramework\/View\/Page\/Config\/Reader\/Body.php:68]\n#10 Magento\\Framework\\View\\Page\\Config\\Reader\\B
    ody->interpret(&Magento\\Framework\\View\\Layout\\Reader\\Context#000000005ec444af00000000552218f6#, &Mag
    ento\\Framework\\View\\Layout\\Element#000000005ec4445700000000552218f6#, &Magento\\Framework\\View\\Layo
    ut\\Element#000000005ec444b600000000552218f6#) called at [vendor\/magento\/framework\/View\/Layout\/Reade
    rPool.php:105]\n#11 Magento\\Framework\\View\\Layout\\ReaderPool->interpret(&Magento\\Framework\\View\\La
    yout\\Reader\\Context#000000005ec444af00000000552218f6#, &Magento\\Framework\\View\\Layout\\Element#00000
    0005ec444b600000000552218f6#) called at [vendor\/magento\/framework\/View\/Layout.php:334]\n#12 Magento\\
    Framework\\View\\Layout->generateElements() called at [generated\/code\/Magento\/Framework\/View\/Layout\
    /Interceptor.php:89]\n#13 Magento\\Framework\\View\\Layout\\Interceptor->generateElements() called at [ve
    ndor\/magento\/framework\/View\/Layout\/Builder.php:129]\n#14 Magento\\Framework\\View\\Layout\\Builder->
    generateLayoutBlocks() called at [vendor\/magento\/framework\/View\/Page\/Builder.php:55]\n#15 Magento\\F
    ramework\\View\\Page\\Builder->generateLayoutBlocks() called at [vendor\/magento\/framework\/View\/Layout
    \/Builder.php:65]\n#16 Magento\\Framework\\View\\Layout\\Builder->build() called at [vendor\/magento\/fra
    mework\/View\/Page\/Config.php:224]\n#17 Magento\\Framework\\View\\Page\\Config->build() called at [vendo
    r\/magento\/framework\/View\/Page\/Config.php:247]\n#18 Magento\\Framework\\View\\Page\\Config->getTitle(
    ) called at [generated\/code\/Magento\/Framework\/View\/Page\/Config\/Interceptor.php:50]\n#19 Magento\\F
    ramework\\View\\Page\\Config\\Interceptor->getTitle() called at [vendor\/experius\/module-donationproduct
    \/Controller\/Adminhtml\/Donations\/Index.php:58]\n#20 Experius\\DonationProduct\\Controller\\Adminhtml\\
    Donations\\Index->execute() called at [vendor\/magento\/framework\/App\/Action\/Action.php:108]\n#21 Mage
    nto\\Framework\\App\\Action\\Action->dispatch(&Magento\\Framework\\App\\Request\\Http#000000005ec44c9e000
    00000552218f6#) called at [vendor\/magento\/module-backend\/App\/AbstractAction.php:248]\n#22 Magento\\Ba
    ckend\\App\\AbstractAction->dispatch(&Magento\\Framework\\App\\Request\\Http#000000005ec44c9e000000005522
    18f6#) called at [vendor\/magento\/framework\/Interception\/Interceptor.php:58]\n#23 Experius\\DonationPr
    oduct\\Controller\\Adminhtml\\Donations\\Index\\Interceptor->___callParent('dispatch', array(&Magento\\Fr
    amework\\App\\Request\\Http#000000005ec44c9e00000000552218f6#)) called at [vendor\/magento\/framework\/In
    terception\/Interceptor.php:138]\n#24 Experius\\DonationProduct\\Controller\\Adminhtml\\Donations\\Index\
    \Interceptor->Magento\\Framework\\Interception\\{closure}(&Magento\\Framework\\App\\Request\\Http#0000000
    05ec44c9e00000000552218f6#) called at [app\/code\/WeltPixel\/Backend\/Plugin\/Utility.php:76]\n#25 WeltPi
    xel\\Backend\\Plugin\\Utility->aroundDispatch(&Experius\\DonationProduct\\Controller\\Adminhtml\\Donation
    s\\Index\\Interceptor#000000005ec4489500000000552218f6#, &Closure#000000005ec4489200000000552218f6#, &Mag
    ento\\Framework\\App\\Request\\Http#000000005ec44c9e00000000552218f6#) called at [vendor\/magento\/framew
    ork\/Interception\/Interceptor.php:135]\n#26 Experius\\DonationProduct\\Controller\\Adminhtml\\Donations\
    \Index\\Interceptor->Magento\\Framework\\Interception\\{closure}(&Magento\\Framework\\App\\Request\\Http#
    000000005ec44c9e00000000552218f6#) called at [vendor\/magento\/module-backend\/App\/Action\/Plugin\/Authe
    ntication.php:143]\n#27 Magento\\Backend\\App\\Action\\Plugin\\Authentication->aroundDispatch(&Experius\\
    DonationProduct\\Controller\\Adminhtml\\Donations\\Index\\Interceptor#000000005ec4489500000000552218f6#,
    &Closure#000000005ec4489200000000552218f6#, &Magento\\Framework\\App\\Request\\Http#000000005ec44c9e00000
    000552218f6#) called at [vendor\/magento\/framework\/Interception\/Interceptor.php:135]\n#28 Experius\\Do
    nationProduct\\Controller\\Adminhtml\\Donations\\Index\\Interceptor->Magento\\Framework\\Interception\\{c
    losure}(&Magento\\Framework\\App\\Request\\Http#000000005ec44c9e00000000552218f6#) called at [vendor\/mag
    ento\/framework\/Interception\/Interceptor.php:153]\n#29 Experius\\DonationProduct\\Controller\\Adminhtml
    \\Donations\\Index\\Interceptor->___callPlugins('dispatch', array(&Magento\\Framework\\App\\Request\\Http
    #000000005ec44c9e00000000552218f6#), NULL) called at [generated\/code\/Experius\/DonationProduct\/Control
    ler\/Adminhtml\/Donations\/Index\/Interceptor.php:26]\n#30 Experius\\DonationProduct\\Controller\\Adminht
    ml\\Donations\\Index\\Interceptor->dispatch(&Magento\\Framework\\App\\Request\\Http#000000005ec44c9e00000
    000552218f6#) called at [vendor\/magento\/framework\/App\/FrontController.php:186]\n#31 Magento\\Framewor
    k\\App\\FrontController->processRequest(&Magento\\Framework\\App\\Request\\Http#000000005ec44c9e000000005
    52218f6#, &Experius\\DonationProduct\\Controller\\Adminhtml\\Donations\\Index\\Interceptor#000000005ec448
    9500000000552218f6#) called at [vendor\/magento\/framework\/App\/FrontController.php:119]\n#32 Magento\\F
    ramework\\App\\FrontController->dispatch(&Magento\\Framework\\App\\Request\\Http#000000005ec44c9e00000000
    552218f6#) called at [vendor\/magento\/framework\/Interception\/Interceptor.php:58]\n#33 Magento\\Framewo
    rk\\App\\FrontController\\Interceptor->___callParent('dispatch', array(&Magento\\Framework\\App\\Request\
    \Http#000000005ec44c9e00000000552218f6#)) called at [vendor\/magento\/framework\/Interception\/Intercepto
    r.php:138]\n#34 Magento\\Framework\\App\\FrontController\\Interceptor->Magento\\Framework\\Interception\\
    {closure}(&Magento\\Framework\\App\\Request\\Http#000000005ec44c9e00000000552218f6#) called at [vendor\/m
    agento\/framework\/Interception\/Interceptor.php:153]\n#35 Magento\\Framework\\App\\FrontController\\Inte
    rceptor->___callPlugins('dispatch', array(&Magento\\Framework\\App\\Request\\Http#000000005ec44c9e0000000
    0552218f6#), array(array('default_store_se...', 'page_cache_from_...', 'storeCookieValid...', 'install',
    'configHash'))) called at [generated\/code\/Magento\/Framework\/App\/FrontController\/Interceptor.php:26]
    \n#36 Magento\\Framework\\App\\FrontController\\Interceptor->dispatch(&Magento\\Framework\\App\\Request\\
    Http#000000005ec44c9e00000000552218f6#) called at [vendor\/magento\/framework\/App\/Http.php:116]\n#37 Ma
    gento\\Framework\\App\\Http->launch() called at [generated\/code\/Magento\/Framework\/App\/Http\/Intercep
    tor.php:24]\n#38 Magento\\Framework\\App\\Http\\Interceptor->launch() called at [vendor\/magento\/framewo
    rk\/App\/Bootstrap.php:261]\n#39 Magento\\Framework\\App\\Bootstrap->run(&Magento\\Framework\\App\\Http\\
    Interceptor#000000005ec44c7400000000552218f6#) called at [pub\/index.php:40]\n","url":"\/ferni\/experius_
    donationproduct\/donations\/index\/key\/b33aa05821f496fc1fb9f219ef163e1307c709d2ff6bf4966cde29dcfcaf6745\
    /","script_name":"\/index.php","report_id":"95a6bfb077f4861adab0e7ce271b24c794a0a80505414a31f7060424d3ed6
    658"}
    
    opened by reshadzazai 0
  • The shipping address is wiped out after adding a donation product to the cart at the payment step on the checkout page

    The shipping address is wiped out after adding a donation product to the cart at the payment step on the checkout page

    Hi,

    First, I wanted to thank you for creating this great useful donation module.

    Everything is working fine for me except when I add a donation product to the cart at the payment step on the checkout page. The shipping address is wiped out after the page is reloaded, see here - https://prnt.sc/y80krx

    I confirmed that reloading the payment step on the checkout page doesn't wipe out the shipping address by default. I'm using Magento 2.4.1 checkout functionality.

    Do you have any ideas/hints on why this is happening and how to fix it?

    Best Regards, Toan

    opened by toan-tam 0
Releases(1.2.3)
Owner
Experius
Experius E-commere System Intergrator
Experius
WooCommerce Empty Cart Button plugin helps you to add Empty Cart button to WooCommerce Pages/Sections using Shortcode only.

WooCommerce Empty Cart Button plugin helps you to add Empty Cart button to WooCommerce Pages/Sections using Shortcode only. How to use? Download the p

Katr 2 Sep 24, 2022
Adds my own text to WooCommerce add to cart button.

My Add to Cart Text Adds my own text to WooCommerce add to cart button. Installation Get the .zip package of this plugin. Install manually to your Wor

Kharis Sulistiyono 1 Jan 25, 2022
Magento 2 custom extension to add custom attributes(longitude, latitude) to customer address

Magento 2 custom extension to add custom attributes(longitude, latitude) to customer address. Then save them to quote model and copy them from quote address to order address on bakend, frontend, rest api

MageArab 2 Jul 14, 2022
Magento 2 module to quickly acces products, orders and customer from admin menu

Magento 2 module to quickly access product, order or customer views Introduction The Magento 2 backend can be sluggish. Ever wanted to access a produc

null 1 Dec 3, 2021
Force Customer Login Module for Magento 2

Force Login Module for Magento® 2 The Force Login Module for Magento® 2 allows you to restrict which pages a visitor is able to see. Visitors get redi

bitExpert AG 153 Oct 30, 2022
A Magento 2 module that enables configurable CORS Headers on the GraphQL and REST APIs

Magento 2 CORS Magento Version Support Ever try to work with the Magento GraphQL API or REST API from your browser and see the following? Access to XM

Graycore, LLC 62 Dec 8, 2022
Magento Quickorder module, enables bulk order creation by inputting SKUs & quantities.

Extension User Guide This extension was developed to enable merchants to allow customers to place multiple orders of various quanities quickly, in an

Popesites 30 Apr 24, 2022
Enhancement to Magento to allow simple product prices to be used instead of the default special-case configurable product prices

Simple Configurable Products Extension For Magento This documentation applies to SCP versions 0.7 onwards. The documentation for SCP v0.6 and earlier

Simon King 288 Nov 7, 2022
JsonCollectionParser - Event-based parser for large JSON collections (consumes small amount of memory)

Event-based parser for large JSON collections (consumes small amount of memory). Built on top of JSON Streaming Parser This packa

Max Grigorian 113 Dec 6, 2022