Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- ' Script replicates an issue with shipping entry creation.
- ' It prompts for arguments, please enter as appropriate:
- ' - Sage 100 company User Name.
- ' - Password.
- ' - Company.
- ' - Sales order number to create a shipping entry off.
- ' - Customer division number.
- ' - Customer number.
- ' - Batch ID (going to be ignored if no batches enabled).
- ' - Shipper ID.
- ' Indication of the issue replicated:
- ' - Error message: Error document not found: The 003091800000200000000000002 is invalid.
- ' (the key is just an example)
- Sub errchk(r, desc, o)
- if (r = 0) then
- MsgBox("Error " & desc & ": " & o.sLastErrorMsg)
- oss.nCleanup()
- oss.DropObject()
- Set oss = Nothing
- WScript.Quit
- end if
- end sub
- 'Create ProvideX COM Object
- Set oScript = CreateObject ("ProvideX.Script")
- 'oScript.TraceOn=true
- '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
- 'The Init method must be the first method called
- oScript.Init(PathHome)
- 'The Session object must be the first MAS 90 object created
- Set oSS = oScript.NewObject("SY_Session")
- ' Set the user for the Session
- r = oSS.nLogon()
- If r=0 Then
- '''''''''''''''''''''''
- ' Enter: username, password
- user = Trim(InputBox("Enter User Name", "", "alex"))
- password = Trim(InputBox("Enter Password", "", ""))
- retVAL = oSS.nSetUser(User,Password)
- r = oss.nSetUser(user, password)
- errchk r, "logging in", oss
- End If
- ' Set the company, module date and module for the Session
- company = Trim(InputBox("Enter Company", "", "PRG"))
- r = oss.nsetcompany(company)
- errchk r, "setting company", oss
- ' Read input parameters
- orderNumber = trim(InputBox("Enter Sales Order Number", "", "0008770"))
- divisionNumber = trim(InputBox("Enter customer division number", "", "02"))
- customerNumber = trim(InputBox("Enter customer number", "", "52849-8"))
- ' Prompt for a batch ID
- batchOptions = "N"
- Set oBatchOptions = oScript.NewObject("SY_BATCHOPTIONS_SVC", oSS)
- r = oBatchOptions.nFind("S/O01")
- errchk r, "Finding batch options", oBatchOptions
- r = oBatchOptions.nGetValue("ENABLEBATCHENTRY$", batchOptions)
- errchk r, "Getting batch options", oBatchOptions
- batchId = ""
- nextBatchNumber = ""
- if batchOptions = "Y" then
- batchId = trim(InputBox("Enter Batch ID", "", "0906F"))
- ' nextBatchNumber = oBatchOptions.nGetValue("NEXTBATCHNO$")
- end if
- shipperId = ""
- shipperId = trim(InputBox("Enter Shipper ID", "", "01"))
- sDate = oSS.sModuleDate
- if sDate = "" then
- sDate = Year(Date) & Right("0" & Month(Date), 2) & Right("0" & Day(Date), 2)
- end if
- retVAL = oSS.nSetDate("S/O",sDate)
- r = oSS.nSetModule("S/O")
- errchk r, "Setting module", oSS
- ' Creating business object
- oSEC = oSS.nSetProgram(oSS.nLookupTask("SO_Shipping_UI"))
- Set oHeader = oScript.NewObject("SO_Shipping_bus", oSS)
- fields = oHeader.sGetDataSources
- 'MsgBox(fields)
- ' Getting the next invoice #
- nextInvoiceNo = ""
- r = oHeader.nGetNextInvoiceNo(nextInvoiceNo)
- errchk r, "Getting next invoice number", oHeader
- ' Selecting a batch
- if batchOptions = "Y" then
- r = oHeader.nSelectBatch(batchId)
- errchk r, "Selecting the batch", oHeader
- 'MsgBox("Selected")
- end if
- r = oHeader.nSetKeyValue("InvoiceNo$", nextInvoiceNo)
- errchk r, "Setting invoice number", oHeader
- r = oHeader.nSetKey()
- errchk r, "Selecting the invoice", oHeader
- r = oHeader.nSetValue("ShipperID$", shipperId)
- errchk r, "setting shipper ID", oHeader
- r = oHeader.nSetValue("SalesOrderNo$", orderNumber)
- 'errchk r, "setting order number", oHeader
- r = oHeader.nSetValue("ARDivisionNo$", divisionNumber)
- 'errchk r, "setting division number", oHeader
- r = oHeader.nSetValue("CustomerNo$", customerNumber)
- 'errchk r, "setting customer number", oHeader
- ' Clearing out line items to copy from scratch
- r = oHeader.oLines.nClear
- errchk r, "clear lines", oHeader.oLines
- ' Copying line items.
- r = oHeader.oLines.nCopyLinesFromSalesOrder(orderNumber, "Y")
- errchk r, "copy lines", oHeader.oLines
- MsgBox "Document selected"
- r = oHeader.oLines.nMoveFirst
- ' Reading a key value
- invoiceNumber=""
- lineSequenceNumber=""
- lineKey=""
- r = oHeader.oLines.nGetValue("INVOICENO$", invoiceNumber)
- r = oHeader.oLines.nGetValue("LineSeqNo$", lineSequenceNumber)
- r = oHeader.oLines.nGetValue("LINEKEY$", lineKey)
- key = invoiceNumber+lineSequenceNumber+lineKey
- MsgBox "Searching for key: '" + key
- ' Searching by key
- r = oHeader.oLines.nFind(key)
- errchk r, "document not found", oHeader.oLines
- ' Done with the Invoice object
- r = oHeader.DropObject()
- oHeader = 0
- Wscript.Echo "DONE"
- oss.nCleanup() ' Call Cleanup() before dropping the Session Object
- oss.DropObject()
- Set oss = Nothing
- WScript.Quit
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement