How to Override and Retain Secondary Quantity Update Using P4210 Before Ship Confirm
Purpose of Document
Is it possible to have P4210 retained GC Secondary Quantity (SQOR) when user override it for Dual UOM item?
First of all, there is the existing enhancement request for the expectation described here. Please refer to <Bug 10974357> : UNABLE TO OVERRIDE SECONDARY Q - SAR: 8653305.
As you can see in the section 'Applications Affected by Dual UOM' in <Document 625673.1> - E1: 41: Dual Unit of Measure (P4101, P4310, R41411, R41610, R41413), only Shipment Confirmation and PO Receipt allows you to override it (when goods are leaving/arriving warehouse for instance). For this reason, there is the enhancement request in procurement as well. <Document 2366383.1> - E1: 43: Enhancement to Allow Manual Entry or Change of Secondary Quantity SQOR in P4310 For Dual UOM Items.
Supposing that I go to grocery stores,
Picking up a piece of cabbage (commit) which is priced per pound
(During checking out - ship confirmation) Weigh it, which computes price
So the price has to be computed (possibly using R42950) before printing out invoice (between ship confirmation and print invoice).
Meanwhile, in case your business does not require ship confirmation (e.g., interface with Oracle Transportation Management (OTM), or other 3rd party integration), you need to modify B4200311 and XT4312Z2 accordingly. Note that actual code example is set as 'Internal Only'.
<Internal_Only>
Then, is there way to retain the secondary quantity in Sales Order Entry and Purchase Order Entry?
In case, this functionality is a showstopper (for instance, the document requires for export of goods need entering exact weight before print invoice), possibly,
[As - Is] of B4200311.c
/* SAR 7866755 - Only do inventory transction process for order that has qty shipped */
if ((lpDS->szSOEMBFInternalFlags[EL_CALLED_FROM_SOEL16] == R42950_8_SOEL16) &&
(MathZeroTest(&lpDS->mnQtyShipped)))
{
dsN4101440.cInventoryTransactionProcess = _J('1'); }
[To - Be]
if (MathZeroTest(&lpDS->mnQtyShipped)) { dsN4101440.cInventoryTransactionProcess = _J(' '); }
*** Break In Code *** idReturnValue = jdeCallObject(_J("DualUnitOfMeasure"), NULL, lpBhvrCom,lpVoid,(LPVOID)&dsN4101440, (CALLMAP *)NULL,(int)0,(JCHAR *)NULL, (JCHAR *)NULL,(int)0); *** Break In Code ***