Just goes to show, you still can teach an old dog new tricks.
A client needed a way to add an Engraving choice to the product page. Normally this isn’t an issue, just use the product variant feature.
But in this case, the engraving choice must be optional. And it has to charge an amount. And it needs to accept some text for the actual engraved words.
So after a little digging, I settled on a little-used feature in AbleCommerce known as Gift Wrap. Gift Wrap is a way to associate a secondary charge to any product. The basket page and the checkout pages automatically know how to handle Gift Wrap.
By default, AbleCommerce handles Gift Wrap selection during checkout. So the first modification was to get gift wrap to apply on the product page.   This means the BuyProductDialog control is the place to start. I used a checkbox to render a separate panel that included the text box control. The contents of the text box control are set to the giftmessage property available on each line item object.
Then it’s just a matter of setting the correct Id for the gift wrap on the line item before it’s added to the basket.
Basket page needed some text changes to replace “Gift Wrap” with “Engraving”…super easy to do.
Checkout needed modified to skip the gift wrap page normally encountered by default AbleCommerce behavior.
At that point, I’m done – the client can now easily associate an optional upcharge for Engraving on specific products within the store catalog.