Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- --pagamento bollette V3 lego11
- os.pullEvent = os.pullEventRaw
- --VARIABILI
- lbl = "BN Credit"
- tabr = {}
- m = peripheral.wrap("right") --magcard
- printer = peripheral.wrap("back") --stampante
- cb = peripheral.wrap("bottom") -- commandblock
- function clear()
- term.clear()
- term.setCursorPos(1,1)
- end
- function pinErrato()
- clear()
- print("Errore di verifica del PIN")
- print("")
- print("Premere un tasto per uscire")
- os.pullEvent("key")
- print("")
- print("Ritirare il Disco Bolletta Elettronico")
- disk.eject("left")
- sleep(1)
- os.reboot()
- end
- function cartaNonValida()
- clear()
- print("Carta non valida o corrotta.")
- print("")
- print("Premere un tasto per uscire")
- os.pullEvent("key")
- print("")
- print("Ritirare il Disco Bolletta Elettronico")
- disk.eject("left")
- sleep(1)
- os.reboot()
- end
- function cartaVuota()
- clear()
- print("Carta smagnetizzata o vuota.")
- print("")
- print("Premere un tasto per uscire")
- os.pullEvent("key")
- print("")
- print("Ritirare il Disco Bolletta Elettronico")
- disk.eject("left")
- sleep(1)
- os.reboot()
- end
- function preleva()
- tabr.t = tabc.t
- tabr.e = tabc.e
- tabr.p = tabc.p
- tabr.v = tostring(credito - prelievo)
- ncr = textutils.serialize(tabr)
- m.setInsertCardLight(true)
- m.beginWrite(ncr,lbl)
- os.pullEvent("mag_write_done")
- m.setInsertCardLight(false)
- end
- s = peripheral.wrap("back")
- m = peripheral.wrap("right")
- lbl = "BN Credit"
- function tocerror()
- clear()
- print("TOC ERROR")
- print("")
- print("Disco errato o danneggiato. Controllare il disco e ritentare l'operazione")
- print("")
- print("Premere un tasto qualsiasi per uscire.")
- os.pullEvent("key")
- disk.eject("left")
- os.reboot()
- end
- clear()
- print("eRGB - Sistema Pagamento Bollette")
- print("")
- print("Inserire il Disco Bolletta Elettronica nel lettore floppy a sinistra")
- print("")
- print("IMPORTANTE:")
- print("NON estrarre il disco manualmente dal lettore!")
- print("Verrà riciclato o espulso automaticamente!")
- os.pullEvent("disk")
- etichetta = disk.getLabel("left")
- if string.find(etichetta, "DBE") == nil then
- tocerror()
- end
- handle = assert(fs.open("disk/be", "r"), "ERRORE: disco non formattato")
- bedisco = handle.readAll()
- handle.close()
- tab = textutils.unserialize(bedisco) -- Tabella contenente le variabili
- prelievo = tonumber(tab.totale)
- clear()
- print("Inserire la carta di credito nel lettore a destra")
- m.setInsertCardLight(true)
- za,rawcarta = os.pullEvent("mag_swipe")
- m.setInsertCardLight(false)
- if rawcarta == nil then
- cartaVuota()
- end
- tabc = textutils.unserialize(rawcarta)
- if type(tabc) ~= "table" then
- cartaNonValida()
- end
- if tabc.t ~= "cc" then
- cartaNonValida()
- end
- if tabc.e ~= "BN" then
- cartaNonValida()
- end
- if tabc.p ~= "0000" then
- print("")
- print("Inserire il PIN e premere ENTER")
- print("")
- pinUtente = read("#")
- if pinUtente ~= tabc.p then
- pinErrato()
- end
- end
- credito = tonumber(tabc.v)
- clear()
- while true do
- print("La carta ha una disponibilità di "..credito.." IC.")
- print("")
- print("Bolletta del "..tab.date.." intestata a "..tab.UICnumber.." ")
- print("")
- print("Totale da pagare: "..prelievo.." IC")
- print("")
- print("")
- print("Per favore scegliere un'opzione utilizzando i tasti numerici e confermare con ENTER:")
- print("")
- print("[1] Pagare la bolletta SENZA ricevuta")
- print("[2] Pagare la bolletta CON ricevuta")
- print("[3] Esci senza pagare la bolletta")
- num=tonumber(read())
- if num == 1 then
- if prelievo > credito then
- clear()
- print("Disponibilità insufficiente")
- print("")
- print("Bolletta NON PAGATA.")
- print("Riprovare con un'altra carta di credito.")
- print("")
- print("Premere un tasto qualsiasi per uscire")
- os.pullEvent("key")
- disk.eject("left")
- print("Ritirare il Disco Bolletta Elettronica")
- sleep(5)
- os.reboot()
- end
- clear()
- print("Inserire nuovamente la carta per confermare il prelievo")
- preleva()
- print("")
- print("Attendere, autorizzazione pagamento in corso...")
- redstone.setOutput("top", true)
- sleep(5)
- redstone.setOutput("top", false)
- print("")
- print("Pagamento effettuato correttamente!")
- print("")
- print("La bolletta è stata registrata come 'pagata'")
- mailsend = "mail send lego11 Bolletta PAGATA: "
- cb.setCommand(mailsend..tab.UICnumber)
- cb.runCommand()
- print("Grazie e arrivederci!")
- print("")
- print("Tra poco sarà possibile eseguire un'altra operazione.")
- sleep(5)
- os.reboot()
- elseif num == 2 then
- if prelievo > credito then
- clear()
- print("Disponibilità insufficiente")
- print("")
- print("Bolletta NON PAGATA.")
- print("Riprovare con un'altra carta di credito.")
- print("")
- print("Premere un tasto qualsiasi per uscire")
- os.pullEvent("key")
- disk.eject("left")
- print("Ritirare il Disco Bolletta Elettronica")
- sleep(5)
- os.reboot()
- end
- clear()
- print("Inserire nuovamente la carta per confermare il prelievo")
- preleva()
- print("")
- print("Attendere, autorizzazione pagamento in corso...")
- redstone.setOutput("top", true)
- sleep(3)
- redstone.setOutput("top", false)
- if printer.getPaperLevel() == 0 or printer.getInkLevel() == 0 then
- cartaInceppata = 0
- print("")
- print("Errore: Carta inceppata")
- print("")
- print("Impossibile stampare ricevuta. Il pagamento verrà comunque effettuato.")
- print("")
- else
- print("Attendere, stampa in corso della ricevuta...")
- printer.newPage()
- printer.setPageTitle("Ricevuta eRGB")
- printer.write("Ricevuta eRGB")
- printer.setCursorPos(1, 2)
- printer.setCursorPos(1, 4)
- printer.write("La Bolletta del: ")
- printer.setCursorPos(1, 6)
- printer.write(tab.date)
- printer.setCursorPos(1, 8)
- printer.write("del cliente: ")
- printer.setCursorPos(1, 10)
- printer.write(tab.UICnumber)
- printer.setCursorPos(1, 12)
- printer.write("con un totale di:")
- printer.setCursorPos(1, 14)
- printer.write(prelievo)
- printer.setCursorPos(10,14)
- printer.write("IC")
- printer.setCursorPos(1, 16)
- printer.write("e' stata pagata")
- printer.setCursorPos(1, 17)
- printer.write("correttamente.")
- printer.setCursorPos(1, 19)
- printer.write("Grazie per aver scelto")
- printer.setCursorPos(1, 20)
- printer.write("eRGB!")
- printer.endPage()
- sleep(2)
- print("Stampa: 25%")
- sleep(2)
- print("Stampa: 50%")
- sleep(2)
- print("Stampa: 75%")
- sleep(2)
- print("Stampa: 100%")
- sleep(2)
- print("")
- print("Ritirare la ricevuta")
- print("")
- end
- print("Pagamento effettuato correttamente!")
- print("")
- print("La bolletta è stata registrata come 'pagata'")
- mailsend = "mail send lego11 Bolletta PAGATA: "
- cb.setCommand(mailsend..tab.UICnumber)
- if cartaInceppata == 0 then
- cb.runCommand()
- end
- print("Grazie e arrivederci!")
- print("")
- print("Tra poco sarà possibile eseguire un'altra operazione.")
- sleep(5)
- os.reboot()
- elseif num == 3 then clear() break end
- sleep(1)
- clear()
- end
- clear()
- print("Uscita comandata dall'utente")
- print("")
- print("Bolletta NON PAGATA.")
- print("")
- disk.eject("left")
- print("Ritirare il Disco Bolletta Elettronica")
- sleep(5)
- os.reboot()
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement