To be honest, this whole design looks like a bad idea in general. If you need to send an email to someone based on the sales order item, this can be simply done using the standard output functionality. You can either put the material # in the condition record or in the output requirement (VOFM), depending on whether you go with item or header level output.
The path of using "time since last job run" is usually fraught with danger. E.g. in a high transaction volume system you'll eventually end up with some document that wasn't picked up by any of the jobs (or picked up by both) because of some millisecond. And what about when the date changes in between the jobs? The code above doesn't seem to consider that you may need to look at more than one date. And what about reprocessing? What if the program fails? No one ever thinks about it until it's too late...