You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.

1081 line
89KB

  1. Option Explicit
  2. ' === Configuration / Globals ===
  3. Dim dev:dev = "local"
  4. Dim WaitTime:WaitTime = 15000
  5. Dim DataDirectory
  6. Dim ExportDirectory
  7. Dim PurpleEnvelopeProofReport
  8. Dim OfficeCopiesProofReport
  9. Dim CustomOfficeCopiesProof
  10. Dim ConnectionString
  11. Dim QpdfProgId
  12. Dim outFile
  13. Dim KitID
  14. Dim InkjetExportSortDirection:InkjetExportSortDirection = ""
  15. Dim WorkingDirectory:WorkingDirectory = Replace(WScript.ScriptFullName,WScript.ScriptName,"")
  16. ' === Shared Objects ===
  17. Dim WshShell:Set WshShell = WScript.CreateObject("Wscript.Shell")
  18. Dim objFSO:Set objFSO = CreateObject("Scripting.FileSystemObject")
  19. Dim oConn:Set oConn = WScript.CreateObject("ADODB.Connection")
  20. Dim glob:set glob = CreateObject("Chilkat_9_5_0.Global")
  21. Dim success:success = glob.UnlockBundle("KENTCM.CB1022025_RGzBPM5J655e")
  22. If (success <> 1) Then
  23. WriteLine(glob.LastErrorText)
  24. WScript.Quit
  25. End If
  26. Dim objCSV:Set objCsv = CreateObject("Chilkat_9_5_0.Csv")
  27. InitConfig
  28. Main
  29. Sub InitConfig
  30. Select Case dev
  31. Case "local"
  32. QpdfProgId = "DebenuPDFLibrary64AX1013.PDFLibrary"
  33. DataDirectory = "F:\Share\TrackingDataImport\"
  34. ExportDirectory = "F:\Share\TrackingDataExport\"
  35. ConnectionString = "Provider=Microsoft.ACE.OLEDB.12.0;Data Source=D:\Development\Tracking_Kits\Data\webdata - Copy.mdb;"
  36. PurpleEnvelopeProofReport = "D:\Development\Tracking_Kits\Data\Proofs.rep"
  37. OfficeCopiesProofReport = "D:\Development\Tracking_Kits\Data\Office-Copy-Proof.rep"
  38. CustomOfficeCopiesProof = "D:\Development\Tracking_Kits\Data\Custom Office Copies Proof.rep"
  39. set outFile = objFSO.CreateTextFile(WorkingDirectory & "temp.csv",True)
  40. Case true
  41. QpdfProgId = "DebenuPDFLibraryAX1013.PDFLibrary"
  42. DataDirectory = "C:\Share\TrackingDataImport\"
  43. ExportDirectory = "C:\Share\TrackingDataExport\"
  44. ConnectionString = "Provider=Microsoft.Jet.OLEDB.4.0;Jet OLEDB:Engine Type=5;Data Source=C:\Git Repos\tracking_kits\Data\webdata - Copy.mdb;"
  45. PurpleEnvelopeProofReport = "C:\Git Repos\tracking_kits\Data\Proofs.rep"
  46. OfficeCopiesProofReport = "C:\Git Repos\tracking_kits\Data\Office-Copy-Proof.rep"
  47. CustomOfficeCopiesProof = "F:\Development\Tracking_Kits\Data\Custom Office Copies Proof.rep"
  48. set outFile = objFSO.CreateTextFile("C:\Git Repos\tracking_kits\Data\TrackingDataExport\temp.csv",True)
  49. Case Else
  50. QpdfProgId = "DebenuPDFLibraryAX1013.PDFLibrary"
  51. DataDirectory = "\\kci-syn-cl01\PC Transfer\TrackingDataImport"
  52. ExportDirectory = "\\kci-syn-cl01\PC Transfer\TrackingDataExport\"
  53. ConnectionString = "Provider=Microsoft.Jet.OLEDB.4.0;Jet OLEDB:Engine Type=5;Data Source=C:\inetpub\Data\webdata - Copy.mdb;"
  54. PurpleEnvelopeProofReport ="C:\inetpub\tracking\Data\Proofs.rep"
  55. OfficeCopiesProofReport = "C:\inetpub\tracking\Data\Office-Copy-Proof.rep"
  56. CustomOfficeCopiesProof="C:\inetpub\tracking\Data\Custom Office Copies Proof.rep"
  57. set outFile = objFSO.CreateTextFile("\\kci-syn-cl01\PC Transfer\TrackingDataExport\temp.csv",True)
  58. End Select
  59. End Sub
  60. Function ProcessStatus(statusText, actionName, actionParameter)
  61. Dim KitID
  62. KitID = CheckStatusFor(statusText)
  63. If KitID > 0 Then
  64. Select Case actionName
  65. Case "AssignTracking"
  66. createTrackingInfoForKit(KitID)
  67. Case "ExportSnailWorks"
  68. CreateExportForSnailWorks(KitID)
  69. Case "ProofJurisdiction"
  70. CreateProofForJurisdiction(KitID)
  71. Case "ExportInkjet"
  72. InkjetExportSortDirection = actionParameter
  73. If oConn.State = 0 Then:oConn.Open(ConnectionString):End If
  74. Dim exportKitRs:Set exportKitRs = oConn.Execute("Select [JobType] From [Kit] Where [ID] =" & KitID & ";")
  75. If Not exportKitRs.EOF Then
  76. If UCase(Trim(exportKitRs("JobType").Value & "")) = "PURPLE ENVELOPES-ASCENDING" Then
  77. InkjetExportSortDirection = "ASC"
  78. ElseIf Len(Trim(InkjetExportSortDirection & "")) = 0 Then
  79. InkjetExportSortDirection = "DESC"
  80. End If
  81. End If
  82. If exportKitRs.State = 1 Then:exportKitRs.Close:End If
  83. ExportInkjetFile KitID
  84. InkjetExportSortDirection = ""
  85. End Select
  86. End If
  87. ProcessStatus = KitID
  88. End Function
  89. Sub Main
  90. 'ToDo create a checkstatus function so I dont need four functions of create a case switch that responds to the status of jobs
  91. CreateCustomOfficeCopyJobsProofFiles
  92. If ThereAreCustomOfficeCopyJobsReady() Then
  93. CreateCustomOfficeCopyJobsInKjetFiles
  94. CreateCustomOfficeCopyJobsProofFiles
  95. End If
  96. CheckForFiles:KitID = CheckForJobsToCass()
  97. If KitID > 0 Then
  98. ExportMMCsv(KitID)
  99. RunMailManager
  100. ImportCass
  101. End If
  102. Call ProcessStatus("Ready to Assign Labels", "AssignTracking", "")
  103. Call ProcessStatus("Ready For Export", "ExportSnailWorks", "")
  104. Call ProcessStatus("Ready to Proof", "ProofJurisdiction", "")
  105. Call ProcessStatus("Ready For Inkjet Export", "ExportInkjet", "")
  106. if dev = False then
  107. CheckSnailWorksPurpleEnvelopeExport
  108. CheckSnailWorksTrakingKitExport
  109. End if
  110. WScript.Quit
  111. End Sub
  112. Sub CreateCustomOfficeCopyJobsInKjetFiles
  113. If oConn.State = 0 Then:oConn.Open(ConnectionString):End If
  114. Dim JurisdictionRs,JobsRs,ContactRs,objInkjetCSV:set JobsRs = oConn.Execute("Select * From [CustomOfficeCopyJob] Where [Status] ='Ready';")
  115. Do While Not JobsRs.Eof
  116. Set JurisdictionRs = oConn.Execute("SELECT * FROM Jurisdiction WHERE JCode ='" & JobsRs("Jcode").Value & "';")
  117. Set ContactRs = oConn.Execute("SELECT * FROM Contacts WHERE [JURISCODE] ='" & JobsRs("Jcode").Value & "';")
  118. Set objInkJetCSV = CreateObject("Chilkat_9_5_0.Csv")
  119. objInkjetCSV.HasColumnNames = 1
  120. objInkjetCSV.EnableQuotes = 1
  121. objInkjetCSV.SetColumnName 0,"Full Name"
  122. objInkjetCSV.SetColumnName 1,"Address 1"
  123. objInkjetCSV.SetColumnName 2,"Address 2"
  124. objInkjetCSV.SetColumnName 3,"Address 3"
  125. objInkjetCSV.SetColumnName 4,"Address 4"
  126. objInkjetCSV.SetColumnName 5,"IM barcode Characters"
  127. objInkjetCSV.SetColumnName 6,"Precinct"
  128. objInkjetCSV.SetColumnName 7,"Ballot ID"
  129. objInkjetCSV.SetColumnName 8,"Ballot Number"
  130. objInkjetCSV.SetColumnName 9,"Jurisdiction code"
  131. objInkjetCSV.SetColumnName 10,"Election Date"
  132. objInkJetCSV.SetColumnName 11,"Combined Pct_Ballot Num"
  133. objInkJetCSV.SetColumnName 12,"Title"
  134. objInkJetCSV.SetColumnName 13,"G2 Full Name"
  135. objInkJetCSV.SetColumnName 14,"G2 Company"
  136. objInkJetCSV.SetColumnName 15,"G2 Alternate 1 Address"
  137. objInkJetCSV.SetColumnName 16,"G2 Delivery Address"
  138. objInkJetCSV.SetColumnName 17,"G2 City St ZIP+4"
  139. objInkJetCSV.SetColumnName 18,"G2 IM barcode Characters"
  140. objInkJetCSV.SetColumnName 19,"Matching Code"
  141. Dim Record
  142. For Record = 0 To JobsRs("Amount").Value -1
  143. objInkJetCSV.SetCellByName Record,"Precinct",JobsRs("Precinct").Value
  144. objInkJetCSV.SetCellByName Record,"Ballot Number",JobsRs("StartingBallotNumber").Value + Record
  145. objInkjetCSV.SetCellByName Record,"Title",CleanNull(ContactRs("Title").Value)
  146. objInkJetCSV.SetCellByName Record,"G2 Full Name",JurisdictionRs("Name").Value
  147. objInkJetCSV.SetCellByName Record,"G2 Company",JurisdictionRs("Mailing_Address").Value
  148. objInkJetCSV.SetCellByName Record,"G2 Alternate 1 Address",JurisdictionRs("CSZ").Value
  149. objInkJetCSV.SetCellByName Record,"G2 Delivery Address",""
  150. objInkJetCSV.SetCellByName Record,"G2 City St ZIP+4",""
  151. objInkJetCSV.SetCellByName Record,"G2 IM barcode Characters",JurisdictionRs("IMB_Digits").Value
  152. Next
  153. objInkjetCSV.SaveFile(ExportDirectory & JurisdictionRs("Name").Value & "-" & JobsRs("Precinct").Value & ".csv" )
  154. Set objInkjetCSV = Nothing
  155. Set JurisdictionRs = Nothing
  156. set ContactRs = Nothing
  157. oConn.Execute("Update [CustomOfficeCopyJob] Set [Status] ='Ready To Proof' where [ID] = " & JobsRs("ID").Value & ";")
  158. JobsRs.MoveNext
  159. Loop
  160. If JobsRs.State = 1 Then:JobsRs.Close
  161. If oConn.State = 1 Then:oConn.Close
  162. End Sub
  163. Sub CreateCustomOfficeCopyJobsProofFiles
  164. If oConn.State = 0 Then:oConn.Open(ConnectionString):End If
  165. Dim JobsRs:Set JobsRs = oConn.Execute("Select * From [CustomOfficeCopyJob] Where [Status] ='Ready To Proof';")
  166. If Not JobsRs.EOF Then
  167. Dim JurisdictionRs:Set JurisdictionRs = oConn.Execute("SELECT * FROM Jurisdiction WHERE JCode ='" & JobsRs("Jcode").Value & "';")
  168. Dim reportManager:set reportManager = CreateObject("ReportMan.ReportManX")
  169. With reportManager
  170. .Preview = False
  171. .ShowProgress = False
  172. .ShowPrintDialog = False
  173. .filename = CustomOfficeCopiesProof
  174. .SetDatabaseConnectionString "MORE_DATA",ConnectionString
  175. .SetParamValue "PBJCODE",JobsRs("Jcode")
  176. .SetParamValue "PBCSV",JurisdictionRs("Name").Value & "-" & JobsRs("Precinct").Value & ".csv"
  177. .SaveToPDF ExportDirectory & JurisdictionRs("Name").Value & "-" & JobsRs("Precinct").Value & ".pdf",1
  178. End With
  179. oConn.Execute("Update [CustomOfficeCopyJob] Set [Status] ='Done' where [ID] = " & JobsRs("ID").Value & ";")
  180. End If
  181. If JobsRs.State = 1 Then:JobsRs.Close
  182. If oConn.State = 1 Then:oConn.Close
  183. End Sub
  184. Function ThereAreCustomOfficeCopyJobsReady
  185. If oConn.State = 0 Then:oConn.Open(ConnectionString):End If
  186. Dim JobsRs:set JobsRs = oConn.Execute("Select [ID] From [CustomOfficeCopyJob] Where [Status] ='Ready';")
  187. If Not JobsRs.EOF Then:ThereAreCustomOfficeCopyJobsReady = True:Else ThereAreCustomOfficeCopyJobsReady = False
  188. If JobsRs.State = 1 Then:JobsRs.Close
  189. If oConn.State = 1 Then:oConn.Close
  190. End Function
  191. Sub CheckSnailWorksPurpleEnvelopeExport
  192. Dim Sftp:set Sftp = CreateObject("Chilkat_9_5_0.SFtp")
  193. Dim objFolder
  194. Dim success
  195. Set objFolder = objFSO.GetFolder("\\kci-syn-cl01\PC Transfer\TrackingDataExport\Export Purple Envelopes")
  196. If objFolder.Files.Count > 0 Then
  197. success = Sftp.Connect("sftp.snailworks.com",22)
  198. success = Sftp.AuthenticatePw("KCIHotFolder2024FTPUser","Z!4WXLSQMM#f")
  199. success = Sftp.InitializeSftp()
  200. Dim file
  201. For Each file In objFolder.Files
  202. debug.WriteLine file.Path
  203. Dim handle:handle = Sftp.OpenFile(file.Name,"writeOnly","createTruncate")
  204. Sftp.UploadFile handle,file.Path
  205. Sftp.CloseHandle handle
  206. file.Delete
  207. Next
  208. End If
  209. End Sub
  210. Sub CheckSnailWorksTrakingKitExport
  211. Dim Sftp:set Sftp = CreateObject("Chilkat_9_5_0.SFtp")
  212. Dim objFolder
  213. Dim success
  214. Set objFolder = objFSO.GetFolder("\\kci-syn-cl01\PC Transfer\TrackingDataExport\Export Tracking Kits")
  215. If objFolder.Files.Count > 0 Then
  216. success = Sftp.Connect("sftp.snailworks.com",22)
  217. success = Sftp.AuthenticatePw("KCI2024Type2FTPUser","Z!NXVRV5SH#f")
  218. success = Sftp.InitializeSftp()
  219. Dim file
  220. For Each file In objFolder.Files
  221. debug.WriteLine file.Path
  222. Dim handle:handle = Sftp.OpenFile(file.Name,"writeOnly","createTruncate")
  223. Sftp.UploadFile handle,file.Path
  224. Sftp.CloseHandle handle
  225. file.Delete
  226. Next
  227. End If
  228. End Sub
  229. Function ExportInkjetFile(KitID)
  230. If oConn.State = 0 Then:oConn.Open(ConnectionString):End If
  231. Dim requestedSortDirection:requestedSortDirection = ""
  232. On Error Resume Next
  233. requestedSortDirection = Eval("InkjetExportSortDirection")
  234. If Err.Number <> 0 Then
  235. Err.Clear
  236. requestedSortDirection = ""
  237. End If
  238. On Error GoTo 0
  239. Dim normalizedSortDirection:normalizedSortDirection = "DESC"
  240. If Not IsNull(requestedSortDirection) And Not IsEmpty(requestedSortDirection) Then
  241. Select Case UCase(Trim(CStr(requestedSortDirection)))
  242. Case "ASC", "TRUE", "1"
  243. normalizedSortDirection = "ASC"
  244. End Select
  245. End If
  246. Dim KitRs:set KitRs = oConn.Execute("Select * From [Kit] Where [ID] =" & KitID & ";")
  247. Dim KitLabelsRs: Set KitLabelsRs = oConn.Execute("SELECT * FROM ( " & _
  248. "SELECT IIf(Len([PRECINCT]) = 1, '0' & [PRECINCT] & Right([BALLOT_NUMBER],4), [PRECINCT] & Right([BALLOT_NUMBER],4)) AS SORT_ORDER, " & _
  249. "InkjetRecords.ID, InkjetRecords.KitID, InkjetRecords.VOTERID, InkjetRecords.LASTNAME, " & _
  250. "InkjetRecords.FIRSTNAME, InkjetRecords.MIDDLENAME, InkjetRecords.SUFFIX, InkjetRecords.PRECINCT, " & _
  251. "InkjetRecords.ADDRESS1, InkjetRecords.ADDRESS2, InkjetRecords.ADDRESS3, InkjetRecords.ADDRESS4, " & _
  252. "InkjetRecords.ADDRESS5, InkjetRecords.APPSENT, InkjetRecords.APPRETURNED, InkjetRecords.BALSENT, " & _
  253. "InkjetRecords.BALRETURNED, InkjetRecords.CountingBoard, InkjetRecords.UOCAVASTATUS, InkjetRecords.EMAILADDRESS, " & _
  254. "InkjetRecords.PHONENUMBER, InkjetRecords.BALLOT_NUMBER, InkjetRecords.CassADDRESS1, InkjetRecords.CassADDRESS2, " & _
  255. "InkjetRecords.CassADDRESS3, InkjetRecords.CassADDRESS4, InkjetRecords.CassADDRESS5, " & _
  256. "InkjetRecords.KitLabelID AS InkjetKitLabelID, " & _
  257. "InkjetRecords.ColorId, Colors.Filepath AS ColorFilepath, IIf(IsNull(Colors.Name) OR Colors.Name = '', 'White', Colors.Name) AS ColorName, " & _
  258. "KitLabels.ID AS KitLabelID, KitLabels.KitID, KitLabels.OutboundSerial, KitLabels.InBoundSerial, KitLabels.OutboundIMB, " & _
  259. "KitLabels.InBoundIMB, KitLabels.OutboundIMBDigits, KitLabels.InBoundIMBDigits, KitLabels.OutboundIMBPNG, " & _
  260. "KitLabels.INBOUNDIMBPNG, KitLabels.SetNumber " & _
  261. "FROM ((InkjetRecords " & _
  262. "LEFT JOIN KitLabels ON InkjetRecords.KitLabelID = KitLabels.ID) " & _
  263. "LEFT JOIN Colors ON InkjetRecords.ColorId = Colors.ID) " & _
  264. "WHERE InkjetRecords.KitID = " & KitID & ") AS [Data] " & _
  265. "ORDER BY Val(PRECINCT) " & normalizedSortDirection & ", PRECINCT " & normalizedSortDirection & ", " & _
  266. "Val(Right(BALLOT_NUMBER, 4)) " & normalizedSortDirection & ", Right(BALLOT_NUMBER, 4) " & normalizedSortDirection & ";")
  267. Dim JurisdictionRs:Set JurisdictionRs = oConn.Execute("SELECT * FROM Jurisdiction WHERE JCode ='" & KitRs("Jcode").Value & "';")
  268. Dim ContactRs:Set ContactRs = oConn.Execute("SELECT * FROM Contacts WHERE [JURISCODE] ='" & KitRs("Jcode").Value & "';")
  269. Dim ExportFileName:ExportFileName = objFSO.GetBaseName(KitRs("Filename")) & ".csv"
  270. If Not objFSO.FolderExists(ExportDirectory & KitRs("JobNumber").Value & "-" & JurisdictionRs("Name").value) Then:objFSO.CreateFolder(ExportDirectory & KitRs("JobNumber").Value & "-" & JurisdictionRs("Name").value):End If
  271. If objFSO.FileExists(ExportDirectory & KitRs("JobNumber").Value & "-" & JurisdictionRs("Name").value & "/" & ExportFileName) Then:objFSO.DeleteFile(ExportDirectory & KitRs("JobNumber").Value & "-" & JurisdictionRs("Name").value & "/" & ExportFileName):End If
  272. Dim ElectionDate:ElectionDate=GetSetting("ElectionDate")
  273. Dim objInkjetCSV:Set objInkJetCSV = CreateObject("Chilkat_9_5_0.Csv")
  274. objInkjetCSV.HasColumnNames = 1
  275. objInkjetCSV.EnableQuotes = 1
  276. objInkjetCSV.SetColumnName 0,"Full Name"
  277. objInkjetCSV.SetColumnName 1,"Address 1"
  278. objInkjetCSV.SetColumnName 2,"Address 2"
  279. objInkjetCSV.SetColumnName 3,"Address 3"
  280. objInkjetCSV.SetColumnName 4,"Address 4"
  281. objInkjetCSV.SetColumnName 5,"IM barcode Characters"
  282. objInkjetCSV.SetColumnName 6,"Precinct"
  283. objInkjetCSV.SetColumnName 7,"Ballot ID"
  284. objInkjetCSV.SetColumnName 8,"Ballot Number"
  285. objInkjetCSV.SetColumnName 9,"Jurisdiction code"
  286. objInkjetCSV.SetColumnName 10,"Election Date"
  287. objInkJetCSV.SetColumnName 11,"Combined Pct_Ballot Num"
  288. objInkJetCSV.SetColumnName 12,"Title"
  289. objInkJetCSV.SetColumnName 13,"G2 Full Name"
  290. objInkJetCSV.SetColumnName 14,"G2 Company"
  291. objInkJetCSV.SetColumnName 15,"G2 Alternate 1 Address"
  292. objInkJetCSV.SetColumnName 16,"G2 Delivery Address"
  293. objInkJetCSV.SetColumnName 17,"G2 City St ZIP+4"
  294. objInkJetCSV.SetColumnName 18,"G2 IM barcode Characters"
  295. objInkJetCSV.SetColumnName 19,"Matching Code"
  296. objInkJetCSV.SetColumnName 20,"ColorFilepath"
  297. objInkJetCSV.SetColumnName 21,"ColorName"
  298. Dim AddressArray
  299. Dim g2
  300. Set g2 = BuildG2AddressFields( _
  301. JurisdictionRs("Name").Value, _
  302. JurisdictionRs("Mailing_Address").Value, _
  303. JurisdictionRs("CSZ").Value _
  304. )
  305. Dim row:row = 0
  306. While Not KitLabelsRs.EOF
  307. AddressArray = CompressArray(Array(KitLabelsRs("CassADDRESS1").Value,KitLabelsRs("CassADDRESS2").Value,KitLabelsRs("CassADDRESS3").Value,KitLabelsRs("CassADDRESS4").Value,KitLabelsRs("CassADDRESS5").Value))
  308. objInkjetCSV.SetCellByName row,"Full Name",AddressArray(0)
  309. objInkjetCSV.SetCellByName row,"Address 1",AddressArray(1)
  310. objInkjetCSV.SetCellByName row,"Address 2",AddressArray(2)
  311. objInkjetCSV.SetCellByName row,"Address 3",AddressArray(3)
  312. objInkjetCSV.SetCellByName row,"Address 4",AddressArray(4)
  313. If KitRs("OutboundSTID") <> "0" Then
  314. objInkJetCSV.SetCellByName row,"IM barcode Characters",KitLabelsRs("OutboundIMBDigits").Value
  315. End If
  316. objInkJetCSV.SetCellByName row,"Precinct",KitLabelsRs("PRECINCT").Value
  317. objInkJetCSV.SetCellByName row,"Ballot ID","*" & KitLabelsRs("VOTERID").Value & "*"
  318. objInkJetCSV.SetCellByName row,"Ballot Number",TrimLeadingZeros(KitLabelsRs("BALLOT_NUMBER").Value)
  319. objInkJetCSV.SetCellByName row,"Jurisdiction code",KitRs("Jcode").Value
  320. objInkJetCSV.SetCellByName row,"Election Date",ElectionDate
  321. objInkJetCSV.SetCellByName row,"Combined Pct_Ballot Num",KitLabelsRs("PRECINCT").Value & TrimLeadingZeros(KitLabelsRs("BALLOT_NUMBER").Value)
  322. objInkjetCSV.SetCellByName row,"Title",CleanNull(ContactRs("Title").Value)
  323. objInkJetCSV.SetCellByName row, "G2 Full Name", g2("G2 Full Name")
  324. objInkJetCSV.SetCellByName row, "G2 Company", g2("G2 Company")
  325. objInkJetCSV.SetCellByName row, "G2 Alternate 1 Address", g2("G2 Alternate 1 Address")
  326. objInkJetCSV.SetCellByName row, "G2 Delivery Address", g2("G2 Delivery Address")
  327. objInkJetCSV.SetCellByName row, "G2 City St ZIP+4", g2("G2 City St ZIP+4")
  328. objInkJetCSV.SetCellByName row,"G2 IM barcode Characters",Choice(IsNull(KitRs("InboundSTID")),JurisdictionRs("IMB_Digits").Value,KitLabelsRs("InBoundIMBDigits").Value)
  329. objInkJetCSV.SetCellByName row,"Matching Code",KitRs("Jcode").Value & TrimLeadingZeros(KitLabelsRs("PRECINCT").Value) & TrimLeadingZeros(KitLabelsRs("BALLOT_NUMBER").Value)
  330. objInkJetCSV.SetCellByName row,"ColorFilepath",KitLabelsRs("ColorFilepath").Value & ""
  331. objInkJetCSV.SetCellByName row,"ColorName",KitLabelsRs("ColorName").Value & ""
  332. 'Where do we put the roundtrip IMB
  333. row = row + 1
  334. KitLabelsRs.MoveNext
  335. Wend
  336. If KitRs("OfficeCopiesAmount").Value > 0 Then
  337. dim s
  338. For s = 0 to KitRs("OfficeCopiesAmount").Value -1
  339. objInkjetCSV.SetCellByName row + s,"Title",CleanNull(ContactRs("Title").Value)
  340. objInkJetCSV.SetCellByName row, "G2 Full Name", g2("G2 Full Name")
  341. objInkJetCSV.SetCellByName row, "G2 Company", g2("G2 Company")
  342. objInkJetCSV.SetCellByName row, "G2 Alternate 1 Address", g2("G2 Alternate 1 Address")
  343. objInkJetCSV.SetCellByName row, "G2 Delivery Address", g2("G2 Delivery Address")
  344. objInkJetCSV.SetCellByName row, "G2 City St ZIP+4", g2("G2 City St ZIP+4")
  345. objInkJetCSV.SetCellByName row + s,"G2 IM barcode Characters",JurisdictionRs("IMB_Digits").Value
  346. Next
  347. End If
  348. objInkjetCSV.SaveFile(ExportDirectory & KitRs("JobNumber").Value & "-" & JurisdictionRs("Name").value & "/" & ExportFileName)
  349. oConn.Execute("UPDATE KIT SET [Status] ='Done',[InkJetJob]=1 WHERE [ID] =" & KitID & ";")
  350. If KitRs.State = 1 Then:KitRs.Close:End If
  351. If ContactRs.State =1 Then:ContactRs.Close:End If
  352. If KitLabelsRs.State = 1 Then:KitLabelsRs.Close: End If
  353. If JurisdictionRs.State = 1 Then:JurisdictionRs.Close:End If
  354. If oConn.State = 1 Then:oConn.Close:End If
  355. End Function
  356. Function ResolveInkjetSortDirection(sortDirection)
  357. ResolveInkjetSortDirection = "DESC"
  358. If IsNull(sortDirection) Or IsEmpty(sortDirection) Then
  359. Exit Function
  360. End If
  361. Select Case UCase(Trim(CStr(sortDirection)))
  362. Case "ASC", "TRUE", "1"
  363. ResolveInkjetSortDirection = "ASC"
  364. End Select
  365. End Function
  366. Function CheckStatusFor(StatusString)
  367. If oConn.State = 0 Then:oConn.Open(ConnectionString):End If
  368. Dim rs:Set rs = oConn.Execute("Select TOP 1 [ID] FROM [Kit] Where Status ='" & StatusString & "' and (JobType='Purple Envelopes' OR JobType='Purple Envelopes-Ascending');")
  369. If Not rs.EOF Then
  370. CheckStatusFor = rs("ID").value
  371. Else
  372. CheckStatusFor = 0
  373. End If
  374. If rs.State = 1 Then:rs.Close:End If
  375. If oConn.State = 1 Then:oConn.Close:End If
  376. End Function
  377. Function CreateProofForJurisdiction(KitID)
  378. Dim Qpdf:Set Qpdf = WScript.CreateObject(QpdfProgId)
  379. Dim Result:Result = Qpdf.UnlockKey("j564z3wi9i66k93cp3r798b3y")
  380. If oConn.State = 0 Then:oConn.Open(ConnectionString):End If
  381. Dim Rs:set Rs = oConn.Execute("SELECT MIN(ID) as [MIN],MAX(ID) as [MAX] FROM InkjetRecords WHERE KitID = " & KitID &";")
  382. Dim MIN:MIN = Rs("MIN").Value
  383. Dim MAX:MAX = Rs("MAX").Value
  384. Dim RecordCount:RecordCount = (MAX - MIN) + 1
  385. Rs.Close
  386. Dim KitRs:set KitRs = oConn.Execute("Select * From [Kit] Where [ID] =" & KitID & ";")
  387. Dim JurisdictionRs:set JurisdictionRs = oConn.Execute("SELECt * FROM [Jurisdiction] WHERE JCode='" & KitRs("Jcode").Value & "';")
  388. Dim ProofFileName:ProofFileName = objFSO.GetBaseName(KitRs("Filename")) & "-PROOF.PDF"
  389. If Not objFSO.FolderExists(ExportDirectory & KitRs("JobNumber").Value & "-" & JurisdictionRs("Name").value) Then:objFSO.CreateFolder(ExportDirectory & KitRs("JobNumber").Value & "-" & JurisdictionRs("Name").value):End If
  390. Dim reportManager:set reportManager = CreateObject("ReportMan.ReportManX")
  391. With reportManager
  392. .Preview = False
  393. .ShowProgress = False
  394. .ShowPrintDialog = False
  395. .filename = PurpleEnvelopeProofReport
  396. .SetDatabaseConnectionString "WEBDATA",ConnectionString
  397. .SetParamValue "PBKITID",KitID
  398. .SetParamValue "PBJCODE",KitRs("Jcode").Value
  399. Dim MAXRECORDS:MAXRECORDS = 500 'This needs to be done it seems becasue of the variable bitmap color bar
  400. If RecordCount > MAXRECORDS Then
  401. Dim i
  402. For i = 0 To RecordCount / MAXRECORDS
  403. Dim newMin:If MIN + (i * MAXRECORDS) > MIN Then:newMin = MIN + (i * MAXRECORDS) + 1:Else newMin = MIN:End If
  404. Dim newMax:If MIN + (i * MAXRECORDS) + MAXRECORDS > MAX Then:newMax = MAX:Else newMax = MIN + (i * MAXRECORDS) + MAXRECORDS:End If
  405. .SetParamValue "PBMIN",newMin
  406. .SetParamValue "PBMAX",newMax
  407. .SaveToPDF ExportDirectory & KitRs("JobNumber").Value & "-" & JurisdictionRs("Name").value & "\Part_" & i & "_" & ProofFileName,1
  408. Result = Qpdf.AddToFileList("Proofs",ExportDirectory & KitRs("JobNumber").Value & "-" & JurisdictionRs("Name").value & "\Part_" & i & "_" & ProofFileName)
  409. Next
  410. Result = Qpdf.MergeFileListFast("Proofs",ExportDirectory & KitRs("JobNumber").Value & "-" & JurisdictionRs("Name").value & "/" & ProofFileName)
  411. Dim test
  412. For test = 1 To Qpdf.FileListCount("Proofs")
  413. WshShell.Run "cmd.exe /c DEL /F /Q """ & Qpdf.FileListItem("Proofs",test) & """" ,0,True
  414. Next
  415. Else
  416. .SetParamValue "PBMIN",MIN
  417. .SetParamValue "PBMAX",MAX
  418. .SaveToPDF ExportDirectory & KitRs("JobNumber").Value & "-" & JurisdictionRs("Name").value & "/" & ProofFileName,1
  419. End If
  420. End With
  421. oConn.Execute("UPDATE KIT SET [Status] ='Ready For Inkjet Export' WHERE [ID] =" & KitID & ";")
  422. If KitRs.State = 1 Then:KitRs.Close:End If
  423. If JurisdictionRs.State = 1 Then:JurisdictionRs.Close:End If
  424. If oConn.State = 1 Then:oConn.Close:End If
  425. End Function
  426. Function CreateExportForSnailWorks(KitID)
  427. Dim State
  428. Dim AddressArray
  429. Dim ForeignTest
  430. If oConn.State = 0 Then:oConn.Open(ConnectionString):End If
  431. Dim KitRs:set KitRs = oConn.Execute("Select * From [Kit] Where [ID] =" & KitID & ";")
  432. If KitRs("OutboundSTID") <> "0" Then
  433. Dim KitLabelsRs: Set KitLabelsRs = oConn.Execute("SELECT InkjetRecords.VOTERID, InkjetRecords.PRECINCT," &_
  434. " InkjetRecords.BALLOT_NUMBER, InkjetRecords.CassADDRESS1, InkjetRecords.CassADDRESS2," &_
  435. " InkjetRecords.CassADDRESS3, InkjetRecords.CassADDRESS4, InkjetRecords.CassADDRESS5," &_
  436. " KitLabels.OutboundIMBDigits, KitLabels.InBoundIMBDigits" &_
  437. " FROM InkjetRecords" &_
  438. " LEFT JOIN [KitLabels] ON InkjetRecords.KitLabelID = KitLabels.ID" &_
  439. " WHERE InkjetRecords.KitID =" & KitID & " ;")
  440. Dim JurisdictionRs:Set JurisdictionRs = oConn.Execute("SELECT * FROM Jurisdiction WHERE JCode ='" & KitRs("Jcode").Value & "';")
  441. Dim ExportFileName:ExportFileName = objFSO.GetBaseName(KitRs("Filename")) & "_SW_EXPORT.csv"
  442. If Not objFSO.FolderExists(ExportDirectory & KitRs("JobNumber").Value & "-" & JurisdictionRs("Name").value) Then:objFSO.CreateFolder(ExportDirectory & KitRs("JobNumber").Value & "-" & JurisdictionRs("Name").value):End If
  443. If objFSO.FileExists(ExportDirectory & KitRs("JobNumber").Value & "-" & JurisdictionRs("Name").value & "/" & ExportFileName) Then:objFSO.DeleteFile(ExportDirectory & KitRs("JobNumber").Value & "-" & JurisdictionRs("Name").value & "/" & ExportFileName):End If
  444. Dim objExportFile:set objExportFile = objFSO.CreateTextFile(ExportDirectory & KitRs("JobNumber").Value & "-" & JurisdictionRs("Name").value & "/" & ExportFileName,2)
  445. With objExportFile
  446. .Write(chr(34) & "H" & chr(34) & "," & _
  447. Truncate("5.2",5) & _
  448. Truncate("KCIHotFolder2024FTPUser",50) & _
  449. Truncate(KitRs("Jcode").Value,50) & _
  450. Truncate("",50) & _
  451. Truncate("Purple envelope - " & KitRs("JobNumber").Value,50) & _
  452. Truncate("",50) & _
  453. Truncate("",50) & _
  454. Truncate("",80) & _
  455. Truncate("L",1) & _
  456. Truncate(Year(Now()) & "/" & Right("0" & Month(Now()),2) & "/" & Right("0" & Day(Now()),2),10) & _
  457. Truncate("N",1) & _
  458. Truncate("",8) & _
  459. Truncate("",8) & _
  460. Truncate("",10) & _
  461. Truncate("",10) & _
  462. Truncate("danielc@kentcommunications.com",100) & _
  463. Truncate("",9) & _
  464. Truncate("",4) & _
  465. Truncate(Choice(IsNull(KitRs("InboundSTID")),"O","R"),1) & _
  466. Truncate("",11) & _
  467. Truncate("",2) & _
  468. Truncate("",255) & _
  469. Truncate("",2) & _
  470. Truncate("",255) & _
  471. chr(34) & "N" & chr(34) & vbCrLf)
  472. While Not KitLabelsRs.EOF
  473. AddressArray = Array(KitLabelsRs("CassADDRESS2").Value,KitLabelsRs("CassADDRESS3").Value,KitLabelsRs("CassADDRESS4").Value,KitLabelsRs("CassADDRESS5").Value)
  474. PushNonEmptyToBottom AddressArray
  475. ForeignTest = AddressArray(3) & " " & AddressArray(2)
  476. State = GetState(AddressArray(3))
  477. State = Replace(State," ","")
  478. If CheckStringDoesNotHaveForiegnCountries(ForeignTest) And State <> """""," then
  479. 'If InStr(ForeignTest,"CANADA") = 0 And InStr(ForeignTest,"AUSTRALIA") = 0 And State <> "" Then " ",
  480. .Write(chr(34) & "D" & chr(34) & "," & _
  481. Truncate("",20) & _
  482. Truncate(KitLabelsRs("OutboundIMBDigits"),31) & _
  483. Truncate("",10) & _
  484. Truncate("",50) & _
  485. Truncate("",2) & _
  486. Truncate("",50) & _
  487. Truncate("",10) & _
  488. Truncate((KitLabelsRs("CassADDRESS1").Value),100) & _
  489. Truncate("",50) & _
  490. Truncate("",50) & _
  491. Truncate(AddressArray(1),128) & _
  492. Truncate(AddressArray(2),128) & _
  493. Truncate(GetCityFromLine(AddressArray(3)),50) & _
  494. Truncate(State,2) & _
  495. Choice(InStr(AddressArray(3),"-"),Truncate(Right(AddressArray(3),11),11),Truncate(Right(AddressArray(3),5),5)) & _
  496. Truncate(KitRs("Jcode"),100) & _
  497. Truncate("",100) & _
  498. Truncate("",100) & _
  499. Truncate(KitLabelsRs("PRECINCT").Value & KitLabelsRs("BALLOT_NUMBER"),80) & _
  500. Truncate(KitLabelsRs("VOTERID").Value,80) & _
  501. Truncate("",1) & _
  502. Truncate("",80) & _
  503. Truncate("",10) & _
  504. Truncate(Choice(IsNull(KitRs("InboundSTID")),"",KitLabelsRs("InBoundIMBDigits").Value),31) & _
  505. Truncate("",24) & _
  506. chr(34) & chr(34) & vbCrLf)
  507. End If
  508. KitLabelsRs.MoveNext
  509. Wend
  510. .Close
  511. End With
  512. If KitLabelsRs.State = 1 Then:KitLabelsRs.Close: End If
  513. If JurisdictionRs.State = 1 Then:JurisdictionRs.Close:End If
  514. End If
  515. oConn.Execute("UPDATE KIT SET [Status] ='Ready to Proof',[ExportedToSnailWorks] =#" & Now() & "# WHERE [ID] =" & KitID & ";")
  516. If oConn.State = 1 Then:oConn.Close:End If
  517. If KitRs.State = 1 Then:KitRs.Close:End If
  518. End Function
  519. Function createTrackingInfoForKit(KitID)
  520. If oConn.State = 0 Then:oConn.Open(ConnectionString):End If
  521. oConn.Execute("UPDATE Kit SET Status ='Applying Serial Numbers' WHERE ID =" & KitID & ";")
  522. Dim KitRs:set KitRs = oConn.Execute("Select * from Kit Where ID =" & KitID & ";")
  523. If KitRs("OutBoundSTID") = 0 Then
  524. oConn.Execute("UPDATE Kit Set [Status]='Ready For Export', LabelsPrinted=#" & Now() & "# WHERE [ID] =" & KitID &";")
  525. Else
  526. Dim InkjetRs:Set InkjetRs = oConn.Execute("Select * from InkjetRecords Where KitID =" & KitID & ";")
  527. Dim JurisRs:set JurisRs = oConn.Execute("Select Right(IMB_Digits,9) as IMBZip FROM Jurisdiction Where JCode ='" & KitRs("Jcode") & "';"):Dim Jcode:Jcode = JurisRs("IMBZip"):JurisRs.Close
  528. Dim SerialNumberStart:SerialNumberStart = GetSetting("SerialNumberStart")
  529. Dim serialOffset:serialOffset = GetSetting("SerialOffset")
  530. Dim serialStart:serialStart = CLng(GetSetting("SerialNumberStart")) + CLng(GetSetting("SerialOffset"))
  531. Dim Counter:Counter=0
  532. Dim KitLabelID
  533. Dim KitLabelRs
  534. Dim Mid:Mid = GetSetting("MailingID")
  535. Dim Step : If KitRs("InboundSTID") <> "" Then : Step = 2 : Else Step = 1
  536. serialStart = PadLeft(serialStart + CLng(Counter),9,"0")
  537. Dim oRsKitLabels : Set oRsKitLabels = CreateObject("ADODB.Recordset"):oRsKitLabels.Open "Select * FROM [KitLabels] Where KitID =" & KitID & ";",oConn,3,3
  538. While Not InkjetRs.EOF
  539. oRsKitLabels.AddNew
  540. KitLabelID = oRsKitLabels("ID").value
  541. If Step = 1 Then
  542. oRsKitLabels("KitID") = KitID
  543. oRsKitLabels("OutboundSerial") = serialStart
  544. oRsKitLabels("OutboundIMBDigits") = KitRs("OutBoundSTID").Value & "202248" & serialStart
  545. Else
  546. oRsKitLabels("KitID") = KitID
  547. oRsKitLabels("OutboundSerial") = serialStart
  548. oRsKitLabels("InBoundSerial") = serialStart + 1
  549. oRsKitLabels("OutboundIMBDigits") = KitRs("OutBoundSTID").Value & "202248" & serialStart
  550. oRsKitLabels("InBoundIMBDigits") = KitRs("InboundSTID").Value & Mid & serialStart + 1 & Jcode
  551. End If
  552. oRsKitLabels.Update
  553. oConn.Execute("UPDATE InkjetRecords Set [KitLabelID]=" & KitLabelID & " WHERE ID=" & InkjetRs("ID") & ";")
  554. Counter = Counter + Step
  555. serialStart = serialStart + Step
  556. InkjetRs.MoveNext
  557. Wend
  558. oRsKitLabels.Update
  559. oRsKitLabels.Close
  560. oConn.Execute("UPDATE Settings Set [Value]='" & serialOffset + Counter & "' WHERE [Name] = 'SerialOffset';")
  561. oConn.Execute("UPDATE Kit Set [Status]='Ready For Export', LabelsPrinted=#" & Now() & "# WHERE [ID] =" & KitID &";")
  562. oConn.Close
  563. End If
  564. End Function
  565. Function GetSetting(settingName)
  566. Dim rs:Set rs = oConn.Execute("Select Value From [Settings] Where [Name] = '" & settingName & "';")
  567. If Not rs.EOF Then
  568. GetSetting = rs(0).value
  569. rs.Close
  570. Else
  571. SetSetting = 0
  572. rs.Close
  573. End If
  574. End Function
  575. Function CheckForFiles()
  576. If objFSO.FolderExists(DataDirectory) Then
  577. Dim objFolder:Set objFolder = objFSO.GetFolder(DataDirectory)
  578. If objFolder.Files.Count > 0 Then
  579. 'WScript.Echo "Files found in directory: " & DataDirectory
  580. Dim objFile
  581. For Each objFile In objFolder.Files
  582. Dim CsvString:CsvString = ConvertCsvToString(objFile.Path)
  583. If ValidImportCSV(CsvString) Then
  584. SetupKit CsvString,objFile.Name
  585. objFSO.MoveFile objFile.Path, DataDirectory & "\import\" & objFile.Name
  586. End If
  587. Next
  588. Else
  589. 'WScript.Echo "No files found in directory: " & DataDirectory
  590. End If
  591. End If
  592. End Function
  593. Function ValidJcode(jcode)
  594. Dim oConn
  595. Set oConn = WScript.CreateObject("ADODB.Connection")
  596. oConn.ConnectionString = ConnectionString
  597. oConn.Open
  598. Dim oRs
  599. set oRs = oConn.Execute("Select * from Jurisdiction Where [JCode] = '" & jcode & "';")
  600. If oRs.EOF Then
  601. ValidJcode = 0
  602. Else
  603. ValidJcode = 1
  604. End If
  605. oRs.Close
  606. oConn.Close
  607. End Function
  608. Function CheckStringDoesNotHaveForiegnCountries(StringToCheck)
  609. Dim Countries
  610. Countries = Array("CAMEROON","FINLAND","SWITZERLAND","SOUTH KOREA","SPAIN","LAGOS","PORTUGL","ON N4K 5-Y1","ITALY","CANADA","PHILIPPINES","GWYNEDD PENYGROES","NEW SOUTH WALES","UNITED KINGDOM","CHINA","SCOTLAND UK","ISRAEL","AUSTRIA","NORWAY","BUDAPEST","JAPAN","NEW ZEALAND","AUSTRALIA","FRANCE","UK LL","KENT ENGLAND","CANADA","NETHERLANDS","GERMANY","TAIWAN","NICARAGUA","IREL")
  611. Dim Country
  612. For Each Country In Countries
  613. If InStr(StringToCheck,Country) Then
  614. CheckStringDoesNotHaveForiegnCountries = False
  615. Exit For
  616. End If
  617. CheckStringDoesNotHaveForiegnCountries = True
  618. Next
  619. End Function
  620. Function SetupKit(CsvString,FileName)
  621. Dim JobNumber:JobNumber = Mid(FileName,9,6)
  622. Dim JCode:JCode = Left(Filename,5)
  623. If IsNumeric(JobNumber) Then
  624. If ValidJcode(JCode) Then
  625. WScript.Echo FileName & " Is a Valid CSV for Importing"
  626. Dim oConn:Set oConn = WScript.CreateObject("ADODB.Connection")
  627. oConn.ConnectionString = ConnectionString
  628. oConn.Open
  629. oConn.Execute("Insert Into Kit ([JobNumber], [Jcode], [CreatedOn], [JobType],[Filename],[Status]) VALUES ('" & JobNumber & "','" & JCode & "',#" & Now() & "#,'Purple Envelopes','" & FileName & "','Importing');")
  630. Dim rs : set rs = oConn.Execute("Select TOP 1 ID from Kit ORDER BY ID DESC")
  631. Dim kitId : kitId = rs("ID").value
  632. rs.close
  633. Dim i
  634. For i = 1 To objCSV.NumRows -1
  635. Dim AddressArray:AddressArray = Array(Replace(objCSV.GetCell(i,6),"'","''"),Replace(objCSV.GetCell(i,7),"'","''"),Replace(objCSV.GetCell(i,8),"'","''"),Replace(objCSV.GetCell(i,9),"'","''"),Replace(objCSV.GetCell(i,10),"'","''"))
  636. PushNonEmptyToBottom AddressArray
  637. oConn.Execute("Insert Into [InkjetRecords] (KitID,VOTERID,LASTNAME,FIRSTNAME,MIDDLENAME" & _
  638. ",SUFFIX,PRECINCT,ADDRESS1,ADDRESS2,ADDRESS3,ADDRESS4,ADDRESS5,APPSENT,APPRETURNED,BALSENT,BALRETURNED" & _
  639. ",CountingBoard,UOCAVASTATUS,EMAILADDRESS,PHONENUMBER,BALLOT_NUMBER) VALUES (" & kitId & _
  640. ",'" & Replace(objCSV.GetCell(i,0),"'","''") & _
  641. "','" & Replace(objCsv.GetCell(i,1),"'","''") & _
  642. "','" & Replace(objCSV.GetCell(i,2),"'","''") & _
  643. "','" & Replace(objCSV.GetCell(i,3),"'","''") & _
  644. "','" & Replace(objCSV.GetCell(i,4),"'","''") & _
  645. "','" & TrimLeadingZeros(Replace(objCSV.GetCell(i,5),"'","''")) & _
  646. "','" & AddressArray(0) & _
  647. "','" & AddressArray(1) & _
  648. "','" & AddressArray(2) & _
  649. "','" & AddressArray(3) & _
  650. "','" & AddressArray(4) & _
  651. "','" & Replace(objCSV.GetCell(i,11),"'","''") & _
  652. "','" & Replace(objCSV.GetCell(i,12),"'","''") & _
  653. "','" & Replace(objCsv.GetCell(i,13),"'","''") & _
  654. "','" & objCsv.GetCell(i,14) & _
  655. "','" & objCsv.GetCell(i,15) & _
  656. "','" & objCsv.GetCell(i,16) & _
  657. "','" & objCsv.GetCell(i,17) & _
  658. "','" & objCsv.GetCell(i,18) & _
  659. "','" & TrimLeadingZeros(objCsv.GetCell(i,19)) & _
  660. "')")
  661. Next
  662. oConn.Execute("Update Kit SET [Status] = 'Ready to Cass' Where ID = " & kitId &";")
  663. 'oConn.Close
  664. End If
  665. End If
  666. End Function
  667. Function ConvertCsvToString(FilePath)
  668. Dim objFSO:Set objFSO = CreateObject("Scripting.FileSystemObject")
  669. Dim objCsvFile:set objCsvFile = objFSO.OpenTextFile(FilePath)
  670. Dim strContent:strContent = ""
  671. Dim intLineCount:intLineCount = 0
  672. Do Until objCsvFile.AtEndOfStream Or intLineCount >= 3
  673. objCsvFile.SkipLine
  674. intLineCount = intLineCount + 1
  675. Loop
  676. ' Read the remaining content into a string
  677. Do Until objCsvFile.AtEndOfStream
  678. Dim strLine:strLine = objCsvFile.ReadLine
  679. strContent = strContent & strLine & vbCrLf
  680. Loop
  681. ConvertCsvToString = strContent
  682. End Function
  683. Function ValidImportCSV(CsvFileAsString)
  684. objCSV.LoadFromString(CsvFileAsString)
  685. If objCSV.NumColumns = 20 Then
  686. ValidImportCSV = True
  687. Else
  688. ValidImportCSV = False
  689. End If
  690. End Function
  691. Sub ImportCass
  692. Dim currentRow
  693. Select Case dev
  694. Case "local"
  695. objCsv.LoadFile("\\MarkH2.ntp.kentcommunications.com\Share\TrackingDataExport\FROM_MM.CSV")
  696. Case True
  697. objCsv.LoadFile("C:\Share\TrackingDataExport\FROM_MM.CSV")
  698. Case Else
  699. objCsv.LoadFile("\\kci-syn-cl01\PC Transfer\TrackingDataExport\FROM_MM.CSV")
  700. End Select
  701. For currentRow = 0 To objCsv.NumRows -1
  702. Dim AddressArray:AddressArray = CompressArray(Array(Replace(objCsv.GetCell(currentRow,1),"'","''"),Replace(objCsv.GetCell(currentRow,2),"'","''"),Replace(objCsv.GetCell(currentRow,3),"'","''"),Replace(objCsv.GetCell(currentRow,4),"'","''"),Replace(objCsv.GetCell(currentRow,5),"'","''"),Replace(objCsv.GetCell(currentRow,6) & ", " & objCsv.GetCell(currentRow,7) & " " & objCsv.GetCell(currentRow,8),"'","''")))
  703. oConn.Execute("UPDATE InkJetRecords SET CassADDRESS1 = '" & AddressArray(0) & "', " &_
  704. "CassADDRESS2 = '" & AddressArray(1) & "', " &_
  705. "CassADDRESS3 = '" & AddressArray(2) & "', " &_
  706. "CassADDRESS4 = '" & AddressArray(3) & "', " &_
  707. "CassADDRESS5 = '" & AddressArray(4) & "'" &_
  708. " WHERE ID = " & objCSV.GetCell(currentRow,0) & ";")
  709. Next
  710. oConn.Execute("UPDATE Kit SET Status ='Ready To Assign STIDS' WHERE ID =" & KitID & ";")
  711. oConn.Execute("UPDATE Kit SET [Cass] = 1 WHERE ID =" & KitID & ";")
  712. End Sub
  713. Sub RunMailManager
  714. Select Case dev
  715. Case "local"
  716. WshShell.Run "PsExec64.exe -i -e -u ntp\danielc -p SunBrightShine! \\MarkH2 ""\\MM2012\APPS\BCC\MM2010\mailman.exe"" -p -j MMJOB-LOCAL.mjb -u DAN",1,True
  717. Case True
  718. WshShell.Run "PsExec64.exe -i -e -u ntp\danielc -p SunBrightShine! \\MarkH2 ""\\MM2012\APPS\BCC\MM2010\mailman.exe"" -p -j MMJOB-DEV.mjb -u DAN",1,True
  719. Case Else
  720. WshShell.Run "PsExec64.exe -i -e -u ntp\danielc -p SunBrightShine! \\MarkH2 ""\\MM2012\APPS\BCC\MM2010\mailman.exe"" -p -j MMJOB.mjb -u DAN",1,True
  721. End Select
  722. End Sub
  723. Sub ExportMMCsv(KitId)
  724. Dim success
  725. objCsv.HasColumnNames = 1
  726. objCSV.EnableQuotes = 1
  727. success = objCsv.SetColumnName(0,"ID")
  728. success = objCsv.SetColumnName(1,"NAME")
  729. success = objCsv.SetColumnName(2,"ADDRESS1")
  730. success = objCsv.SetColumnName(3,"ADDRESS2")
  731. success = objCsv.SetColumnName(4,"ADDRESS3")
  732. success = objCsv.SetColumnName(5,"ADDRESS4")
  733. success = objCsv.SetColumnName(6,"ADDRESS5")
  734. Dim rs : Set rs = oConn.Execute("Select ID," & _
  735. "IIF(FIRSTNAME IS NULL,'',FIRSTNAME & ' ') & " & _
  736. "IIF(MIDDLENAME IS NULL,'',MIDDLENAME & ' ') & " & _
  737. "IIF(LASTNAME IS NULL,'',LASTNAME & ' ') & " & _
  738. "IIF(SUFFIX IS NULL,'',SUFFIX & ' ') " & _
  739. "AS NAME, ADDRESS1,ADDRESS2,ADDRESS3,ADDRESS4,ADDRESS5 FROM InkjetRecords WHERE KitID =" & KitID & " ORDER By ID;")
  740. Dim CurrentRow:CurrentRow = 0
  741. While Not rs.EOF
  742. objCSV.SetCell CurrentRow,0,rs("ID").value
  743. objCSV.SetCell CurrentRow,1,rs("NAME").value
  744. objCSV.SetCell CurrentRow,2,rs("ADDRESS1").value
  745. objCSV.SetCell CurrentRow,3,rs("ADDRESS2").value
  746. objCSV.SetCell CurrentRow,4,rs("ADDRESS3").value
  747. objCSV.SetCell CurrentRow,5,rs("ADDRESS4").value
  748. objCSV.SetCell CurrentRow,6,rs("ADDRESS5").value
  749. rs.MoveNext
  750. CurrentRow = CurrentRow +1
  751. Wend
  752. Dim CsvString:CsvString = objCSV.SaveToString()
  753. outFile.WriteLine CsvString
  754. outFile.Close
  755. End Sub
  756. Function CheckForJobsToCass()
  757. oConn.ConnectionString = ConnectionString
  758. oConn.Open
  759. 'oConn.Open
  760. Dim rs : set rs = oConn.Execute("Select TOP 1 ID from Kit Where Status ='Ready to Cass' ORDER BY ID DESC;")
  761. If Not rs.EOF Then
  762. Dim kitId : kitId = rs("ID").value
  763. rs.Close
  764. CheckForJobsToCass = KitID
  765. oConn.Execute("UPDATE Kit SET Status ='Cassing' WHERE ID =" & KitID & ";")
  766. Else
  767. CheckForJobsToCass = 0
  768. End If
  769. 'oConn.Close
  770. End Function
  771. Public Function PadLeft(originalString,desiredLength,Char)
  772. Dim padLength
  773. padLength = desiredLength - Len(originalString)
  774. If padLength > 0 Then
  775. ' Left pad the string with zeros
  776. PadLeft = String(padLength, Char) & originalString
  777. Else
  778. ' If the original string is already longer or equal to the desired length, no padding is needed
  779. PadLeft = originalString
  780. End If
  781. End Function
  782. Function Truncate(inputString, size)
  783. If Len(inputString) > size Then:Truncate = """" & Left(inputString,size) & """,":Else Truncate = """" & inputString & """,":End If
  784. End Function
  785. Function PadString(inputString, size)
  786. Dim paddedString
  787. Dim inputLength
  788. Dim i
  789. If IsNull(inputString) Then:inputString = ""
  790. ' Get the length of the input string
  791. inputLength = Len(inputString)
  792. ' If the input string is already equal to or longer than the specified size, return it as is
  793. If inputLength >= size Then
  794. PadString = inputString
  795. Exit Function
  796. End If
  797. ' Initialize the padded string with the input string
  798. paddedString = inputString
  799. ' Pad spaces to the right of the input string until it reaches the specified size
  800. For i = 1 To (size - inputLength)
  801. paddedString = paddedString & " "
  802. Next
  803. ' Return the padded string
  804. PadString = paddedString
  805. End Function
  806. Function CleanNull(StringToClean)
  807. If IsNull(StringToClean) Then:CleanNull = "":Else CleanNull = StringToClean:End If
  808. End Function
  809. Public Sub Assign(ByRef var, ByVal val)
  810. If IsObject(val) Then
  811. Set var = val
  812. Else
  813. var = val
  814. End If
  815. End Sub
  816. Public Function Choice(ByVal cond, ByVal if_true, ByVal if_false)
  817. If cond Then
  818. Assign Choice, if_true
  819. Else
  820. Assign Choice, if_false
  821. End If
  822. End Function
  823. Function CompressArray(arr)
  824. Dim temp,i,j
  825. For i = LBound(arr) To UBound(arr) - 1
  826. For j = i + 1 To UBound(arr)
  827. If arr(i) = "" Then
  828. temp = arr(i)
  829. arr(i) = arr(j)
  830. arr(j) = temp
  831. End If
  832. Next
  833. Next
  834. CompressArray = arr
  835. End Function
  836. Function TrimLeadingZeros(inputStr)
  837. Dim i
  838. For i = 1 To Len(inputStr)
  839. If Mid(inputStr, i, 1) <> "0" Then
  840. TrimLeadingZeros = Mid(inputStr, i)
  841. Exit Function
  842. End If
  843. Next
  844. ' If the input string is all zeros, return "0"
  845. TrimLeadingZeros = ""
  846. End Function
  847. Sub PushNonEmptyToBottom(ByRef myArray)
  848. Dim tempArray(), i, count
  849. count = UBound(myArray)
  850. ' Create a temporary array to store the rearranged elements
  851. ReDim tempArray(UBound(myArray))
  852. ' Fill the temporary array with empty strings initially
  853. For i = 0 To UBound(myArray)
  854. tempArray(i) = ""
  855. Next
  856. ' Add non-empty elements to the highest-numbered positions
  857. For i = UBound(myArray) To 0 Step -1
  858. If myArray(i) <> "" Then
  859. tempArray(count) = myArray(i)
  860. count = count - 1
  861. End If
  862. Next
  863. ' Copy the temporary array back to the original array
  864. For i = 0 To UBound(myArray)
  865. myArray(i) = tempArray(i)
  866. Next
  867. End Sub
  868. Dim oStateRegEx
  869. Function GetState(ByVal addressLine)
  870. Dim matches, state
  871. If Not IsObject(oStateRegEx) Then
  872. Set oStateRegEx = New RegExp
  873. oStateRegEx.Pattern = ",\s([A-Z]{2})\s\d{5}"
  874. oStateRegEx.IgnoreCase = False
  875. oStateRegEx.Global = False
  876. End If
  877. Set matches = oStateRegEx.Execute(addressLine)
  878. If matches.Count > 0 Then
  879. ' Extract the state abbreviation (the first captured group)
  880. state = Trim(matches(0).SubMatches(0))
  881. Else
  882. state = ""
  883. End If
  884. GetState = state
  885. End Function
  886. Function GetCityFromLine(addressLine)
  887. Dim cityPos
  888. If IsNull(addressLine) Then
  889. GetCityFromLine = ""
  890. Exit Function
  891. End If
  892. cityPos = InStr(addressLine, ",")
  893. If cityPos > 0 Then
  894. GetCityFromLine = Left(addressLine, cityPos - 1)
  895. Else
  896. ' No comma – return whole line or empty string, your choice
  897. GetCityFromLine = addressLine
  898. End If
  899. End Function
  900. Private Function BuildG2AddressFields(ByVal fullName, ByVal mailingAddress, ByVal csz)
  901. Dim result
  902. Set result = CreateObject("Scripting.Dictionary")
  903. Dim origName
  904. Dim origMailingAddress
  905. Dim origCSZ
  906. Dim poPos
  907. Dim beforePO
  908. Dim poBoxPart
  909. origName = NzToString(fullName)
  910. origMailingAddress = NzToString(mailingAddress)
  911. origCSZ = NzToString(csz)
  912. ' Default values when there is no split needed
  913. result("G2 Full Name") = origName
  914. result("G2 Company") = origMailingAddress
  915. result("G2 Alternate 1 Address") = origCSZ
  916. result("G2 Delivery Address") = ""
  917. result("G2 City St ZIP+4") = ""
  918. poPos = InStr(1, origMailingAddress, "PO BOX", vbTextCompare)
  919. If poPos > 0 Then
  920. beforePO = Trim(Left(origMailingAddress, poPos - 1))
  921. ' Only split if there is text before PO BOX
  922. If Len(beforePO) > 0 Then
  923. poBoxPart = Trim(Mid(origMailingAddress, poPos))
  924. result("G2 Company") = beforePO
  925. result("G2 Alternate 1 Address") = poBoxPart
  926. result("G2 Delivery Address") = origCSZ
  927. result("G2 City St ZIP+4") = ""
  928. End If
  929. End If
  930. Set BuildG2AddressFields = result
  931. End Function
  932. Private Function NzToString(ByVal value)
  933. If IsNull(value) Or IsEmpty(value) Then
  934. NzToString = ""
  935. Else
  936. NzToString = CStr(value)
  937. End If
  938. End Function

Powered by TurnKey Linux.