To implement this hotfix, you must have a developer license.
You do not have to have rights to the data stores unless you have to perform data repair.
To resolve this problem, change the code in the Create Pick Codeunit (7312) as follows:
...
CODE
...
PROCEDURE CreateTempLine@29(LocationCode@1002 : Code[10];ItemNo@1003 : Code[20];VariantCode@1004 : Code[10];UnitofMeasureCode@1005 : Code[10];FromBinCode@1000 : Code[20];ToBinCode@1007 : Code[20];QtyPerUnitofMeasure@1010 : Decimal;VAR TotalQtytoPick@1001 : Decimal;VAR TotalQtytoPickBase@1000000000 : Decimal);
...
i@1012 : Integer;
RemQtyToPickBase@1000000002 : Decimal;
QtyToPickBase@1000000001 : Decimal;
QtyToTrackBase@1009 : Decimal;
QtyBaseMaxAvailToPick@1011 : Decimal;
...
TempWhseItemTrkgLine.RESET;
TempWhseItemTrkgLine.SETFILTER("Qty. to Handle",'<> 0');
IF TempWhseItemTrkgLine.FIND('-') THEN BEGIN
REPEAT
IF TempWhseItemTrkgLine."Qty. to Handle (Base)" <> 0 THEN BEGIN
// Delete the following lines.
IF TempWhseItemTrkgLine."Qty. to Handle" > RemQtyToPick THEN BEGIN
TempWhseItemTrkgLine."Qty. to Handle" := RemQtyToPick;
...
TempWhseItemTrkgLine.MODIFY;
END;
// Delete the following lines.
IF TempWhseItemTrkgLine."Qty. to Handle (Base)" > RemQtyToPickBase THEN BEGIN
TempWhseItemTrkgLine."Qty. to Handle (Base)" := RemQtyToPickBase;
// End of the deleted lines.
...
TempWhseItemTrkgLine.MODIFY;
END;
...
QtyToPick := TempWhseItemTrkgLine."Qty. to Handle";
QtyToPickBase := TempWhseItemTrkgLine."Qty. to Handle (Base)";
CreateTempLine2(LocationCode,ItemNo,VariantCode,UnitofMeasureCode,FromBinCode,ToBinCode,
QtyPerUnitofMeasure,QtyToPick,TempWhseItemTrkgLine,QtyToPickBase);
RemQtyToPickBase -= TempWhseItemTrkgLine."Qty. to Handle (Base)" - QtyToPickBase;
// Delete the following line.
RemQtyToPick -= (TempWhseItemTrkgLine."Qty. to Handle" / QtyPerUnitofMeasure) - QtyToPick;
// End of the deleted line.
...
LOCAL PROCEDURE UpdateToQtyToPick@71(QtyAvailableBase@1008 : Decimal;ToQtyPerUOM@1004 : Decimal;VAR ToQtyToPick@1003 : Decimal;VAR ToQtyToPickBase@1002 : Decimal;TotalQtyToPick@1001 : Decimal;TotalQtyToPickBase@1000 : Decimal);
...
ToQtyToPick := ROUND(ToQtyToPickBase / ToQtyPerUOM,0.00001);
IF ToQtyToPick > TotalQtyToPick THEN
ToQtyToPick := TotalQtyToPick;
IF (ToQtyToPick <> TotalQtyToPick) AND (ToQtyToPickBase = TotalQtyToPickBase) THEN
// Delete the following line.
IF ToQtyToPickBase = ROUND(TotalQtyToPick * ToQtyPerUOM,0.00001) THEN
// End of the deleted line.
...
...
CODE
...
PROCEDURE CreateTempLine@29(LocationCode@1002 : Code[10];ItemNo@1003 : Code[20];VariantCode@1004 : Code[10];UnitofMeasureCode@1005 : Code[10];FromBinCode@1000 : Code[20];ToBinCode@1007 : Code[20];QtyPerUnitofMeasure@1010 : Decimal;VAR TotalQtytoPick@1001 : Decimal;VAR TotalQtytoPickBase@1000000000 : Decimal);
...
i@1012 : Integer;
RemQtyToPickBase@1000000002 : Decimal;
QtyToPickBase@1000000001 : Decimal;
QtyToTrackBase@1009 : Decimal;
QtyBaseMaxAvailToPick@1011 : Decimal;
// Add the following line.
NewQtyToHandle@1170000000 : Decimal;
// End of the added line.
...
TempWhseItemTrkgLine.RESET;
TempWhseItemTrkgLine.SETFILTER("Qty. to Handle",'<> 0');
IF TempWhseItemTrkgLine.FIND('-') THEN BEGIN
REPEAT
IF TempWhseItemTrkgLine."Qty. to Handle (Base)" <> 0 THEN BEGIN
// Add the following lines.
IF TempWhseItemTrkgLine."Qty. to Handle (Base)" > RemQtyToPickBase THEN BEGIN
TempWhseItemTrkgLine."Qty. to Handle (Base)" := RemQtyToPickBase;
// End of the added lines.
...
TempWhseItemTrkgLine.MODIFY;
END;
// Add the following lines.
NewQtyToHandle := ROUND(RemQtyToPick / RemQtyToPickBase * TempWhseItemTrkgLine."Qty. to Handle (Base)",0.00001);
IF TempWhseItemTrkgLine."Qty. to Handle" <> NewQtyToHandle THEN BEGIN
TempWhseItemTrkgLine."Qty. to Handle" := NewQtyToHandle;
// End of the added lines.
...
TempWhseItemTrkgLine.MODIFY;
END;
...
QtyToPick := TempWhseItemTrkgLine."Qty. to Handle";
QtyToPickBase := TempWhseItemTrkgLine."Qty. to Handle (Base)";
CreateTempLine2(LocationCode,ItemNo,VariantCode,UnitofMeasureCode,FromBinCode,ToBinCode,
QtyPerUnitofMeasure,QtyToPick,TempWhseItemTrkgLine,QtyToPickBase);
RemQtyToPickBase -= TempWhseItemTrkgLine."Qty. to Handle (Base)" - QtyToPickBase;
// Add the following line.
RemQtyToPick -= TempWhseItemTrkgLine."Qty. to Handle" - QtyToPick;
// End of the added line.
...
LOCAL PROCEDURE UpdateToQtyToPick@71(QtyAvailableBase@1008 : Decimal;ToQtyPerUOM@1004 : Decimal;VAR ToQtyToPick@1003 : Decimal;VAR ToQtyToPickBase@1002 : Decimal;TotalQtyToPick@1001 : Decimal;TotalQtyToPickBase@1000 : Decimal);
...
ToQtyToPick := ROUND(ToQtyToPickBase / ToQtyPerUOM,0.00001);
IF ToQtyToPick > TotalQtyToPick THEN
ToQtyToPick := TotalQtyToPick;
IF (ToQtyToPick <> TotalQtyToPick) AND (ToQtyToPickBase = TotalQtyToPickBase) THEN
// Add the following line.
IF (ABS(ToQtyToPick - TotalQtyToPick) = 0.00001) AND (ToQtyToPickBase = TotalQtyToPickBase) THEN
// End of the added line.
...