Took a little noodling, but with the current version of SBA on github, I believe that such a thing is now possible. It's an unusual setup/consideration and a website that I have seen that accepts donations actually has a separate link to the donation direction instead of trying to pack several things into the "product". Guess it's possible, just sounds unusual, anyways:
The setup would be/include this:
In your first dropdown, you would need to have an option like: No thank you for the product in dropdown #1 that would be assigned as non-stock related.
Then, probably best (considering that dropdown #2 is all about donation and not a stock quantity) to assign the product's option name as a non-stock related item and because the option value in dropdown #1 would also be non-stock, then would also assign the product's option value for that option name as non-stock.
So, what is this non-stock feature? Well, I somewhat jumped the gun on functionality by adding the ability for a product's option value, a product's option name, an option value, or an option name to be non-stock dependent without any of the desired/foreseen methods to properly manage the feature. Right now it is more a proof of operation and functionality. Adding in the applicable ways/places to support admin entry (without a SQL statement) is going to take a little bit, but the primary focus is on the function(s) that do the adding/managing of the addition(s) and then in my opinion the interface can follow.
So, how does one add a non-stock related characteristic?
There are four designated "groups" which are considered capable of being non-stock dependent:
All
Option ("AO")
All
Values ("AV")
Product's
Option ("PO")
Product's Value ("PV")
That is used/designated to the field: attribute_type
Then there is the attribute_type_id. This is the applicable options_id or options_values_id depending on whether dealing with an option or a value respectively. The number associated with that is located in the admin->Catalog->Option Names Manager or Option Values Manager respectively. All such non-stock attributes will have an attribute_type_id.
And lastly (currently) is the attribute_type_source_id. This represents to what the option or value is applicable. Since no product can have a products_id of 0, I have chosen 0 to represent the case of either of the All Option/All Values group. If the non-stock feature is to apply to a specific product, then the attribute_type_source_id would be the products_id for that product.
So... Then there is the table that is involved. I didn't do the system any justice by picking a short name, so right now the table is called: products_with_attributes_stock_attributes_non_stock.
Let's assume that in the above example/request that dropdown #2 has an options_id of 23 and that products_id 55 is this one product that is to have this feature. This dropdown is expected to be "available" no matter how many of dropdown #1 is present, also, generally speaking there is no desire to track the quantity "available" of any feature within dropdown #2 because afterall, what kind of a limit would be set for a donation other than perhaps a single large quantity that is probably restricted by other "features" (bank account, payment processor, etc...).
So to make dropdown #2 non-stock the sql (able to be entered into tools->install SQL patches) would be:
Code:
INSERT INTO products_with_attributes_stock_attributes_non_stock (attribute_type, attribute_type_id, attribute_type_source_id) VALUES ('PO', 23, 55);
So that generally takes care of dropdown #2 and further means that the SBA table for this product (products_id of 55) does not need to define a quantity for any value within dropdown #2. If however a quantity *is* entered for one or more values, then that quantity will override the "non-stock" portion of the product's option name.
Now for the one option value within dropdown #1 that will remain "in-stock" while all other options go out-of-stock and are displayed as out-of-stock.
Assume that dropdown #1 has an options_id of 31 and the specific value has an options_values_id of 143. The SQL to add this one feature for dropdown #1 would be:
Code:
INSERT INTO products_with_attributes_stock_attributes_non_stock (attribute_type, attribute_type_id, attribute_type_source_id) VALUES ('PV', 143, 55);
And now also, the "No Thank You" option value should not be assigned to a variant and should not be assigned a stock quantity unless that specific combination should be controlled as a stock quantity.
With these combinations, then it is expected that if a customer selects the "No thank you" from dropdown #1 and any option within dropdown #2, then the purchase should be possible... (Untested, but falls within the concept.)
Would appreciate feedback on if that works or not and where in the process there is a problem/issue identified. I've notified 2 others about this added feature. One has initiated testing the other has not responded.