we use a program called iTrace http://www.can-trac.ca/
So far it appears to me that it works really well for our purposes.........each item has a generic "code" to which the BB/expiration etc date can be added.....all of our food contact packaging goes into it as well
Then it generates a label that is scanned.
The system has all our recipes in it (wasn't here when that was done) so each time a batch is entered, it removes from inventory what should have gone in to any particular batch. Finished goods are then scanned out as PO's come in
I've run 2 mock recalls, one on FG and one on our most used ingredient and it generated really simple reports...then we just verified inventory against what it said we had....easy peasy. I'm trying to get away from paper duplication as much as possible.