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.

TrackingDataImport.vbs 24KB

7 maanden geleden
7 maanden geleden
6 maanden geleden
7 maanden geleden
6 maanden geleden
6 maanden geleden
6 maanden geleden
7 maanden geleden
7 maanden geleden
7 maanden geleden
7 maanden geleden
6 maanden geleden
6 maanden geleden
123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373374375376377378379380381382383384385386387388389390391392393394395396397398399400401402403404405406407408409410411412413414415416417418419420421422423424425426427428429430431432433434435436437438439440441442443444445446447448449450451452453454455456457458459460461462463464465466467468469470471472473474475476477478479480481482483484485486487488489490491492493494495496497498499500501502503504505506507508509510511512513514515516517518519520521522523524525526527528529530531532533534535536537538539540
  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. Dim KitID:CheckForFiles:KitID = CheckForJobsToCass()
  34. If KitID > 0 Then
  35. ExportMMCsv(KitID)
  36. RunMailManager
  37. ImportCass
  38. End If
  39. KitID = CheckForReadyToLabel():If KitID > 0 Then:createTrackingInfoForKit(KitID):End If
  40. KitID = CheckForReadyToExportToSnailWorks():If KitID > 0 Then:CreateExportForSnailWorks(KitID):End If
  41. KitID = CheckForProofReady(KitID):If KitID > 0 Then:CreateProofForJurisdiction(KitID):End If
  42. WScript.Quit
  43. Function CreateProofForJurisdiction(KitID)
  44. Dim Qpdf:Set Qpdf = WScript.CreateObject("DebenuPDFLibraryAX1013.PDFLibrary")
  45. Dim Result:Result = Qpdf.UnlockKey("j564z3wi9i66k93cp3r798b3y")
  46. If oConn.State = 0 Then:oConn.Open(ConnectionString):End If
  47. Dim Rs:set Rs = oConn.Execute("SELECT MIN(ID) as [MIN],MAX(ID) as [MAX] FROM InkjetRecords WHERE KitID = " & KitID &";")
  48. Dim MIN:MIN = Rs("MIN").Value
  49. Dim MAX:MAX = Rs("MAX").Value
  50. Dim RecordCount:RecordCount = (MAX - MIN) + 1
  51. Rs.Close
  52. Dim KitRs:set KitRs = oConn.Execute("Select * From [Kit] Where [ID] =" & KitID & ";")
  53. Dim JurisdictionRs:set JurisdictionRs = oConn.Execute("SELECt * FROM [Jurisdiction] WHERE JCode='" & KitRs("Jcode").Value & "';")
  54. Dim ProofFileName:ProofFileName = objFSO.GetBaseName(KitRs("Filename")) & "-PROOF.PDF"
  55. If Not objFSO.FolderExists(ExportDirectory & KitRs("JobNumber").Value & "-" & JurisdictionRs("Name").value) Then:objFSO.CreateFolder(ExportDirectory & KitRs("JobNumber").Value & "-" & JurisdictionRs("Name").value):End If
  56. Dim reportManager:set reportManager = CreateObject("ReportMan.ReportManX")
  57. With reportManager
  58. .Preview = False
  59. .ShowProgress = False
  60. .ShowPrintDialog = False
  61. .filename = PurpleEnvelopeProofReport
  62. .SetDatabaseConnectionString "WEBDATA",ConnectionString
  63. .SetParamValue "PBKITID",KitID
  64. .SetParamValue "PBJCODE",KitRs("Jcode").Value
  65. Dim MAXRECORDS:MAXRECORDS = 3750
  66. If RecordCount > MAXRECORDS Then
  67. Dim i
  68. For i = 0 To RecordCount / MAXRECORDS
  69. Dim newMin:If MIN + (i * MAXRECORDS) > MIN Then:newMin = MIN + (i * MAXRECORDS) + 1:Else newMin = MIN:End If
  70. Dim newMax:If MIN + (i * MAXRECORDS) + MAXRECORDS > MAX Then:newMax = MAX:Else newMax = MIN + (i * MAXRECORDS) + MAXRECORDS:End If
  71. .SetParamValue "PBMIN",newMin
  72. .SetParamValue "PBMAX",newMax
  73. .SaveToPDF ExportDirectory & KitRs("JobNumber").Value & "-" & JurisdictionRs("Name").value & "\Part_" & i & "_" & ProofFileName,1
  74. Result = Qpdf.AddToFileList("Proofs",ExportDirectory & KitRs("JobNumber").Value & "-" & JurisdictionRs("Name").value & "\Part_" & i & "_" & ProofFileName)
  75. Next
  76. Result = Qpdf.MergeFileListFast("Proofs",ExportDirectory & KitRs("JobNumber").Value & "-" & JurisdictionRs("Name").value & "/" & ProofFileName)
  77. Dim test
  78. For test = 1 To Qpdf.FileListCount("Proofs")
  79. 'objFSO.DeleteFile Qpdf.FileListItem("Proofs",test),1
  80. WshShell.Run "cmd.exe /c DEL /F /Q """ & Qpdf.FileListItem("Proofs",test) & """" ,0,True
  81. 'debug.WriteLine "cmd.exe /c DEL /F /Q """ & Qpdf.FileListItem("Proofs",test) & """"
  82. 'debug.WriteLine Qpdf.FileListItem("Proofs",test)
  83. Next
  84. Else
  85. .SetParamValue "PBMIN",MIN
  86. .SetParamValue "PBMAX",MAX
  87. .SaveToPDF ExportDirectory & KitRs("JobNumber").Value & "-" & JurisdictionRs("Name").value & "/" & ProofFileName,1
  88. End If
  89. End With
  90. oConn.Execute("UPDATE KIT SET [Status] ='Ready For Inkjet Export' WHERE [ID] =" & KitID & ";")
  91. If KitRs.State = 1 Then:KitRs.Close:End If
  92. If JurisdictionRs.State = 1 Then:JurisdictionRs.Close:End If
  93. If oConn.State = 1 Then:oConn.Close:End If
  94. End Function
  95. Function CheckForProofReady(KitID)
  96. If oConn.State = 0 Then:oConn.Open(ConnectionString):End If
  97. Dim rs:Set rs = oConn.Execute("Select TOP 1 [ID] FROM [Kit] Where Status ='Ready to Proof' and JobType='Purple Envelopes';")
  98. If Not rs.EOF Then
  99. CheckForProofReady = rs("ID").value
  100. Else
  101. CheckForProofReady = 0
  102. End If
  103. If rs.State = 1 Then:rs.Close:End If
  104. If oConn.State = 1 Then:oConn.Close:End If
  105. End Function
  106. Function CheckForReadyToExportToSnailWorks()
  107. If oConn.State = 0 Then:oConn.Open(ConnectionString):End If
  108. Dim rs:Set rs = oConn.Execute("Select TOP 1 [ID] FROM [Kit] Where Status ='Ready For Export' and JobType='Purple Envelopes';")
  109. If Not rs.EOF Then
  110. CheckForReadyToExportToSnailWorks = rs("ID").value
  111. Else
  112. CheckForReadyToExportToSnailWorks = 0
  113. End If
  114. If rs.State = 1 Then:rs.Close:End If
  115. If oConn.State = 1 Then:oConn.Close:End If
  116. End Function
  117. Function CreateExportForSnailWorks(KitID)
  118. If oConn.State = 0 Then:oConn.Open(ConnectionString):End If
  119. Dim KitRs:set KitRs = oConn.Execute("Select * From [Kit] Where [ID] =" & KitID & ";")
  120. Dim KitLabelsRs: Set KitLabelsRs = oConn.Execute("SELECT InkjetRecords.ID, InkjetRecords.KitID, InkjetRecords.VOTERID, InkjetRecords.LASTNAME," &_
  121. " InkjetRecords.FIRSTNAME, InkjetRecords.MIDDLENAME, InkjetRecords.SUFFIX, InkjetRecords.PRECINCT," &_
  122. " InkjetRecords.ADDRESS1, InkjetRecords.ADDRESS2, InkjetRecords.ADDRESS3, InkjetRecords.ADDRESS4," &_
  123. " InkjetRecords.ADDRESS5, InkjetRecords.APPSENT, InkjetRecords.APPRETURNED, InkjetRecords.BALSENT," &_
  124. " InkjetRecords.BALRETURNED, InkjetRecords.CountingBoard, InkjetRecords.UOCAVASTATUS, InkjetRecords.EMAILADDRESS," &_
  125. " InkjetRecords.PHONENUMBER, InkjetRecords.BALLOT_NUMBER, InkjetRecords.CassADDRESS1, InkjetRecords.CassADDRESS2," &_
  126. " InkjetRecords.CassADDRESS3, InkjetRecords.CassADDRESS4, InkjetRecords.CassADDRESS5, InkjetRecords.KitLabelID," &_
  127. " KitLabels.ID, KitLabels.KitID, KitLabels.OutboundSerial, KitLabels.InBoundSerial, KitLabels.OutboundIMB," &_
  128. " KitLabels.InBoundIMB, KitLabels.OutboundIMBDigits, KitLabels.InBoundIMBDigits, KitLabels.OutboundIMBPNG," &_
  129. " KitLabels.INBOUNDIMBPNG, KitLabels.SetNumber" &_
  130. " FROM InkjetRecords" &_
  131. " LEFT JOIN [KitLabels] ON InkjetRecords.KitLabelID = KitLabels.ID" & _
  132. " WHERE InkjetRecords.KitID =" & KitID & " ;")
  133. Dim JurisdictionRs:Set JurisdictionRs = oConn.Execute("SELECT * FROM Jurisdiction WHERE JCode ='" & KitRs("Jcode").Value & "';")
  134. Dim ExportFileName:ExportFileName = objFSO.GetBaseName(KitRs("Filename")) & "_SW_EXPORT"
  135. If Not objFSO.FolderExists(ExportDirectory & KitRs("JobNumber").Value & "-" & JurisdictionRs("Name").value) Then:objFSO.CreateFolder(ExportDirectory & KitRs("JobNumber").Value & "-" & JurisdictionRs("Name").value):End If
  136. If objFSO.FileExists(ExportDirectory & KitRs("JobNumber").Value & "-" & JurisdictionRs("Name").value & "/" & ExportFileName) Then:objFSO.DeleteFile(ExportDirectory & KitRs("JobNumber").Value & "-" & JurisdictionRs("Name").value & "/" & ExportFileName):End If
  137. Dim objExportFile:set objExportFile = objFSO.CreateTextFile(ExportDirectory & KitRs("JobNumber").Value & "-" & JurisdictionRs("Name").value & "/" & ExportFileName,2)
  138. With objExportFile
  139. .Write("H") 'Record Type Required value must be = "H" (Header)
  140. .Write(PadString("5.1",5)) 'Version Required value must be ="5.1" for current release
  141. .Write(PadString("KCI",50)) 'UserId Required
  142. .Write(PadString(JurisdictionRs("Name").Value,50)) 'Client Name Required (will create new subaccount if not already defined)
  143. .Write(PadString("",50)) 'Parent Client Name Optional (use if 3-tier account structure)
  144. .Write(PadString("Purple envelope - " & KitRs("JobNumber").Value,50)) 'Job Name Required
  145. .Write(PadString("",50)) 'Job Description Optional
  146. .Write(PadString("",50)) 'Split Name Optional – will default to ‘Default’
  147. .Write(PadString("",80)) 'Split Description Optional
  148. .Write(PadString("L",1)) 'Piece Type Required L-Letters, C-Cards, F-Flats
  149. .Write(PadString(Year(Now()) & "/" &_
  150. Right("0" & Month(Now()), 2) & "/" & Right("0" & Day(Now()), 2),10)) 'MailDate Required (YYYY/MM/DD)
  151. .Write(PadString("N",1)) 'UploadType Required N = New job, new split A = Append new split to existing job R = Replace existing split
  152. .Write(PadString("",8)) 'TrackedQuantity Optional
  153. .Write(PadString("",8)) 'PiecesMailed Optional – shown as Estimated Quantity
  154. .Write(PadString("",10)) 'Target InHomeDateStart Optional (YYYY/MM/DD)
  155. .Write(PadString("",10)) 'Target InHomeDateEnd Optional (YYYY/MM/DD)
  156. .Write(PadString("",100)) 'ConfirmationEmail Optional
  157. .Write(PadString("",9)) 'JobId (SW) Optional for previously created jobs SWJobId
  158. .Write(PadString("",4)) 'SplitId (SW) Optional for previously created jobs SWJobId
  159. .Write(PadString(Choice(IsNull(KitRs("InboundSTID")),"O","R"),1)) 'TypeofTracking Required Values: O- Outbound Only I-Inbound Only R-Round Trip
  160. .Write(PadString("",11)) 'ReturnedPostalRoutingCode
  161. .Write(PadString("",2)) 'ReportId1
  162. .Write(PadString("",255)) 'Report1Email
  163. .Write(PadString("",2)) 'ReportId2
  164. .Write(PadString("",255)) 'Report2Email
  165. .Write(vbCrLf)
  166. While Not KitLabelsRs.EOF
  167. .Write("D") 'RecordType Required value must be = “D” (Detail)
  168. .Write(PadString("",20)) 'CustomerUniqueIdentifier Optional- any identifier you designate
  169. .Write(PadString(KitLabelsRs("OutboundIMBDigits"),31)) 'IMB Required – Unencoded, numeric IMB
  170. .Write(PadString("",10)) 'Greeting Optional
  171. .Write(PadString("",50)) 'First Name Optional
  172. .Write(PadString("",2)) 'MI Optional
  173. .Write(PadString("",50)) 'Last Name Optional
  174. .Write(PadString("",10)) 'Suffix Optional
  175. .Write(PadString((KitLabelsRs("CassADDRESS1").Value),100)) 'Full Name Optional
  176. .Write(PadString("",50)) 'Company Optional
  177. .Write(PadString("",50)) 'Title Optional
  178. .Write(PadString(KitLabelsRs("CassADDRESS3").Value,128)) 'Address1 Optional
  179. .Write(PadString(KitLabelsRs("CassADDRESS4").Value,128)) 'Address2 Optional
  180. .Write(PadString(Left(KitLabelsRs("CassADDRESS5").Value, _
  181. InStr(KitLabelsRs("CassADDRESS5").Value, ",") - 1),50)) 'City Optional
  182. .Write(PadString(Mid(KitLabelsRs("CassADDRESS5").Value, _
  183. InStr(KitLabelsRs("CassADDRESS5").Value, ",") + 2, 2),2)) 'State Optional
  184. .Write PadString(Right(KitLabelsRs("CassADDRESS5").Value,11),11) 'Zip Optional
  185. .Write(PadString(KitRs("Jcode"),100)) 'UserDefined1 Optional - Summary fields only
  186. .Write(PadString("",100)) 'UserDefined2 Optional - Summary fields only
  187. .Write(PadString("",100)) 'UserDefined3 Optional - Summary fields only
  188. .Write(PadString(KitLabelsRs("PRECINCT").Value &_
  189. KitLabelsRs("BALLOT_NUMBER"),80)) 'UserDefinedIdentifier4 Optional – Allows for unique identifiers
  190. .Write(PadString(KitLabelsRs("VOTERID").Value,80)) 'UserDefinedIdentifier5 Optional – Allows for unique identifiers
  191. .Write(PadString("",1)) 'SeedIndicator Optional - if true provide ‘Y’
  192. .Write(PadString("",80)) 'InductionPoint Optional
  193. .Write(PadString("",10)) 'InductionDate Optional – Valid date format, ex. MM/DD/YYYY
  194. .Write(PadString(Choice(IsNull(KitRs("InboundSTID")),"", _
  195. KitLabelsRs("InBoundIMBDigits").Value),31)) 'InboundIMB Optional – numeric IMB for Round trip jobs only
  196. .Write(PadString("",24)) 'IMCB Optional – Container Barcode
  197. .Write(PadString("",24)) 'IMTB Optional – Tray Barcode
  198. .Write(vbCrLf)
  199. KitLabelsRs.MoveNext
  200. Wend
  201. .Close
  202. End With
  203. oConn.Execute("UPDATE KIT SET [Status] ='Ready to Proof',[ExportedToSnailWorks] =#" & Now() & "# WHERE [ID] =" & KitID & ";")
  204. If KitRs.State = 1 Then:KitRs.Close:End If
  205. If KitLabelsRs.State = 1 Then:KitLabelsRs.Close: End If
  206. If JurisdictionRs.State = 1 Then:JurisdictionRs.Close:End If
  207. If oConn.State = 1 Then:oConn.Close:End If
  208. End Function
  209. Function createTrackingInfoForKit(KitID)
  210. Dim KitRs:set KitRs = oConn.Execute("Select * from Kit Where ID =" & KitID & ";")
  211. Dim InkjetRs:Set InkjetRs = oConn.Execute("Select * from InkjetRecords Where KitID =" & KitID & ";")
  212. 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
  213. Dim SerialNumberStart:SerialNumberStart = GetSetting("SerialNumberStart")
  214. Dim serialOffset:serialOffset = GetSetting("SerialOffset")
  215. Dim serialStart:serialStart = CLng(GetSetting("SerialNumberStart")) + CLng(GetSetting("SerialOffset"))
  216. Dim Counter:Counter=0
  217. Dim KitLabelID
  218. Dim KitLabelRs
  219. Dim Step : If KitRs("InboundSTID") <> "" Then : Step = 2 : Else Step = 1
  220. serialStart = PadLeft(serialStart + CLng(Counter),9,"0")
  221. While Not InkjetRs.EOF
  222. If Step = 1 Then
  223. oConn.Execute("INSERT INTO KitLabels (KitID,OutboundSerial,OutboundIMBDigits) " &_
  224. "VALUES(" & KitID & ",'" & serialStart & "','" & KitRs("OutBoundSTID").Value & serialStart & "000000000" & "');")
  225. Else
  226. oConn.Execute "INSERT INTO KitLabels (KitID,OutboundSerial,InBoundSerial,OutboundIMBDigits,InBoundIMBDigits) " &_
  227. "VALUES(" & KitID & ",'" & serialStart & "','" & serialStart + 1 & "','" & KitRs("OutBoundSTID").Value & serialStart & "000000000" & "','" & KitRs("InboundSTID").Value & serialStart + 1 & Jcode & "');"
  228. End If
  229. Set KitLabelRs = oConn.Execute("SELECT TOP 1 [ID] FROM KitLabels ORDER BY ID DESC"):KitLabelID = KitLabelRs("ID").Value
  230. oConn.Execute("UPDATE InkjetRecords Set [KitLabelID]=" & KitLabelID & " WHERE ID=" & InkjetRs("ID") & ";")
  231. Counter = Counter + Step
  232. serialStart = serialStart + Step
  233. InkjetRs.MoveNext
  234. Wend
  235. oConn.Execute("UPDATE Settings Set [Value]='" & serialOffset + Counter & "' WHERE [Name] = 'SerialOffset';")
  236. oConn.Execute("UPDATE Kit Set [Status]='Ready For Export', LabelsPrinted=#" & Now() & "# WHERE [ID] =" & KitID &";")
  237. End Function
  238. Function GetSetting(settingName)
  239. Dim rs:Set rs = oConn.Execute("Select Value From [Settings] Where [Name] = '" & settingName & "';")
  240. If Not rs.EOF Then
  241. GetSetting = rs(0).value
  242. rs.Close
  243. Else
  244. SetSetting = 0
  245. rs.Close
  246. End If
  247. End Function
  248. Function CheckForReadyToLabel()
  249. Dim rs : set rs = oConn.Execute("Select TOP 1 ID from Kit Where Status ='Ready to Assign Labels' ORDER BY ID DESC;")
  250. If Not rs.EOF Then
  251. Dim kitId : kitId = rs("ID").value
  252. rs.Close
  253. CheckForReadyToLabel = KitID
  254. oConn.Execute("UPDATE Kit SET Status ='Applying Serial Numbers' WHERE ID =" & KitID & ";")
  255. Else
  256. CheckForReadyToLabel = 0
  257. End If
  258. End Function
  259. Function CheckForFiles()
  260. If objFSO.FolderExists(DataDirectory) Then
  261. Dim objFolder:Set objFolder = objFSO.GetFolder(DataDirectory)
  262. If objFolder.Files.Count > 0 Then
  263. 'WScript.Echo "Files found in directory: " & DataDirectory
  264. Dim objFile
  265. For Each objFile In objFolder.Files
  266. Dim CsvString:CsvString = ConvertCsvToString(objFile.Path)
  267. If ValidImportCSV(CsvString) Then
  268. SetupKit CsvString,objFile.Name
  269. objFSO.MoveFile objFile.Path, DataDirectory & "\import\" & objFile.Name
  270. End If
  271. Next
  272. Else
  273. 'WScript.Echo "No files found in directory: " & DataDirectory
  274. End If
  275. End If
  276. End Function
  277. Function ValidJcode(jcode)
  278. Dim oConn
  279. Set oConn = WScript.CreateObject("ADODB.Connection")
  280. oConn.ConnectionString = ConnectionString
  281. oConn.Open
  282. Dim oRs
  283. set oRs = oConn.Execute("Select * from Jurisdiction Where [JCode] = '" & jcode & "';")
  284. If oRs.EOF Then
  285. ValidJcode = 0
  286. Else
  287. ValidJcode = 1
  288. End If
  289. oRs.Close
  290. oConn.Close
  291. End Function
  292. Function SetupKit(CsvString,FileName)
  293. Dim JobNumber:JobNumber = Mid(FileName,9,6)
  294. Dim JCode:JCode = Left(Filename,5)
  295. If IsNumeric(JobNumber) Then
  296. If ValidJcode(JCode) Then
  297. WScript.Echo FileName & " Is a Valid CSV for Importing"
  298. Dim oConn:Set oConn = WScript.CreateObject("ADODB.Connection")
  299. oConn.ConnectionString = ConnectionString
  300. oConn.Open
  301. oConn.Execute("Insert Into Kit ([JobNumber], [Jcode], [CreatedOn], [JobType],[Filename],[Status]) VALUES ('" & JobNumber & "','" & JCode & "',#" & Now() & "#,'Purple Envelopes','" & FileName & "','Importing');")
  302. Dim rs : set rs = oConn.Execute("Select TOP 1 ID from Kit ORDER BY ID DESC")
  303. Dim kitId : kitId = rs("ID").value
  304. rs.close
  305. Dim i
  306. For i = 1 To objCSV.NumRows -1
  307. oConn.Execute("Insert Into [InkjetRecords] (KitID,VOTERID,LASTNAME,FIRSTNAME,MIDDLENAME" & _
  308. ",SUFFIX,PRECINCT,ADDRESS1,ADDRESS2,ADDRESS3,ADDRESS4,ADDRESS5,APPSENT,APPRETURNED,BALSENT,BALRETURNED" & _
  309. ",CountingBoard,UOCAVASTATUS,EMAILADDRESS,PHONENUMBER,BALLOT_NUMBER) VALUES (" & kitId & _
  310. ",'" & Replace(objCSV.GetCell(i,0),"'","''") & _
  311. "','" & objCsv.GetCell(i,1) & _
  312. "','" & Replace(objCSV.GetCell(i,2),"'","''") & _
  313. "','" & Replace(objCSV.GetCell(i,3),"'","''") & _
  314. "','" & Replace(objCSV.GetCell(i,4),"'","''") & _
  315. "','" & Replace(objCSV.GetCell(i,5),"'","''") & _
  316. "','" & Replace(objCSV.GetCell(i,6),"'","''") & _
  317. "','" & Replace(objCSV.GetCell(i,7),"'","''") & _
  318. "','" & Replace(objCSV.GetCell(i,8),"'","''") & _
  319. "','" & Replace(objCSV.GetCell(i,9),"'","''") & _
  320. "','" & Replace(objCSV.GetCell(i,10),"'","''") & _
  321. "','" & Replace(objCSV.GetCell(i,11),"'","''") & _
  322. "','" & Replace(objCSV.GetCell(i,12),"'","''") & _
  323. "','" & Replace(objCsv.GetCell(i,13),"'","''") & _
  324. "','" & objCsv.GetCell(i,14) & _
  325. "','" & objCsv.GetCell(i,15) & _
  326. "','" & objCsv.GetCell(i,16) & _
  327. "','" & objCsv.GetCell(i,17) & _
  328. "','" & objCsv.GetCell(i,18) & _
  329. "','" & objCsv.GetCell(i,19) & _
  330. "')")
  331. Next
  332. oConn.Execute("Update Kit SET [Status] = 'Ready to Cass' Where ID = " & kitId &";")
  333. 'oConn.Close
  334. End If
  335. End If
  336. End Function
  337. Function ConvertCsvToString(FilePath)
  338. Dim objFSO:Set objFSO = CreateObject("Scripting.FileSystemObject")
  339. Dim objCsvFile:set objCsvFile = objFSO.OpenTextFile(FilePath)
  340. Dim strContent:strContent = ""
  341. Dim intLineCount:intLineCount = 0
  342. Do Until objCsvFile.AtEndOfStream Or intLineCount >= 3
  343. objCsvFile.SkipLine
  344. intLineCount = intLineCount + 1
  345. Loop
  346. ' Read the remaining content into a string
  347. Do Until objCsvFile.AtEndOfStream
  348. Dim strLine:strLine = objCsvFile.ReadLine
  349. strContent = strContent & strLine & vbCrLf
  350. Loop
  351. ConvertCsvToString = strContent
  352. End Function
  353. Function ValidImportCSV(CsvFileAsString)
  354. objCSV.LoadFromString(CsvFileAsString)
  355. If objCSV.NumColumns = 20 Then
  356. debug.WriteLine objCsv.GetCell(1,1)
  357. ValidImportCSV = True
  358. Else
  359. ValidImportCSV = False
  360. End If
  361. End Function
  362. Sub ImportCass
  363. Dim currentRow
  364. objCsv.LoadFile("\\kci-syn-cl01\PC Transfer\TrackingDataExport\FROM_MM.CSV")
  365. For currentRow = 0 To objCsv.NumRows -1
  366. oConn.Execute("UPDATE InkJetRecords SET CassADDRESS1 = '" & Replace(objCsv.GetCell(currentRow,1),"'","''") & "', " &_
  367. "CassADDRESS2 = '" & Replace(objCSV.GetCell(currentRow,3),"'","''") & "', " &_
  368. "CassADDRESS3 = '" & Replace(objCSV.GetCell(currentRow,4),"'","''") & "', " &_
  369. "CassADDRESS4 = '" & Replace(objCSV.GetCell(currentRow,5),"'","''") & "', " &_
  370. "CassADDRESS5 = '" & Replace(objCsv.GetCell(currentRow,6) & ", " & objCsv.GetCell(currentRow,7) & " " & objCsv.GetCell(currentRow,8),"'","''") & "'" &_
  371. " WHERE ID = " & objCSV.GetCell(currentRow,0) & ";")
  372. Next
  373. oConn.Execute("UPDATE Kit SET Status ='Ready To Assign STIDS' WHERE ID =" & KitID & ";")
  374. oConn.Execute("UPDATE Kit SET [Cass] = 1 WHERE ID =" & KitID & ";")
  375. End Sub
  376. Sub RunMailManager
  377. 'WshShell.Run "\\MM2012\APPS\BCC\MM2010\mailman.exe -p -j MMJOB.mjb -u DAN",1,True
  378. 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
  379. End Sub
  380. Sub ExportMMCsv(KitId)
  381. Dim success
  382. objCsv.HasColumnNames = 1
  383. objCSV.EnableQuotes = 1
  384. success = objCsv.SetColumnName(0,"ID")
  385. success = objCsv.SetColumnName(1,"NAME")
  386. success = objCsv.SetColumnName(2,"ADDRESS1")
  387. success = objCsv.SetColumnName(3,"ADDRESS2")
  388. success = objCsv.SetColumnName(4,"ADDRESS3")
  389. success = objCsv.SetColumnName(5,"ADDRESS4")
  390. success = objCsv.SetColumnName(6,"ADDRESS5")
  391. Dim rs : Set rs = oConn.Execute("Select ID," & _
  392. "IIF(FIRSTNAME IS NULL,'',FIRSTNAME & ' ') & " & _
  393. "IIF(MIDDLENAME IS NULL,'',MIDDLENAME & ' ') & " & _
  394. "IIF(LASTNAME IS NULL,'',LASTNAME & ' ') & " & _
  395. "IIF(SUFFIX IS NULL,'',SUFFIX & ' ') " & _
  396. "AS NAME, ADDRESS1,ADDRESS2,ADDRESS3,ADDRESS4,ADDRESS5 FROM InkjetRecords WHERE KitID =" & KitID & " ORDER By ID;")
  397. Dim CurrentRow:CurrentRow = 0
  398. While Not rs.EOF
  399. objCSV.SetCell CurrentRow,0,rs("ID").value
  400. objCSV.SetCell CurrentRow,1,rs("NAME").value
  401. objCSV.SetCell CurrentRow,2,rs("ADDRESS1").value
  402. objCSV.SetCell CurrentRow,3,rs("ADDRESS2").value
  403. objCSV.SetCell CurrentRow,4,rs("ADDRESS3").value
  404. objCSV.SetCell CurrentRow,5,rs("ADDRESS4").value
  405. objCSV.SetCell CurrentRow,6,rs("ADDRESS5").value
  406. rs.MoveNext
  407. CurrentRow = CurrentRow +1
  408. Wend
  409. Dim CsvString:CsvString = objCSV.SaveToString()
  410. outFile.WriteLine CsvString
  411. outFile.Close
  412. End Sub
  413. Function CheckForJobsToCass()
  414. oConn.ConnectionString = ConnectionString
  415. oConn.Open
  416. 'oConn.Open
  417. Dim rs : set rs = oConn.Execute("Select TOP 1 ID from Kit Where Status ='Ready to Cass' ORDER BY ID DESC;")
  418. If Not rs.EOF Then
  419. Dim kitId : kitId = rs("ID").value
  420. rs.Close
  421. CheckForJobsToCass = KitID
  422. oConn.Execute("UPDATE Kit SET Status ='Cassing' WHERE ID =" & KitID & ";")
  423. Else
  424. CheckForJobsToCass = 0
  425. End If
  426. 'oConn.Close
  427. End Function
  428. Public Function PadLeft(originalString,desiredLength,Char)
  429. Dim padLength
  430. padLength = desiredLength - Len(originalString)
  431. If padLength > 0 Then
  432. ' Left pad the string with zeros
  433. PadLeft = String(padLength, Char) & originalString
  434. Else
  435. ' If the original string is already longer or equal to the desired length, no padding is needed
  436. PadLeft = originalString
  437. End If
  438. End Function
  439. Function PadString(inputString, size)
  440. Dim paddedString
  441. Dim inputLength
  442. Dim i
  443. If IsNull(inputString) Then:inputString = ""
  444. ' Get the length of the input string
  445. inputLength = Len(inputString)
  446. ' If the input string is already equal to or longer than the specified size, return it as is
  447. If inputLength >= size Then
  448. PadString = inputString
  449. Exit Function
  450. End If
  451. ' Initialize the padded string with the input string
  452. paddedString = inputString
  453. ' Pad spaces to the right of the input string until it reaches the specified size
  454. For i = 1 To (size - inputLength)
  455. paddedString = paddedString & " "
  456. Next
  457. ' Return the padded string
  458. PadString = paddedString
  459. End Function
  460. Function CleanNull(StringToClean)
  461. If IsNull(StringToClean) Then:CleanNull = "":End If
  462. End Function
  463. Public Sub Assign(ByRef var, ByVal val)
  464. If IsObject(val) Then
  465. Set var = val
  466. Else
  467. var = val
  468. End If
  469. End Sub
  470. Public Function Choice(ByVal cond, ByVal if_true, ByVal if_false)
  471. If cond Then
  472. Assign Choice, if_true
  473. Else
  474. Assign Choice, if_false
  475. End If
  476. End Function

Powered by TurnKey Linux.