Designing coding structures for your construction financial management system

Designing coding structures for your construction financial management system
How often have you worked on a construction project and realised that the information you get from your business systems doesn’t meet your requirements? This may apply to your estimating, purchasing or finance system. It could be the coding system is too detailed from a manager’s point of view or not detailed enough from an estimator’s point of view. It could be the coding system does not tie up meaningfully with how you want to manage/review the project.
How can this be avoided?
Do it at the beginning.
Trying to recode a project budget or cost report mid-project can be very difficult and time-consuming. The key is to design an appropriate monitoring system is to do it upfront well in advance. This needs to be done for the initial budget so that the subsequent activities can follow up logically.
Consideration should be given to costing a large project or implementation a new system across a business.
Elements to consider would be:
- Vendor and Customer Codes
- Job or Project Codes, particularly where a business has a large number of Jobs
- Purchase Order and Subcontract Order Numbers
- Cost Codes
- Estimating Codes/Product Codes/Purchasing codes/Item Codes
- Project Tasks
- Coding for Units of Measure
Keep it Short and Simple.
Do you ever have to type in a 20-character Purchase Order Number as a system user? It might not be a problem for the person creating the Purchase Order Number (because it is done automatically by the system). Still, it will be a problem for the people downstream, i.e. the supplier receiving the PO who has to enter it into another system. The supplier must quote it back to you when they send the invoice. The potential for error is too high. Some systems may be unable to cope with it, becoming abbreviated. This then gives rise to further problems when trying to match the PO to the invoice.
It is tempting to build meaning to the order number by including the Job number, a cost code, and perhaps other information. Try and minimise that. If you have a concise job number, maybe include it, similarly to the cost code. That information will be captured elsewhere, so it is not necessary here. If the additional information is stored in a different field, then that can be referenced in reports.
Leave Room for expansion.
When designing a coding system, consider future usage. If creating a job numbering system for a company that completes a large number of jobs each year, design a number system that will work for the foreseeable future. If you do 5000 jobs a year, then a five-character long job number is going to last 18 years, even if you start at 10,000 (to avoid the leading zero)
If making a list of products and using a numeric sequence, leave gaps so if new products are required, they can be inserted into a suitable place rather than added at the end. Typically, when designing the initial product list, increment the number of reach products by ten, leaving plenty of space for new products.
Be Consistent
Having designed the coding system format for all elements, publish it, train on it and explain it to users, so they know the significance and reasoning. This will lead to better adoption.
Consider other applications
Avoid special characters. Even if you have determined that the principle application you are using can manage them, it may well be the case that you are interfacing with other applications for which it may be a problem.
Case
Most modern applications are not case-sensitive, but that is not always true. Some legacy applications will treat the same codes in Upper Case as different from those in lower case. It is best to decide how codes should be displayed upfront and, again, stick to it. Unit of Measures comes to mind here: e.g. the Until of Length, the metre, I have seen as M, m, lin.m, LM or lm. You can argue about what is correct, but I suggest you decide on one.
If mixing case with Alpha Numeric codes, be aware of the difference between an ANSI sort or ASCII sort and which your system uses.