Shipping more than line

Today we learned that Shipping can ship more on a line than is on the Sale Order. (e.g Line 1 on the SO calls for a qty of 5. Shipping can ship more than 5 on that line.)

Is there a configuration checkbox that we can select to prohibit this?

or is this a BPM?

Thanks,

Ken

That would be a BPM

2 Likes

Purpose: Prevent a user from trying to ship a larger quantity than the order called for.
Business Object: CustShip.
Method: Update.
Directive: Pre-processing.

  1. Navigate to the Method Directives program (System Management > Business Process Management > Setup > Method Directives).
  2. Click Method Code.
  3. Select the Business Object dropdown and choose CustShip.
  4. Click search.
  5. Select Update and click OK.
  6. From the file menu, select New > New Pre-Processing.
  7. Click on the Pre-processing tab.
  8. Click on the conditions Button.
  9. Click the Add Condition Button (New icon).
  10. Select the Dropdown under UserText.
  11. Choose the condition ‘number of rows in the designed query…’.
  12. Click on blue underlined ‘designed’.
  13. Body: copy code from below.
  14. Click OK twice.
  15. Click the actions Button.
  16. Click the Add Action Button (New icon).
  17. Select the Dropdown under UserText.
  18. Choose the action “raise exception”.
  19. Click on blue underlined ‘designed’.
  20. Body = see text below.
  21. Click OK.
  22. Click OK (Exiting the actions dialog).
  23. Check the Enabled box and then click Save.

QUERY:
for each ttshipdtl where (ttshipdtl.RowMod = ‘A’ or ttshipdtl.rowmod = ‘U’) and (ttshipdtl.ourjobshipqty + ttshipdtl.ourinventoryshipqty > ttshipdtl.OurRemainQty) no-lock

BODY:
You are attempting to overship this line. Please correct.

3 Likes

Dora, this is the E10 forum so he’ll probably need it in SQL. Thank you for the detailed posting!

1 Like

Thanks for the head start. This is what I came up with. I added this as custom code.

var ShipDtl = ttShipDtl.Where(sd => (sd.Added() || sd.Updated()) && (sd.OurJobShipQty + sd.OurInventoryShipQty > sd.OurRemainQty)).FirstOrDefault();

if(ShipDtl != null)
{

	var message = "You are attempting to overship this line. Please correct before you can continue.";
	throw new Ice.Common.BusinessObjectException(
	new Ice.Common.BusinessObjectMessage(message)
	{
		Type = Ice.Common.BusinessObjectMessageType.Error,
						});
}
2 Likes

Ken,

If you are shipping from a job, the user can actually ship the wrong job for the detail line. If the packout screen fills the job number in and the user changes the job number for whatever reason, packout will attempt to ship from that job. We had to add logic to verify the job that is being shipped is for the order, line, release they are actually packing. If you have multiple jobs for the line it gets even trickier as packout then chooses the incorrect job or one that has already been packed. If you only have 1 job per line item then it is easier.

Good point Dave. I will follow up with the team to see if we need to put a level of control like you mentioned. Your idea got me thinking of doing something similar in our RMA process.

Have you used this successfully to impede shipping above the order line quantity? We are planning to implement this because we’ve run across this twice recently.