Hi,
Yes it is possible, and most of it does not need a custom plugin at all: the whole pricing side can be done with custom item fields plus our "Price Calculations" plugin (on the marketplace). Only the conditional display and filtering of the options needs a bit of custom JavaScript. Here is the breakdown.
Pricing (no code, configuration only)
The Price Calculations plugin lets you define several formulas, each with an optional condition, and it recalculates the price live on the product page. In a formula you can reference any product or item custom field by its column name, plus {price}, {cart_product_quantity} and others, and you have math operators and a few PHP functions. Two important points for your case:
- {price} already reflects the selected variant AND the option costs, so options are added to the total automatically.
- the price preview refreshes by AJAX as the customer changes the fields.
So:
- Length x width: create two custom item fields (table "item") named for example length and width, then a formula like:
{length} * {width} * <your rate> + {price}(or {price} * {length} * {width}, depending on how your base price is defined).
- Electric vs manual: the motor and fittings are options, so their price already folds into {price}. If the math has to differ between the two cases, add a second formula with a condition on your electric/manual field, for example condition {type} == 'electric' with its own formula, and a formula with no condition as the fallback. The plugin uses the first formula whose condition matches.
The only part that needs custom JavaScript
The plugin calculates the price, it does not decide which options or which option variants are shown or selectable. Two of your requirements are display logic, not pricing:
1. Showing the motor and fittings options only when "electric" is chosen.
2. Showing only the motor/fittings variants whose maximum length/width/weight fit the dimensions the customer entered (heavy motor only above 3 m, appropriate fittings by size, etc.).
These react to values typed live on the page, so they have to be done in JavaScript. Store the max length/width/weight of each motor and fittings variant as product custom fields on those variants, read them server side, inject them as a JS map, and on every length/width change show or hide the matching options. For point 1 the electric/manual show-hide can be a couple of lines of JS. You can also prune an option's variant list server side with the onBeforeOptionDisplay event (fired in front/views/product/tmpl/option.php), but since the dimensions are entered live the real filtering has to happen in JS.
Note that a formula cannot read the option products' own variant custom fields (they are not exposed as tags on the main product), which is another reason the dimension filtering is done in JS rather than in a formula.
So: custom item fields + the Price Calculations plugin for all the pricing, and a small JavaScript override for the conditional display and the dimension based filtering of the options.