/obj/machinery/account_database
name = "Accounts uplink console"
desc = "Access transaction logs, account data and all kinds of other financial records."
icon = 'icons/obj/computer.dmi'
icon_state = "aiupload"
density = 1
req_one_access = list(access_hop, access_captain, access_cent_captain)
var/receipt_num
var/machine_id = ""
var/obj/item/weapon/card/id/held_card
var/access_level = 0
var/datum/money_account/detailed_account_view
var/creating_new_account = 0
/obj/machinery/account_database/New()
..()
machine_id = "[station_name()] Acc. DB #[num_financial_terminals++]"
/obj/machinery/account_database/attack_hand(mob/user as mob)
if(get_dist(src,user) <= 1)
var/dat = "Accounts Database
"
dat += "[machine_id]
"
dat += "Confirm identity: [held_card ? held_card : "-----"]
"
if(access_level > 0)
dat += "You may not edit accounts at this terminal, only create and view them.
"
if(creating_new_account)
dat += "
"
dat += "Return to accounts list"
dat += "
"
else
if(detailed_account_view)
dat += "
"
dat += "Return to accounts list
"
dat += "Account number: #[detailed_account_view.account_number]
"
dat += "Account holder: [detailed_account_view.owner_name]
"
dat += "Account balance: $[detailed_account_view.money]
"
if(access_level > 1)
dat += "Silently add funds (no transaction log)
"
dat += "Silently remove funds (no transaction log)
"
dat += "[detailed_account_view.suspended ? "Unsuspend account" : "Suspend account"]
"
dat += ""
dat += ""
dat += "| Date | "
dat += "Time | "
dat += "Target | "
dat += "Purpose | "
dat += "Value | "
dat += "Source terminal ID | "
dat += "
"
for(var/datum/transaction/T in detailed_account_view.transaction_log)
dat += ""
dat += "| [T.date] | "
dat += "[T.time] | "
dat += "[T.target_name] | "
dat += "[T.purpose] | "
dat += "$[T.amount] | "
dat += "[T.source_terminal] | "
dat += "
"
dat += "
"
else
dat += "Create new account
"
dat += ""
for(var/i=1, i<=all_money_accounts.len, i++)
var/datum/money_account/D = all_money_accounts[i]
dat += ""
dat += "| #[D.account_number] | "
dat += "[D.owner_name] | "
dat += "[D.suspended ? "SUSPENDED" : ""] | "
dat += "View in detail | "
dat += "
"
dat += "
"
user << browse(dat,"window=account_db;size=700x650")
else
user << browse(null,"window=account_db")
/obj/machinery/account_database/attackby(O as obj, user as mob)//TODO:SANITY
if(istype(O, /obj/item/weapon/card))
var/obj/item/weapon/card/id/idcard = O
if(!held_card)
usr.drop_item()
idcard.loc = src
held_card = idcard
if(access_cent_captain in idcard.access)
access_level = 2
else if(access_hop in idcard.access || access_captain in idcard.access)
access_level = 1
else
..()
/obj/machinery/account_database/Topic(var/href, var/href_list)
if(href_list["choice"])
switch(href_list["choice"])
if("create_account")
creating_new_account = 1
if("add_funds")
var/amount = input("Enter the amount you wish to add", "Silently add funds") as num
if(detailed_account_view)
detailed_account_view.money += amount
if("remove_funds")
var/amount = input("Enter the amount you wish to remove", "Silently remove funds") as num
if(detailed_account_view)
detailed_account_view.money -= amount
if("toggle_suspension")
if(detailed_account_view)
if(detailed_account_view.suspended)
detailed_account_view.suspended = 0
else
detailed_account_view.suspended = 1
if("finalise_create_account")
var/account_name = href_list["holder_name"]
var/starting_funds = max(text2num(href_list["starting_funds"]), 0)
create_account(account_name, starting_funds, src)
if(starting_funds > 0)
//subtract the money
station_account.money -= starting_funds
//create a transaction log entry
var/datum/transaction/T = new()
T.target_name = account_name
T.purpose = "New account funds initialisation"
T.amount = "([starting_funds])"
T.date = current_date_string
T.time = worldtime2text()
T.source_terminal = machine_id
station_account.transaction_log.Add(T)
creating_new_account = 0
if("insert_card")
if(held_card)
held_card.loc = src.loc
if(ishuman(usr) && !usr.get_active_hand())
usr.put_in_hands(held_card)
held_card = null
access_level = 0
else
var/obj/item/I = usr.get_active_hand()
if (istype(I, /obj/item/weapon/card/id))
var/obj/item/weapon/card/id/C = I
usr.drop_item()
C.loc = src
held_card = C
if(access_cent_captain in C.access)
access_level = 2
else if(access_hop in C.access || access_captain in C.access)
access_level = 1
if("view_account_detail")
var/index = text2num(href_list["account_index"])
if(index && index <= all_money_accounts.len)
detailed_account_view = all_money_accounts[index]
if("view_accounts_list")
detailed_account_view = null
creating_new_account = 0
src.attack_hand(usr)