Nevar pievienot vairāk kā 25 tēmas Tēmai ir jāsākas ar burtu vai ciparu, tā var saturēt domu zīmes ('-') un var būt līdz 35 simboliem gara.

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

Powered by TurnKey Linux.