The site I am developing has a "product designer" where lots of options can be set, text entered, etc. I am storing all this extra info as OrderLine Properties and that is all working fine.
I now need to add the ability for a logged in user (Umbraco member) to store a "product design" which they can come back to later.
Initially I thought about adding a new order status ("Saved"?) and setting that when they choose to save the design. The product designer User Control creates a Tea Commerce order and adds order lines, properties, etc.
If I was to follow the above procedure, how do I "finish" using the saved order and start a new order if they carry on with a new product?
If the user later selects the saved product (order), I can set the current order to be this one ... but what about if they come back and select the saved product multiple times? I.E how would I make it a new order number each time?
I can't help thinking that this is not the best approach ... what do you think and do you have any suggestions? Could I use the Tea Commerce tables in a non-order way to store saved products / orders / baskets?
You could hook into the .NET API and give all orders a unique GUID and make a new method that goes in the DB and look for an order id from a guid and loads the order into the customers session. You can use the Base.RemoveOrder to remove the current order from the customers session.
If they selects a saved order multiple times you can use the .NET API to load the order and then call Clone on it. You would have to maybe set some of the properties to null depending on your setup - but this would be a start :)
This is a good way to do it and I think it would work!
The situation has become more simple - I only need to save the conents of the current basket (= order). If the saved basket is retrieved later and completed then it is no longer a "saved" basket.
I have managed to save a basket with a member ID assigned and a custom status of "saved" - the question is, how do I retrieve such orders (saved baskets)?
I tried the following but it doesn't retrieve the "saved" order:
var orders = TeaCommerce.Data.Order.OrdersXmlCache.Root.XPathSelectElements("./order [@memberId=" + m.Id + "]")
The orders should be finalized before that we be in the OrdersXmlCache. If you need to get the order from a specific guid or some other identifier - you will have to write a little sql script that will look in the database and find the right order id and then load that id into the SessionController.
We normally saves a guid as an order property and then receives it from the DB.
Sorry - yeah a finalized order is one that is paid for. When its a cart you need to go to the DB and fetch it. We dont that this isnt the best way to do it - but it works! :) We will make a much nicer API for Tea Commerce 2.0
Save Basket
The site I am developing has a "product designer" where lots of options can be set, text entered, etc. I am storing all this extra info as OrderLine Properties and that is all working fine.
I now need to add the ability for a logged in user (Umbraco member) to store a "product design" which they can come back to later.
Initially I thought about adding a new order status ("Saved"?) and setting that when they choose to save the design. The product designer User Control creates a Tea Commerce order and adds order lines, properties, etc.
If I was to follow the above procedure, how do I "finish" using the saved order and start a new order if they carry on with a new product?
If the user later selects the saved product (order), I can set the current order to be this one ... but what about if they come back and select the saved product multiple times? I.E how would I make it a new order number each time?
I can't help thinking that this is not the best approach ... what do you think and do you have any suggestions? Could I use the Tea Commerce tables in a non-order way to store saved products / orders / baskets?
Hi Gordon
Sorry for the late response - Codegarden 12 :)
You could hook into the .NET API and give all orders a unique GUID and make a new method that goes in the DB and look for an order id from a guid and loads the order into the customers session. You can use the Base.RemoveOrder to remove the current order from the customers session.
If they selects a saved order multiple times you can use the .NET API to load the order and then call Clone on it. You would have to maybe set some of the properties to null depending on your setup - but this would be a start :)
This is a good way to do it and I think it would work!
Kind regards
Anders
The situation has become more simple - I only need to save the conents of the current basket (= order). If the saved basket is retrieved later and completed then it is no longer a "saved" basket.
I have managed to save a basket with a member ID assigned and a custom status of "saved" - the question is, how do I retrieve such orders (saved baskets)?
I tried the following but it doesn't retrieve the "saved" order:
The orders should be finalized before that we be in the OrdersXmlCache. If you need to get the order from a specific guid or some other identifier - you will have to write a little sql script that will look in the database and find the right order id and then load that id into the SessionController.
We normally saves a guid as an order property and then receives it from the DB.
Kind regards
Anders
I thought "finalised" meant "paid for"!?
The Tea Commerce admin can find it - by selecting Order Stage = Cart ... can I do the same in C# ?
Sorry - yeah a finalized order is one that is paid for. When its a cart you need to go to the DB and fetch it. We dont that this isnt the best way to do it - but it works! :) We will make a much nicer API for Tea Commerce 2.0
Kind regards
Anders
is working on a reply...