25개 이상의 토픽을 선택하실 수 없습니다. Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.

1091 lines
96KB

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

Powered by TurnKey Linux.