Physical Inventory Count By Variant

Good day!!

Please assist with this,

How can l count items by variant using physical inventory journal. In the physical inventory journal , when l hit calculate inventory function , the system is not calculating items by variant , when l try to manually enter the item variant code after personalizing the column to the journal the system reject it .

Your assistant is greatly appreciated

  • Even if you choose to show inventory items with no ledger entries (one of the options when calculating inventory), NAV will not show a variant that has no activity because it would not know to which Location Code to assign the zero calculated inventory for that variant.  The code is a little different depending on whether you are using bins, but the outcome I believe is the same either way (I only tested this without bins).  I came up with this solution based on the filters you have applied when running the report.  This is the "UpdateQuantityOnHandBuffer" function in report 790 (I realize this may not help if you cannot modify this code but someone else could modify it for you if you want to try this out):

    IF TempInvtBuffer.FINDSET THEN
    QuantityOnHandBuffer.SETRANGE("Item No.",TempInvtBuffer."Item No.");

    // ADD THIS BLOCK OF CODE >> If item has variants, calculate those quantities. Respect Variant and Location filters.
    QuantityOnHandBuffer.SETRANGE("Variant Code");
    lrecItemVariant.SETRANGE("Item No.", TempInvtBuffer."Item No.");
    IF lrecItemVariant.FINDSET THEN BEGIN
    Item.COPYFILTER("Variant Filter", lrecItemVariant.Code);
    IF lrecItemVariant.FINDSET THEN REPEAT
    QuantityOnHandBuffer.SETRANGE("Variant Code", lrecItemVariant.Code);
    IF QuantityOnHandBuffer.ISEMPTY THEN BEGIN
    QuantityOnHandBuffer := TempInvtBuffer;
    QuantityOnHandBuffer."Variant Code" := lrecItemVariant.Code;
    lcLocation := COPYSTR(Item.GETFILTER("Location Filter"), 1, MAXSTRLEN(lcLocation));
    IF GetLocation(lcLocation) THEN
    QuantityOnHandBuffer."Location Code" := Location.Code;
    UNTIL lrecItemVariant.NEXT = 0;
    // 21-001 <<

    IF QuantityOnHandBuffer.ISEMPTY THEN BEGIN
    QuantityOnHandBuffer := TempInvtBuffer;
    UNTIL TempInvtBuffer.NEXT = 0;

    Hope this helps, I know you asked this a while ago.