Recurring orders managed by customer - How?

This topic was automatically closed 365 days after the last reply. New replies are no longer allowed.
8 years ago
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?
8 years ago
bongiozzo wrote:
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?


Hello


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.

I think using wishlist is not good approch b'coz may be customer will delete the wishlist item and it will stop schedule task funtionality.

for shopping cart item yes you have to add new filed for recurring cycle period and length etc so customer can choose the recurring period for each product.

the good approach is modifying the recurringpayment funtionality.

currently the nop is creating one initial order which will be copying on next time for new orders.

also main things is how you are processing the payment ??

are you storing the credit card info at db level to use it next time if so it will be credit card info security issue as well ??

so you have to choose good payment provider that will support recurring payments so payment provider will charge the customer depend on recurring period and they will call callback url when they process so that time we have to place new order as per recurringpayment.initialorder

I have fully customized the recurring order processing system for one of my client.

also one other issue is after placing the recurring initial order it using that order information for all next processing order so if customer want to change the qty or add or delete the product on recurring order it will create issue.

b'coz we can't change the existing placed order item of initial order b'coz its not good approach to modify already placed order.

so for that purpose we have created another recurrign template table to store all things and use that instead of initial orders.

Thanks
8 years ago
vipul.dumaniya wrote:
Hello!

I think using wishlist is not good approch b'coz may be customer will delete the wishlist item and it will stop schedule task funtionality.

for shopping cart item yes you have to add new filed for recurring cycle period and length etc so customer can choose the recurring period for each product.

the good approach is modifying the recurringpayment funtionality.

currently the nop is creating one initial order which will be copying on next time for new orders.

also main things is how you are processing the payment ??

are you storing the credit card info at db level to use it next time if so it will be credit card info security issue as well ??

so you have to choose good payment provider that will support recurring payments so payment provider will charge the customer depend on recurring period and they will call callback url when they process so that time we have to place new order as per recurringpayment.initialorder

I have fully customized the recurring order processing system for one of my client.

also one other issue is after placing the recurring initial order it using that order information for all next processing order so if customer want to change the qty or add or delete the product on recurring order it will create issue.

b'coz we can't change the existing placed order item of initial order b'coz its not good approach to modify already placed order.

so for that purpose we have created another recurrign template table to store all things and use that instead of initial orders.

Thanks


Whishlist and Shopping Cart Item is the same table in NOP.

1. Actually I'm going to rename Whishlist link to Recurring items or something like this. If customer delete Whishlist item (or recurring item) though he changes recurring orders intentionally. New order is created from active Whishlist items with EveryXDays >0 and customer manages them.

2. I'm ok with payments in cash... Or customer will has to enter CVV only.

What do you think?
8 years ago
yes you can use as per your thoughts.

but i think using that way you are not able to use exisiting recurring payments funtionality.

as you said you have to handle it manually using schedule task.

also have you think about what if customer want to place multiple recurring order with diff. products ??

also for payment method if its COD (cash on delivery) then no issue but if you are using credit card then yet it required all recurired detail for credit card processing.
8 years ago
vipul.dumaniya wrote:
yes you can use as per your thoughts.

but i think using that way you are not able to use exisiting recurring payments funtionality.

as you said you have to handle it manually using schedule task.



Recurring payments don't solve my task - can't mix recurring items with other, customer can't manage recurring cycles.

Did you solve these tasks? Could you share description of your solution? Is it possible to use it? How?

Schedule tasks implementation seems to be quite simple - I described it above.

vipul.dumaniya wrote:


also have you think about what if customer want to place multiple recurring order with diff. products ??

also for payment method if its COD (cash on delivery) then no issue but if you are using credit card then yet it required all recurired detail for credit card processing.


Generated order by Task is ordinary order - it can be different every time. Task adds to newly generated order any items with satisfied EveryXDays criteria and when it is filled - operator and Customer discuss this order.

Btw, it's ok to store Card information without CVV and ask Customer to enter it as its approve? I see in code that credit card information (including CVV) is stored for orders - so can it be copied for new order?
8 years ago
bongiozzo wrote:


Recurring payments don't solve my task - can't mix recurring items with other, customer can't manage recurring cycles.

Did you solve these tasks? Could you share description of your solution? Is it possible to use it? How?

Schedule tasks implementation seems to be quite simple - I described it above.



if you want to use shortest way then your solution is good.

I have already describe my solution above to update recurring payments and Initial order created during first recurring orders but it required more effort.

As per nop system when customer place recurring order it will create recurring payment and create one order that is initial order that will be copy to new order that will generated on next time

But as per that logic customer can not add or modify the product item that already placed.

so for that i have copy whole order and orderitem table and create recurringordertemplate & recurringorderitem table

so that will be filled on first recurring order then need to give interface on my account to customer to change recurring order item etc.

there is already filed on recurring payment for recurring cycle length and cycle period that you have to set depend on customer choosen value on cart.

so the cycle length & period will be per cart on cartItem so all item has same period.

so if customer want to create two recurring order with diff. cycle period and lenght then customer will place two orders.

then you just need to create one task that will get all current date as next processing date recurring payment and just need to process it. using ProcessNextRecurringPayment method or order processing service.

bongiozzo wrote:


Generated order by Task is ordinary order - it can be different every time. Task adds to newly generated order any items with satisfied EveryXDays criteria and when it is filled - operator and Customer discuss this order.

Btw, it's ok to store Card information without CVV and ask Customer to enter it as its approve? I see in code that credit card information (including CVV) is stored for orders - so can it be copied for new order?


yes you can use this flow if you want customer to approve it and complete the payment of pending order.

so it require customer interaction for each order to complete the pending payments.

if you store CVV and all sensitive information on db level then it will create securing issue and you need to follow the PCI compliance for storing credit card information.
6 years ago
Hi Vipul,

As you mentioned here that you have plugin for recurring order..so can we see the demo for the same to ensure that its as per our expectation
This topic was automatically closed 365 days after the last reply. New replies are no longer allowed.