Job finish unit cost - Detailed explanation of calculation (Actual costing)
Solution ID = KB-69
Goal : Detailed description of the algorithm used to calculate the unit cost.
Module : SLMFG
Fact 1 : Actual Costing
Fact 2 : Standard Costing
Database : Progress, SQL
Cause
Fix
OVERVIEW
For an actual-costed item, the
algorithm used for calculating the cost at which it is moved to inventory from
a job depends on the following:
1) Whether or not the job is being
closed via the job transaction.
2) Whether the SFC parameter
"Cost Based on Complete" (CBC) is set to Oper or Job.
3) Which operations are complete at
the time of the move.
The basic algorithm for calculating
the unit cost is the following. A detailed description of each scenario is
given below:
1) If the job is being closed using
the job transaction's "Close Job" flag, the system uses the actual
cost for the job minus the cost at which prior moves (if any) had been done.
2) If the job is not being closed
and CBC is set to Job, the system uses the planned unit cost for the job.
3) If the job is not being closed
and CBC is set to Oper, the system uses the actual cost from complete operations
and planned cost for open operations.
This move-to-stock unit cost is
referred to as "job finish cost" throughout this entry since the
material transaction created when pieces are moved to inventory has a type of
"Job Finish". This solution frequently refers to moving pieces from
the job into inventory. It should be noted that this can be done via a job
(R)un, ma(C)hine or (M)ove transaction. It is not implying that they must be
moved via a (M)ove transaction in order for the costing functionality described
here to occur.
Also, the information presented is
true for all items which have an Item Master General screen Cost Type of
(A)ctual regardless of whether the item's Cost Method is Average, LIFO, FIFO or
Specific.
SOURCE OF THE COST DATA USED
The cost data used for the calculation comes from the following sources. Which
are used depends on the which of the above scenarios is occurring.
1) Job WIP Total amounts
This is the total actual cost which
has been posted against the job. These values can be seen on the Job Cost
Detail screen and on the WIP Valuation report.
2) Job WIP Complete amounts
These are the total cost at which
pieces have been previously been moved from the job into inventory. These
figures can only be seen on the WIP Valuation report. They will be zero if no
pieces have been moved to inventory.
3) Operation WIP amount
This is the total actual cost posted
against the operation minus any amount pulled from the operation for prior
moves to inventory. It is increased as transactions are posted against the
operation (including issuing materials which are tied to the operation) and
decreased when pieces are moved to inventory. This field (jobroute.wip-amount)
does not appear on any screen or report. There are reports which show total actual
cost posted against each operation but those values come from other cost fields
in the operation which are not reduced when pieces are moved into inventory.
4) Operation planned unit cost
This is calculated using the rates
and times from the operation as well as the materials tied to the operation.
These values can be seen on any of the job costing reports which show planned
costs by operation.
ALGORITHM USED FOR EACH SCENARIO
1) Closing the job via the job
transaction.
When you post a transaction which
moves pieces into inventory and closes the job, the system calculates the unit
cost for the move using the job's WIP fields. Since the job is being closed,
the pieces are being moved at the total of the WIP which still exists in the
job.
Job Finish Cost = (WIP Total - WIP
Complete) / qty being moved
If there have been no prior moves to
inventory from the job, WIP Complete will be zero so the move will be done at
the total actual cost which has been posted to the job. This is the simplest
scenario: release the job, issue the material, move all pieces through each
operation, and then post one transaction (run, machine or move) which moves
them all from the last operation into inventory answering yes to the
"Close Job" option. The pieces will be moved into inventory the total
actual cost for the job and WIP is cleared.
If there have been previous moves,
WIP Complete would have been posted with the cost of those moves as calculated
by one of the other scenarios. Deducting WIP Complete from WIP Total for the job-closing
move assures that the total cost moved into inventory for the job equals the
total cost actual which had been posted to the job. That is, the prior moves
would have been done at planned or a combination of planned and actual but the
last move will be done at a cost which assures the total moved into inventory
for all moves from the job will equal the total actual cost for the job.
This last move can actually be done
at a negative unit cost if the total cost of the prior moves exceeds the total
actual cost for the job. While this negative unit cost is commonly perceived to
be incorrect when seen in inventory, it really is correct and should not be
changed since prior moves were done at too high of a cost. When the job is
closed, the system clears out WIP by setting WIP Complete equal to WIP Total
and setting all operation WIP amounts to zero.
2) Not closing the job and
"Cost Based on Complete" is set to Job.
In this scenario, the pieces are
moved at the planned unit cost for the job. This is derived by adding up the
planned unit cost for each operation which is calculated using the operation's
setup, labor and machine hours and rates, overhead rates, and efficiencies as
well as each material's planned cost, scrap factor and quantity per assembly.
Job finish cost = Sum of planned
unit cost for each oper
The planned unit cost for the entire
job can be seen at the bottom of the Planned column on the Job Cost Variance
report. The planned costs for each operation can be seen on the Job Cost Detail
Status report. That report shows the total planned cost for the operation so
you would need to divide that by the job Qty Released to arrive at the unit
cost. When this transaction is posted, the job WIP Complete is increased by the
cost of the move and each operation's WIP amount is decreased by the cost taken
from that operation:
Job WIP Complete = Job WIP Complete
+ (job finish cost * qty being moved)
Oper WIP amount = Oper WIP amount -
(oper planned unit cost * qty being moved)
If multiple moves are done to inventory,
each will be done at the job's planned cost and the WIP Total buckets will hold
total cost of all of the moves (job planned cost * total qty moved). If you
then close the job as part of the final move, scenario 1's logic will be used.
If you do not close the job via the
move and later close it by changing the status manually, the difference between
WIP Total and WIP Complete will be written off to inventory adjustment account
at that time. The cost at which pieces had been moved to inventory will not be
adjusted. In that event, the total cost of pieces residing in inventory (and
later issued out) will always be the planned cost for the job.
3) Not closing the job and
"Cost Based on Complete" is set to Operation.
In this case, the system will calculate
the job finish cost using the actual cost from complete operations and the
planned cost from open operations. The "actual cost" used for a
closed operation is based on what is in the operation's WIP amount. Therefore,
it is really the amount of the actual cost posted against the operation which
has not been taken out of the operation by prior moves which were done at
planned due to the operation being open at the time of those moves. The planned
cost calculation for open operation's is the same used by scenario 2. The job
finish cost calculation, the reduction of the operation WIP amount and the
increase of the job's WIP Complete are calculated as follows:
Job Finish Cost = sum of the
operation unit costs:
if oper not
complete,
Oper unit cost = oper planned unit cost
if oper complete,
if oper qty complete - job qty
complete <> 0 then
oper unit cost = oper WIP amount / (oper qty complete
- job qty complete)
else
oper unit cost = oper WIP amount / qty being moved
oper WIP amount =
oper WIP amount - (oper unit
cost * qty being moved)
job WIP Complete =
job WIP Complete + (job finish
cost * qty being moved)
In this calculation, the "job
qty complete" is how many had been moved into inventory prior to the
current transaction being posted. What the formula is basically doing is
calculating an "actual" unit cost by spreading the operation's
remaining WIP amount over the quantity completed at the operation which has not
been "used" by a prior move into inventory. The operation's WIP
amount is then being reduced by this unit cost multiplied by the quantity being
moved. So, if fewer pieces are being moved into inventory than were completed
at the operation, dollars will be left in the operation's WIP amount for
subsequent moves.
For example, suppose you have a job
for 100 pieces and 2 operations. You post $1000 of cost against operation 10
completing all 100 and closing the operation. If you then move 30 pieces from
operation 20 into inventory, the cost pulled from operation 10 will be:
1000 / (100 - 0) = $10 per unit
and Operation 10's WIP amount will
be reduced to $700 (1000 - (10 * 30)). If you then move the remaining 70 pieces
without closing the job, the calculation would be:
700 / (100 - 30) = $10 per unit
A key point to note is that the unit
cost for a closed operation is calculated by dividing the operation's WIP
amount by the quantity completed at that operation, not the quantity being
moved into inventory. The total move to stock unit cost can become very
inflated if significant costs were reported against the operation but only a
fraction of quantity completed was reported. In that case, when the operation's
cost is divided by the operation's quantity complete, the resulting operation
unit cost may be extremely large. The move-to-stock cost will be very inflated
and will probably result in a huge hit to inventory adjustment when the job is
closed.
So, if your CBC flag is Oper and you
see a job finish at a much higher cost than expected, the under-reporting of
pieces at an operation could be the reason. Therefore, it is important that you
have accurate reporting of production if you are going to have the CBC flag set
to Oper.
NEGATIVE JOB FINISH TRANSACTIONS
If you post a job transaction for a
negative quantity, the system pulls the pieces from inventory back to the job.
As with any movement out of inventory, the system pulls them back to the job at
whatever cost is appropriate for the item based on its cost method. This cost
may or may not be the cost at which the pieces were originally moved into
inventory. For example, if the item is FIFO costed, the pieces will be taken
from inventory and put back into the job using costs from the top of the FIFO
stack (i.e. oldest records) for the item.
The total cost at which the pieces
are pulled out of inventory can be found in the Total Posted column of the
Material Transaction by Job report. When the pieces are pulled back to the job,
this total cost is deducted from the job's WIP Complete since that holds the
total cost at which pieces had been moved off of the job and into inventory.