VirtueMart Forum

VirtueMart General => Commercial Jobs => Topic started by: brendonhatcher on May 21, 2012, 05:33:18 AM

Title: Interesting customisation code challenge - quotes please
Post by: brendonhatcher on May 21, 2012, 05:33:18 AM
This is a serious request for a quote, not a fishing trip...
The attached file has the same text, but better formatted.

Thanks
Brendon

Overview

The site sells door components - doors, frames, hinges, locks etc.
An additional service is the assembly of the door based on the components the customer selects.

Customers therefore have two buying choices on the site:

Mode 1: Order individual door components
Ordering individual components uses the standard Virtuemart process - catalogue → product → cart → checkout.  This mode requires no modifications.

Mode 2: Select a set of components and have the door assembled for them
Ordering an assembled doorset uses the same VirtueMart elements, but a different process - start the doorset → browse through and select components → complete the door assembly parameters → cart → checkout.

Users cannot mix Mode 1 and Mode 2 in a single purchase process.

Starting a doorset

User browses to the doorset page (standard Joomla article) that explains the concept.
They click on a button that says "Begin doorset".
The button click triggers the following actions:
If the cart is already populated, a warning and user prompt appears:
"You have individual products in your shopping cart.  You cannot purchase these items in the same order as a doorset.  You can clear the cart and start the doorset order, or you can complete the current order and then return to this page later to start the doorset."
Button 1: "Clear cart and begin doorset" → resets the cart to empty
Button 2: "Continue with current order" → redirects to checkout
A cookie is set up to hold the doorset elements (category ID and product ID)
The user is redirected to the doors product category
A new sidebar module appears (using Advanced Module Manager, php code detects the presence of the cookie)

Sidebar module

The sidebar module holds the state of the doorset component selection 
As the user selects each component, the product details (product name, short description and ideally image, if there is space) appears on the sidebar
The product ID data is pulled from the cookie, and the rest from the VirtueMart database tables
For components that have not been chosen yet, the module shows a link to the relevant VirtueMart category
Once all components have been selected, a button appears at the bottom of the module saying "Place order"  This goes to the doorset product in VirtueMart.

Individual component product display

The product detail page is transformed as follows:
The Add to Cart button is hidden
A new button appears instead - "Add to Doorset"
Clicking the button adds the SKU to the cookie, along with the category ID (so that we know what component each SKU belongs to)

Note: There is a possibility that not all products will be available for inclusion in a doorset (we will confirm soon).  In this case, the process will have to be modified as follows:
Each product will have an attribute - "Available in doorset? Y/N"
If yes, then the above process applies
If no, display "Sorry, you cannot add this item to a doorset"

Doorset product page

In order to order a doorset, the user ultimately comes to a VirtueMart product detail page for the doorset product.
This page uses a different template so that it can be styled differently, and have some program logic in it.

The doorset order is composed as follows:
The product has a base price for the assembly cost
Each component is displayed as a product attribute, with price addition
Other elements of the assembly are also shown as attributes

Question: How are we going to programmatically affect the final price? Need to see how a normal product attribute drop down list is coded.

Page display:
If there is no cookie, redirect the user to the doorset article
If there is a cookie, load the page
If the component selection is not complete:
Display "Your doorset order is not complete.  You still need to select the following components." 
Output the same code as the sidebar module so that the user can see what is needed
Hide the "Add to Cart" button.
If the component selection is complete:
Show the product attributes fields, populated with the items already selected and held in the cookie
Show the usual "Add to cart button"

[attachment cleanup by admin]
Title: Re: Interesting customisation code challenge - quotes please
Post by: balai on May 21, 2012, 09:33:57 AM
Concerning the bundle builder you can check teh product builder for VM
http://breakdesigns.net/extensions/vm-product-builder

It uses also compatibility check to have only the copatoble items combined
Title: Re: Interesting customisation code challenge - quotes please
Post by: brendonhatcher on May 22, 2012, 06:07:19 AM
Hi Balai

Thanks for the response.

We had looked at the product builder extension.
The problem is that it only shows the picture of the component after you select it from a drop down list.
Our customers will be purchasing visually, so they need the picture first.
Also, the product specifications are important, and found only in the short and long description of the component.
Finally, there will be hundreds of items for each component, so scrolling through a drop down will be very tiresome for the user.

Thus the extension will not meet our needs.

Can anyone provide a quote for what I need done?

Thanks
Brendon