I am trying to figure out the most appropriate way to get costs (labor, burden, materials, etc.) for a configured part-on-the-fly on an order line and quote line. What business objects can/should be used to accomplish this?
From some reading I’ve done it seems like the normal path here is to create a quote, create a line for the part you want to configure, the configurator builds the method, and then costs can then be pulled from the method. When you later create an order from that quote, the costs are then inherited from the quote. But let’s say I don’t have a quote and just create an order with a configured part. Now where should I find costs at?
In the Epicor world I live in, when we configure a line on a quote, we use BO methods in custom code to first get the quote assembly details and then retrieve costs from the QuoteQty table. However, when we configure a line on an order, we use BO methods to build out a job with the configured MOM. We then retrieve the costs from that job. The slight issue we just discovered is that there is a slight cost difference between quote and order when the lines from both modules are configured the same. I’m curious if anyone else is getting cost on quotes and orders like this and/or how you are going about it. Any thoughts or advice?
I’d say the first thing to do would be to take a look at the Quoted Method and the Job Method and see if there are any different parts / quantities / resources / prodstandards. Are you using the same product configurator for the Quote and the Order / Job? My first guess would be that there is some discrepancy in the Method Rules on some operation or material that’s causing the difference.
Yes, I am using the same product configurator for both quote and order. I know someone else had compared the quote method and the job method and found no differences, but I will revisit that tomorrow.
I would try to see if the difference is in material or labor/burden. If labor/burden, you can have different rates for quoting on those resources, so you may want to check that in addition to Kevin’s advice.
For material cost differences, the amount of time that passes between creating the quote and then creating the sales order means that material costs may have changed (if you are on any Costing Method besides Standard Cost).
Thanks Mark, I wasn’t aware of that. If the method rules are identical for JobOper / QuoteOpr and JobMtl / QuoteMtl, then this seems most likely to me.
That makes sense Ernie. However, we do use standard cost. I also am finding differences when experimenting in our test environment. There I build out the quote and order with little time between that.
Costs are not brought from the quote to the sales order. They exist on the quote, but then skip the sales order and are brought forward to the linked (MTO) job when it gets created. At that point, you should compare the “Estimated” column on the Production Detail report (these will be from the JobAsmbl tables) with the values on the Quote Worksheet (QuoteCst table).
Interesting, that’s very close to what we do now. The only thing is we look at the QuoteQty table, not QuoteCst. In fact, I tried running queries against QuoteCst and we have no data in that table which, if I’m understanding the data dictionary correctly, is because it’s a temporary table. Also, is this table used more with CPQ? Because we don’t use CPQ yet, We are still running our configurators in classic.
Hmm… once upon a time I used QuoteCst (but haven’t in several years) so it probably isn’t CPQ but it may be obsolete functionality and QuoteQty may well be the appropriate table now.
Or my memory is questionable… also a distinct possibility.
No, as I’ve been playing around with our issue today, I believe you are correct.
Today I went into our Training environment (out of the box Epicor) and was able to replicate the issue I discovered. Now I’m in the process of documenting the steps I took so that I can submit a case to support.
In case it’s of interest, I figured out how to replicate the issue in our training environment, free of our customizations. I’ve opened a case with Epicor support.
Steps to Re-create in the Kinetic Browser:
Login as manager.
Verify that you are logged into the Main site.
Launch Quote Entry.
Create a new quote.
Enter a customer not on credit hold (ACEMOLD).
Save.
Go to line details and create a new line.
Enter part number “TEST1” and part description “Test Part 1”.
Enter order quantity of 1 and an expected quantity of 1.
Enter a need by date a few days out.
Save.
Click the “Engineering” button up at the top right of the page
Click get details.
Search for and select part number EAD-400-BLK.
Select the available revision.
Click OK.
Save.
Close the Quote Engineering page and return to the Opportunity/Quote Entry page.
Go to the quote worksheet and take note of the labor, burden, material, subcontract, material burden, and total cost values.
Launch Order Entry.
Create a new order.
Enter a customer not on credit hold (ACEMOLD).
Enter a need by date a few days out (1 week).
Save.
Go to line details and create new line.
Enter part number “TEST1” and part description “Test Part 1”.
Enter order quantity of 1.
Save.
Go to order details and click “Create Jobs”.
Navigate to line 1 release 1 details and find the job number created.
Right click on the job number and launch Job Entry.
Uncheck the Engineered checkbox.
Save.
Go to assemblies, select assembly 0, and click get details. (Kinetic) Go to actions > job > get details. (classic)
Search for and select part number EAD-400-BLK.
Select the available revision.
Click OK.
In job details, re-check the Engineered checkbox.
Save.
Right click on the job number and launch Job Tracker.
Go to activity, select costs, and take note of the labor, burden, material, subcontract, material burden, and total cost values.
Compare the cost field values found on the job against the cost values found in the quote. Note that the labor, burden, and total costs are different.
Have you tried create the sales order direct from the quote.
After you have check engineered and quote on the quote.
Click on Action - create Sales Order
Put in the required information, including the shipby date.
Click on Order Job Wizard - bottom right
In the order Job Wizard,
Get Details
click create Job
Open the job and check the costs.
BTW - if your company config is set to standard cost, POTF will have zero cost of sales. You can check this by looking at the InvcDtl table for unit cost.
Great question Bruce! Yes, I tried creating an order from a quote. This is our typical business path. Now we do have some custom fields in Order Entry that display line costs. When we create an order from a quote it copies those cost from the quote and pastes them into our custom fields on the order. This is likely why the issues has flown under our radar for so long. I purposely didn’t mention this customization at first because obviously if that’s wrong, it’s on us. However, Aside from our customization, if you compare the job costs with the costs found on the quote, we have found that those do differ.
So I don’t know why I didn’t think to query this sooner. I pulled a sample of 10,000 quotes where orders and jobs were created from it. Pretty much all the job costs differed from the quote…
This makes me wonder if there might actually be a mismatch somewhere in your Configurator Method Rules > Rule Action on some material or operation. Do you know if jobs that were created from a Quote that was converted to an order pull their MoM from the Quote or from the Method?