Multi-bin version 2017 (and below) Guides
  1. Knowledge Base
  2. Multi-Bin
  3. Multi-bin version 2017 (and below) Guides

Multi-Bin: BOI - Business Object Interfacing

    A. Appendix IV - BOI - Business Object Interfacing 

    1. Intro to the Multi-bin and WMS Distribution Object

    2.  BOI auto assign bin locations in transactions and S/O Directed Pick Allocations 

    3. Sample VB script 




    The Multi-bin and WMS Distribution Object

    The Multi-Bin Object name from the transaction line objects is ACS_Multibin_OBJ. This includes when instantiating IM_Transaction_bus, SO_invoice_bus, PO_receipt_bus and RA_Receipts_bus, BM_Production_bus. In providex use coHeader’Lines’ACS_Multibin_OBJ. In VBscripts use oHeader.oLines.oACS_MultiBin_OBJ.

    The object is in Sage 100 ERP like the Sage 100 Distribution object for Lot Serial distributions for transactions.

    The difference is that it knows when a bin location is required in the transaction and will check for proper distribution of the bin location. It also carries license plate data for license plate pallets and case pack ID’s. UDF’s associated to Multi-bin distributions are also passed thru the object. Disabling multi-bin validation for a bin location is possible by Company, Warehouse and by Product Line. The multi-bin object also utilizes the rules in the system setup to do automatic distribution of bin locations and next numbering of license plate ID’s.


    Automatic Assignment of a Bin Location in the Multi-bin Distribution Object

    The Multi-Bin Options for automatic distributions of bin locations in transactions apply to the user while in the screen and to BOI usage in the transactions. Following are helpful hints to setup to automatically assign staging and primary bin locations with BOI in the transactions.

    pg_144-exclimationmark.PNGIf there is inventory is pre-allocated to a Sales Order that will take supersede automatic bin location assignment/allocation and the pre-allocations always assign the Invoice/Shipment and supersede the quantity shipped.


    Multi-bin Options for P/O, S/O and B/M:

    • P/O Receipt of Goods Quantity Received Option - Select Lines or Both Option

      • Header Provides automatic allocation to bin locations during the receive complete option. When switching to the Lines panel from the Header.

      • Lines Provides automatic allocation to bin location during when the Quantity Received is entered.

      • Both will do both.


    • S/O Invoice Data Entry Quantity Shipped Option - Select Lines or Both Option

      • Header Provides automatic allocation to bin locations during the shipping complete option. When switching to the Lines panel from the Header.

      • Lines Provides automatic allocation to bin location during when the Quantity Shipped is entered.

      • Both will do both.


    pg_144-exclimationmark.PNGTo do automatic bin location assignment/allocation, select the Lines or Both option for P/O Receipts and S/O Invoice. This will auto-allocate based on the Quantity Received and Quantity Shipped values.

    • B/M Production and Disassembly Entry Auto Assigned Bins Option - Select Auto Assigned Primary or Staged Option.Provides automatic allocation of raw materials lines.

    BOI Allocate Sales Order Lines Automatically according to directed picking algorithms

    Example to automatically allocate inventory in a sales order. Sales order detail lines with UDF_NoAllocateLine$=“Y” will be skipped from automatic allocations. Inventory will auto allocate inventory according to all of the Directed Picking rules in the system. You can use V/I, Providex and VB scripts.

    soHeadObj=new("so_SalesOrder_bus",cosession) setKeyVal=soHeadObj'setKey("0000175") soHeadObj'setValue("D404_AllocateOrder$",”Y”) soHeadObj'write()




    Sample BOI Allocate Sales Order Lines Individually

    Example to manually allocate inventory to a sales order using business object interface commands. The following commands are in providex. Distributes inventory from two bin locations in the first sales order line with a non lot serial valuation and distributes one lot number from a location to the second line.


    soHeadObj=new("so_SalesOrder_bus",cosession) setKeyVal=soHeadObj'setKey("0000175")

    LET fullKey$=soHeadObj'Lines'GetEditKey$("000001") LET lineRetVal=soHeadObj'Lines'setkey(fullKey$) soHeadObj'Lines'SetMultiBinObject()


    DistObj=soHeadObj'lines'ACS_MultiBin_Obj adVal=DistObj'AddDistributionLine(LotSerialNo$,"E-300-40",ToBinLoc$,"",PalID$) DistObj'setValue("QuantityOrdered",6)



    adVal=DistObj'AddDistributionLine(LotSerialNo$,"C-200-40",ToBinLoc$,"",PalID$) DistObj'setValue("QuantityOrdered",4)

    DistObj'write() DistObj'CommitDistributionRows() soHeadObj'lines'write()


    LET fullKey$=soHeadObj'Lines'GetEditKey$("000002") LET lineRetVal=soHeadObj'Lines'setkey(fullKey$) soHeadObj'Lines'SetMultiBinObject()

    adVal=DistObj'AddDistributionLine("MAR10","C-100-10",ToBinLoc$,"",PalID$) DistObj'setValue("QuantityOrdered",10)

    DistObj'write() DistObj'CommitDistributionRows() soHeadObj'lines'write() soHeadObj'write()


    Sample VB script for I/M Transaction Entry—Receipts Transaction

    I/M Transaction Receipt VB script:

    Dim o, oOrder, PathHome, oScript, oSS, oZip, retval, nACS_MultiBin_OBJ Dim zip, city, state, country

    Set oScript = CreateObject("ProvideX.Script")

    'Get the ODBC path for the last accessed installation of MAS 90/200 'PathHome = PathRoot & "\Home"

    PathHome = "F:\TEST\Bin515\MAS90\Home" 'Set oReg = Nothing


    Set oSS = oScript.NewObject("SY_Session")


    'r = oSS.nLogon()

    r = oss.nsetuser("RON","")

    r = oss.nsetcompany("ABC")

    r = oSS.nSetDate("I/M","20141203")

    r = oSS.nSetModule("I/M")

    oSEC = oSS.nSetProgram(oSS.nLookupTask("IM_Transaction_ui")) Set o = oScript.NewObject("IM_Transaction_bus", oSS)

    r = o.nSetKeyValue("TransactionType$","8") 'r = o.nGetNextEntryNo(EntryNo$)

    r = o.nSetKeyValue("EntryNo$","00000020") r = o.nSetKey()


    r = o.nSetValue("TransactionDate$", "20141203") r = o.nSetValue("DefaultFromWhseCode$", "000") r = o.nSetValue("BatchNo$", "00001")

    r = o.oLines.nAddLine()

    r = o.oLines.nSetValue("ItemCode$", "2480-8-50") r = o.oLines.nSetValue("WarehouseCode$", "000") r = o.oLines.nSetValue("TransactionQty", 1)

    retVal = o.oLines.oACS_MultiBin_OBJ.nAddDistributionLine("LOT123","A10M","","","")

    ‘ --- addDistributionLine (lotSerialNo$,BinLocation$,ToBinLocation$,line$,PalletID$) r = o.oLines.oACS_MultiBin_OBJ.nSetValue("TransactionQty", 1)

    r = o.olines.oACS_MultiBin_OBJ.nWrite() r = o.oLines.nWrite()

    r = o.nWrite()


    (*E) Feature for Add-on for Expiration Date and Vendor Lot Traceability

    (*P) Feature for Add-on for License Plating - Case Packs, Pallets, and Containers

    (*W) Feature for Add-on for Wave Batch Picking


    Copyright © 2018 Scanco