I second Thomas's recommendation of X-Cart's Onsale module. I've been using it for a few years now. Our sales change a lot so I'm putting things on sale and taking others off sale all the time. I got tired of the labor intensive process very quickly so I came up with the following.
Final version is the last post.
https://forum.x-cart.com/showthread.php?t=75341
Paul