You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.

736 lines
69KB

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

Powered by TurnKey Linux.