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

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

Powered by TurnKey Linux.