beanie 0.1.2 → 0.1.3
Sign up to get free protection for your applications and to get access to all the features.
- checksums.yaml +4 -4
- data/VERSION +1 -1
- data/beanie.gemspec +1 -1
- data/lib/beanie/api.rb +15 -2
- data/lib/beanie/company.rb +1 -2
- data/lib/beanie/nominal_account.rb +31 -1
- data/lib/beanie/nominal_account_category.rb +2 -26
- data/lib/beanie/product.rb +2 -3
- data/lib/beanie/production_order.rb +8 -3
- data/lib/beanie/version.rb +1 -1
- data/lib/beanie/work_centre.rb +30 -4
- data/lib/beanie.rb +3 -4
- metadata +3 -3
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA1:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: 0be70757db5a53fe03f310cbc2e939455c1a2020
|
4
|
+
data.tar.gz: 1d90afd4f7c703df8038554cd1a075a2d8f4000a
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: 518c5a6921a048676986efaa57d95281974556baa922368fff212789bbb269ab930782d0209a4ecc2739ce1bc72870abb749a3dea4787e7dba27d6d7b1b161d8
|
7
|
+
data.tar.gz: 65d45ed530e4f7a2aecc8b99844882c3f70889fee8febad718a3437de8f00f83aa9dc2d122d86c62b657e16bdc484f9e650ac5ef3f5d8e9562a34332e1354d4c
|
data/VERSION
CHANGED
@@ -1 +1 @@
|
|
1
|
-
0.1.
|
1
|
+
0.1.3
|
data/beanie.gemspec
CHANGED
@@ -10,7 +10,7 @@ Gem::Specification.new do |spec|
|
|
10
10
|
spec.email = ["dtynan@kalopa.com"]
|
11
11
|
spec.summary = %q{Ruby bindings for the Beanie API}
|
12
12
|
spec.description = %q{Beanie - your cloud accountant. See https://bean.ie for more details.}
|
13
|
-
spec.homepage = "https://bean.ie/
|
13
|
+
spec.homepage = "https://bean.ie/help/api/ruby"
|
14
14
|
spec.license = "MIT"
|
15
15
|
|
16
16
|
spec.files = `git ls-files`.split($/)
|
data/lib/beanie/api.rb
CHANGED
@@ -56,7 +56,16 @@ module Beanie
|
|
56
56
|
data = extract()
|
57
57
|
data.delete("id")
|
58
58
|
objdata = {object_name => data}
|
59
|
-
|
59
|
+
if @id
|
60
|
+
#
|
61
|
+
# Needs an update...
|
62
|
+
opts[:id] = @id
|
63
|
+
response = self.class.put(objdata, opts)
|
64
|
+
else
|
65
|
+
#
|
66
|
+
# Needs a create!
|
67
|
+
response = self.class.post(objdata, opts)
|
68
|
+
end
|
60
69
|
self.populate(response[self.object_name])
|
61
70
|
end
|
62
71
|
|
@@ -96,7 +105,11 @@ module Beanie
|
|
96
105
|
# Run a REST PUT against the Beanie API.
|
97
106
|
def self.put(data, opts = {})
|
98
107
|
response = RestClient.put(build_url(opts), data, headers=set_headers)
|
99
|
-
|
108
|
+
if response.body and response.body.length > 0
|
109
|
+
JSON.parse(response.body)
|
110
|
+
else
|
111
|
+
""
|
112
|
+
end
|
100
113
|
end
|
101
114
|
|
102
115
|
#
|
data/lib/beanie/company.rb
CHANGED
@@ -31,7 +31,7 @@ module Beanie
|
|
31
31
|
class Company < Api
|
32
32
|
attr_accessor :id, :name, :email, :address1, :address2, :address3, :city
|
33
33
|
attr_accessor :state_county, :website, :phone, :fax, :zip_postcode
|
34
|
-
attr_accessor :registration, :next_fye, :
|
34
|
+
attr_accessor :registration, :next_fye, :country, :currency
|
35
35
|
attr_accessor :invoice_template_id, :purchase_shipping_nominal_account_id
|
36
36
|
attr_accessor :sales_shipping_nominal_account_id
|
37
37
|
attr_accessor :accounts_receivable_nominal_account_id
|
@@ -54,7 +54,6 @@ module Beanie
|
|
54
54
|
@zip_postcode = nil
|
55
55
|
@registration = nil
|
56
56
|
@next_fye = nil
|
57
|
-
@runcom = nil
|
58
57
|
@country = nil
|
59
58
|
@currency = nil
|
60
59
|
@invoice_template_id = nil
|
@@ -29,7 +29,31 @@
|
|
29
29
|
#
|
30
30
|
module Beanie
|
31
31
|
class NominalAccount < Api
|
32
|
-
attr_accessor :id, :code, :name, :nominal_account_category_id
|
32
|
+
attr_accessor :id, :na_type, :code, :name, :nominal_account_category_id
|
33
|
+
|
34
|
+
TYPE_FIXED_ASSETS = 0
|
35
|
+
TYPE_CURRENT_ASSETS = 1
|
36
|
+
TYPE_CURRENT_LIABILITIES = 2
|
37
|
+
TYPE_NON_CURRENT_LIABILITIES = 3
|
38
|
+
TYPE_RESERVES = 4
|
39
|
+
TYPE_INCOME = 5
|
40
|
+
TYPE_DIRECT_COSTS = 6
|
41
|
+
TYPE_EXPENSE = 7
|
42
|
+
TYPE_OTHER_EXPENSE = 8
|
43
|
+
TYPE_OTHER_INCOME = 9
|
44
|
+
|
45
|
+
TYPE_NAMES = [
|
46
|
+
["Fixed Assets", TYPE_FIXED_ASSETS],
|
47
|
+
["Current Assets", TYPE_CURRENT_ASSETS],
|
48
|
+
["Current Liabilities", TYPE_CURRENT_LIABILITIES],
|
49
|
+
["Non-Current Liabilities", TYPE_NON_CURRENT_LIABILITIES],
|
50
|
+
["Reserves", TYPE_RESERVES],
|
51
|
+
["Income", TYPE_INCOME],
|
52
|
+
["Direct Costs", TYPE_DIRECT_COSTS],
|
53
|
+
["Expense", TYPE_EXPENSE],
|
54
|
+
["Other Expense", TYPE_OTHER_EXPENSE],
|
55
|
+
["Other Income", TYPE_OTHER_INCOME]
|
56
|
+
].freeze
|
33
57
|
|
34
58
|
#
|
35
59
|
# Initialize instance variables
|
@@ -39,5 +63,11 @@ module Beanie
|
|
39
63
|
@name = nil
|
40
64
|
@nominal_account_category_id = nil
|
41
65
|
end
|
66
|
+
|
67
|
+
#
|
68
|
+
# Show proper name for type
|
69
|
+
def type_name
|
70
|
+
TYPE_NAMES[na_type][0]
|
71
|
+
end
|
42
72
|
end
|
43
73
|
end
|
@@ -31,30 +31,6 @@ module Beanie
|
|
31
31
|
class NominalAccountCategory < Api
|
32
32
|
attr_accessor :id, :na_type, :name, :parent_category_id
|
33
33
|
|
34
|
-
NA_TYPE_FIXED_ASSETS = 0
|
35
|
-
NA_TYPE_CURRENT_ASSETS = 1
|
36
|
-
NA_TYPE_CURRENT_LIABILITIES = 2
|
37
|
-
NA_TYPE_NON_CURRENT_LIABILITIES = 3
|
38
|
-
NA_TYPE_RESERVES = 4
|
39
|
-
NA_TYPE_INCOME = 5
|
40
|
-
NA_TYPE_DIRECT_COSTS = 6
|
41
|
-
NA_TYPE_EXPENSE = 7
|
42
|
-
NA_TYPE_OTHER_EXPENSE = 8
|
43
|
-
NA_TYPE_OTHER_INCOME = 9
|
44
|
-
|
45
|
-
NA_TYPE_NAMES = [
|
46
|
-
["Fixed Assets", NA_TYPE_FIXED_ASSETS],
|
47
|
-
["Current Assets", NA_TYPE_CURRENT_ASSETS],
|
48
|
-
["Current Liabilities", NA_TYPE_CURRENT_LIABILITIES],
|
49
|
-
["Non-Current Liabilities", NA_TYPE_NON_CURRENT_LIABILITIES],
|
50
|
-
["Reserves", NA_TYPE_RESERVES],
|
51
|
-
["Income", NA_TYPE_INCOME],
|
52
|
-
["Direct Costs", NA_TYPE_DIRECT_COSTS],
|
53
|
-
["Expense", NA_TYPE_EXPENSE],
|
54
|
-
["Other Expense", NA_TYPE_OTHER_EXPENSE],
|
55
|
-
["Other Income", NA_TYPE_OTHER_INCOME]
|
56
|
-
].freeze
|
57
|
-
|
58
34
|
#
|
59
35
|
# Initialize instance variables
|
60
36
|
def initialize
|
@@ -66,8 +42,8 @@ module Beanie
|
|
66
42
|
|
67
43
|
#
|
68
44
|
# Show proper name for type
|
69
|
-
def
|
70
|
-
|
45
|
+
def type_name
|
46
|
+
NominalAccount::TYPE_NAMES[na_type][0]
|
71
47
|
end
|
72
48
|
end
|
73
49
|
end
|
data/lib/beanie/product.rb
CHANGED
@@ -29,7 +29,7 @@
|
|
29
29
|
#
|
30
30
|
module Beanie
|
31
31
|
class Product < Api
|
32
|
-
attr_accessor :id, :description, :name, :
|
32
|
+
attr_accessor :id, :description, :name, :code, :is_service
|
33
33
|
attr_accessor :nominal_account_id, :product_category_id, :unit_of_measure
|
34
34
|
|
35
35
|
#
|
@@ -38,7 +38,7 @@ module Beanie
|
|
38
38
|
@id = nil
|
39
39
|
@description = nil
|
40
40
|
@name = nil
|
41
|
-
@
|
41
|
+
@code = nil
|
42
42
|
@is_service = nil
|
43
43
|
@nominal_account_id = nil
|
44
44
|
@product_category_id = nil
|
@@ -46,7 +46,6 @@ module Beanie
|
|
46
46
|
end
|
47
47
|
|
48
48
|
def self.find_by_name(name)
|
49
|
-
puts "Find by name: #{name}"
|
50
49
|
Beanie.find("products", "name", name)
|
51
50
|
end
|
52
51
|
end
|
@@ -43,20 +43,25 @@ module Beanie
|
|
43
43
|
@sales_order_id = nil
|
44
44
|
@bill_of_material_id = nil
|
45
45
|
@work_centre_group_id = nil
|
46
|
+
@_private_data = nil
|
46
47
|
end
|
47
48
|
|
48
49
|
#
|
49
50
|
# Get the private data
|
50
51
|
def private_data
|
51
|
-
|
52
|
-
|
52
|
+
unless @_private_data
|
53
|
+
response = ProductionOrder.get(:url => "/production_orders/#{@id}/private_data")
|
54
|
+
@_private_data = response["data"]
|
55
|
+
end
|
56
|
+
return @_private_data
|
53
57
|
end
|
54
58
|
|
55
59
|
#
|
56
60
|
# Update/set the private data
|
57
61
|
def private_data=(data)
|
62
|
+
@_private_data = data
|
58
63
|
pdata = {:data => data}
|
59
|
-
|
64
|
+
ProductionOrder.post(pdata, :url => "/production_orders/#{@id}/private_data")
|
60
65
|
end
|
61
66
|
|
62
67
|
#
|
data/lib/beanie/version.rb
CHANGED
data/lib/beanie/work_centre.rb
CHANGED
@@ -29,18 +29,41 @@
|
|
29
29
|
#
|
30
30
|
module Beanie
|
31
31
|
class WorkCentre < Api
|
32
|
-
attr_accessor :id, :name, :location, :description, :work_centre_group_id
|
32
|
+
attr_accessor :id, :name, :state, :location, :description, :work_centre_group_id
|
33
|
+
|
34
|
+
STATE_UNKNOWN = 0
|
35
|
+
STATE_MAINTENANCE = 1
|
36
|
+
STATE_OFFLINE = 2
|
37
|
+
STATE_READY = 3
|
38
|
+
STATE_BUSY = 4
|
39
|
+
STATE_DONE = 5
|
40
|
+
|
41
|
+
STATE_NAMES = [
|
42
|
+
["Unknown State", STATE_UNKNOWN],
|
43
|
+
["Maintenance Mode", STATE_MAINTENANCE],
|
44
|
+
["Offline (Unavailable)", STATE_OFFLINE],
|
45
|
+
["Ready for Work", STATE_READY],
|
46
|
+
["Working (Busy)", STATE_BUSY],
|
47
|
+
["Work Complete", STATE_DONE]
|
48
|
+
].freeze
|
33
49
|
|
34
50
|
#
|
35
51
|
# Initialize instance variables
|
36
52
|
def initialize
|
37
53
|
@id = nil
|
38
54
|
@name = nil
|
55
|
+
@state = nil
|
39
56
|
@location = nil
|
40
57
|
@description = nil
|
41
58
|
@work_centre_group_id = nil
|
42
59
|
end
|
43
60
|
|
61
|
+
#
|
62
|
+
# State name
|
63
|
+
def state_name
|
64
|
+
STATE_NAMES[@state][0]
|
65
|
+
end
|
66
|
+
|
44
67
|
#
|
45
68
|
# Get the private data
|
46
69
|
def private_data
|
@@ -58,9 +81,12 @@ module Beanie
|
|
58
81
|
#
|
59
82
|
# Construct the path a little differently...
|
60
83
|
def construct_path(opts = {})
|
61
|
-
|
62
|
-
|
63
|
-
|
84
|
+
if opts[:work_centre_group_id]
|
85
|
+
path = "/work_centre_groups/#{opts[:work_centre_group_id]}/work_centres"
|
86
|
+
opts.delete(:work_centre_group_id)
|
87
|
+
else
|
88
|
+
path = "/work_centres"
|
89
|
+
end
|
64
90
|
path
|
65
91
|
end
|
66
92
|
end
|
data/lib/beanie.rb
CHANGED
@@ -28,7 +28,7 @@
|
|
28
28
|
# POSSIBILITY OF SUCH DAMAGE.
|
29
29
|
#
|
30
30
|
# Ruby bindings for the Beanie API
|
31
|
-
# Docs at http://bean.ie/
|
31
|
+
# Docs at http://bean.ie/help/api/ruby
|
32
32
|
require 'rest-client'
|
33
33
|
require 'json'
|
34
34
|
|
@@ -105,13 +105,12 @@ module Beanie
|
|
105
105
|
'Set your API Key using "Beanie.api_key = <API-KEY>". ' \
|
106
106
|
'Set your Secret Key using "Beanie.secret_key = <SECRET>". ' \
|
107
107
|
'You can generate API keys from the Beanie web interface. ' \
|
108
|
-
'See https://bean.ie/
|
109
|
-
'for further assistance.')
|
108
|
+
'See https://bean.ie/help/api/key for details or email ' \
|
109
|
+
'support@bean.ie for further assistance.')
|
110
110
|
end
|
111
111
|
url = "#{@base_uri}/api/authenticate"
|
112
112
|
data = {:api_key => @api_key, :secret_key => @secret_key}
|
113
113
|
response = RestClient.post(url, data.to_json, :content_type => :json, :accept => :json)
|
114
|
-
puts "Token response: #{response.code} (data: #{response.body})"
|
115
114
|
raise AuthenticationError.new('Authentication failure.') unless response.code == 202
|
116
115
|
data = JSON.parse(response.body)
|
117
116
|
@@token = data['token']
|
metadata
CHANGED
@@ -1,14 +1,14 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: beanie
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 0.1.
|
4
|
+
version: 0.1.3
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- Dermot Tynan
|
8
8
|
autorequire:
|
9
9
|
bindir: bin
|
10
10
|
cert_chain: []
|
11
|
-
date: 2018-
|
11
|
+
date: 2018-03-07 00:00:00.000000000 Z
|
12
12
|
dependencies:
|
13
13
|
- !ruby/object:Gem::Dependency
|
14
14
|
name: bundler
|
@@ -129,7 +129,7 @@ files:
|
|
129
129
|
- lib/beanie/version.rb
|
130
130
|
- lib/beanie/work_centre.rb
|
131
131
|
- lib/beanie/work_centre_group.rb
|
132
|
-
homepage: https://bean.ie/
|
132
|
+
homepage: https://bean.ie/help/api/ruby
|
133
133
|
licenses:
|
134
134
|
- MIT
|
135
135
|
metadata: {}
|