I use numbers for barcodes, so no letters etc. Reason for this is that I setup ranges in the barcode.
Fixed barcodes (one time setup):
- Barcode numbers in the range 1-99 for the Factory pastry carts.
- Barcode numbers in the range 101-950 for the mousetraps and cleaning tables
- Barcode numbers above 1000 are for goods that go through the Factory such as flower, butter etc.
When the item is scanned again, the item is known in the system (invokes different menu) and you can assign the item to a pastry cart. When you scan a pastry cart you can assign that the cart goes into production. The barcode of the cart will get a entry in the production table with production time, the amount of degrees that the dough is, and the production sequence code. The production sequence code is also printed on the cookie package. From the production table I can identify how the cookies were made from which pastry card, from what ingredients and when a specific ingredient came into the factory.
To make it even more quality driven, all items that make the cookies are sampled. So to take the flower example, when new flower comes in the factory, it is sampled, the sample will get a new barcode, the same new barcode is issued at the production line where it is scanned when the new flower is added to the pastry cart. And last the same barcode is sticked to the packing slip that you get from the flower supplier. So all in all the factory prints three barcodes per item.
Scanning a mousetrap or a cleaning tabel will give you the option to select if the trap/cleaning was ok, mouse, empty or other. And submits a inspection date.
Because all the screens are different, a lot of code clutter goes into formatting the screens. So when a barcode is scanned, the program first looks at the value and then calls different subs to get the right item and handle the action when a button is pressed.
To see the results of the scans, barcode.pl also has a few routines to display the entries. These are the report subs. You can select them in the menu of Sql-ledger, invoked by the custom menu. For more extended reporting I use Pentaho. See the other old blogposts.