Class: Listo::Invoicing

Inherits:
Object
  • Object
show all
Extended by:
Forwardable
Defined in:
lib/listo/invoicing.rb

Class Method Summary collapse

Class Method Details

.cancel(id) ⇒ Object



50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
# File 'lib/listo/invoicing.rb', line 50

def cancel(id)
  params = {
    passcode: client.pkey_passphrase,
    certificate_der: cert.to_der64,
    private_key_der: pkey.base64,
  }

  response = client.connection.post("invoicing/cancel/invoice/#{id}/", params).body

  success_codes = [
    201, # returned after the cancellation request
    202 # returned after a cancellation request for an already requested cancellation invoice
  ]

  if success_codes.exclude? response.dig('code')
    raise Listo::Error::CancelError, response.dig('message')
  end

  response
end

.certify_xml(xml, original_chain, data) ⇒ Object



30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
# File 'lib/listo/invoicing.rb', line 30

def certify_xml(xml, original_chain, data)
  params = {
    xml:             xml,
    certificate_num: certificate_num,
    certificate:     certificate,
    signature:       signature(original_chain),
    data:            data,
  }

  response = client.connection.post('invoicing/certify_xml', params).body

  # warning: listo reponds stamp errors with HTTP 200
  if response.dig('status') == 'error'
    raise Listo::Error::StampError, response.dig('error_description')
  end

  response
end

.export_json(params = []) ⇒ Object



22
23
24
# File 'lib/listo/invoicing.rb', line 22

def export_json(params = [])
  client.connection.get('invoices/export_json', params)
end

.generate_xml(params = []) ⇒ Object



26
27
28
# File 'lib/listo/invoicing.rb', line 26

def generate_xml(params = [])
  client.connection.post('invoicing/generate_xml', params).body
end

.pay(id, params = []) ⇒ Object



11
12
13
14
15
16
# File 'lib/listo/invoicing.rb', line 11

def pay(id, params = [])
  client.connection.post do |request|
    request.url "invoices/#{id}/payments/"
    request.body = params
  end.body
end

.searchObject



18
19
20
# File 'lib/listo/invoicing.rb', line 18

def search
  client.connection.get('invoices/search')
end