Shipping more than line


(Ken Nash) #1

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


(Dora Chavarria) #2

That would be a BPM


(Dora Chavarria) #3

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.


(Monty Wilson) #4

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


(Ken Nash) #5

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,
						});
}

(Dave Leannah) #6

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.


(Ken Nash) #7

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.