For the discount rule I think you should use a different calculation for the amount. Instead of a flat rate you should multiply the quantity of the particular item times $20. This would look like this in the calculation portion of the discount rule:
Based on items with a specific value
Total of [quantity] where [CatID] has a value of
[12] [times] 20
You may need to adjust this if your columns differ from what I have put here. This should take the quantity of items where the CatID is 12 and multiply that times 20 for the total discount.
As for the update portion you would want to just put in a regular update server behavior probably on the checkout success page to ensure that the transaction has already gone through.
Once you have it on the page you will need to add some code to make it only occur if the membership item is in the cart like this:
<?php if($WA_eCart->InCart($itemID)){ ?>
the update server behavior goes here
<?php } ?>
You will need to update the code to match your cart name.