iron-bound-designs / exchange-addon-licensing

iThemes Exchange Licensing Add-on
GNU Affero General Public License v3.0
6 stars 2 forks source link

Upgrade License #24

Open TimothyBJacobs opened 9 years ago

TimothyBJacobs commented 9 years ago

Customer's need to have a way to easily upgrade from one license type to another license type.

This would probably be done in a similar manner to how we handle renewals. We will add an additional button to the Super Widget prompting people to upgrade their license if they have an existing license for this product.

The upgrade price would be the new price, minus the existing price.

TimothyBJacobs commented 9 years ago

Editing upgrade paths is done in a product feature called Licensing Upgrades.

edit product upgrade paths view

A new upgrade path is created by clicking the plus icon. This will then reveal two select boxes for selecting the product and the variant.

edit product upgrade paths add new

TimothyBJacobs commented 9 years ago

Upgrades are configured in a linear manner.

A user can upgrade to any configuration along the path forward from the level they are currently at.

When a user upgrades to another version discounts will be automatically applied. If there is a gap between the upgrade paths, the discounts will be applied sequentially to arrive at a final price.

TimothyBJacobs commented 9 years ago

Upgrades will be stored as a custom post type. The post_parent field will be utilized to distinguish the order in which upgrade paths should be stored. They will be associated with a licensing product with the menu_order field.

Once a user has added an upgrade path contain a product different from the current product, they will no longer be able to add any other upgrade paths.

To summarize each upgrade path begins with the current product and variant with the lowest activation limit, and ends with a different product and its lowest activation limit variant.

TimothyBJacobs commented 8 years ago

Thats a crap idea. The reverse should be how the data is stored. post_parent is used to associate an upgrade path with the product, and menu_order controls the order the upgrade paths can be utilized in.