Add N instances of a priced option

On a new development, CS-Cart 3.0.3 Professional:

Basically, we're trying to do something a bit “in between” a conventional “product option” and an “upsell another item on the same page”.

We want to be able to take an option as a text input of a number, and then charge the customer that number times the per-upsell cost.

In short, it would look like

Blue Widget: $499.99

Add [2] Red widgets at $99.99/each

Add [4 ] Green widgets at $49.99/each

Add [0 ]Electric Purple widgets at $49.99/each

Our first approach was to use a “select” type for the option, with choices of “None”, “1pc”, “2pcs”…“99pcs” with appropriate add-on prices.

This has two problems:

  • It's a real pain to set up an option and change prices. Many items we're selling have as many as 20-30 options we want to market this way.

  • It CLOBBERS the server. It blew past a 128Mb memory_limit declaration and needs 512Mb to be happy. Even on an Amazon AWS “medium” instance, with the database on RDS, it's taking 10 seconds plus to render a product page with 20-30 options. It even makes the category pages pretty slow.

    It seems like we can do a text field, but we can't set up any logic to add a price based on what's enterred in it.

    I think we could probably cope with those limitations, except the 10 second page load time. It's just not viable.

    This is a deal-breaker for this particular usage. If we can't get a worthwhile alternative, we're looking at scrapping CS-cart entirely and building a custom cart.

    Any suggestions?