lego11

Pagamento Bollette Autonomo

May 12th, 2018
327
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
  1. --pagamento bollette v2 lego11
  2.  
  3. --VARIABILI
  4.  lbl = "BN Credit"
  5.  tabr = {}
  6. m = peripheral.wrap("right") --magcard
  7. printer = peripheral.wrap("back") --stampante
  8. cb = peripheral.wrap("bottom") -- commandblock
  9.  
  10. function clear()
  11. term.clear()
  12. term.setCursorPos(1,1)
  13. end
  14.  
  15. function pinErrato()
  16. clear()
  17. print("Errore di verifica del PIN")
  18. print("")
  19. print("Premere un tasto per uscire")
  20. os.pullEvent("key")
  21. print("")
  22. print("Ritirare il Disco Bolletta Elettronico")
  23. disk.eject("left")
  24. sleep(1)
  25. os.reboot()
  26. end
  27.  
  28.  
  29. function cartaNonValida()
  30. clear()
  31. print("Carta non valida o corrotta.")
  32. print("")
  33. print("Premere un tasto per uscire")
  34. os.pullEvent("key")
  35. print("")
  36. print("Ritirare il Disco Bolletta Elettronico")
  37. disk.eject("left")
  38. sleep(1)
  39. os.reboot()
  40. end
  41.  
  42. function cartaVuota()
  43. clear()
  44. print("Carta smagnetizzata o vuota.")
  45. print("")
  46. print("Premere un tasto per uscire")
  47. os.pullEvent("key")
  48. print("")
  49. print("Ritirare il Disco Bolletta Elettronico")
  50. disk.eject("left")
  51. sleep(1)
  52. os.reboot()
  53. end
  54.  
  55. function preleva()
  56. tabr.t = tabc.t
  57. tabr.e = tabc.e
  58. tabr.p = tabc.p
  59. tabr.v = tostring(credito - prelievo)
  60. ncr = textutils.serialize(tabr)
  61. m.setInsertCardLight(true)
  62. m.beginWrite(ncr,lbl)
  63. os.pullEvent("mag_write_done")
  64. m.setInsertCardLight(false)
  65. end
  66.  
  67. s = peripheral.wrap("back")
  68. m = peripheral.wrap("right")
  69. lbl = "BN Credit"
  70.  
  71. function tocerror()
  72. clear()
  73. print("TOC ERROR")
  74. print("")
  75. print("Disco errato o danneggiato. Controllare il disco e ritentare l'operazione")
  76. print("")
  77. print("Premere un tasto qualsiasi per uscire.")
  78. os.pullEvent("key")
  79. disk.eject("left")
  80. os.reboot()
  81. end
  82.  
  83. clear()
  84. print("eRGB - Sistema Pagamento Bollette")
  85. print("")
  86. print("Inserire il Disco Bolletta Elettronica nel lettore floppy a sinistra")
  87. print("")
  88. print("IMPORTANTE:")
  89. print("NON estrarre il disco manualmente dal lettore!")
  90. print("Verrà riciclato o espulso automaticamente!")
  91. os.pullEvent("disk")
  92. etichetta = disk.getLabel("left")
  93. if etichetta ~= "DBE" then
  94. tocerror()
  95. end
  96.  handle = assert(fs.open("disk/be", "r"), "ERRORE: disco non formattato")
  97.  bedisco = handle.readAll()
  98. handle.close()
  99.  tab = textutils.unserialize(bedisco) -- Tabella contenente le variabili
  100.  prelievo = tonumber(tab.totale)
  101.  
  102. clear()
  103. print("Inserire la carta di credito nel lettore a destra")
  104. m.setInsertCardLight(true)
  105. za,rawcarta = os.pullEvent("mag_swipe")
  106. m.setInsertCardLight(false)
  107.  
  108. if rawcarta == nil then
  109. cartaVuota()
  110. end
  111.  
  112. tabc = textutils.unserialize(rawcarta)
  113.  
  114. if type(tabc) ~= "table" then
  115. cartaNonValida()
  116. end
  117.  
  118. if tabc.t ~= "cc" then
  119. cartaNonValida()
  120. end
  121.  
  122. if tabc.e ~= "BN" then
  123. cartaNonValida()
  124. end
  125.  
  126. if tabc.p ~= "0000" then
  127. print("")
  128. print("Inserire il PIN e premere ENTER")
  129. print("")
  130.  pinUtente = read("#")
  131. if pinUtente ~= tabc.p then
  132. pinErrato()
  133. end
  134. end
  135.  
  136. credito = tonumber(tabc.v)
  137.  
  138. clear()
  139.  
  140. while true do
  141. print("La carta ha una disponibilità di "..credito.." IC.")
  142. print("")
  143. print("Bolletta del "..tab.date.." intestata a "..tab.UICnumber.." ")
  144. print("")
  145. print("Totale da pagare: "..prelievo.." IC")
  146. print("")
  147. print("")
  148. print("Per favore scegliere un'opzione utilizzando i tasti numerici e confermare con ENTER:")
  149. print("")
  150. print("[1] Pagare la bolletta SENZA ricevuta")
  151. print("[2] Pagare la bolletta CON ricevuta")
  152. print("[3] Esci senza pagare la bolletta")
  153. num=tonumber(read())
  154. if num == 1 then
  155. if prelievo > credito then
  156. clear()
  157. print("Disponibilità insufficiente")
  158. print("")
  159. print("Bolletta NON PAGATA.")
  160. print("Riprovare con un'altra carta di credito.")
  161. print("")
  162. print("Premere un tasto qualsiasi per uscire")
  163. os.pullEvent("key")
  164. disk.eject("left")
  165. print("Ritirare il Disco Bolletta Elettronica")
  166. sleep(5)
  167. os.reboot()
  168. end
  169. clear()
  170. print("Inserire nuovamente la carta per confermare il prelievo")
  171. preleva()
  172. print("")
  173. print("Attendere, autorizzazione pagamento in corso...")
  174. redstone.setOutput("top", true)
  175. sleep(5)
  176. redstone.setOutput("top", false)
  177. print("")
  178. print("Pagamento effettuato correttamente!")
  179. print("")
  180. print("La bolletta è stata registrata come 'pagata'")
  181.  mailsend = "mail send lego11 Bolletta PAGATA: "
  182. cb.setCommand(mailsend..tab.UICnumber)
  183. cb.runCommand()
  184. print("Grazie e arrivederci!")
  185. print("")
  186. print("Tra poco sarà possibile eseguire un'altra operazione.")
  187. sleep(5)
  188. os.reboot()
  189.  
  190. elseif num == 2 then
  191. if prelievo > credito then
  192. clear()
  193. print("Disponibilità insufficiente")
  194. print("")
  195. print("Bolletta NON PAGATA.")
  196. print("Riprovare con un'altra carta di credito.")
  197. print("")
  198. print("Premere un tasto qualsiasi per uscire")
  199. os.pullEvent("key")
  200. disk.eject("left")
  201. print("Ritirare il Disco Bolletta Elettronica")
  202. sleep(5)
  203. os.reboot()
  204. end
  205. clear()
  206. print("Inserire nuovamente la carta per confermare il prelievo")
  207. preleva()
  208. print("")
  209. print("Attendere, autorizzazione pagamento in corso...")
  210. redstone.setOutput("top", true)
  211. sleep(3)
  212. redstone.setOutput("top", false)
  213. if printer.getPaperLevel() == 0 or printer.getInkLevel() == 0 then
  214.  cartaInceppata = 0
  215. print("")
  216. print("Errore: Carta inceppata")
  217. print("")
  218. print("Impossibile stampare ricevuta. Il pagamento verrà comunque effettuato.")
  219. print("")
  220. else
  221. print("Attendere, stampa in corso della ricevuta...")
  222. printer.newPage()
  223. printer.setPageTitle("Ricevuta eRGB")
  224. printer.write("Ricevuta eRGB")
  225. printer.setCursorPos(1, 2)
  226. printer.setCursorPos(1, 4)
  227. printer.write("La Bolletta del: ")
  228. printer.setCursorPos(1, 6)
  229. printer.write(tab.date)
  230. printer.setCursorPos(1, 8)
  231. printer.write("del cliente: ")
  232. printer.setCursorPos(1, 10)
  233. printer.write(tab.UICnumber)
  234. printer.setCursorPos(1, 12)
  235. printer.write("con un totale di:")
  236. printer.setCursorPos(1, 14)
  237. printer.write(prelievo)
  238. printer.setCursorPos(10,14)
  239. printer.write("IC")
  240. printer.setCursorPos(1, 16)
  241. printer.write("e' stata pagata")
  242. printer.setCursorPos(1, 17)
  243. printer.write("correttamente.")
  244. printer.setCursorPos(1, 19)
  245. printer.write("Grazie per aver scelto")
  246. printer.setCursorPos(1, 20)
  247. printer.write("eRGB!")
  248. printer.endPage()
  249. sleep(2)
  250. print("Stampa: 25%")
  251. sleep(2)
  252. print("Stampa: 50%")
  253. sleep(2)
  254. print("Stampa: 75%")
  255. sleep(2)
  256. print("Stampa: 100%")
  257. sleep(2)
  258. print("")
  259. print("Ritirare la ricevuta")
  260. print("")
  261. end
  262. print("Pagamento effettuato correttamente!")
  263. print("")
  264. print("La bolletta è stata registrata come 'pagata'")
  265.  mailsend = "mail send lego11 Bolletta PAGATA: "
  266. cb.setCommand(mailsend..tab.UICnumber)
  267. if cartaInceppata == 0 then
  268. cb.runCommand()
  269. end
  270. print("Grazie e arrivederci!")
  271. print("")
  272. print("Tra poco sarà possibile eseguire un'altra operazione.")
  273. sleep(5)
  274. os.reboot()
  275. elseif num == 3 then clear() break end
  276. sleep(1)
  277. clear()
  278. end
  279. clear()
  280. print("Uscita comandata dall'utente")
  281. print("")
  282. print("Bolletta NON PAGATA.")
  283. print("")
  284. disk.eject("left")
  285. print("Ritirare il Disco Bolletta Elettronica")
  286. sleep(5)
  287. os.reboot()
Advertisement
Add Comment
Please, Sign In to add comment