Quantcast
Channel: Sage 100
Viewing all articles
Browse latest Browse all 36990

Forum Post: Script creates duplicated Invoice Lines

$
0
0
Hello, Could you please advise - what is wrong with the script below. It creates duplicated invoice lines, seemingly due to the CopyLinesFromSalesOrder call. Maybe this function is outdated - looks like line items are created anyway? Thanks, Alex 'Create ProvideX COM Object Set oScript = CreateObject ("ProvideX.Script") 'Get the ODBC path for the last accessed installation of MAS 90/200 Const HKEY_CURRENT_USER = &H80000001 Set oReg = GetObject("winmgmts:\\.\root\default:StdRegProv") oReg.GetExpandedStringValue HKEY_CURRENT_USER,"Software\ODBC\ODBC.INI\SOTAMAS90","Directory",PathRoot PathHome = PathRoot & "\Home" MsgBox(PathHome) Set oReg = Nothing oScript.Init(PathHome) Set oSS = oScript.NewObject("SY_Session") ' Set the user for the Session r = oSS.nLogon() If r=0 Then     '''''''''''''''''''''''     ' Enter: username, password     r = oss.nSetUser("user","password") End If ' Set the company, module date and module for the Session r = oss.nsetcompany("ABC") ''''''''''''''''''''''' ' Enter: date r = oSS.nSetDate("S/O","20140406") r = oSS.nSetModule("S/O") ' Instantiate a Sales Order business object oSEC = oSS.nSetProgram(oSS.nLookupTask("SO_SalesOrder_ui")) Set o = oScript.NewObject("SO_SalesOrder_bus", oSS) ''''''''''''''''''''''' ' Enter: OrderNumber OrderNo = "0000408" MsgBox(OrderNo) ' Create a new S/O Invoice for the Sales Order created above oSEC = oSS.nSetProgram(oSS.nLookupTask("SO_Shipping_ui")) Set o = oScript.NewObject("SO_Shipping_bus", oSS) ' Check the BatchEnabled property to determine if batches are enabled IF o.nBatchEnabled = 1 Then     BatchNo = ""     PrivateFlag = "Y"     CommentText = "This is a comment"     r = o.nSelectNewBatch(BatchNo, PrivateFlag, CommentText) End If ' Create a new header record using the next available invoice number InvoiceNo = "" r = o.nGetNextInvoiceNo(InvoiceNo) r = o.nSetKey(InvoiceNo) r = o.nSetValue("ARDivisionNo$", "02") r = o.nSetValue("SalesOrderNo$", OrderNo) MsgBox(InvoiceNo) ' Copy the lines from a Sales Order by calling the CopyLinesFromSlesOrder method. shipCompleteOrder = "Y" r = o.oLines.nCopyLinesFromSalesOrder(OrderNo, shipCompleteOrder) If r = 0 Then     MsgBox("Error copying SO lines to INV: " & o.sLastErrorMsg & vbCRLF & "Quiting")     oss.nCleanup()        ' Call Cleanup() before dropping the Session Object     oss.DropObject()     Set oss = Nothing     WScript.Quit End If ' Process Lines Loop - set shipped quantity r = o.oLines.nMoveFirst() Do Until o.oLines.nEOF=1     r = o.oLines.nGetValue("ItemType$",ItemType)     tmpQuantity = 0     r = o.olines.nGetValue("QuantityOrdered",tmpQuantity)     If r = 0 Then         MsgBox("Error getting QuantityOrdered: " & o.sLastErrorMsg & vbCRLF & "Quitting")         oss.nCleanup()        ' Call Cleanup() before dropping the Session Object         oss.DropObject()         Set oss = Nothing         WScript.Quit     End If     r = o.olines.nGetValue("QuantityShipped",quantityShipped)     If r = 0 Then         MsgBox("Error getting QuantityShipped: " & o.sLastErrorMsg & vbCRLF & "Quitting")         oss.nCleanup()        ' Call Cleanup() before dropping the Session Object         oss.DropObject()         Set oss = Nothing         WScript.Quit     End If     'r = o.oLines.nGetValue("Valuation$",Valuation)              MsgBox("ItemType: " & ItemType & "; Quantity Ordered: " & tmpQuantity)              ' Set QuantityShipped     r = o.oLines.nSetValue("QuantityShipped",tmpQuantity)     If r = 0 Then         MsgBox("Error setting line quantity: " & o.sLastErrorMsg & vbCRLF & "Quitting")         oss.nCleanup()        ' Call Cleanup() before dropping the Session Object         oss.DropObject()         Set oss = Nothing         WScript.Quit     End If     r = o.oLines.nMoveNext() Loop ' End Invoice Lines loop ' Write the line change to memory r = o.oLines.nWrite() If r = 0 Then     MsgBox("Error writing lines: " & o.sLastErrorMsg & vbCRLF & "Quitting")     oss.nCleanup()        ' Call Cleanup() before dropping the Session Object     oss.DropObject()     Set oss = Nothing     WScript.Quit End If ' Write the invoice header and lines to disk r = o.nWrite() If r = 0 Then     MsgBox("Error writing INV: " & o.sLastErrorMsg & vbCRLF & "Quitting")     oss.nCleanup()        ' Call Cleanup() before dropping the Session Object     oss.DropObject()     Set oss = Nothing     WScript.Quit End If ' Done with the Invoice object r = o.DropObject() o = 0 Wscript.Echo "DONE" Wscript.Quit

Viewing all articles
Browse latest Browse all 36990

Trending Articles



<script src="https://jsc.adskeeper.com/r/s/rssing.com.1596347.js" async> </script>