選択できるのは25トピックまでです。 トピックは、先頭が英数字で、英数字とダッシュ('-')を使用した35文字以内のものにしてください。

629 行
30KB

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

Powered by TurnKey Linux.