I ended up using the Custom Order Statuses mod with 4.7.6. I use an "out of stock - on order" and "discontinued" order status.
When adding a custom status in 4.7.6 a random status code is picked by x-cart. Since I had my own custom statuses from before the store upgrade I just had to update the random status code to match what I had picked previously.
You can figure out what the random status code is through SQL
Code:
select * from xcart_custom_order_statuses;
or by modifying the custom order status tpl to print it out:
Index: skin/common_files/modules/XOrder_Statuses/status_selector.tpl
Code:
<td align="left">
- <textarea name="statuses[{$status.statusid}][descr]" cols="45" rows="4">{$status.descr}</textarea>
+ <b>statusid={$status.statusid},code={$status.code}</b> <textarea name="statuses[{$status.statusid}][descr]" cols="45" rows="4">{$status.descr}</textarea>
</td>
For me, my new status IDs were 9 and 10 and needed codes 'K' and 'S' to match my previous custom status codes. I updated them in SQL:
Code:
update xcart_custom_order_statuses set code='K' where statusid='9';
update xcart_custom_order_statuses set code='S' where statusid='10';
The Custom Order Status module has built-in options for sending emails so I've been using that for customer email notification.