Pickup Shipping Option
Per Product Specification
You can mark a product as only available for pickup by enabling "Pick up only" in DXP > Products > Product Detail > Shipping. You can also specify a handling fee for an item. Marking a product as pickup only will exclude it from the normal computations of some delivery methods and add the total handling fee instead.
Add as Shipping Option
You may specify a pickup option directly in the checkout process indicating that you want every item on your cart to be picked up from the store. The handling fee in this option will override the per product handling fee.
Old Checkout Process
- Create a "Delivery by Pickup" shipping configuration in DXP > Config > Shipping
- Specify a handling fee
- Set Authority to Read or higher
- The option should now be visible in the shipping selection
New Checkout Process
- In DXP > Shipping. Choose a shipping zone or create one if desired.
- Click "Shipping Methods" in your selected zone
- Enable "Pickup"
- Specify the "Handling Cost" by clicking the Settings button beside the "Pickup Option"
Determine for-pickup Products in Frontend
Product Listing/Product Details
You can use the getPickupOnly() method in the $product object to determine if the product is for pickup only. With this you can display a message to inform the user about this.
<h3 class="detail"><{$product->getName()|replace:"&":"&"}> <{if $product->getPickUpOnly()}>(Pickup Only)<{/if}></h3>
You can also get the specific handling fee by calling the getHandlingFee() method.
Cart/Cart Payment
The methods to use is similar to the Product Listing/Product Details section above. The only difference is you have to access it using the $new_cart_products_detail array.
<{foreach key=k name=main from=$new_cart_products_detail item=currprod}> <a href="/catalogue/<{$currprod.category}>/<{$currprod.url_name|@default:$currprod.id}>"><{$currprod.name}> <{if $currprod.object->getPickUpOnly()}>(PICKUP ONLY)<{/if}> <{/foreach}>
Delivery Calculation
The following business rules have been applied for the calculation of the order:
- If the shipping option selected is for pickup, then the shipping cost will be equal to the handling fee specified in the configuration (See Add as Shipping Option section)
- If there is a pickup option enabled but the user did not choose this option (selected free, flatrate, etc), then the individual product pickup handling fee will be added to the current delivery cost; however
- If all the products are marked as for-pickup, then the calculation will be as if the for pickup option is selected (see item 1); but
- if there is no pickup option enabled, then the total product handling fee will be used
- Delivery methods that rely on the item count of the cart to determine the delivery cost, will exclude any items that are marked as for-pickup from their calculation. Other options that uses the weight or volume of the products will not be affected aside from the additional handling fee.