Purchasing and Inventory Control

There are two sides of the inventory coin – purchasing and material allocation.

Inventory Cycle

Both of these things have an affect on the inventory cycle. The table below shows how the fields used for tracking inventory are adjusted in the program. Just looking at the On Hand value for inventory, it goes up when you receive against a purchase order, and it goes down when the material is allocated to a job.

Product Inventory Field

Verify of Order

Product Update (Clock)

Ship or Complete Job

Verify of Purchase Order

Receipt of Purchase Order

On Hand


* Optional Decrease





* Optional Decrease

On Job



On Order



* – a setting in the System Setup will allow you to prompt the user to allocate material when shipping a job and not all materials have been allocated

When you create a job, all the material needed for the job, including outside services, are put into MRP, which is a purchasing function. This material is marked as Committed because you are committed to getting that material and using it to build and deliver parts to your customer. This is why the committed value increases every time you verify an order to create jobs. Creating a job, however, has no affect on what you have On Hand or what you have On Order.

Putting material on a Purchase Order will increase the On Order value, as you would expect, and receiving the material in from a PO will reduce the amount you have On Order and increase the amount you have On Hand.

Clocking into the job at the operation where the material is attached will decrease the amount of material you have On Hand, and will also decrease the amount of material you are Committed to use, since you have now satisfied that commitment. This will also increase the amount of material you have On Job, although this data is not necessarily part of the inventory cycle.

The three fields we have discussed are used in various places in the program to assist you in making purchasing decisions. The equation that is used is

On Hand + On Order – Committed

This formula is important because if it results in a positive value then you have sufficient material accounted for to handle your commitments and do not need to order additional material. However, if the result is negative, you are committed to using more material than you currently have access to, and you must order more to satisfy your commitments. In the MRP Tables and Product/Service Table, this value is shown as the Status, and will be Green if there is a surplus and Red if there is a deficit. This formula is also used if you set up a Stocklevel and Reorder Point for an item. In this situation, we are not looking for the result to be greater or less than 0, but to be greater or less than the Reorder Point. If the result falls below the Reorder Point, the item will show up on the Red Flag Order to Stock Report, alerting you to the fact that you need to order that item.

MRP and Pulling from On Hand

When material goes into MRP, there are two normal ways to address it. You can use the MRP function to order material – this will tie the record on the job to the line item on the PO. The other way is to mark the MRP record as pull from on hand. What this option means is that you don’t need to order the material specifically for the job, you are going to order the material some other way and make sure it is on the shelf.

Examples of when you would use these two methods:

Pull From On Hand:

A job may call out for nuts, bolts, washers, etc. These items come packed in boxes of 50, 100, 1000, etc. If a job requires 150 washers, and washers come in boxes of 1000, it is most likely that you order them in bulk and use them as needed. Whenever you start to run low on them, you order more boxes to get your stock back up. These types of items should be marked as pull from on hand since you won’t be ordering them for specific jobs. This might also apply to common sheet material that you use on many different jobs and that normally keep in inventory because they are so commonly used. You may order 100 sheets at a time, and then on jobs that require that material, you mark pull from on hand.

For items that you normally keep in stock and order when you run low, you can set a Stocklevel and Reorder Point. Whenever your commitment for that material drives the On Hand + On Order into a range below the Reorder Point, a Red Flag report will alert you to the need to reorder the material. This is the Order to Stock – Products report.

Using the MRP function:

This is used for material that is being ordered for specific jobs. You would use this for items you would not normally hold in inventory. Maybe a special size sheet that gets used once or twice a year, or a special material that is expensive and only ordered as needed. Using MRP for this ties the record in the job to the line item in the PO so that you can track it from the job to see the status of the PO.

If you do not use one of these methods of taking care of  MRP requirements, at the time the job gets shipped any items remaining in MRP are deleted. This helps prevent the system from thinking that you need more material than you really do. An assumption is being made here in that if you are shipping the job, you obviously do not need to still purchase the material for the job.

Material Allocation

Material allocation is the act of pulling material out of inventory and allocating it to the job. At the time material is allocated, the average inventory cost for that material is used to determine actual cost on the job. Inventory is also reduced by the amount allocated to the job, as shown in the table above.

Allocation is normally done when the job is clocked into the operation where the material is attached. In most cases, this is the operation at which the material is first pulled off the shelf and put onto the job. When everything is working correctly, this is the appropriate time to allocate the material and decrease the On Hand value for inventory because this is truly the time that the material comes out of inventory and goes onto the job. Sometimes, shops will attach all materials on a part definition to a single operation at the beginning of the routing and use that as a simplified way of ensuring that all material does get allocated to the job. This may work for some situations, but it can cause problems depending on the timing of things. For example, clocking into an operation to allocate materials some number of days before the actual work of using the materials takes place. You have a gap in time in which you think you are out of material when in fact it is still sitting on the shelf for everyone to see (and to use for some other job that just came in and is being expedited). This is another example of setting things up to tell ProfitFab exactly what you intend to do so that it can more accurately tell you what you did.

With material allocation, it is possible to get into a horse/cart scenario and for the On Hand value to be negative. This can happen if you clock into a job and allocate the material before the receipt of the material has been entered into the system. For example, you might need 100 widgets on a job. You started off with 0 widgets, so you made a PO to purchase the 100 widgets. The widgets were received and physically put onto the shelf, but the receiving was not updated in ProfitFab. The job gets started and the widgets get allocated to the job, leaving you with -100 widgets on hand. Once you finally get around to receive the material on the PO, the balance is brought back to 0 where it should be. However, some shops see the negative on hand values and immediately assume there is a problem (How can you have negative inventory?) and go to manually adjust the value to 0. If that happens, then the receiving of the widgets will increase the on hand value, not back to 0 but to 100. Now, your system thinks that you have 100 widgets sitting on the shelf, when in reality, you have 0. This is a good reason to enter PO receipts into the system as quickly as possible, and that is the reason that we added that function to the Shop Clock Module.

Layout Not Found errors when running reports

When running a new report for the first time, you may run across an error message indicating that the layout cannot be found or the layout does not exist. This is common right after performing an update in which new reports were added to the program.

When adding new reports to ProfitFab, we generate a standard default layout to include with the program. However, we cannot overwrite your layout files during the update, or else you would lose all of the layouts you have modified for yourself in the Report Designer. What we do for new reports in the program is generate a special layout file that you use to import the default layouts into your layout file.

Here is the procedure for importing new layouts.

Open the Report Designer and select Files, then Open Layout. In the Opening Layout screen, the Reports are listed on the left and the layouts on the right. Scroll through the list of Reports (you can use your down-arrow key to scroll one report at a time) and write down the name of each report that has no layout associated with it. When you have gone through the entire list, click the Cancel button to close the screen.

Next, select Files, then Import Layout.

In the “Select file to import from” dialog, enter the filename as RDIMPORT.TPS, or browse through the list of files to find this file (RDIMPORT stands for ReportDesignerIMPORT). Press the Open button to open the Import Layouts dialog.

The Import Layouts dialog lists the Reports on the right and the layouts on the left. Scroll through the Reports to find the reports you wrote down previously.

Select the Layout name and click the Import button to import the layout. You should see numbers flickering on the screen just below the list of reports. These represent the fields being imported. When they go away, the import is complete for that layout.

Repeat this procedure for the remaining reports on your list.

After the layout(s) has been imported, exit the “Imports Layouts” dialog and go to Files, then Open Layout and select each report to mark the layout as default. This step is optional, however, if there is only one layout for the report, marking it as the Default Layout will allow ProfitFab to automatically print to that layout without bringing up a Select Layout screen each time you print it.

Database Backup and Restore

The database files are the heart and soul of ProfitFab. Having a reliable backup and recovery system is like an insurance policy against accidental loss of data due to database corruption, hardware failures, and even natural disasters. In this post, we will discuss some important points to consider when making backups of your ProfitFab program and data files.

Before Making a Backup

Make sure all running instances of ProfitFab (the admin program and Shopclock module) are closed. If running on a single-user system, make sure your running copy of ProfitFab is closed. If on a network environment, make sure all running copies on all workstations are closed.

Although there are some backup solutions that allow the safe backup of open files, we still highly recommend backing up during a time when all running instances of ProfitFab are closed. This will prevent the possibility of the backup copy of your database from becoming corrupt, or parent/child file relationships from getting out of sync during the backup process. If ProfitFab updates any one of the database files during the time it is being backed up, the header information in the backup file will not match its content, causing a corruption in the backup copy of that particular database file.

What to Backup

ProfitFab is completely self-contained in its installation folder. Usually “C:\ProfitFab” on a single-user installation, or in the “ProfitFab” folder on your server in a typical network installation. We recommend backing up all files in this folder to maintain compatibility between the version of ProfitFab you’re backing up, and its database files. This is very important when making a backup prior to updating ProfitFab that requires a database conversion.

The database files ProfitFab uses all end with the “TPS” extension. (TopSpeed Database) These are the most critical files that need to be backed up. These files cannot be replaced if lost or damaged, unlike the application files (EXE, DLL, etc) that can be reinstalled.

How to Restore

Like backing up, before restoring, make sure there are no running instances of ProfitFab. When recovering from a disaster situation (crashed server), or moving to a new server, this most likely won’t be an issue. However, if the need to restore some or all database files, for example, to recover missing customer records, or revert to a prior dataset, it is critical that all running instances of ProfitFab are closed to prevent potential data corruption during the restore process.

Depending on your situation, you may need to restore some or all of the database files, and/or the ProfitFab application files. In either case, care must be taken to ensure that the application files match with the database version; otherwise, you’ll receive an “Invalid Record Declaration” error.

Important Considerations

It is crucial that you have a disaster recovery plan in place, not only for ProfitFab, but for all critical data your company relies upon. The following questions address some things you may want to consider when creating a backup and recovery plan for your business.

  • How often does the data change?
    The frequency of changes made to your data can affect your decision on how often data needs to be backed up. Data that changes daily would typically need to be backed up daily. When recovering data from a backup, any data created since the time of your most recent backup would need to be recreated. Deciding how much data you are comfortable recreating will help in determining the frequency of your backup.
  • How quickly do you need to recover the data?
    Time is an important factor in creating a backup plan. Keep in mind the location of your backup sets, who has access to them, and how quickly you’ll be able to retrieve them.
  • What is the best time to schedule backups?
    Scheduling backups when system use is as low as possible is ideal. However, you can’t always schedule backups for off-peak hours, so you’ll need to carefully plan when key system data is backed up.
  • Do you need to store backups off-site?
    Storing backup sets off-site is essential to recovering your system in the case of a natural disaster. Storing backups in the cloud, or on removable media (external hard drives, tape drives, thumb drives, etc.) that can be taken off-site are some ways of storing off-site backups.
  • Who will be responsible for the backup and recovery plan?
    You need at least one primary contact for the organization’s backup and recovery plan. This person may also be responsible for performing the actual backup and recovery of data.
  • How many backup sets are needed?
    It may be necessary to recover a file or files from an earlier point in time from your latest backup. For this reason, it is generally a good idea to maintain a history of several backup sets.
  • Who will monitor the status of the backups?
    Backups are useless if they are corrupt or not being created. Someone will need to occasionally check the status of the backups, ensure that they are still being made on schedule and that the backup contents are not corrupt and can still be read. One way to do this is to run through a “drill”. Restore data from your latest backup to a temporary location, and check the validity of the data that is restored. Can you still access/read the data? Was everything you expected restored?

Ultimately, it is your IT administrator’s job to create a disaster recovery plan that best suits your company’s needs. There is no, one solution that fits everyone’s needs. We hope this post will help you make better decisions when it comes to backing up ProfitFab, and other mission-critical data for your company.