Hello!
I need a case where customer can order some product every X days automatically and manage these automatic orders. For instance, Customer wants to buy Milk every second day - so order with Milk is automatically generated every second day, Site Administrator may call (SMS, email) Customer and remind him about newly generated order, propose some new products (like new kind of butter), Customer should approve order without need to enter Payment and Shipment Details, and finally Milk goes for Customer with minimal effort from Customer side.
Customer is happy, because he doesn't think about orders every day, but likes to drink fresh crafted milk every morning.
Site Administrator can predict revenue and has much more flexibility to propose some campaigns and discounts.
Vendor knows demand and can plan and optimize future production.
I tried to use Recurring payments for this, but didn't find a way to do this. Recurring cycle is managed by Administrator/Vendor, not Customer, There is no way to have recurring product with others in one order, etc..
So, I think about extending of base functionality instead of using Recurring payments.
I'm not sure about this decision, since Recurring payments have strong footprint in the code.
Please, give your feedback on this plan.
May be there is third party plugin or module or hack with needed functionality?
Extending plan:
1. I'm going to use Wishlist functionality for Recurring products managed by Customer. So, add new field to ShoppingCartItem entity - int EveryXDays and add this field to the form of editing WishList. Customer now can adds some products to wishlist and specifies a recurring interval for every product.
2. Create a Scheduled Task which searches for all Wishlist products with EveryXDays > 0, for every item find Orders for this ProductId and CustomerId and if ShippedDate + EveryXDays > Today, then add this product to the new Order. Order can consists more than one item if several Products were found.
Task copies Payment and Shipping details to new order - since details are stored in previous orders. Right?
Then Tasks notifies Customer and Site Administrator to Approve new order.
3. Customer can delay this order or change quantity, Administrator can propose new products - both are happy.
I hope there is simple option to create order but doesn't process it before Site Administrator approve generated order. Right?
4. Further we can create reports for vendors to optimize their production, create new discounts, etc..
Sounds good? What risks and difficulties are you see?