Sales Kits - Partial Shipments and Invoicing

Here is the challenge we are having with Sales Kits and need a work around to be able to ship partial and invoice the customer still by their Sales Kit part number.

  • Sales Kit has been built and entered on a sales order
  • Children of kit explode on sales order
  • Shipping only have 4 of 5 children available to ship
  • Need to be able to still ship the kit and bill the customer
  • Do not want to turn off Kits Ship Complete as this causes an issue when trying to bill the order
  • Do not want to turn on Updateable kits for control reasons (we need to enforce the structure)

We are looking for a way in the system to be able to ship the line 99% and still invoice the customer and then ship the last 1% at a later date (could be next day).

If this cannot be done then I am going to write up an enhancement to allow a child of a kit to be demoted back to a regular order line without impacting the kit. Only someone with access to order entry can perform this demotion action. This can also be used for situations where we need to substitute one parts off a kit for another.

Has anyone run into this issue/limitation/need before and knows of an Epicor out of the box way, before we customize?

1 Like

Waiting for @ckrusen to wake up today. @Mark_Wonsil

Jumping ahead of me. I have a task to review Sales Kits. I will be following this post to see what comes up as I suspect we will run into similar hiccups for shipping short of complete.

1 Like

Hmmm. :thinking:

OOTB, you want to allow updatable but not allow updateable at the same time?

You’re invoicing at first shipment, right?


I’ve been fighting a production issue all morning. A circuit for sonar based measurements isn’t working. Only 4 of about 50 PCB’s passed testing.

#puttingoutfires :fire::fire:

Could you ship the Sales Kit as complete (even though only 4 of the 5 components left), and add the missing component to the Order as a no charge item?

The one thing that jumps out at me is that the Pack Slip would imply that all 5 components should be in the box.

Another option is to tell them, “No. you must ship it complete. Tell Purchasing to get their act together, so you’re not missing it.” Then duck the flying coffee cups.

1 Like

That is exactly what we are trying to do here, but we need to keep the kit setup a structured and not updatable on the sales order. We do not want our sales people making custom kits on the sales orders but we do want to allow them to demote a component out of a existing kit on the SO and make it its own line item. This way we can ship the kit “complete” and invoice while at the same time ship the missing part at a later date. This missing part would need to be setup without a sell price as it was technically already accounted for in the price of the kit.

Sales kits are implented as individual line items on the order. Trying to add the lines of the components to a packer yields:


I tried making a BPM, to intercept the check if the line is a kit component, but I can’t seem to figure out where that happens. Only 2 BO’s get called

  • Erp.Proxy.BO.CustShip.CheckPrePartInfo
  • Erp.Proxy.BO.CustShip.GetOrderLineInfo

The detail in the error says it is in BO.CustShip.GetOrderLineInfo, yet a Pre-proc BPM that does nothing but display a message, doesn’t fire.

This is still stupid, eh? I ran into this last week for the first time.

One of our kits has 150 items, so it makes sense to want to only enter the one number on an order and have Epicor do the rest.

But, like @hkeric.wci, we don’t usually have all 150 parts in stock at any given time.

And as others have said, if you turn off “must ship complete,” it says “Oh, well then obviously you don’t want to bill this as a kit anymore.” OF COURSE I STILL DO! What sense does that make, that component shipping = component pricing? No! I want to bill it as a single kit!

So what we do now is set the kit as a dummy non-qty-bearing part (std cost is 0.01) and paste in the 150 components as separate line items in the order but manually override them to zero price (since they are all also real parts that we sell, too).

But that sure takes all the efficiency out of it!

Not to mention, the invoice went from 2 lines to 151.

That is the real answer. You can’t ship a job incomplete. Why ship a kit incomplete? But here we are.

I always considered kits to be like assemblies with no labor, and that a kit consists of all its components. An example would be a hook-up kit that contains a washer, an o-ring and a couple of screws. Ideally we put these in a baggie, so that baggie is the item in the shipment that matches the packing list. One line on the packing list and one baggie of parts in the shipping box. So “Ship Complete” should be selected.

Sounds like the rest of you are using sales kits as a shortcut to add lines of commonly grouped parts. These parts aren’t grouped in a box or bag, but end up as individual items in the shipment and on the packer.

I totally get that some parts of a kit might be needed before others. But if you want to consider the kit as a single item for Packers and Invoices, then you should abide by the controls that go along with “Ship Complete”.

And aren’t there quite a variety configurations for sales kits? I mean settings like: pricing based on the Kit# vs the components, allowing qty changes to components, Showing components on Customer documents (Packers and invoices?). etc… There’s no combo that works for the OP’s original issue?

1 Like

Kits are a huge PITA in Epicor.

@hkeric.wci are the kits component priced or parent priced?

I think I am in the same boat, so I’ll answer - and it’s a no.

The limit is pretty simple. I don’t want to ship complete. If I uncheck that setting I am forced to use component pricing. But that is stupid - it’s a kit, and we want to price the kit, not the components.

The end. Game over.



Now, they walked right into that one.

I’m not an accountant but I do use budget software at home. There is actually an accounting reason for this. If you ship and don’t invoice that shipment in the same period, you may be running afoul of the most recent revenue recognition rules (ASC605 and IFR15) where you should recognize revenue and cost in the same period within a contract (PO in our case).

Well, I dislike that you are proving me wrong, but that does make sense.

But to be fair, we violate that rule every day. Job takes three months and incurs labor every day in that range, but we only invoice at the end, for example.

As a hack of a solution (seems like most my solutions are hacks) …

When you enter a Sales Kit P/N on an order, it creates a OrderDtl line for each component too. One of the fields or OrderDtl is KitParentLine. For non-Kit lines the KitParentLine = OrderLine.

If you enable seeing that field, try setting the KitParentLine field of the component you want to break out of the kit, from the Kit’s order line to the OrderLine this component is on.

Maybe something will balk at you when you try to save or update, but worth experimenting with.


maybe a process that does the following:

  1. Sets OrderDtl.LineDesc = OrderDtl.LineDesc + "Included in Line: " + OrderDtl.KitParentLine
  2. Sets OrderDtl.KitParentLine = OrderDtl.OrderLine
  3. Sets DocUnitPrice = 0.00

edit #2

  1. Set OrderDtl.KitFlag = null (it would have been ‘C’ for component)

We had the same and we would impute some revenue and make an accrual entry every month. :man_shrugging: This is why I like IT. So much better than accounting… :rofl:

As an electrical engineer, it is strange how math like Calculus, Differential Equations, Fourier Transforms, Llinear Algebra, Complex Vector Analysis, etc …, seem easier than accounting - which only requires a four-banger calculator (+, -, x, /)

1 Like

Yeah, it does make me think about the need for something like that with jobs that span a month (period) or more. I know in the past there has been grumbling in accounting about the GL making no sense because of that lag. I don’t recall specifics, but I know the lag was the core issue.