Du kannst nicht mehr als 25 Themen auswählen Themen müssen entweder mit einem Buchstaben oder einer Ziffer beginnen. Sie können Bindestriche („-“) enthalten und bis zu 35 Zeichen lang sein.

964 Zeilen
88KB

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

Powered by TurnKey Linux.