Nie możesz wybrać więcej, niż 25 tematów Tematy muszą się zaczynać od litery lub cyfry, mogą zawierać myślniki ('-') i mogą mieć do 35 znaków.

1032 wiersze
93KB

  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 row:row = 0
  300. While Not KitLabelsRs.EOF
  301. AddressArray = CompressArray(Array(KitLabelsRs("CassADDRESS1").Value,KitLabelsRs("CassADDRESS2").Value,KitLabelsRs("CassADDRESS3").Value,KitLabelsRs("CassADDRESS4").Value,KitLabelsRs("CassADDRESS5").Value))
  302. objInkjetCSV.SetCellByName row,"Full Name",AddressArray(0)
  303. objInkjetCSV.SetCellByName row,"Address 1",AddressArray(1)
  304. objInkjetCSV.SetCellByName row,"Address 2",AddressArray(2)
  305. objInkjetCSV.SetCellByName row,"Address 3",AddressArray(3)
  306. objInkjetCSV.SetCellByName row,"Address 4",AddressArray(4)
  307. If KitRs("OutboundSTID") <> "0" Then
  308. objInkJetCSV.SetCellByName row,"IM barcode Characters",KitLabelsRs("OutboundIMBDigits").Value
  309. End If
  310. objInkJetCSV.SetCellByName row,"Precinct",KitLabelsRs("PRECINCT").Value
  311. objInkJetCSV.SetCellByName row,"Ballot ID","*" & KitLabelsRs("VOTERID").Value & "*"
  312. objInkJetCSV.SetCellByName row,"Ballot Number",TrimLeadingZeros(KitLabelsRs("BALLOT_NUMBER").Value)
  313. objInkJetCSV.SetCellByName row,"Jurisdiction code",KitRs("Jcode").Value
  314. objInkJetCSV.SetCellByName row,"Election Date",ElectionDate
  315. objInkJetCSV.SetCellByName row,"Combined Pct_Ballot Num",KitLabelsRs("PRECINCT").Value & TrimLeadingZeros(KitLabelsRs("BALLOT_NUMBER").Value)
  316. objInkjetCSV.SetCellByName row,"Title",CleanNull(ContactRs("Title").Value)
  317. objInkJetCSV.SetCellByName row,"G2 Full Name",JurisdictionRs("Name").Value
  318. objInkJetCSV.SetCellByName row,"G2 Company",JurisdictionRs("Mailing_Address").Value
  319. objInkJetCSV.SetCellByName row,"G2 Alternate 1 Address",JurisdictionRs("CSZ").Value
  320. objInkJetCSV.SetCellByName row,"G2 Delivery Address",""
  321. objInkJetCSV.SetCellByName row,"G2 City St ZIP+4",""
  322. objInkJetCSV.SetCellByName row,"G2 IM barcode Characters",Choice(IsNull(KitRs("InboundSTID")),JurisdictionRs("IMB_Digits").Value,KitLabelsRs("InBoundIMBDigits").Value)
  323. objInkJetCSV.SetCellByName row,"Matching Code",KitRs("Jcode").Value & TrimLeadingZeros(KitLabelsRs("PRECINCT").Value) & TrimLeadingZeros(KitLabelsRs("BALLOT_NUMBER").Value)
  324. objInkJetCSV.SetCellByName row,"ColorFilepath",KitLabelsRs("ColorFilepath").Value & ""
  325. objInkJetCSV.SetCellByName row,"ColorName",KitLabelsRs("ColorName").Value & ""
  326. 'Where do we put the roundtrip IMB
  327. row = row + 1
  328. KitLabelsRs.MoveNext
  329. Wend
  330. If KitRs("OfficeCopiesAmount").Value > 0 Then
  331. dim s
  332. For s = 0 to KitRs("OfficeCopiesAmount").Value -1
  333. objInkjetCSV.SetCellByName row + s,"Title",CleanNull(ContactRs("Title").Value)
  334. objInkJetCSV.SetCellByName row + s,"G2 Full Name",JurisdictionRs("Name").Value
  335. objInkJetCSV.SetCellByName row + s,"G2 Company",JurisdictionRs("Mailing_Address").Value
  336. objInkJetCSV.SetCellByName row + s,"G2 Alternate 1 Address",JurisdictionRs("CSZ").Value
  337. objInkJetCSV.SetCellByName row + s,"G2 Delivery Address",""
  338. objInkJetCSV.SetCellByName row + s,"G2 City St ZIP+4",""
  339. objInkJetCSV.SetCellByName row + s,"G2 IM barcode Characters",JurisdictionRs("IMB_Digits").Value
  340. Next
  341. End If
  342. objInkjetCSV.SaveFile(ExportDirectory & KitRs("JobNumber").Value & "-" & JurisdictionRs("Name").value & "/" & ExportFileName)
  343. oConn.Execute("UPDATE KIT SET [Status] ='Done',[InkJetJob]=1 WHERE [ID] =" & KitID & ";")
  344. If KitRs.State = 1 Then:KitRs.Close:End If
  345. If ContactRs.State =1 Then:ContactRs.Close:End If
  346. If KitLabelsRs.State = 1 Then:KitLabelsRs.Close: End If
  347. If JurisdictionRs.State = 1 Then:JurisdictionRs.Close:End If
  348. If oConn.State = 1 Then:oConn.Close:End If
  349. End Function
  350. Function ResolveInkjetSortDirection(sortDirection)
  351. ResolveInkjetSortDirection = "DESC"
  352. If IsNull(sortDirection) Or IsEmpty(sortDirection) Then
  353. Exit Function
  354. End If
  355. Select Case UCase(Trim(CStr(sortDirection)))
  356. Case "ASC", "TRUE", "1"
  357. ResolveInkjetSortDirection = "ASC"
  358. End Select
  359. End Function
  360. Function CheckStatusFor(StatusString)
  361. If oConn.State = 0 Then:oConn.Open(ConnectionString):End If
  362. Dim rs:Set rs = oConn.Execute("Select TOP 1 [ID] FROM [Kit] Where Status ='" & StatusString & "' and (JobType='Purple Envelopes' OR JobType='Purple Envelopes-Ascending');")
  363. If Not rs.EOF Then
  364. CheckStatusFor = rs("ID").value
  365. Else
  366. CheckStatusFor = 0
  367. End If
  368. If rs.State = 1 Then:rs.Close:End If
  369. If oConn.State = 1 Then:oConn.Close:End If
  370. End Function
  371. Function CreateProofForJurisdiction(KitID)
  372. Dim Qpdf:Set Qpdf = WScript.CreateObject(QpdfProgId)
  373. Dim Result:Result = Qpdf.UnlockKey("j564z3wi9i66k93cp3r798b3y")
  374. If oConn.State = 0 Then:oConn.Open(ConnectionString):End If
  375. Dim Rs:set Rs = oConn.Execute("SELECT MIN(ID) as [MIN],MAX(ID) as [MAX] FROM InkjetRecords WHERE KitID = " & KitID &";")
  376. Dim MIN:MIN = Rs("MIN").Value
  377. Dim MAX:MAX = Rs("MAX").Value
  378. Dim RecordCount:RecordCount = (MAX - MIN) + 1
  379. Rs.Close
  380. Dim KitRs:set KitRs = oConn.Execute("Select * From [Kit] Where [ID] =" & KitID & ";")
  381. Dim JurisdictionRs:set JurisdictionRs = oConn.Execute("SELECt * FROM [Jurisdiction] WHERE JCode='" & KitRs("Jcode").Value & "';")
  382. Dim ProofFileName:ProofFileName = objFSO.GetBaseName(KitRs("Filename")) & "-PROOF.PDF"
  383. If Not objFSO.FolderExists(ExportDirectory & KitRs("JobNumber").Value & "-" & JurisdictionRs("Name").value) Then:objFSO.CreateFolder(ExportDirectory & KitRs("JobNumber").Value & "-" & JurisdictionRs("Name").value):End If
  384. Dim reportManager:set reportManager = CreateObject("ReportMan.ReportManX")
  385. With reportManager
  386. .Preview = False
  387. .ShowProgress = False
  388. .ShowPrintDialog = False
  389. .filename = PurpleEnvelopeProofReport
  390. .SetDatabaseConnectionString "WEBDATA",ConnectionString
  391. .SetParamValue "PBKITID",KitID
  392. .SetParamValue "PBJCODE",KitRs("Jcode").Value
  393. Dim MAXRECORDS:MAXRECORDS = 500 'This needs to be done it seems becasue of the variable bitmap color bar
  394. If RecordCount > MAXRECORDS Then
  395. Dim i
  396. For i = 0 To RecordCount / MAXRECORDS
  397. Dim newMin:If MIN + (i * MAXRECORDS) > MIN Then:newMin = MIN + (i * MAXRECORDS) + 1:Else newMin = MIN:End If
  398. Dim newMax:If MIN + (i * MAXRECORDS) + MAXRECORDS > MAX Then:newMax = MAX:Else newMax = MIN + (i * MAXRECORDS) + MAXRECORDS:End If
  399. .SetParamValue "PBMIN",newMin
  400. .SetParamValue "PBMAX",newMax
  401. .SaveToPDF ExportDirectory & KitRs("JobNumber").Value & "-" & JurisdictionRs("Name").value & "\Part_" & i & "_" & ProofFileName,1
  402. Result = Qpdf.AddToFileList("Proofs",ExportDirectory & KitRs("JobNumber").Value & "-" & JurisdictionRs("Name").value & "\Part_" & i & "_" & ProofFileName)
  403. Next
  404. Result = Qpdf.MergeFileListFast("Proofs",ExportDirectory & KitRs("JobNumber").Value & "-" & JurisdictionRs("Name").value & "/" & ProofFileName)
  405. Dim test
  406. For test = 1 To Qpdf.FileListCount("Proofs")
  407. WshShell.Run "cmd.exe /c DEL /F /Q """ & Qpdf.FileListItem("Proofs",test) & """" ,0,True
  408. Next
  409. Else
  410. .SetParamValue "PBMIN",MIN
  411. .SetParamValue "PBMAX",MAX
  412. .SaveToPDF ExportDirectory & KitRs("JobNumber").Value & "-" & JurisdictionRs("Name").value & "/" & ProofFileName,1
  413. End If
  414. End With
  415. oConn.Execute("UPDATE KIT SET [Status] ='Ready For Inkjet Export' WHERE [ID] =" & KitID & ";")
  416. If KitRs.State = 1 Then:KitRs.Close:End If
  417. If JurisdictionRs.State = 1 Then:JurisdictionRs.Close:End If
  418. If oConn.State = 1 Then:oConn.Close:End If
  419. End Function
  420. Function CreateExportForSnailWorks(KitID)
  421. Dim State
  422. Dim AddressArray
  423. Dim ForeignTest
  424. If oConn.State = 0 Then:oConn.Open(ConnectionString):End If
  425. Dim KitRs:set KitRs = oConn.Execute("Select * From [Kit] Where [ID] =" & KitID & ";")
  426. If KitRs("OutboundSTID") <> "0" Then
  427. Dim KitLabelsRs: Set KitLabelsRs = oConn.Execute("SELECT InkjetRecords.ID, InkjetRecords.KitID, InkjetRecords.VOTERID, InkjetRecords.LASTNAME," &_
  428. " InkjetRecords.FIRSTNAME, InkjetRecords.MIDDLENAME, InkjetRecords.SUFFIX, InkjetRecords.PRECINCT," &_
  429. " InkjetRecords.ADDRESS1, InkjetRecords.ADDRESS2, InkjetRecords.ADDRESS3, InkjetRecords.ADDRESS4," &_
  430. " InkjetRecords.ADDRESS5, InkjetRecords.APPSENT, InkjetRecords.APPRETURNED, InkjetRecords.BALSENT," &_
  431. " InkjetRecords.BALRETURNED, InkjetRecords.CountingBoard, InkjetRecords.UOCAVASTATUS, InkjetRecords.EMAILADDRESS," &_
  432. " InkjetRecords.PHONENUMBER, InkjetRecords.BALLOT_NUMBER, InkjetRecords.CassADDRESS1, InkjetRecords.CassADDRESS2," &_
  433. " InkjetRecords.CassADDRESS3, InkjetRecords.CassADDRESS4, InkjetRecords.CassADDRESS5, InkjetRecords.KitLabelID," &_
  434. " KitLabels.ID, KitLabels.KitID, KitLabels.OutboundSerial, KitLabels.InBoundSerial, KitLabels.OutboundIMB," &_
  435. " KitLabels.InBoundIMB, KitLabels.OutboundIMBDigits, KitLabels.InBoundIMBDigits, KitLabels.OutboundIMBPNG," &_
  436. " KitLabels.INBOUNDIMBPNG, KitLabels.SetNumber" &_
  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("""H"",") 'Record Type Required value must be = "H" (Header)
  447. .Write(Truncate("5.2",5)) 'Version Required value must be ="5.2" for current release
  448. .Write(Truncate("KCIHotFolder2024FTPUser",50)) 'UserId Required
  449. .Write(Truncate(KitRs("Jcode").Value,50)) 'Client Name Required (will create new subaccount if not already defined) - We decideded to make this the juriscode
  450. .Write(Truncate("",50)) 'Parent Client Name Optional (use if 3-tier account structure)
  451. .Write(Truncate("Purple envelope - " & KitRs("JobNumber").Value,50)) 'Job Name Required
  452. .Write(Truncate("",50)) 'Job Description Optional
  453. .Write(Truncate("",50)) 'Split Name Optional � will default to �Default�
  454. .Write(Truncate("",80)) 'Split Description Optional
  455. .Write(Truncate("L",1)) 'Piece Type Required L-Letters, C-Cards, F-Flats
  456. .Write(Truncate(Year(Now()) & "/" &_
  457. Right("0" & Month(Now()), 2) & "/" & Right("0" & Day(Now()), 2),10)) 'MailDate Required (YYYY/MM/DD)
  458. .Write(Truncate("N",1)) 'UploadType Required N = New job, new split A = Append new split to existing job R = Replace existing split
  459. .Write(Truncate("",8)) 'TrackedQuantity Optional
  460. .Write(Truncate("",8)) 'PiecesMailed Optional � shown as Estimated Quantity
  461. .Write(Truncate("",10)) 'Target InHomeDateStart Optional (YYYY/MM/DD)
  462. .Write(Truncate("",10)) 'Target InHomeDateEnd Optional (YYYY/MM/DD)
  463. .Write(Truncate("danielc@kentcommunications.com",100)) 'ConfirmationEmail Optional
  464. .Write(Truncate("",9)) 'JobId (SW) Optional for previously created jobs SWJobId
  465. .Write(Truncate("",4)) 'SplitId (SW) Optional for previously created jobs SWJobId
  466. .Write(Truncate(Choice(IsNull(KitRs("InboundSTID")),"O","R"),1)) 'TypeofTracking Required Values: O- Outbound Only I-Inbound Only R-Round Trip
  467. .Write(Truncate("",11)) 'ReturnedPostalRoutingCode
  468. .Write(Truncate("",2)) 'ReportId1
  469. .Write(Truncate("",255)) 'Report1Email
  470. .Write(Truncate("",2)) 'ReportId2
  471. .Write(Truncate("",255)) 'Report2Email
  472. .Write("""N""") 'INFOONLY
  473. .Write(vbCrLf)
  474. While Not KitLabelsRs.EOF
  475. AddressArray = Array(KitLabelsRs("CassADDRESS2").Value,KitLabelsRs("CassADDRESS3").Value,KitLabelsRs("CassADDRESS4").Value,KitLabelsRs("CassADDRESS5").Value)
  476. PushNonEmptyToBottom AddressArray
  477. ForeignTest = AddressArray(3) & " " & AddressArray(2)
  478. State = GetState(AddressArray(3))
  479. State = Replace(State," ","")
  480. If CheckStringDoesNotHaveForiegnCountries(ForeignTest) And State <> """""," then
  481. 'If InStr(ForeignTest,"CANADA") = 0 And InStr(ForeignTest,"AUSTRALIA") = 0 And State <> "" Then " ",
  482. .Write("""D"",") 'RecordType Required value must be = �D� (Detail)
  483. .Write(Truncate("",20)) 'CustomerUniqueIdentifier Optional- any identifier you designate
  484. .Write(Truncate(KitLabelsRs("OutboundIMBDigits"),31)) 'IMB Required � Unencoded, numeric IMB
  485. .Write(Truncate("",10)) 'Greeting Optional
  486. .Write(Truncate("",50)) 'First Name Optional
  487. .Write(Truncate("",2)) 'MI Optional
  488. .Write(Truncate("",50)) 'Last Name Optional
  489. .Write(Truncate("",10)) 'Suffix Optional
  490. .Write(Truncate((KitLabelsRs("CassADDRESS1").Value),100)) 'Full Name Optional
  491. .Write(Truncate("",50)) 'Company Optional
  492. .Write(Truncate("",50)) 'Title Optional
  493. .Write(Truncate(AddressArray(1),128)) 'Address1 Optional
  494. .Write(Truncate(AddressArray(2),128)) 'Address2 Optional
  495. .Write(Truncate(GetCityFromLine(AddressArray(3)), 50)) ' City Optional
  496. .Write(Truncate(State,2)) 'State Optional
  497. .Write Choice(InStr(AddressArray(3),"-"),Truncate(Right(AddressArray(3),11),11),Truncate(Right(AddressArray(3),5),5)) 'Zip Optional
  498. .Write(Truncate(KitRs("Jcode"),100)) 'UserDefined1 Optional - Summary fields only
  499. .Write(Truncate("",100)) 'UserDefined2 Optional - Summary fields only
  500. .Write(Truncate("",100)) 'UserDefined3 Optional - Summary fields only
  501. .Write(Truncate(KitLabelsRs("PRECINCT").Value &_
  502. KitLabelsRs("BALLOT_NUMBER"),80)) 'UserDefinedIdentifier4 Optional � Allows for unique identifiers
  503. .Write(Truncate(KitLabelsRs("VOTERID").Value,80)) 'UserDefinedIdentifier5 Optional � Allows for unique identifiers
  504. .Write(Truncate("",1)) 'SeedIndicator Optional - if true provide �Y�
  505. .Write(Truncate("",80)) 'InductionPoint Optional
  506. .Write(Truncate("",10)) 'InductionDate Optional � Valid date format, ex. MM/DD/YYYY
  507. .Write(Truncate(Choice(IsNull(KitRs("InboundSTID")),"", _
  508. KitLabelsRs("InBoundIMBDigits").Value),31)) 'InboundIMB Optional � numeric IMB for Round trip jobs only
  509. .Write(Truncate("",24)) 'IMCB Optional � Container Barcode
  510. .Write("""""") 'IMTB Optional � Tray Barcode
  511. .Write(vbCrLf)
  512. End If
  513. KitLabelsRs.MoveNext
  514. Wend
  515. .Close
  516. End With
  517. If KitLabelsRs.State = 1 Then:KitLabelsRs.Close: End If
  518. If JurisdictionRs.State = 1 Then:JurisdictionRs.Close:End If
  519. End If
  520. oConn.Execute("UPDATE KIT SET [Status] ='Ready to Proof',[ExportedToSnailWorks] =#" & Now() & "# WHERE [ID] =" & KitID & ";")
  521. If oConn.State = 1 Then:oConn.Close:End If
  522. If KitRs.State = 1 Then:KitRs.Close:End If
  523. End Function
  524. Function createTrackingInfoForKit(KitID)
  525. If oConn.State = 0 Then:oConn.Open(ConnectionString):End If
  526. oConn.Execute("UPDATE Kit SET Status ='Applying Serial Numbers' WHERE ID =" & KitID & ";")
  527. Dim KitRs:set KitRs = oConn.Execute("Select * from Kit Where ID =" & KitID & ";")
  528. If KitRs("OutBoundSTID") = 0 Then
  529. oConn.Execute("UPDATE Kit Set [Status]='Ready For Export', LabelsPrinted=#" & Now() & "# WHERE [ID] =" & KitID &";")
  530. Else
  531. Dim InkjetRs:Set InkjetRs = oConn.Execute("Select * from InkjetRecords Where KitID =" & KitID & ";")
  532. 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
  533. Dim SerialNumberStart:SerialNumberStart = GetSetting("SerialNumberStart")
  534. Dim serialOffset:serialOffset = GetSetting("SerialOffset")
  535. Dim serialStart:serialStart = CLng(GetSetting("SerialNumberStart")) + CLng(GetSetting("SerialOffset"))
  536. Dim Counter:Counter=0
  537. Dim KitLabelID
  538. Dim KitLabelRs
  539. Dim Mid:Mid = GetSetting("MailingID")
  540. Dim Step : If KitRs("InboundSTID") <> "" Then : Step = 2 : Else Step = 1
  541. serialStart = PadLeft(serialStart + CLng(Counter),9,"0")
  542. Dim oRsKitLabels : Set oRsKitLabels = CreateObject("ADODB.Recordset"):oRsKitLabels.Open "Select * FROM [KitLabels] Where KitID =" & KitID & ";",oConn,3,3
  543. While Not InkjetRs.EOF
  544. oRsKitLabels.AddNew
  545. KitLabelID = oRsKitLabels("ID").value
  546. If Step = 1 Then
  547. oRsKitLabels("KitID") = KitID
  548. oRsKitLabels("OutboundSerial") = serialStart
  549. oRsKitLabels("OutboundIMBDigits") = KitRs("OutBoundSTID").Value & "202248" & serialStart
  550. Else
  551. oRsKitLabels("KitID") = KitID
  552. oRsKitLabels("OutboundSerial") = serialStart
  553. oRsKitLabels("InBoundSerial") = serialStart + 1
  554. oRsKitLabels("OutboundIMBDigits") = KitRs("OutBoundSTID").Value & "202248" & serialStart
  555. oRsKitLabels("InBoundIMBDigits") = KitRs("InboundSTID").Value & Mid & serialStart + 1 & Jcode
  556. End If
  557. oRsKitLabels.Update
  558. oConn.Execute("UPDATE InkjetRecords Set [KitLabelID]=" & KitLabelID & " WHERE ID=" & InkjetRs("ID") & ";")
  559. Counter = Counter + Step
  560. serialStart = serialStart + Step
  561. InkjetRs.MoveNext
  562. Wend
  563. oRsKitLabels.Update
  564. oRsKitLabels.Close
  565. oConn.Execute("UPDATE Settings Set [Value]='" & serialOffset + Counter & "' WHERE [Name] = 'SerialOffset';")
  566. oConn.Execute("UPDATE Kit Set [Status]='Ready For Export', LabelsPrinted=#" & Now() & "# WHERE [ID] =" & KitID &";")
  567. oConn.Close
  568. End If
  569. End Function
  570. Function GetSetting(settingName)
  571. Dim rs:Set rs = oConn.Execute("Select Value From [Settings] Where [Name] = '" & settingName & "';")
  572. If Not rs.EOF Then
  573. GetSetting = rs(0).value
  574. rs.Close
  575. Else
  576. SetSetting = 0
  577. rs.Close
  578. End If
  579. End Function
  580. Function CheckForFiles()
  581. If objFSO.FolderExists(DataDirectory) Then
  582. Dim objFolder:Set objFolder = objFSO.GetFolder(DataDirectory)
  583. If objFolder.Files.Count > 0 Then
  584. 'WScript.Echo "Files found in directory: " & DataDirectory
  585. Dim objFile
  586. For Each objFile In objFolder.Files
  587. Dim CsvString:CsvString = ConvertCsvToString(objFile.Path)
  588. If ValidImportCSV(CsvString) Then
  589. SetupKit CsvString,objFile.Name
  590. objFSO.MoveFile objFile.Path, DataDirectory & "\import\" & objFile.Name
  591. End If
  592. Next
  593. Else
  594. 'WScript.Echo "No files found in directory: " & DataDirectory
  595. End If
  596. End If
  597. End Function
  598. Function ValidJcode(jcode)
  599. Dim oConn
  600. Set oConn = WScript.CreateObject("ADODB.Connection")
  601. oConn.ConnectionString = ConnectionString
  602. oConn.Open
  603. Dim oRs
  604. set oRs = oConn.Execute("Select * from Jurisdiction Where [JCode] = '" & jcode & "';")
  605. If oRs.EOF Then
  606. ValidJcode = 0
  607. Else
  608. ValidJcode = 1
  609. End If
  610. oRs.Close
  611. oConn.Close
  612. End Function
  613. Function CheckStringDoesNotHaveForiegnCountries(StringToCheck)
  614. Dim Countries
  615. 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")
  616. Dim Country
  617. For Each Country In Countries
  618. If InStr(StringToCheck,Country) Then
  619. CheckStringDoesNotHaveForiegnCountries = False
  620. Exit For
  621. End If
  622. CheckStringDoesNotHaveForiegnCountries = True
  623. Next
  624. End Function
  625. Function SetupKit(CsvString,FileName)
  626. Dim JobNumber:JobNumber = Mid(FileName,9,6)
  627. Dim JCode:JCode = Left(Filename,5)
  628. If IsNumeric(JobNumber) Then
  629. If ValidJcode(JCode) Then
  630. WScript.Echo FileName & " Is a Valid CSV for Importing"
  631. Dim oConn:Set oConn = WScript.CreateObject("ADODB.Connection")
  632. oConn.ConnectionString = ConnectionString
  633. oConn.Open
  634. oConn.Execute("Insert Into Kit ([JobNumber], [Jcode], [CreatedOn], [JobType],[Filename],[Status]) VALUES ('" & JobNumber & "','" & JCode & "',#" & Now() & "#,'Purple Envelopes','" & FileName & "','Importing');")
  635. Dim rs : set rs = oConn.Execute("Select TOP 1 ID from Kit ORDER BY ID DESC")
  636. Dim kitId : kitId = rs("ID").value
  637. rs.close
  638. Dim i
  639. For i = 1 To objCSV.NumRows -1
  640. 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),"'","''"))
  641. PushNonEmptyToBottom AddressArray
  642. oConn.Execute("Insert Into [InkjetRecords] (KitID,VOTERID,LASTNAME,FIRSTNAME,MIDDLENAME" & _
  643. ",SUFFIX,PRECINCT,ADDRESS1,ADDRESS2,ADDRESS3,ADDRESS4,ADDRESS5,APPSENT,APPRETURNED,BALSENT,BALRETURNED" & _
  644. ",CountingBoard,UOCAVASTATUS,EMAILADDRESS,PHONENUMBER,BALLOT_NUMBER) VALUES (" & kitId & _
  645. ",'" & Replace(objCSV.GetCell(i,0),"'","''") & _
  646. "','" & Replace(objCsv.GetCell(i,1),"'","''") & _
  647. "','" & Replace(objCSV.GetCell(i,2),"'","''") & _
  648. "','" & Replace(objCSV.GetCell(i,3),"'","''") & _
  649. "','" & Replace(objCSV.GetCell(i,4),"'","''") & _
  650. "','" & TrimLeadingZeros(Replace(objCSV.GetCell(i,5),"'","''")) & _
  651. "','" & AddressArray(0) & _
  652. "','" & AddressArray(1) & _
  653. "','" & AddressArray(2) & _
  654. "','" & AddressArray(3) & _
  655. "','" & AddressArray(4) & _
  656. "','" & Replace(objCSV.GetCell(i,11),"'","''") & _
  657. "','" & Replace(objCSV.GetCell(i,12),"'","''") & _
  658. "','" & Replace(objCsv.GetCell(i,13),"'","''") & _
  659. "','" & objCsv.GetCell(i,14) & _
  660. "','" & objCsv.GetCell(i,15) & _
  661. "','" & objCsv.GetCell(i,16) & _
  662. "','" & objCsv.GetCell(i,17) & _
  663. "','" & objCsv.GetCell(i,18) & _
  664. "','" & TrimLeadingZeros(objCsv.GetCell(i,19)) & _
  665. "')")
  666. Next
  667. oConn.Execute("Update Kit SET [Status] = 'Ready to Cass' Where ID = " & kitId &";")
  668. 'oConn.Close
  669. End If
  670. End If
  671. End Function
  672. Function ConvertCsvToString(FilePath)
  673. Dim objFSO:Set objFSO = CreateObject("Scripting.FileSystemObject")
  674. Dim objCsvFile:set objCsvFile = objFSO.OpenTextFile(FilePath)
  675. Dim strContent:strContent = ""
  676. Dim intLineCount:intLineCount = 0
  677. Do Until objCsvFile.AtEndOfStream Or intLineCount >= 3
  678. objCsvFile.SkipLine
  679. intLineCount = intLineCount + 1
  680. Loop
  681. ' Read the remaining content into a string
  682. Do Until objCsvFile.AtEndOfStream
  683. Dim strLine:strLine = objCsvFile.ReadLine
  684. strContent = strContent & strLine & vbCrLf
  685. Loop
  686. ConvertCsvToString = strContent
  687. End Function
  688. Function ValidImportCSV(CsvFileAsString)
  689. objCSV.LoadFromString(CsvFileAsString)
  690. If objCSV.NumColumns = 20 Then
  691. ValidImportCSV = True
  692. Else
  693. ValidImportCSV = False
  694. End If
  695. End Function
  696. Sub ImportCass
  697. Dim currentRow
  698. Select Case dev
  699. Case "local"
  700. objCsv.LoadFile("\\MarkH2.ntp.kentcommunications.com\Share\TrackingDataExport\FROM_MM.CSV")
  701. Case True
  702. objCsv.LoadFile("C:\Share\TrackingDataExport\FROM_MM.CSV")
  703. Case Else
  704. objCsv.LoadFile("\\kci-syn-cl01\PC Transfer\TrackingDataExport\FROM_MM.CSV")
  705. End Select
  706. For currentRow = 0 To objCsv.NumRows -1
  707. 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),"'","''")))
  708. oConn.Execute("UPDATE InkJetRecords SET CassADDRESS1 = '" & AddressArray(0) & "', " &_
  709. "CassADDRESS2 = '" & AddressArray(1) & "', " &_
  710. "CassADDRESS3 = '" & AddressArray(2) & "', " &_
  711. "CassADDRESS4 = '" & AddressArray(3) & "', " &_
  712. "CassADDRESS5 = '" & AddressArray(4) & "'" &_
  713. " WHERE ID = " & objCSV.GetCell(currentRow,0) & ";")
  714. Next
  715. oConn.Execute("UPDATE Kit SET Status ='Ready To Assign STIDS' WHERE ID =" & KitID & ";")
  716. oConn.Execute("UPDATE Kit SET [Cass] = 1 WHERE ID =" & KitID & ";")
  717. End Sub
  718. Sub RunMailManager
  719. Select Case dev
  720. Case "local"
  721. 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
  722. Case True
  723. 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
  724. Case Else
  725. 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
  726. End Select
  727. End Sub
  728. Sub ExportMMCsv(KitId)
  729. Dim success
  730. objCsv.HasColumnNames = 1
  731. objCSV.EnableQuotes = 1
  732. success = objCsv.SetColumnName(0,"ID")
  733. success = objCsv.SetColumnName(1,"NAME")
  734. success = objCsv.SetColumnName(2,"ADDRESS1")
  735. success = objCsv.SetColumnName(3,"ADDRESS2")
  736. success = objCsv.SetColumnName(4,"ADDRESS3")
  737. success = objCsv.SetColumnName(5,"ADDRESS4")
  738. success = objCsv.SetColumnName(6,"ADDRESS5")
  739. Dim rs : Set rs = oConn.Execute("Select ID," & _
  740. "IIF(FIRSTNAME IS NULL,'',FIRSTNAME & ' ') & " & _
  741. "IIF(MIDDLENAME IS NULL,'',MIDDLENAME & ' ') & " & _
  742. "IIF(LASTNAME IS NULL,'',LASTNAME & ' ') & " & _
  743. "IIF(SUFFIX IS NULL,'',SUFFIX & ' ') " & _
  744. "AS NAME, ADDRESS1,ADDRESS2,ADDRESS3,ADDRESS4,ADDRESS5 FROM InkjetRecords WHERE KitID =" & KitID & " ORDER By ID;")
  745. Dim CurrentRow:CurrentRow = 0
  746. While Not rs.EOF
  747. objCSV.SetCell CurrentRow,0,rs("ID").value
  748. objCSV.SetCell CurrentRow,1,rs("NAME").value
  749. objCSV.SetCell CurrentRow,2,rs("ADDRESS1").value
  750. objCSV.SetCell CurrentRow,3,rs("ADDRESS2").value
  751. objCSV.SetCell CurrentRow,4,rs("ADDRESS3").value
  752. objCSV.SetCell CurrentRow,5,rs("ADDRESS4").value
  753. objCSV.SetCell CurrentRow,6,rs("ADDRESS5").value
  754. rs.MoveNext
  755. CurrentRow = CurrentRow +1
  756. Wend
  757. Dim CsvString:CsvString = objCSV.SaveToString()
  758. outFile.WriteLine CsvString
  759. outFile.Close
  760. End Sub
  761. Function CheckForJobsToCass()
  762. oConn.ConnectionString = ConnectionString
  763. oConn.Open
  764. 'oConn.Open
  765. Dim rs : set rs = oConn.Execute("Select TOP 1 ID from Kit Where Status ='Ready to Cass' ORDER BY ID DESC;")
  766. If Not rs.EOF Then
  767. Dim kitId : kitId = rs("ID").value
  768. rs.Close
  769. CheckForJobsToCass = KitID
  770. oConn.Execute("UPDATE Kit SET Status ='Cassing' WHERE ID =" & KitID & ";")
  771. Else
  772. CheckForJobsToCass = 0
  773. End If
  774. 'oConn.Close
  775. End Function
  776. Public Function PadLeft(originalString,desiredLength,Char)
  777. Dim padLength
  778. padLength = desiredLength - Len(originalString)
  779. If padLength > 0 Then
  780. ' Left pad the string with zeros
  781. PadLeft = String(padLength, Char) & originalString
  782. Else
  783. ' If the original string is already longer or equal to the desired length, no padding is needed
  784. PadLeft = originalString
  785. End If
  786. End Function
  787. Function Truncate(inputString, size)
  788. If Len(inputString) > size Then:Truncate = """" & Left(inputString,size) & """,":Else Truncate = """" & inputString & """,":End If
  789. End Function
  790. Function PadString(inputString, size)
  791. Dim paddedString
  792. Dim inputLength
  793. Dim i
  794. If IsNull(inputString) Then:inputString = ""
  795. ' Get the length of the input string
  796. inputLength = Len(inputString)
  797. ' If the input string is already equal to or longer than the specified size, return it as is
  798. If inputLength >= size Then
  799. PadString = inputString
  800. Exit Function
  801. End If
  802. ' Initialize the padded string with the input string
  803. paddedString = inputString
  804. ' Pad spaces to the right of the input string until it reaches the specified size
  805. For i = 1 To (size - inputLength)
  806. paddedString = paddedString & " "
  807. Next
  808. ' Return the padded string
  809. PadString = paddedString
  810. End Function
  811. Function CleanNull(StringToClean)
  812. If IsNull(StringToClean) Then:CleanNull = "":Else CleanNull = StringToClean:End If
  813. End Function
  814. Public Sub Assign(ByRef var, ByVal val)
  815. If IsObject(val) Then
  816. Set var = val
  817. Else
  818. var = val
  819. End If
  820. End Sub
  821. Public Function Choice(ByVal cond, ByVal if_true, ByVal if_false)
  822. If cond Then
  823. Assign Choice, if_true
  824. Else
  825. Assign Choice, if_false
  826. End If
  827. End Function
  828. Function CompressArray(arr)
  829. Dim temp,i,j
  830. For i = LBound(arr) To UBound(arr) - 1
  831. For j = i + 1 To UBound(arr)
  832. If arr(i) = "" Then
  833. temp = arr(i)
  834. arr(i) = arr(j)
  835. arr(j) = temp
  836. End If
  837. Next
  838. Next
  839. CompressArray = arr
  840. End Function
  841. Function TrimLeadingZeros(inputStr)
  842. Dim i
  843. For i = 1 To Len(inputStr)
  844. If Mid(inputStr, i, 1) <> "0" Then
  845. TrimLeadingZeros = Mid(inputStr, i)
  846. Exit Function
  847. End If
  848. Next
  849. ' If the input string is all zeros, return "0"
  850. TrimLeadingZeros = ""
  851. End Function
  852. Sub PushNonEmptyToBottom(ByRef myArray)
  853. Dim tempArray(), i, count
  854. count = UBound(myArray)
  855. ' Create a temporary array to store the rearranged elements
  856. ReDim tempArray(UBound(myArray))
  857. ' Fill the temporary array with empty strings initially
  858. For i = 0 To UBound(myArray)
  859. tempArray(i) = ""
  860. Next
  861. ' Add non-empty elements to the highest-numbered positions
  862. For i = UBound(myArray) To 0 Step -1
  863. If myArray(i) <> "" Then
  864. tempArray(count) = myArray(i)
  865. count = count - 1
  866. End If
  867. Next
  868. ' Copy the temporary array back to the original array
  869. For i = 0 To UBound(myArray)
  870. myArray(i) = tempArray(i)
  871. Next
  872. End Sub
  873. Function GetState(ByVal addressLine)
  874. Dim statePattern, matches, state
  875. statePattern = ",\s([A-Z]{2})\s\d{5}" ' Pattern to match ", STATE ZIP"
  876. Dim regEx
  877. Set regEx = New RegExp
  878. regEx.Pattern = statePattern
  879. regEx.IgnoreCase = False
  880. regEx.Global = False
  881. Set matches = regEx.Execute(addressLine)
  882. If matches.Count > 0 Then
  883. ' Extract the state abbreviation (the first captured group)
  884. state = Trim(matches(0).SubMatches(0))
  885. Else
  886. state = ""
  887. End If
  888. GetState = state
  889. End Function
  890. Function GetCityFromLine(addressLine)
  891. Dim cityPos
  892. If IsNull(addressLine) Then
  893. GetCityFromLine = ""
  894. Exit Function
  895. End If
  896. cityPos = InStr(addressLine, ",")
  897. If cityPos > 0 Then
  898. GetCityFromLine = Left(addressLine, cityPos - 1)
  899. Else
  900. ' No comma – return whole line or empty string, your choice
  901. GetCityFromLine = addressLine
  902. End If
  903. End Function

Powered by TurnKey Linux.