It is a fairly often asked question.
You've addressed the most important concern that I have when this question is asked: while you may need such an identifier to support existing systems used by your Client, you do not want to use such as a primary key as the "encoded info" can create problems down the road as it opens the door to your clients deciding to change the system of encoded info and then the needed change in your database can result in major issues with keeping related data correctly linked.
There is a second concern to keep in mind, however, the systems typically used to meet this need also run the risk that two users trying to generate a new serial number for the same product line might get duplicate serial number values. So you need to put safe guards in place to prevent that.
A fairly simple way to get the next serial number in your model specific series is to use a self join relationship that matches records by model. Then you can use the Max Serial value + 1 to assign the next value in the series to a new record in that Model line:
Products::Model = Products|SameModel::Model
Where Products and Products|SameModel are two Table Occurrences with the same data source table.
Then: Max ( Products|SameModel::ProductSerial ) + 1 will return the next serial number in that Model line.
Your full serial ID would actually be an auto-entered calc on a text field:
ModelLetter & ProductSerial
And you would place a "unique value" validation on this text field to guard against two users getting exactly the same value in this field.
Thank you, that sounds like an excellent solution! I appreciate the very thorough explanation.