integer-net / magento2-shippingpreselection
This module provides methods to preselect a shipping method upon quote creation of the customer. It fetches all available countries from Magento Config and will preselect the default country/region/postcode of the current storeview.
Installs: 6 981
Dependents: 0
Suggesters: 0
Security: 0
Stars: 2
Watchers: 11
Forks: 4
Open Issues: 3
Type:magento2-module
Requires
- php: ~7.3||~7.4
- magento/framework: ^103.0.0
- magento/module-customer: ^103.0
- magento/module-quote: ^101.2
Requires (Dev)
- bitexpert/phpstan-magento: ^0.9.0
- bkubicki/magento2-unit-tests-doubles: ^1.2.0
- magento/magento-coding-standard: @dev
- pds/skeleton: ^1.0
- phpro/grumphp: ^v0.21.0
- phpstan/phpstan: ^0.12.0
- phpunit/phpunit: ^6.0|^9.0
- roave/security-advisories: dev-master
- squizlabs/php_codesniffer: ^3.5
This package is auto-updated.
Last update: 2023-02-20 13:56:31 UTC
README
⚠️ THIS PACKAGE IS NO LONGER MAINTAINED
It was provided open source "as is" on demand, but since we do not even use this approach in our own projects anymore, we won't make any effort to keep this up to date.
Do you need help with implementing shipping estimation on the cart page for the default country? Contact info@integer-net.de with your inquiry.
IntegerNet ShippingPreselection (AutoShipping)
This module preselects the cheapest shipping method by filling shipping address with mock data and default country/region/postcode of the current storeview.
Upon entering checkout, PayPal Express or PayOne pages, the mock data is removed from shipping address.
Installation
-
Install it into your Magento 2 project with composer:
composer require integer-net/magento2-shippingpreselection
-
Enable module
bin/magento setup:upgrade
Configuration
In general, make sure your configuration settings meet requirements:
- postcode, region and country set in General > Store Information
- all available countries need to have at least one shipping method available
- available countries cannot have mandatory region setting
- Add selectedShippingCountry select to
Mage_Checkout::cart.phtml
<?= $block->getChildHtml('shipping_country') ?>
- Add shipping country script to
Mage_Checkout::cart/js/cart.phtml
updateCartDataDependencies() {
[...]
this.selectedShippingCountry = this.cartData && this.cartData.shipping_addresses && this.cartData.shipping_addresses[0] && this.cartData.shipping_addresses[0].country && this.cartData.shipping_addresses[0].country.code || null
},
<?= $block->getChildHtml('shipping_country_js') ?>
-
Set config value for the mock data
integernet/shipping_preselection/mock_data
to custom value if desired -
If you have an altered cart query for GraphQl, you need to override
IntegerNet\ShippingPreselection\ViewModel\ShippingAddressMutation
accordingly.
.
Please mind: The template provided is supposed to work with table rates / one shipping method.
If you have several shipping methods and through changes made in cart - like quantity changes - the best available method changes, this will not be recognized by the module (because a shipping method is already in place). You can solve this by checking client-side in the cart, or adding a check backend-wise.
Extending configuration
Override config values for integernet/shipping_preselection/mock_clearance_urls or hook into the service to modify behaviour for pages where the shipping address should be (un-)mocked.
Known issues
1. When aborting PayPal Express and return to cart, the shipping method isn't displayed anymore
Paypal doesn't properly set the telephone address attribute, as it is called differently in its response. You can make the telephone field nullable in a etc/schema.graphql
of your own
interface CartAddressInterface {
telephone: String
}
input CartAddressInput {
telephone: String
}
Changelog
Please see CHANGELOG for more information on what has changed recently.
Contributing
Please see CONTRIBUTING for details.
Security
If you discover any security related issues, please email security@integer-net.de instead of using the issue tracker.
Credits
License
The MIT License (MIT). Please see License File for more information.