Sage BOI SO Invoice non inventory item erroring out (invalid)

SUGGESTED

Hi all, I'm in need of some guidance and help as I'm stuck in my process of inserting an SO Invoice using SO_Invoice_Bus that includes non inventory (like misc or charges item)

these items are in sales order with 0 quantity and need to be in the invoice, but I am having issue in trying to add them, in the below example item is /C

	
    Set oScript = CreateObject ("ProvideX.Script")
    oScript.Init("\\xxxx")

    Set oSS = oScript.NewObject("SY_SESSION")

    retVAL = oSS.nlogon()

    If retVAL = 0 Then

    retVAL = oSS.nSetUser("xx", "xxxxx")

    End If

    If retVAL = 0 Then
    WScript.Echo("0|Login failed")
    oSS.nCleanup()
    oSS.DropObject()
    Set oSS = Nothing
    WScript.Quit
    End If

    retVal = oSS.nSetCompany("TST")

    If retVAL = 0 Then
    WScript.Echo("0|Failed to set company")
    oSS.nCleanup()
    oSS.DropObject()
    Set oSS = Nothing
    WScript.Quit
    End If

    retVal = oSS.nSetDate("S/O","20220401") ' Date
    retVal = oSS.nSetModule("S/O")

    retVal = oSS.nSetProgram(oSS.nLookupTask("SO_Invoice_Ui"))
	
	
	Set oSOInvoice = oScript.NewObject("SO_Invoice_Bus", oSS)
	
	
	
	retVal = oSOInvoice.nSelectBatch("00401")
	

    If retVal = 0 Then

    msgVal = oSOInvoice.sLastErrorMsg
    errCode = 0
    errMsg = errMsg & "|Failed Setting Batch No: &" + msgVal

    oSS.nCleanup()
    oSS.DropObject()
    Set oss = Nothing
    Set oScript = Nothing
    WScript.Echo(errCode & errMsg)
    WScript.Quit
    End If
  


    retVal = oSOInvoice.nSetKeyValue("InvoiceNo$", "0448877")
    retVal = oSOInvoice.nSetKey()

    If Not retVal = 1 Then

    retVal = oSOInvoice.nSetValue("ARDivisionNo$", "01")
    
      retVal = oSOInvoice.nSetValue("SalesOrderNo$", "0338912")
    

    If retVAL = -2 Then
    oSS.nCleanup()
    oSS.DropObject()
    Set oSS = Nothing
    WScript.Echo("2|Failed Setting Sales Order Number: " + oSOInvoice.sLastErrorMsg)
    WScript.quit
    End If

    retVal = oSOInvoice.nSetValue("CustomerNo$", "0082791")
    
    
    retVal = oSOInvoice.nSetValue("OrderDate$", "20220401")
	
    retVal = oSOInvoice.nSetValue("OrderType$", "S")
    retVal = oSOInvoice.nSetValue("InvoiceType$", "IN")
    retVal = oSOInvoice.nSetValue("ShipVia$", "")
    retVal = oSOInvoice.nSetValue("FOB$", "")
    retVal = oSOInvoice.nSetValue("WarehouseCode$", "200")
    retVal = oSOInvoice.nSetValue("ConfirmTo$", "")
    retVal = oSOInvoice.nSetValue("Comment$", "")
    retVal = oSOInvoice.nSetValue("InvoiceDate$", "20220401")
	
	retVal = oSOInvoice.nSetValue("TaxSchedule$", "AVATAX")
	
	
      retVal = oSOInvoice.oLines.nAddLine()
	  
      retVal = oSOInvoice.oLines.nSetValue("ItemCode$", "SB-EBC-2")

      

    If retVal = 0 Then

    msgVal = oSOInvoice.sLastErrorMsg
    errCode = 0
    errMsg = errMsg & "|Failed on Invoice item: &" + msgVal

    oSS.nCleanup()
    oSS.DropObject()
    Set oss = Nothing
    Set oScript = Nothing
    WScript.Echo(errCode & errMsg)
    WScript.Quit
    End If
  

      retVal = oSOInvoice.oLines.nSetValue("ItemType$", "1")
      retVal = oSOInvoice.oLines.nSetValue("ItemCodeDesc$", "item 1")
      retVal = oSOInvoice.oLines.nSetValue("Price", 99.00000)
      retVal = oSOInvoice.oLines.nSetValue("WarehouseCode$", "200")
      

    If retVal = 0 Then

    msgVal = oSOInvoice.sLastErrorMsg
    errCode = 0
    errMsg = errMsg & "|Failed setting item Invoice: &" + msgVal

    oSS.nCleanup()
    oSS.DropObject()
    Set oss = Nothing
    Set oScript = Nothing
    WScript.Echo(errCode & errMsg)
    WScript.Quit
    End If
  
	  retVal = oSOInvoice.oLines.nSetValue("TaxClass$", "TX")

      retVal = oSOInvoice.oLines.nSetValue("QuantityOrdered", 1.00000)
      retVal = oSOInvoice.oLines.nSetValue("QuantityShipped", 1.00000)

      retVal = oSOInvoice.oLines.nSetValue("UnitPrice", 99.00000)
	  

    If retVal = 0 Then

    msgVal = oSOInvoice.sLastErrorMsg
    errCode = 0
    errMsg = errMsg & "|Failed setting price &" + msgVal

    oSS.nCleanup()
    oSS.DropObject()
    Set oss = Nothing
    Set oScript = Nothing
    WScript.Echo(errCode & errMsg)
    WScript.Quit
    End If
  
      retVal = oSOInvoice.oLines.nWrite()
    
     
    
      retVal = oSOInvoice.oLines.nAddLine()
	  
      retVal = oSOInvoice.oLines.nSetValue("ItemCode$", "/C")

      

    If retVal = 0 Then

    msgVal = oSOInvoice.sLastErrorMsg
    errCode = 0
    errMsg = errMsg & "|Failed on Invoice item: &" + msgVal

    oSS.nCleanup()
    oSS.DropObject()
    Set oss = Nothing
    Set oScript = Nothing
    WScript.Echo(errCode & errMsg)
    WScript.Quit
    End If
  

      retVal = oSOInvoice.oLines.nSetValue("ItemType$", "4")
      retVal = oSOInvoice.oLines.nSetValue("ItemCodeDesc$", "Default Item Code /C")
      retVal = oSOInvoice.oLines.nSetValue("Price", 0.00000)
      retVal = oSOInvoice.oLines.nSetValue("WarehouseCode$", "200")
      

    If retVal = 0 Then

    msgVal = oSOInvoice.sLastErrorMsg
    errCode = 0
    errMsg = errMsg & "|Failed setting item Invoice: &" + msgVal

    oSS.nCleanup()
    oSS.DropObject()
    Set oss = Nothing
    Set oScript = Nothing
    WScript.Echo(errCode & errMsg)
    WScript.Quit
    End If
  
	  retVal = oSOInvoice.oLines.nSetValue("TaxClass$", "TX")

      retVal = oSOInvoice.oLines.nSetValue("QuantityOrdered", 0.00000)
      retVal = oSOInvoice.oLines.nSetValue("QuantityShipped", 0.00000)

      retVal = oSOInvoice.oLines.nSetValue("UnitPrice", 0.00000)
	  

    If retVal = 0 Then

    msgVal = oSOInvoice.sLastErrorMsg
    errCode = 0
    errMsg = errMsg & "|Failed setting price &" + msgVal

    oSS.nCleanup()
    oSS.DropObject()
    Set oss = Nothing
    Set oScript = Nothing
    WScript.Echo(errCode & errMsg)
    WScript.Quit
    End If
  
      retVal = oSOInvoice.oLines.nWrite()
    

    If retVal = 0 Then

    msgVal = oSOInvoice.sLastErrorMsg
    errCode = 0
    errMsg = errMsg & "|Failed updating Invoice: &" + msgVal

    oSS.nCleanup()
    oSS.DropObject()
    Set oss = Nothing
    Set oScript = Nothing
    WScript.Echo(errCode & errMsg)
    WScript.Quit
    End If
  



    retVal = oSOInvoice.nWrite()
    

    If retVal = 0 Then

    msgVal = oSOInvoice.sLastErrorMsg
    errCode = 0
    errMsg = errMsg & "|Failed Inserting Invoice: &" + msgVal

    oSS.nCleanup()
    oSS.DropObject()
    Set oss = Nothing
    Set oScript = Nothing
    WScript.Echo(errCode & errMsg)
    WScript.Quit
    End If
  
    WScript.Echo("1")
    WScript.Quit
    Else
    WScript.Echo("0|Error: Invoice already exists in Sage")
    WScript.Quit
    End If

    oSOInvoice.DropObject()
    oSS.nCleanup()
    oSS.DropObject()

    Set oSOInvoice = Nothing
    Set oSS = Nothing
    Set oScript = Nothing