您最多选择25个主题 主题必须以字母或数字开头,可以包含连字符 (-),并且长度不得超过35个字符

947 行
87KB

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

Powered by TurnKey Linux.