Ok Jörg,
if I understand correctly, this is not a 'cancel order' or 'ask for a refund' kind of feature.
It should be a clearly visible and accessible button that says 'Withdraw from contract' or 'Revoke contract'. It should be available 14 days for the EU, next to the order in the user account (it needs to be accessible for guest orders as well).
It needs to open a form asking:
- name
- email address
- order number
with a button labelled 'Confirm withdrawal'.
A confirmation receipt needs to be sent as well.
In J2Commerce, the withdrawal event needs to be added to the order history as 'Customer exercised legal right of withdrawal via online button.' (needs to be traceable for audits, refunds and customer service). It would be good to 'flag' the requests in the orders and in a separate view that would aggregate all demands (probably a 'processed' status should be added as well).
The email should look like this:
Subject: Your Contract Withdrawal Has Been Received
Body:
Hello {name},
We confirm that we have received your withdrawal from the contract associated with the following order:
Order number: {order_number}
Date of withdrawal: {timestamp}
Email used: {email}
Your withdrawal request has now been registered.
If the order has already been shipped or delivered, we will send you the return instructions (if applicable) in a separate message. Any refund due under the withdrawal rules will be processed once the returned goods have been received or once you have provided proof of return, in accordance with EU consumer law.
If you believe any of the information above is incorrect, feel free to reply to this message.
Thank you.
{shop_name}
{shop_contact_information}
Now, we need to implement this as a plugin, which I believe should be available free of charge for EU shops.
According to the research I have done, we also need an additional database table to avoid the overloading of the 'orders' table and this will ease the audit reporting.
The orders could also have additional status: 'Withdarwal received', 'Withdarwal preocessed' and even 'Withdarwal confirmed'.
The customer email and id should be the only user info that should be recorded in the new table for GDPR compliance (IP and user agent could be recorded, though).
I think that should cover it :-)
Not as simple as just adding a button in the frontend!
We are looking into it and will prepare something that can cover your basis on this one :-)