Du kan inte välja fler än 25 ämnen Ämnen måste starta med en bokstav eller siffra, kan innehålla bindestreck ('-') och vara max 35 tecken långa.

TrackingDataImport.vbs 32KB

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

Powered by TurnKey Linux.