I managed to work through this issue by creating a custom workflow task called RunAllDropShipNotificationsIfPaymentGuaranteed. In case anyone else who has their items drop shipped is interested in reducing chargebacks (by shipping first and capturing later), here is what the code looks like. NOTE: No warranty is provided, use at your own risk.
Code:
[color=#0000ff][color=#0000ff][2] End[/color][/2][/color][color=#0000ff][color=#0000ff][2]Function[/color][/2][/color]
[color=#0000ff][color=#0000ff][2]
End[/color][/2][/color][color=#000000] [/color][color=#0000ff][color=#0000ff][2]Class
[/color][/2][/color]
Since what we really need to know is whether we are guaranteed payment for a specific order before the drop ship email is sent, and the rule for a credit card payment guaranteed is different from the others, we are taking each payment type into consideration separately. We are adding up the guaranteed payment amount for each payment of an order based on the type of payment, and then comparing it with the Grand Total of the order.
In the case of a credit card, we are guaranteed payment if a) the credit card is authorized or b) the credit card has been captured (or charged without using an authorization). So if we are set up to authorize payment first before capture, we add together the authorization amount and the total credit.
Sure there are a couple of extra case scenarios that don't really need to be there. However, if you want to override the rules for a specific payment type (for example, to not set the amount until the order is marked "paid") you can simply change the code in the payment type case block to check the payment status.
In order for this to work in both the web site and order management tool, it should be placed in the "Payment Changed" workflow. However, unlike the default RunAllDropshipNotifications task, this one doesn't send the email more than once regardless of how many times it has been run. Note also this task needs to be followed by an "Update Order" task in order for the custom property to be saved so the email isn't sent more than once. All instances of "Run All Drop Ship Notifications" should be removed from all workflows (except the DropShip workflow).
Simply drop the above code in your App_Code folder and add a line in the TaskLoader.Custom.vb file in the "LoadCustomOrderTasks" procedure to initialize it:
[2]New[/2][2] RunAllDropshipNotificationsIfPaymentGuaranteed)[/2]</P>
[2]
[/2]