An authentication server
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.
 
 

38 lines
938 B

require "json"
require "./invoice_line"
require "./address"
require "../config"
require "atomic"
require "file"
class Invoice
@@last_invoice : Atomic(Int64) = Atomic(Int64).new(1)
def self.initialize
if(File.exists? Statics.data_path+"invoices_meta.json")
@@last_invoice.set Int64.from_json File.read Statics.data_path+"invoices_meta.json"
end
end
def self.get_new_id
ret : Int64 =-1
begin
metaf = File.open(Statics.data_path+"invoices_meta.json")
metaf.flock_exclusive do
metaf.truncate
ret = @@last_invoice.add(1)
metaf.write @@last_invoice.get.to_json
end
ensure
metaf.close
end
return ret
end
JSON.mapping(
items: Array(InvoiceLine),
invoicing_address: Address,
delivery_address: Address,
id: Int64
)
end