Order creation adds unwanted shipping bucket - intershop

The case is following, we have a basket on which we have set only one shipping method, and which at point before order creation contains only one shipping bucket, with shipping method named "pickup".
There are 3 products in cart, two normally added products and one free gift which is added automatically with basket calculation.
This state is in pictured here:
After the order creation process (chain handlers for order creation are enabled), order contains two shipping buckets, one containing application default delivery method which is named "delivery", this is wrong and we don't want that to happen but don't know how to control it. One shipping bucket contains free gift and other contains other products. This state is displayed here:
How can we prevent having another shipping bucket being created for free gift?
EDIT: Intershop version is 7.10.15.3

I am unable to reproduce the problem on 7.10.15.2 with the standard demo shop. It is hard to say if this is a bug or a configuration problem. Can you try to reproduce this issue on an inspired demo shop?
Make sure the free gift item has the same shipping address (on line item level), shipping method and is in the same freight class as the other products.
If the problem is in the OrderCreationChain then have a look at the handlers.
Using this dev tool (only for development env)
/INTERSHOP/web/WFS/inSPIRED-inTRONICS-Site/en_US/-/USD/InspectHandlerChains-Start
There must then be a handler in that chain that creates this second bucket. Hope this helps in finding the problem.

Related

How to charge different amount on an order after processing via WooCommerce API

Take this example:
A user places an order for 2 items on a WooCommerce shop. The order is picked up (using REST) by a POS (Point-of-Sale) system. The owner discovers that only one of the items is available (for whatever reason) and decides to amend the order by removing the non-existing item.
How does the POS system tell WooCommerce (via REST API) that the order is "completed" (so that WooCommerce plug-in can do the capture (charge) of the payment at the payment provider), but at the same time tells WooCommerce that it should only charge the price for the one item, and not the price registered on the order?
In another shop we manage, we can tell the shop the amount to charge when we change the order status to "completed" - how do we do this properly in WooCommerce?
Option 1:
Some payment methods e.g. PayPal allows you to authorize (reserve the amount) without capturing it right away, so this could be used to address your issue in the following flow:
Payment method payment action is set to Authorize to reserve the funds on customers account.
Customer places an online order.
POS system calls GET /wp-json/wc/v3/orders/<id> to retrieve order details.
Optional. Changes are made to order items and PUT /wp-json/wc/v3/orders/<id> Rest API endpoint called to update the order details.
Another PUT /wp-json/wc/v3/orders/<id> request is made to change order status from processing to completed. This will trigger payment method to capture the funds based on current order total.
Note: It might be possible to combine steps 4 and 5.
Option 2:
If payment method you are using does not support authorizations, your other option is refunds.
Payment method configured to capture the funds.
Customer places an online order.
POS system calls GET /wp-json/wc/v3/orders/<id> to retrieve order details.
PUT /wp-json/wc/v3/orders/<id> request is made to change order status from processing to completed.
A refund in desired amount can be created by calling POST /wp-json/wc/v3/orders/<id>/refunds end point.
Note: Some payment methods do not support partial refunds. A REST API call will be needed to update order and remove products that could not be shipped. You may need to test when it is the best time to make such call so it does not affect refund/order totals.

Creating order without shipping/delivery

We need to create Intershop order with product that doesn't require delivery (mobile network plan with monthly payments). As far as we know each basket and order requires to have a shipping method and addresses for it.
Is there a way to avoid setting shipping method or addresses on basket and order since we are not using it, or to setup a shipping method that requires no address.
We also tried to skip setting shipping method on basket and create order with it but it failed.
Also we have tried searching Intershop documentation for digital products and there were a few mentions only of digital addresses but no further info could be found that is relevant to our case.
EDIT: We are not using PWA and we do have physical products (mobile phones) for which we are using standard shipping methods.
To totally circumvent shipping method and shipping address might be quite hard. Are you using PWA? Are there only digital products in your system?
The imho easiest way to achieve something similar out of the box is to use FreightClass "DIGITALDELIVERY" for your products. You will still need to add a shipping address, but an email on that shipping address should be enough (maybe just take over from invoice address? it will then belong to destination region "email-addresses"). Then shipping method "E-mail Delivery" should be available.

Woocommerce Subscriptions and synced force sell doesn't work?

I'm trying to create a situation in which a guarantee (no VAT) is automatically added to the cart when you order a variable subscription product. This should be done only one with the first transaction, not with the next payment in the subscription, therefore a grouped product construction.
I try to do this with the plugins mentioned above, but it simply doesn't appear in the shopping cart.
Any idea why and how to fix it?
For the grouped product, see also: https://www.rentyourmac.com/product/the-master-macbook-test-subscription/

Woocommerce Custom Delivary options

I want 2 functions in woocomerce:
1. Click and collect: This is where the customers puts in an order and comes to the store to collect it. The customer should be able to set approx time they want order to be ready for. The store should be able to set minimum time to have order ready.
With click and collect they have 16 stores so person should be able to choose store to collect and then receive a receipt for pick up at the store. They pay for goods on the website.
Each store needs to be able to receive the order either by having a dashboard or by email system.
Delivery: They will also have a delivery service where people can order larger quantities for delivery to their home or their business or event. this is more conventional eCommerce transaction.
Your best bet to add multiple locations for collection is a plugin like Local Pickup Plus. While it's certainly possible to add this functionality in yourself I'd recommend just buying a plugin. Having built something similar I came to the conclusion that -- accounting for my hourly rate -- I had saved myself no money whatsoever by building it from scratch.
i have created a advanced local delivery plugin, check this out a link

Database relations query

I have two database tables
this is a sample database of a Ticketing system.
Figure 1: Sample table of air ticket.
Figure 2: Sample table of tax.
Requirement:
When ticket is made from the interface, it has multiple taxes of different names every time.
How can I store this information i.e. 'n' number of taxes for each ticket with different names every time.
I have tried to make many to many relationship but the problem is:
For each ticket if the tax is not setup, then need to add the tax first.
Any optimal solution for this?
"the problem is: For each ticket if the tax is not setup, then need to
add the tax first."
This is not a real-life problem. In real life governments declare taxes well in advance of collecting them, This gives organizations sufficient time to amend their systems which need to handle taxes. Tax is never a surprise.
"But this is very tiring solution for the end user.... to make bunch
of tax setup for each ticket"
This sort of thing is reference data, and is the duty of the system developer (hint: that's you) to populate the reference data tables. Or at least provide a screen where the user can create or amend various taxes. This is a different function from defining a ticket type.
The Ticket Creation screen should have a drop-down list (or similar widget) displaying all the existing taxes, which allows the user to pick the relevant one(s). If you reall think it's necessary you can include a link to the Create Tax screen, but that really is a very confusing workflow.
If the commentators are correct, and this is a ticket purchasing function, then your design is seriously wrong. Sales taxes must be included automatically to the cost of the purcahse as part of the transaction. Otherwise nobody would pay any tax.

Resources