No puede seleccionar más de 25 temas Los temas deben comenzar con una letra o número, pueden incluir guiones ('-') y pueden tener hasta 35 caracteres de largo.

1114 líneas
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 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. CreateProofingReportTextFile KitID, KitRs, JurisdictionRs
  422. oConn.Execute("UPDATE KIT SET [Status] ='Ready For Inkjet Export' WHERE [ID] =" & KitID & ";")
  423. If KitRs.State = 1 Then:KitRs.Close:End If
  424. If JurisdictionRs.State = 1 Then:JurisdictionRs.Close:End If
  425. If oConn.State = 1 Then:oConn.Close:End If
  426. End Function
  427. Function CreateProofingReportTextFile(KitID, KitRs, JurisdictionRs)
  428. If oConn.State = 0 Then:oConn.Open(ConnectionString):End If
  429. Dim PrecinctRs:Set PrecinctRs = oConn.Execute("SELECT [PRECINCT], MIN(VAL([BALLOT_NUMBER])) AS [LOWNUM], MAX(VAL([BALLOT_NUMBER])) AS [HIGHNUM], COUNT(*) AS [CNT] FROM [InkjetRecords] WHERE [KitID] = " & KitID & " GROUP BY [PRECINCT] ORDER BY VAL([PRECINCT]) ASC, [PRECINCT] ASC;")
  430. Dim ReportFolder:ReportFolder = ExportDirectory & KitRs("JobNumber").Value & "-" & JurisdictionRs("Name").value
  431. If Not objFSO.FolderExists(ReportFolder) Then:objFSO.CreateFolder(ReportFolder):End If
  432. Dim ReportFileName:ReportFileName = objFSO.GetBaseName(KitRs("Filename")) & "-PROOFING-REPORT.txt"
  433. Dim ReportFile:Set ReportFile = objFSO.CreateTextFile(ReportFolder & "\" & ReportFileName, True)
  434. ReportFile.WriteLine "Purple Envelope Proofing Report"
  435. ReportFile.WriteLine JurisdictionRs("Name").Value & " " & KitRs("Jcode").Value
  436. ReportFile.WriteLine Right("0" & Month(Now()),2) & "/" & Right("0" & Day(Now()),2) & "/" & Year(Now())
  437. ReportFile.WriteLine ""
  438. ReportFile.WriteLine PadString("Precinct",12) & PadString("Low Ballot Number",20) & PadString("High Ballot Number",20) & "Total Precinct Count"
  439. Dim TotalBallots:TotalBallots = 0
  440. Do While Not PrecinctRs.EOF
  441. ReportFile.WriteLine PadString(PrecinctRs("PRECINCT") & "",12) & PadString(CStr(PrecinctRs("LOWNUM")),20) & PadString(CStr(PrecinctRs("HIGHNUM")),20) & CStr(PrecinctRs("CNT"))
  442. TotalBallots = TotalBallots + PrecinctRs("CNT")
  443. PrecinctRs.MoveNext
  444. Loop
  445. If PrecinctRs.State = 1 Then:PrecinctRs.Close:End If
  446. ReportFile.WriteLine ""
  447. ReportFile.WriteLine PadString("Total Ballots",30) & TotalBallots
  448. ReportFile.WriteLine PadString("Total Back Pages on proof",30) & TotalBallots
  449. ReportFile.WriteLine PadString("Total pages in PDF proof",30) & (TotalBallots * 2)
  450. ReportFile.Close
  451. End Function
  452. Function CreateExportForSnailWorks(KitID)
  453. Dim State
  454. Dim AddressArray
  455. Dim ForeignTest
  456. If oConn.State = 0 Then:oConn.Open(ConnectionString):End If
  457. Dim KitRs:set KitRs = oConn.Execute("Select * From [Kit] Where [ID] =" & KitID & ";")
  458. If KitRs("OutboundSTID") <> "0" Then
  459. Dim KitLabelsRs: Set KitLabelsRs = oConn.Execute("SELECT InkjetRecords.VOTERID, InkjetRecords.PRECINCT," &_
  460. " InkjetRecords.BALLOT_NUMBER, InkjetRecords.CassADDRESS1, InkjetRecords.CassADDRESS2," &_
  461. " InkjetRecords.CassADDRESS3, InkjetRecords.CassADDRESS4, InkjetRecords.CassADDRESS5," &_
  462. " KitLabels.OutboundIMBDigits, KitLabels.InBoundIMBDigits" &_
  463. " FROM InkjetRecords" &_
  464. " LEFT JOIN [KitLabels] ON InkjetRecords.KitLabelID = KitLabels.ID" &_
  465. " WHERE InkjetRecords.KitID =" & KitID & " ;")
  466. Dim JurisdictionRs:Set JurisdictionRs = oConn.Execute("SELECT * FROM Jurisdiction WHERE JCode ='" & KitRs("Jcode").Value & "';")
  467. Dim ExportFileName:ExportFileName = objFSO.GetBaseName(KitRs("Filename")) & "_SW_EXPORT.csv"
  468. If Not objFSO.FolderExists(ExportDirectory & KitRs("JobNumber").Value & "-" & JurisdictionRs("Name").value) Then:objFSO.CreateFolder(ExportDirectory & KitRs("JobNumber").Value & "-" & JurisdictionRs("Name").value):End If
  469. If objFSO.FileExists(ExportDirectory & KitRs("JobNumber").Value & "-" & JurisdictionRs("Name").value & "/" & ExportFileName) Then:objFSO.DeleteFile(ExportDirectory & KitRs("JobNumber").Value & "-" & JurisdictionRs("Name").value & "/" & ExportFileName):End If
  470. Dim objExportFile:set objExportFile = objFSO.CreateTextFile(ExportDirectory & KitRs("JobNumber").Value & "-" & JurisdictionRs("Name").value & "/" & ExportFileName,2)
  471. With objExportFile
  472. .Write(chr(34) & "H" & chr(34) & "," & _
  473. Truncate("5.2",5) & _
  474. Truncate("KCIHotFolder2024FTPUser",50) & _
  475. Truncate(KitRs("Jcode").Value,50) & _
  476. Truncate("",50) & _
  477. Truncate("Purple envelope - " & KitRs("JobNumber").Value,50) & _
  478. Truncate("",50) & _
  479. Truncate("",50) & _
  480. Truncate("",80) & _
  481. Truncate("L",1) & _
  482. Truncate(Year(Now()) & "/" & Right("0" & Month(Now()),2) & "/" & Right("0" & Day(Now()),2),10) & _
  483. Truncate("N",1) & _
  484. Truncate("",8) & _
  485. Truncate("",8) & _
  486. Truncate("",10) & _
  487. Truncate("",10) & _
  488. Truncate("danielc@kentcommunications.com",100) & _
  489. Truncate("",9) & _
  490. Truncate("",4) & _
  491. Truncate(Choice(IsNull(KitRs("InboundSTID")),"O","R"),1) & _
  492. Truncate("",11) & _
  493. Truncate("",2) & _
  494. Truncate("",255) & _
  495. Truncate("",2) & _
  496. Truncate("",255) & _
  497. chr(34) & "N" & chr(34) & vbCrLf)
  498. While Not KitLabelsRs.EOF
  499. AddressArray = Array(KitLabelsRs("CassADDRESS2").Value,KitLabelsRs("CassADDRESS3").Value,KitLabelsRs("CassADDRESS4").Value,KitLabelsRs("CassADDRESS5").Value)
  500. PushNonEmptyToBottom AddressArray
  501. ForeignTest = AddressArray(3) & " " & AddressArray(2)
  502. State = GetState(AddressArray(3))
  503. State = Replace(State," ","")
  504. If CheckStringDoesNotHaveForiegnCountries(ForeignTest) And State <> """""," then
  505. 'If InStr(ForeignTest,"CANADA") = 0 And InStr(ForeignTest,"AUSTRALIA") = 0 And State <> "" Then " ",
  506. .Write(chr(34) & "D" & chr(34) & "," & _
  507. Truncate("",20) & _
  508. Truncate(KitLabelsRs("OutboundIMBDigits"),31) & _
  509. Truncate("",10) & _
  510. Truncate("",50) & _
  511. Truncate("",2) & _
  512. Truncate("",50) & _
  513. Truncate("",10) & _
  514. Truncate((KitLabelsRs("CassADDRESS1").Value),100) & _
  515. Truncate("",50) & _
  516. Truncate("",50) & _
  517. Truncate(AddressArray(1),128) & _
  518. Truncate(AddressArray(2),128) & _
  519. Truncate(GetCityFromLine(AddressArray(3)),50) & _
  520. Truncate(State,2) & _
  521. Choice(InStr(AddressArray(3),"-"),Truncate(Right(AddressArray(3),11),11),Truncate(Right(AddressArray(3),5),5)) & _
  522. Truncate(KitRs("Jcode"),100) & _
  523. Truncate("",100) & _
  524. Truncate("",100) & _
  525. Truncate(KitLabelsRs("PRECINCT").Value & KitLabelsRs("BALLOT_NUMBER"),80) & _
  526. Truncate(KitLabelsRs("VOTERID").Value,80) & _
  527. Truncate("",1) & _
  528. Truncate("",80) & _
  529. Truncate("",10) & _
  530. Truncate(Choice(IsNull(KitRs("InboundSTID")),"",KitLabelsRs("InBoundIMBDigits").Value),31) & _
  531. Truncate("",24) & _
  532. chr(34) & chr(34) & vbCrLf)
  533. End If
  534. KitLabelsRs.MoveNext
  535. Wend
  536. .Close
  537. End With
  538. If KitLabelsRs.State = 1 Then:KitLabelsRs.Close: End If
  539. If JurisdictionRs.State = 1 Then:JurisdictionRs.Close:End If
  540. End If
  541. oConn.Execute("UPDATE KIT SET [Status] ='Ready to Proof',[ExportedToSnailWorks] =#" & Now() & "# WHERE [ID] =" & KitID & ";")
  542. If oConn.State = 1 Then:oConn.Close:End If
  543. If KitRs.State = 1 Then:KitRs.Close:End If
  544. End Function
  545. Function createTrackingInfoForKit(KitID)
  546. If oConn.State = 0 Then:oConn.Open(ConnectionString):End If
  547. oConn.Execute("UPDATE Kit SET Status ='Applying Serial Numbers' WHERE ID =" & KitID & ";")
  548. Dim KitRs:set KitRs = oConn.Execute("Select * from Kit Where ID =" & KitID & ";")
  549. If KitRs("OutBoundSTID") = 0 Then
  550. oConn.Execute("UPDATE Kit Set [Status]='Ready For Export', LabelsPrinted=#" & Now() & "# WHERE [ID] =" & KitID &";")
  551. Else
  552. Dim InkjetRs:Set InkjetRs = oConn.Execute("Select * from InkjetRecords Where KitID =" & KitID & ";")
  553. 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
  554. Dim SerialNumberStart:SerialNumberStart = GetSetting("SerialNumberStart")
  555. Dim serialOffset:serialOffset = GetSetting("SerialOffset")
  556. Dim serialStart:serialStart = CLng(GetSetting("SerialNumberStart")) + CLng(GetSetting("SerialOffset"))
  557. Dim Counter:Counter=0
  558. Dim KitLabelID
  559. Dim KitLabelRs
  560. Dim Mid:Mid = GetSetting("MailingID")
  561. Dim Step : If KitRs("InboundSTID") <> "" Then : Step = 2 : Else Step = 1
  562. serialStart = PadLeft(serialStart + CLng(Counter),9,"0")
  563. Dim oRsKitLabels : Set oRsKitLabels = CreateObject("ADODB.Recordset"):oRsKitLabels.Open "Select * FROM [KitLabels] Where KitID =" & KitID & ";",oConn,3,3
  564. While Not InkjetRs.EOF
  565. oRsKitLabels.AddNew
  566. KitLabelID = oRsKitLabels("ID").value
  567. If Step = 1 Then
  568. oRsKitLabels("KitID") = KitID
  569. oRsKitLabels("OutboundSerial") = serialStart
  570. oRsKitLabels("OutboundIMBDigits") = KitRs("OutBoundSTID").Value & "202248" & serialStart
  571. Else
  572. oRsKitLabels("KitID") = KitID
  573. oRsKitLabels("OutboundSerial") = serialStart
  574. oRsKitLabels("InBoundSerial") = serialStart + 1
  575. oRsKitLabels("OutboundIMBDigits") = KitRs("OutBoundSTID").Value & "202248" & serialStart
  576. oRsKitLabels("InBoundIMBDigits") = KitRs("InboundSTID").Value & Mid & serialStart + 1 & Jcode
  577. End If
  578. oRsKitLabels.Update
  579. oConn.Execute("UPDATE InkjetRecords Set [KitLabelID]=" & KitLabelID & " WHERE ID=" & InkjetRs("ID") & ";")
  580. Counter = Counter + Step
  581. serialStart = serialStart + Step
  582. InkjetRs.MoveNext
  583. Wend
  584. oRsKitLabels.Update
  585. oRsKitLabels.Close
  586. oConn.Execute("UPDATE Settings Set [Value]='" & serialOffset + Counter & "' WHERE [Name] = 'SerialOffset';")
  587. oConn.Execute("UPDATE Kit Set [Status]='Ready For Export', LabelsPrinted=#" & Now() & "# WHERE [ID] =" & KitID &";")
  588. oConn.Close
  589. End If
  590. End Function
  591. Function GetSetting(settingName)
  592. Dim rs:Set rs = oConn.Execute("Select Value From [Settings] Where [Name] = '" & settingName & "';")
  593. If Not rs.EOF Then
  594. GetSetting = rs(0).value
  595. rs.Close
  596. Else
  597. SetSetting = 0
  598. rs.Close
  599. End If
  600. End Function
  601. Function CheckForFiles()
  602. If objFSO.FolderExists(DataDirectory) Then
  603. Dim objFolder:Set objFolder = objFSO.GetFolder(DataDirectory)
  604. If objFolder.Files.Count > 0 Then
  605. 'WScript.Echo "Files found in directory: " & DataDirectory
  606. Dim objFile
  607. For Each objFile In objFolder.Files
  608. Dim CsvString:CsvString = ConvertCsvToString(objFile.Path)
  609. If ValidImportCSV(CsvString) Then
  610. SetupKit CsvString,objFile.Name
  611. objFSO.MoveFile objFile.Path, DataDirectory & "\import\" & objFile.Name
  612. End If
  613. Next
  614. Else
  615. 'WScript.Echo "No files found in directory: " & DataDirectory
  616. End If
  617. End If
  618. End Function
  619. Function ValidJcode(jcode)
  620. Dim oConn
  621. Set oConn = WScript.CreateObject("ADODB.Connection")
  622. oConn.ConnectionString = ConnectionString
  623. oConn.Open
  624. Dim oRs
  625. set oRs = oConn.Execute("Select * from Jurisdiction Where [JCode] = '" & jcode & "';")
  626. If oRs.EOF Then
  627. ValidJcode = 0
  628. Else
  629. ValidJcode = 1
  630. End If
  631. oRs.Close
  632. oConn.Close
  633. End Function
  634. Function CheckStringDoesNotHaveForiegnCountries(StringToCheck)
  635. Dim Countries
  636. 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")
  637. Dim Country
  638. For Each Country In Countries
  639. If InStr(StringToCheck,Country) Then
  640. CheckStringDoesNotHaveForiegnCountries = False
  641. Exit For
  642. End If
  643. CheckStringDoesNotHaveForiegnCountries = True
  644. Next
  645. End Function
  646. Function SetupKit(CsvString,FileName)
  647. Dim JobNumber:JobNumber = Mid(FileName,9,6)
  648. Dim JCode:JCode = Left(Filename,5)
  649. If IsNumeric(JobNumber) Then
  650. If ValidJcode(JCode) Then
  651. WScript.Echo FileName & " Is a Valid CSV for Importing"
  652. Dim oConn:Set oConn = WScript.CreateObject("ADODB.Connection")
  653. oConn.ConnectionString = ConnectionString
  654. oConn.Open
  655. oConn.Execute("Insert Into Kit ([JobNumber], [Jcode], [CreatedOn], [JobType],[Filename],[Status]) VALUES ('" & JobNumber & "','" & JCode & "',#" & Now() & "#,'Purple Envelopes','" & FileName & "','Importing');")
  656. Dim rs : set rs = oConn.Execute("Select TOP 1 ID from Kit ORDER BY ID DESC")
  657. Dim kitId : kitId = rs("ID").value
  658. rs.close
  659. Dim i
  660. For i = 1 To objCSV.NumRows -1
  661. 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),"'","''"))
  662. PushNonEmptyToBottom AddressArray
  663. oConn.Execute("Insert Into [InkjetRecords] (KitID,VOTERID,LASTNAME,FIRSTNAME,MIDDLENAME" & _
  664. ",SUFFIX,PRECINCT,ADDRESS1,ADDRESS2,ADDRESS3,ADDRESS4,ADDRESS5,APPSENT,APPRETURNED,BALSENT,BALRETURNED" & _
  665. ",CountingBoard,UOCAVASTATUS,EMAILADDRESS,PHONENUMBER,BALLOT_NUMBER) VALUES (" & kitId & _
  666. ",'" & Replace(objCSV.GetCell(i,0),"'","''") & _
  667. "','" & Replace(objCsv.GetCell(i,1),"'","''") & _
  668. "','" & Replace(objCSV.GetCell(i,2),"'","''") & _
  669. "','" & Replace(objCSV.GetCell(i,3),"'","''") & _
  670. "','" & Replace(objCSV.GetCell(i,4),"'","''") & _
  671. "','" & TrimLeadingZeros(Replace(objCSV.GetCell(i,5),"'","''")) & _
  672. "','" & AddressArray(0) & _
  673. "','" & AddressArray(1) & _
  674. "','" & AddressArray(2) & _
  675. "','" & AddressArray(3) & _
  676. "','" & AddressArray(4) & _
  677. "','" & Replace(objCSV.GetCell(i,11),"'","''") & _
  678. "','" & Replace(objCSV.GetCell(i,12),"'","''") & _
  679. "','" & Replace(objCsv.GetCell(i,13),"'","''") & _
  680. "','" & objCsv.GetCell(i,14) & _
  681. "','" & objCsv.GetCell(i,15) & _
  682. "','" & objCsv.GetCell(i,16) & _
  683. "','" & objCsv.GetCell(i,17) & _
  684. "','" & objCsv.GetCell(i,18) & _
  685. "','" & TrimLeadingZeros(objCsv.GetCell(i,19)) & _
  686. "')")
  687. Next
  688. oConn.Execute("Update Kit SET [Status] = 'Ready to Cass' Where ID = " & kitId &";")
  689. 'oConn.Close
  690. End If
  691. End If
  692. End Function
  693. Function ConvertCsvToString(FilePath)
  694. Dim objFSO:Set objFSO = CreateObject("Scripting.FileSystemObject")
  695. Dim objCsvFile:set objCsvFile = objFSO.OpenTextFile(FilePath)
  696. Dim strContent:strContent = ""
  697. Dim intLineCount:intLineCount = 0
  698. Do Until objCsvFile.AtEndOfStream Or intLineCount >= 3
  699. objCsvFile.SkipLine
  700. intLineCount = intLineCount + 1
  701. Loop
  702. ' Read the remaining content into a string
  703. Do Until objCsvFile.AtEndOfStream
  704. Dim strLine:strLine = objCsvFile.ReadLine
  705. strContent = strContent & strLine & vbCrLf
  706. Loop
  707. ConvertCsvToString = strContent
  708. End Function
  709. Function ValidImportCSV(CsvFileAsString)
  710. objCSV.LoadFromString(CsvFileAsString)
  711. If objCSV.NumColumns = 20 Then
  712. ValidImportCSV = True
  713. Else
  714. ValidImportCSV = False
  715. End If
  716. End Function
  717. Sub ImportCass
  718. Dim currentRow
  719. Select Case dev
  720. Case "local"
  721. objCsv.LoadFile("\\MarkH2.ntp.kentcommunications.com\Share\TrackingDataExport\FROM_MM.CSV")
  722. Case True
  723. objCsv.LoadFile("C:\Share\TrackingDataExport\FROM_MM.CSV")
  724. Case Else
  725. objCsv.LoadFile("\\kci-syn-cl01\PC Transfer\TrackingDataExport\FROM_MM.CSV")
  726. End Select
  727. For currentRow = 0 To objCsv.NumRows -1
  728. 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),"'","''")))
  729. oConn.Execute("UPDATE InkJetRecords SET CassADDRESS1 = '" & AddressArray(0) & "', " &_
  730. "CassADDRESS2 = '" & AddressArray(1) & "', " &_
  731. "CassADDRESS3 = '" & AddressArray(2) & "', " &_
  732. "CassADDRESS4 = '" & AddressArray(3) & "', " &_
  733. "CassADDRESS5 = '" & AddressArray(4) & "'" &_
  734. " WHERE ID = " & objCSV.GetCell(currentRow,0) & ";")
  735. Next
  736. oConn.Execute("UPDATE Kit SET Status ='Ready To Assign STIDS' WHERE ID =" & KitID & ";")
  737. oConn.Execute("UPDATE Kit SET [Cass] = 1 WHERE ID =" & KitID & ";")
  738. End Sub
  739. Sub RunMailManager
  740. Select Case dev
  741. Case "local"
  742. 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
  743. Case True
  744. 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
  745. Case Else
  746. 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
  747. End Select
  748. End Sub
  749. Sub ExportMMCsv(KitId)
  750. Dim success
  751. objCsv.HasColumnNames = 1
  752. objCSV.EnableQuotes = 1
  753. success = objCsv.SetColumnName(0,"ID")
  754. success = objCsv.SetColumnName(1,"NAME")
  755. success = objCsv.SetColumnName(2,"ADDRESS1")
  756. success = objCsv.SetColumnName(3,"ADDRESS2")
  757. success = objCsv.SetColumnName(4,"ADDRESS3")
  758. success = objCsv.SetColumnName(5,"ADDRESS4")
  759. success = objCsv.SetColumnName(6,"ADDRESS5")
  760. Dim rs : Set rs = oConn.Execute("Select ID," & _
  761. "IIF(FIRSTNAME IS NULL,'',FIRSTNAME & ' ') & " & _
  762. "IIF(MIDDLENAME IS NULL,'',MIDDLENAME & ' ') & " & _
  763. "IIF(LASTNAME IS NULL,'',LASTNAME & ' ') & " & _
  764. "IIF(SUFFIX IS NULL,'',SUFFIX & ' ') " & _
  765. "AS NAME, ADDRESS1,ADDRESS2,ADDRESS3,ADDRESS4,ADDRESS5 FROM InkjetRecords WHERE KitID =" & KitID & " ORDER By ID;")
  766. Dim CurrentRow:CurrentRow = 0
  767. While Not rs.EOF
  768. objCSV.SetCell CurrentRow,0,rs("ID").value
  769. objCSV.SetCell CurrentRow,1,rs("NAME").value
  770. objCSV.SetCell CurrentRow,2,rs("ADDRESS1").value
  771. objCSV.SetCell CurrentRow,3,rs("ADDRESS2").value
  772. objCSV.SetCell CurrentRow,4,rs("ADDRESS3").value
  773. objCSV.SetCell CurrentRow,5,rs("ADDRESS4").value
  774. objCSV.SetCell CurrentRow,6,rs("ADDRESS5").value
  775. rs.MoveNext
  776. CurrentRow = CurrentRow +1
  777. Wend
  778. Dim CsvString:CsvString = objCSV.SaveToString()
  779. outFile.WriteLine CsvString
  780. outFile.Close
  781. End Sub
  782. Function CheckForJobsToCass()
  783. oConn.ConnectionString = ConnectionString
  784. oConn.Open
  785. 'oConn.Open
  786. Dim rs : set rs = oConn.Execute("Select TOP 1 ID from Kit Where Status ='Ready to Cass' ORDER BY ID DESC;")
  787. If Not rs.EOF Then
  788. Dim kitId : kitId = rs("ID").value
  789. rs.Close
  790. CheckForJobsToCass = KitID
  791. oConn.Execute("UPDATE Kit SET Status ='Cassing' WHERE ID =" & KitID & ";")
  792. Else
  793. CheckForJobsToCass = 0
  794. End If
  795. 'oConn.Close
  796. End Function
  797. Public Function PadLeft(originalString,desiredLength,Char)
  798. Dim padLength
  799. padLength = desiredLength - Len(originalString)
  800. If padLength > 0 Then
  801. ' Left pad the string with zeros
  802. PadLeft = String(padLength, Char) & originalString
  803. Else
  804. ' If the original string is already longer or equal to the desired length, no padding is needed
  805. PadLeft = originalString
  806. End If
  807. End Function
  808. Function Truncate(inputString, size)
  809. If Len(inputString) > size Then:Truncate = """" & Left(inputString,size) & """,":Else Truncate = """" & inputString & """,":End If
  810. End Function
  811. Function PadString(inputString, size)
  812. Dim paddedString
  813. Dim inputLength
  814. Dim i
  815. If IsNull(inputString) Then:inputString = ""
  816. ' Get the length of the input string
  817. inputLength = Len(inputString)
  818. ' If the input string is already equal to or longer than the specified size, return it as is
  819. If inputLength >= size Then
  820. PadString = inputString
  821. Exit Function
  822. End If
  823. ' Initialize the padded string with the input string
  824. paddedString = inputString
  825. ' Pad spaces to the right of the input string until it reaches the specified size
  826. For i = 1 To (size - inputLength)
  827. paddedString = paddedString & " "
  828. Next
  829. ' Return the padded string
  830. PadString = paddedString
  831. End Function
  832. Function CleanNull(StringToClean)
  833. If IsNull(StringToClean) Then:CleanNull = "":Else CleanNull = StringToClean:End If
  834. End Function
  835. Public Sub Assign(ByRef var, ByVal val)
  836. If IsObject(val) Then
  837. Set var = val
  838. Else
  839. var = val
  840. End If
  841. End Sub
  842. Public Function Choice(ByVal cond, ByVal if_true, ByVal if_false)
  843. If cond Then
  844. Assign Choice, if_true
  845. Else
  846. Assign Choice, if_false
  847. End If
  848. End Function
  849. Function CompressArray(arr)
  850. Dim temp,i,j
  851. For i = LBound(arr) To UBound(arr) - 1
  852. For j = i + 1 To UBound(arr)
  853. If arr(i) = "" Then
  854. temp = arr(i)
  855. arr(i) = arr(j)
  856. arr(j) = temp
  857. End If
  858. Next
  859. Next
  860. CompressArray = arr
  861. End Function
  862. Function TrimLeadingZeros(inputStr)
  863. Dim i
  864. For i = 1 To Len(inputStr)
  865. If Mid(inputStr, i, 1) <> "0" Then
  866. TrimLeadingZeros = Mid(inputStr, i)
  867. Exit Function
  868. End If
  869. Next
  870. ' If the input string is all zeros, return "0"
  871. TrimLeadingZeros = ""
  872. End Function
  873. Sub PushNonEmptyToBottom(ByRef myArray)
  874. Dim tempArray(), i, count
  875. count = UBound(myArray)
  876. ' Create a temporary array to store the rearranged elements
  877. ReDim tempArray(UBound(myArray))
  878. ' Fill the temporary array with empty strings initially
  879. For i = 0 To UBound(myArray)
  880. tempArray(i) = ""
  881. Next
  882. ' Add non-empty elements to the highest-numbered positions
  883. For i = UBound(myArray) To 0 Step -1
  884. If myArray(i) <> "" Then
  885. tempArray(count) = myArray(i)
  886. count = count - 1
  887. End If
  888. Next
  889. ' Copy the temporary array back to the original array
  890. For i = 0 To UBound(myArray)
  891. myArray(i) = tempArray(i)
  892. Next
  893. End Sub
  894. Dim oStateRegEx
  895. Function GetState(ByVal addressLine)
  896. Dim matches, state
  897. If Not IsObject(oStateRegEx) Then
  898. Set oStateRegEx = New RegExp
  899. oStateRegEx.Pattern = ",\s([A-Z]{2})\s\d{5}"
  900. oStateRegEx.IgnoreCase = False
  901. oStateRegEx.Global = False
  902. End If
  903. Set matches = oStateRegEx.Execute(addressLine)
  904. If matches.Count > 0 Then
  905. ' Extract the state abbreviation (the first captured group)
  906. state = Trim(matches(0).SubMatches(0))
  907. Else
  908. state = ""
  909. End If
  910. GetState = state
  911. End Function
  912. Function GetCityFromLine(addressLine)
  913. Dim cityPos
  914. If IsNull(addressLine) Then
  915. GetCityFromLine = ""
  916. Exit Function
  917. End If
  918. cityPos = InStr(addressLine, ",")
  919. If cityPos > 0 Then
  920. GetCityFromLine = Left(addressLine, cityPos - 1)
  921. Else
  922. ' No comma – return whole line or empty string, your choice
  923. GetCityFromLine = addressLine
  924. End If
  925. End Function
  926. Private Function BuildG2AddressFields(ByVal fullName, ByVal mailingAddress, ByVal csz)
  927. Dim result
  928. Set result = CreateObject("Scripting.Dictionary")
  929. Dim origName
  930. Dim origMailingAddress
  931. Dim origCSZ
  932. Dim poPos
  933. Dim beforePO
  934. Dim poBoxPart
  935. origName = NzToString(fullName)
  936. origMailingAddress = NzToString(mailingAddress)
  937. origCSZ = NzToString(csz)
  938. ' Default values when there is no split needed
  939. result("G2 Full Name") = origName
  940. result("G2 Company") = origMailingAddress
  941. result("G2 Alternate 1 Address") = origCSZ
  942. result("G2 Delivery Address") = ""
  943. result("G2 City St ZIP+4") = ""
  944. poPos = InStr(1, origMailingAddress, "PO BOX", vbTextCompare)
  945. If poPos > 0 Then
  946. beforePO = Trim(Left(origMailingAddress, poPos - 1))
  947. ' Only split if there is text before PO BOX
  948. If Len(beforePO) > 0 Then
  949. poBoxPart = Trim(Mid(origMailingAddress, poPos))
  950. result("G2 Company") = beforePO
  951. result("G2 Alternate 1 Address") = poBoxPart
  952. result("G2 Delivery Address") = origCSZ
  953. result("G2 City St ZIP+4") = ""
  954. End If
  955. End If
  956. Set BuildG2AddressFields = result
  957. End Function
  958. Private Function NzToString(ByVal value)
  959. If IsNull(value) Or IsEmpty(value) Then
  960. NzToString = ""
  961. Else
  962. NzToString = CStr(value)
  963. End If
  964. End Function

Powered by TurnKey Linux.