Bin Content (Fixed/Default)

dabba23dabba23 Member Posts: 77
edited 2014-08-26 in NAV Three Tier
Hi,

I am a novice when it comes to inventory setup and I cannot seem to find a logical/business explanation to why the system does what it does!

I have NAV2013 RTC and I have set up following.

Location Card: Bin Mandatory and Default Bin Selection = Last-Used Bin.
The location has two bins: B1 & B2.

When I create a purchase order for both bins for the first time for an item, a bin content is created for each bin, where Fixed and Default are checked.
I remove the Fixed because I don't want the system to know the last bin when inventory is zero.

I now create a various sales orders and purchase orders to ensure that the Default on bin content works fine.

However, when I create a sales orders, that empty the inventory on both bins and I then create a new purchase order, the system again create a bin content where Fixed and Default are checked.

I don't understand why Fixed is checked. My customer finds it very time-consuming to manually uncheck the Fixed on the bin contents everytime inventory is zero.

Do you know of a work-around or if I have missed a setup?

Regards
Ann

Comments

  • pvrbpvrb Member Posts: 17
    This might be a bit too technical, still, I hope it provides the answer you are looking for (setup is taken from the Location, Work Center and Machine Center tables).

    Both, the fixed and default flags [Bin Content table], I trust, are populated by the Codeunit 7301: Whse. Jnl.-Register Line, the procedure sounds InsertToBinContent is used by NAV to create a new Bin Content:
    LOCAL InsertToBinContent(WhseEntry : Record "Warehouse Entry")
    WITH WhseEntry DO BEGIN
      GetBin("Location Code","Bin Code");
      BinContent.INIT;
      BinContent."Location Code" := "Location Code";
      BinContent."Zone Code" := "Zone Code";
      BinContent."Bin Code" := "Bin Code";
      BinContent.Dedicated := Bin.Dedicated;
      BinContent."Bin Type Code" := Bin."Bin Type Code";
      BinContent."Block Movement" := Bin."Block Movement";
      BinContent."Bin Ranking" := Bin."Bin Ranking";
      BinContent."Cross-Dock Bin" := Bin."Cross-Dock Bin";
      BinContent."Warehouse Class Code" := Bin."Warehouse Class Code";
      BinContent."Item No." := "Item No.";
      BinContent."Variant Code" := "Variant Code";
      BinContent."Unit of Measure Code" := "Unit of Measure Code";
      BinContent."Qty. per Unit of Measure" := "Qty. per Unit of Measure";
      IF WhseIntegrationMgt.IsOpenShopFloorBin("Location Code","Bin Code") THEN BEGIN
        BinContent.Fixed := TRUE;
        BinContent."Max. Qty." := Quantity;
      END ELSE
        BinContent.Fixed := FALSE;
      IF NOT Location."Directed Put-away and Pick" THEN BEGIN
        IF WMSMgt.CheckDefaultBin("Item No.","Variant Code","Location Code","Bin Code") THEN BEGIN
          IF Location."Default Bin Selection" = Location."Default Bin Selection"::"Last-Used Bin" THEN BEGIN
            DeleteDefaultBinContent("Item No.","Variant Code","Location Code");
            BinContent.Default := TRUE;
          END
        END ELSE
          BinContent.Default := TRUE;
        BinContent.Fixed := TRUE;
      END;
      BinContent.INSERT;
    END;
    


    CU 7317 Whse. Integration Management, procedure IsOpenShopFloorBin
    IsOpenShopFloorBin(LocationCode : Code[10];BinCode : Code[20]) : Boolean
    Location.GET(LocationCode);
    IF BinCode = Location."Open Shop Floor Bin Code" THEN
      EXIT(TRUE);
    
    WorkCenter.SETRANGE("Location Code",LocationCode);
    WorkCenter.SETRANGE("Open Shop Floor Bin Code",BinCode);
    IF WorkCenter.COUNT > 0 THEN
      EXIT(TRUE);
    
    MachineCenter.SETRANGE("Location Code",LocationCode);
    MachineCenter.SETRANGE("Open Shop Floor Bin Code",BinCode);
    IF MachineCenter.COUNT > 0 THEN
      EXIT(TRUE);
    
    EXIT(FALSE);
    
  • dabba23dabba23 Member Posts: 77
    You are very much correct, as I have also looked at the code.

    I have debugged the posting of a purchase order and ended up in the following code:

    Codeunit 7301, Function InsertToBinContent


    IF WhseIntegrationMgt.IsOpenShopFloorBin("Location Code","Bin Code") THEN BEGIN
    BinContent.Fixed := TRUE;
    BinContent."Max. Qty." := Quantity;
    END ELSE
    BinContent.Fixed := FALSE;
    IF NOT Location."Directed Put-away and Pick" THEN BEGIN
    IF WMSMgt.CheckDefaultBin("Item No.","Variant Code","Location Code","Bin Code") THEN BEGIN
    IF Location."Default Bin Selection" = Location."Default Bin Selection"::"Last-Used Bin" THEN BEGIN
    DeleteDefaultBinContent("Item No.","Variant Code","Location Code");
    BinContent.Default := TRUE;
    END
    END ELSE
    BinContent.Default := TRUE;
    BinContent.Fixed := TRUE;
    END;
    BinContent.INSERT;

    The bold line above, is what I don't understand. Why is there not any criteria to that line. Why is Fixed always true.
    What is the point of selection "Last-Used Bin" instead of "Fixed Bin" in "Default Bin Selection" on Location Card, when Fixed is always set, no matter what.

    I wonder if I set up a criteria in the function, that Fixed is only TRUE when "Default Bin Selection" = "Fixed Bin", that it can ruin other things.
    The customer does not use advanced WMS.

    Regards
    Ann
  • pvrbpvrb Member Posts: 17
    Good evening,

    I double checked the latest help I could find on the web: http://msdn.microsoft.com/en-us/library/hh997397(v=nav.71).aspx and the Design Details: Warehouse Setup post does say:
    A fixed bin holds items that are assigned to the bin code in question. The Fixed bin property ensures that even if the bin content is momentarily emptied, the bin content does not disappear, and the bin is therefore selected again as soon as it has been replenished.

    So it does sound logical that the Nav code you highlighted could be modified so that the Bin Content is created as Fixed=FALSE.
    If you go ahead with this Nav modification, please make sure that when Bin Content is updated or deleted (I trust there are 2 separate procedures in the same CU 7301, I do apologise I do not have access to Nav at the very moment so I cannot check) - that there are no issues; maybe there will be a couple of "setrange-s" to sort out, maybe not...

    Good luck with your modification(s).
    Kind regards,
    Pavel.
  • whizzergowhizzergo Member Posts: 22
    Did anybody ever discover a rationale for why NAV assigns 'fixed' for every new occurrence of bin content. I would agree with the original poster that it seems entirely illogical.
Sign In or Register to comment.