Public Sub ReceiptPO()

    Dim oReceipt As CAPReceipt
    Set oReceipt = New CAPReceipt
    oReceipt.Init fe_application.SessionContext
    
    Dim oLineItems As cAPLineItems
    Dim oLineItem As CAPLineItem
    
    Dim oPO As CAPPurchaseOrder
    Set oPO = New CAPPurchaseOrder
    oPO.Init fe_application.SessionContext
    
    '' Adjust to load a specific PO by system ID
    oPO.Load 14

    Set oLineItems = oPO.LineItems


    With oReceipt
        .Fields(APRECEIPTS_fld_AP7PURCHASEORDERSID) = oPO.Fields(APPURCHASEORDERS_fld_AP7PURCHASEORDERSID)
        .Fields(APRECEIPTS_fld_RECEIVEDBY) = "FrontDesk"
        .Fields(APRECEIPTS_fld_RECEIPTDATE) = "08/09/2017"
                
        For Each oLineItem In oLineItems
            
            With .ReceiptItems.Add
                .Fields(APRECEIPTITEMS_fld_POLINENUMBER) = oLineItem.Fields(APLINEITEMS_fld_SEQUENCE)
                .Fields(APRECEIPTITEMS_fld_RECEIPTTYPE) = "Receive"
                .Fields(APRECEIPTITEMS_fld_QUANTITYRECEIVED) = oLineItem.Fields(APLINEITEMS_fld_QUANTITYORDERED)
                .Fields(APRECEIPTITEMS_fld_POSTDATE) = "08/09/2017"
            End With
    
        Next oLI
        .Save
    
    End With
    
    oPO.CloseDown
    Set oPO = Nothing
    
    oReceipt.CloseDown
    Set oReceipt = Nothing

End Sub

VBA/API
Disclaimer: We provide programming examples for illustration only, without warranty either expressed or implied, including, but not limited to, the implied warranties of merchantability and/or fitness for a particular purpose. This article assumes you are familiar with Microsoft Visual Basic and the tools used to create and debug procedures. Our Customer Support can help explain the functionality of a particular procedure, but we will not modify, or assist you with modifying, these examples to provide additional functionality. If you are interested in learning more about the VBA and API modules, contact your account manager.