unleashed 0.1.13 → 0.1.14

Sign up to get free protection for your applications and to get access to all the features.
checksums.yaml CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA256:
3
- metadata.gz: e7d32b1d247ccea9399690a692565cf43b06a61990e59c2a73643d0d08889559
4
- data.tar.gz: e32d0170f365f79bacf4bccced4f0af0722b91ca4b8ad5234f76917002c74898
3
+ metadata.gz: 163e4108af74a8837955b70ece495fce05e57d754dea7456fe4728acf6cfe898
4
+ data.tar.gz: 0a483a88892922a15831688c082dbc2e1b2f26b14263186ca39cb283064b9be3
5
5
  SHA512:
6
- metadata.gz: 2d7db5fbec3130bc8fc3cf461e52a7b1847fd2130afd861f2e88e52787b8ee892f3764d22a1f8d6c31886e6b5a5da6993e44934f14b7c7caa6b52cc7199de1bc
7
- data.tar.gz: e4e850bf51a3379bd72451a6cf334a940cd4d00ca204c7e9a54eb5337f52de9b1cb36a78d46d5175e0f2528cc4036ae2073a74a4b2c1828bafd9c0f72f149b85
6
+ metadata.gz: acbf6829e4329b7e330ccdbe6cea08fa4b2cc4c5d07d2c4cadbea1f3906a8edae529e1a92931eb1c0d98adabfc07efe2d52fb0eba8040b6b477db0d517b6c495
7
+ data.tar.gz: cf3eb8666c697dc75739735ad1b00400eb564328dcfc54d8a0432236b9958c22ceef757a4dd66c0c7d50595cb9fbc3c123758c62dc50ecb46bab464f53453478
@@ -2,6 +2,11 @@
2
2
 
3
3
  All notable changes to this project will be documented in this file.
4
4
 
5
+ ## [0.1.14] - 2020-02-23
6
+
7
+ - Update options, queries, comments of `currencies`, `customers`, `invoices`, `payment terms`.
8
+ - Replace `create` method by `create_or_update` method of `customers`
9
+
5
10
  ## [0.1.13] - 2019-12-05
6
11
 
7
12
  - Update version.
data/README.md CHANGED
@@ -75,7 +75,7 @@ client = Unleashed::Client.new(options)
75
75
  #### Create a new Customer
76
76
 
77
77
  ```ruby
78
- customer = client.customers.create(
78
+ customer = client.customers.create_or_update(
79
79
  Guid: '59f21e05-07fe-4d9d-b460-a09db4c3caa9',
80
80
  Addresses: [
81
81
  {
@@ -195,6 +195,26 @@ customer = client.customers.update(
195
195
  #### Get all customers
196
196
 
197
197
  ```ruby
198
+ # List all customers
199
+ # /Customers - also returns the first 200 customers because page number 1 is the default.
200
+ #
201
+ # @param options [Hash] Optional options.
202
+ # @option PageSize: Can ask for up to 200 customers. Default: 200
203
+ # @option Page: Page index. Default: 1
204
+ # @option CustomerType: Only returns customers that matches the specified customer type.
205
+ # @option SellPriceTier: Only returns customers that are assigned to the specified sell price tier.
206
+ # @option Currency: Only returns customers with currency code exactly matching the specified value.
207
+ # @option Customer: Returns customers whose customer code or customer name contains the specified value. It is case-sensitive.
208
+ # @option CustomerCode: Only returns customers that start with the specific customer code.
209
+ # @option CustomerName: Only returns customers that start with the specific customer name.
210
+ # @option ContactEmail: Only returns customers that have a contact email that starts with the specified email address.
211
+ # @option ModifiedSince: Only returns customers modified since a specified date.
212
+ # @option IncludeObsolete: Returns all customers, including obsolete, if set to `true`. If set to `false` or if it is not specified then returns only active (ie. non-obsolete) customers.
213
+ # @option XeroContactId: Only returns customers that start with the specific Xero Contact Id.
214
+ # @option OrderBy: Orders the list by `LastModifiedOn` or `CreatedOn` date. By default the list is ordered by `CustomerCode`.
215
+ # @option Sort: Orders the list by `CreatedOn` date sorted in ascending or descending order.
216
+ #
217
+ # @return [Array<Unleashed::Customer>] List all customers.
198
218
  client.customers.all
199
219
  ```
200
220
 
@@ -221,6 +241,22 @@ client.customers.last
221
241
  #### Get all invoices
222
242
 
223
243
  ```ruby
244
+ # List all invoices
245
+ # /Invoices - also returns the first 200 invoices because page number 1 is the default.
246
+ #
247
+ # @param options [Hash] Optional options.
248
+ # @option Page: Page index. Default: 1
249
+ # @option PageSize: Specifies the page size for pagination. Default page size is 200 invoices.
250
+ # @option CustomerCode: Returns invoices that matches the specific customer code.
251
+ # @option StartDate: Returns invoices created after a specified date, must be UTC format.
252
+ # @option EndDate: Returns invoices created before a specified date, must be UTC format.
253
+ # @option ModifiedSince: Returns invoices created or edited after a specified date, must be UTC format.
254
+ # @option OrderNumber: Returns the invoices associated with the Sales Order Number.
255
+ # @option InvoiceNumber: Returns a single invoice with the specified invoice number. If set, it overrides all other filters.
256
+ # @option InvoiceStatus: Returns invoices with the specified status. Multiple selection can be specified as comma separated.For example: `invoiceStatus=Completed,Parked`. If no invoiceStatus filter is specified, then we exclude “Deleted” by default.
257
+ # @option SerialBatch: False by default. If set to true then the attributes SerialNumbers and BatchNumbers are displayed.
258
+ #
259
+ # @return [Array<Unleashed::Invoice>] List all invoices.
224
260
  client.invoices.all
225
261
  ```
226
262
 
@@ -10,13 +10,10 @@ module Unleashed
10
10
  # List all currencies
11
11
  # /Currencies - also returns the first 200 currencies because page number 1 is the default.
12
12
  #
13
- # @param options [Hash] Optional options.
14
- # @option options [Integer] :page_size Can ask for up to 200 currencies. default: 10
15
- # @option options [Integer] :page Page index. default: 1
16
- #
17
13
  # @return [Array<Unleashed::Currency>] List all currencies.
18
- def all(options = { page: 1, page_size: 10 })
19
- response = JSON.parse(@client.get('Currencies', options).body)
14
+ def all
15
+ endpoint = 'Currencies'
16
+ response = JSON.parse(@client.get(endpoint, options).body)
20
17
  currencies = response.key?('Items') ? response['Items'] : []
21
18
  currencies.map { |attributes| Unleashed::Currency.new(@client, attributes) }
22
19
  end
@@ -14,12 +14,33 @@ module Unleashed
14
14
  # /Customers - also returns the first 200 customers because page number 1 is the default.
15
15
  #
16
16
  # @param options [Hash] Optional options.
17
- # @option options [Integer] :page_size Can ask for up to 200 customers. default: 10
18
- # @option options [Integer] :page Page index. default: 1
17
+ # @option PageSize: Can ask for up to 200 customers. Default: 200
18
+ # @option Page: Page index. Default: 1
19
+ # @option CustomerType: Only returns customers that matches the specified customer type.
20
+ # @option SellPriceTier: Only returns customers that are assigned to the specified sell price tier.
21
+ # @option Currency: Only returns customers with currency code exactly matching the specified value.
22
+ # @option Customer: Returns customers whose customer code or customer name contains the specified value. It is case-sensitive.
23
+ # @option CustomerCode: Only returns customers that start with the specific customer code.
24
+ # @option CustomerName: Only returns customers that start with the specific customer name.
25
+ # @option ContactEmail: Only returns customers that have a contact email that starts with the specified email address.
26
+ # @option ModifiedSince: Only returns customers modified since a specified date.
27
+ # @option IncludeObsolete: Returns all customers, including obsolete, if set to `true`. If set to `false` or if it is not specified then returns only active (ie. non-obsolete) customers.
28
+ # @option XeroContactId: Only returns customers that start with the specific Xero Contact Id.
29
+ # @option OrderBy: Orders the list by `LastModifiedOn` or `CreatedOn` date. By default the list is ordered by `CustomerCode`.
30
+ # @option Sort: Orders the list by `CreatedOn` date sorted in ascending or descending order.
19
31
  #
20
32
  # @return [Array<Unleashed::Customer>] List all customers.
21
- def all(options = { page: 1, page_size: 10 })
22
- response = JSON.parse(@client.get('Customers', options).body)
33
+ def all(options = { Page: 1, PageSize: 200 })
34
+ endpoint = 'Customers'
35
+ params = options.dup
36
+
37
+ # Handle Page option
38
+ if params[:Page].present?
39
+ endpoint << "/#{params[:Page]}"
40
+ params.delete :Page
41
+ end
42
+
43
+ response = JSON.parse(@client.get(endpoint, params).body)
23
44
  customers = response.key?('Items') ? response['Items'] : []
24
45
  customers.map { |attributes| Unleashed::Customer.new(@client, attributes) }
25
46
  end
@@ -31,7 +52,8 @@ module Unleashed
31
52
  #
32
53
  # @return [Unleashed::Customer]
33
54
  def find(id)
34
- response = JSON.parse(@client.get("Customers/#{id}").body)
55
+ endpoint = "Customers/#{id}"
56
+ response = JSON.parse(@client.get(endpoint).body)
35
57
  Unleashed::Customer.new(@client, response)
36
58
  end
37
59
 
@@ -52,11 +74,27 @@ module Unleashed
52
74
  # Create a new customer
53
75
  #
54
76
  # @param attributes [Hash] Customer's attributes.
77
+ # attributes = { Guid: "59f21e05-07fe-4d9d-b460-a09db4c3caa9", Addresses: [ { AddressType: "Shipping",
78
+ # AddressName: "Example Address", StreetAddress: "Example Address",
79
+ # StreetAddress2: "Example Address 2", Suburb: "Example Suburb", City: "Auckland",
80
+ # Region: "Auckland", Country: "New Zealand", PostalCode: "1061", IsDefault: false,
81
+ # DeliveryInstruction: "Have a good day" } ], TaxCode: "", TaxRate: nil,
82
+ # CustomerCode: "UnleashedCustomer", CustomerName: "Unleashed Customer", GSTVATNumber: nil,
83
+ # BankName: nil, BankBranch: nil, BankAccount: nil, Website: nil, PhoneNumber: nil, FaxNumber: nil,
84
+ # MobileNumber: nil, DDINumber: nil, TollFreeNumber: nil, Email: nil, EmailCC: nil,
85
+ # Currency: { CurrencyCode: "NZD", Description: "New Zealand, Dollars",
86
+ # Guid: "6cb5d67a-1c96-4fa8-bf59-b23c2d69f22a" }, Notes: nil, Taxable: true, SalesPerson: nil,
87
+ # DiscountRate: 0, PrintPackingSlipInsteadOfInvoice: false, PrintInvoice: false,
88
+ # StopCredit: false, Obsolete: false, XeroSalesAccount: nil, XeroCostOfGoodsAccount: nil,
89
+ # SellPriceTier: "", SellPriceTierReference: nil, CustomerType: "Cash",
90
+ # PaymentTerm: "20th Month following", ContactFirstName: nil, ContactLastName: nil }
55
91
  #
56
92
  # @return [Unleashed::Customer]
57
- def create(attributes)
93
+ def create_or_update(attributes)
58
94
  id = attributes[:Guid].present? ? attributes[:Guid] : ''
59
- response = JSON.parse(@client.post("Customers/#{id}", attributes).body)
95
+ endpoint = 'Customers'
96
+ endpoint << "/#{id}" if id.present?
97
+ response = JSON.parse(@client.post(endpoint, attributes).body)
60
98
  Unleashed::Customer.new(@client, response)
61
99
  end
62
100
  end
@@ -14,12 +14,64 @@ module Unleashed
14
14
  # /Invoices - also returns the first 200 invoices because page number 1 is the default.
15
15
  #
16
16
  # @param options [Hash] Optional options.
17
- # @option options [Integer] :page_size Can ask for up to 200 invoices. default: 10
18
- # @option options [Integer] :page Page index. default: 1
17
+ # @option Page: Page index. Default: 1
18
+ # @option PageSize: Specifies the page size for pagination. Default page size is 200 invoices.
19
+ # @option CustomerCode: Returns invoices that matches the specific customer code.
20
+ # @option StartDate: Returns invoices created after a specified date, must be UTC format.
21
+ # @option EndDate: Returns invoices created before a specified date, must be UTC format.
22
+ # @option ModifiedSince: Returns invoices created or edited after a specified date, must be UTC format.
23
+ # @option OrderNumber: Returns the invoices associated with the Sales Order Number.
24
+ # @option InvoiceNumber: Returns a single invoice with the specified invoice number. If set, it overrides all other filters.
25
+ # @option InvoiceStatus: Returns invoices with the specified status. Multiple selection can be specified as comma separated.For example: `invoiceStatus=Completed,Parked`. If no invoiceStatus filter is specified, then we exclude “Deleted” by default.
26
+ # @option SerialBatch: False by default. If set to true then the attributes SerialNumbers and BatchNumbers are displayed.
19
27
  #
20
28
  # @return [Array<Unleashed::Invoice>] List all invoices.
21
- def all(options = { page: 1, page_size: 10 })
22
- response = JSON.parse(@client.get('Invoices', options).body)
29
+ # { Pagination: { NumberOfItems: 2, PageSize: 200, PageNumber: 1, NumberOfPages: 1 },
30
+ # Items: [ { InvoiceNumber: "SI-137", OrderNumber: "SO-137", QuoteNumber: nil,
31
+ # InvoiceDate: "/Date(1565058456626)/", DueDate: "/Date(1568937600000)/",
32
+ # InvoiceStatus: "Completed", Customer: { CustomerCode: "WADE",
33
+ # CustomerName: "Wade's Apparel & Accessories", CurrencyId: 110,
34
+ # Guid: "b9f21e05-07fe-4d9d-b460-a09db4c3caa9", LastModifiedOn: "/Date(1559778437146)/" },
35
+ # Comments: nil, PostalAddress: nil, DeliveryAddress: { AddressType: nil,
36
+ # AddressName: nil, StreetAddress: nil, StreetAddress2: nil, Suburb: nil, City: nil,
37
+ # Region: nil, Country: nil, PostalCode: nil, IsDefault: false },
38
+ # DeliveryInstruction: "Handle with care.", SubTotal: 25.0, TaxTotal: 5.0, Total: 30.0,
39
+ # BCSubTotal: 25.27, BCTaxTotal: 5.05, BCTotal: 30.32, CreatedBy: "james@JamesInc.com",
40
+ # PaymentTerm: "20th Month following", InvoiceLines: [ { LineNumber: 1, LineType: nil,
41
+ # Product: { Guid: "23280680-a2bd-4873-a390-501e0f3399d1", ProductCode: "NAIL-M",
42
+ # ProductDescription: "Medium Nails" }, OrderQuantity: 1.0, InvoiceQuantity: 1.0,
43
+ # UnitPrice: 25.0, DiscountRate: 0.0, LineTotal: 25.0, Comments: "", TaxRate: 0.2,
44
+ # LineTax: 5.0, BCUnitPrice: 25.2729, SerialNumbers: nil, BatchNumbers: nil,
45
+ # Guid: "866e295f-76fb-49e7-9407-b2ed4e0a5d0d", LastModifiedOn: "/Date(1565058457156)/" } ],
46
+ # Guid: "10a1571d-8c5a-4e5e-bbba-bc3215a27e17", LastModifiedOn: "/Date(1565058457161)/" },
47
+ # { InvoiceNumber: "SI-136", OrderNumber: "SO-136", QuoteNumber: nil,
48
+ # InvoiceDate: "/Date(1565058268231)/", DueDate: "/Date(1568937600000)/",
49
+ # InvoiceStatus: "Completed", Customer: { CustomerCode: "WADE",
50
+ # CustomerName: "Wade's Apparel & Accessories", CurrencyId: 110,
51
+ # Guid: "b9f21e05-07fe-4d9d-b460-a09db4c3caa9", LastModifiedOn: "/Date(1559778437146)/" },
52
+ # Comments: nil, PostalAddress: nil, DeliveryAddress: { AddressType: nil,
53
+ # AddressName: nil, StreetAddress: nil, StreetAddress2: nil, Suburb: nil, City: nil,
54
+ # Region: nil, Country: nil, PostalCode: nil, IsDefault: false },
55
+ # DeliveryInstruction: nil, SubTotal: 25.0, TaxTotal: 5.0, Total: 30.0,
56
+ # BCSubTotal: 25.27, BCTaxTotal: 5.05, BCTotal: 30.32, CreatedBy: "james@JamesInc.com",
57
+ # PaymentTerm: "20th Month following", InvoiceLines: [ { LineNumber: 1, LineType: nil,
58
+ # Product: { Guid: "23280680-a2bd-4873-a390-501e0f3399d1", ProductCode: "NAIL-M",
59
+ # ProductDescription: "Medium Nails" }, OrderQuantity: 1.0, InvoiceQuantity: 1.0,
60
+ # UnitPrice: 25.0, DiscountRate: 0.0, LineTotal: 25.0, Comments: "", TaxRate: 0.2,
61
+ # LineTax: 5.0, BCUnitPrice: 25.2729, SerialNumbers: nil, BatchNumbers: nil,
62
+ # Guid: "2b994962-e446-4b18-b8c7-5f445adde8cc", LastModifiedOn: "/Date(1565058268757)/" } ],
63
+ # Guid: "5cc41e1e-468f-4c01-beb9-a077fc06df46", LastModifiedOn: "/Date(1565058268764)/" } ] }
64
+ def all(options = { Page: 1, PageSize: 200 })
65
+ endpoint = 'Invoices'
66
+ params = options.dup
67
+
68
+ # Handle Page option
69
+ if params[:Page].present?
70
+ endpoint << "/#{params[:Page]}"
71
+ params.delete :Page
72
+ end
73
+
74
+ response = JSON.parse(@client.get(endpoint, params).body)
23
75
  invoices = response.key?('Items') ? response['Items'] : []
24
76
  invoices.map { |attributes| Unleashed::Invoice.new(@client, attributes) }
25
77
  end
@@ -11,13 +11,28 @@ module Unleashed
11
11
  # List all payment_terms
12
12
  # /PaymentTerms - also returns the first 200 payment_terms because page number 1 is the default.
13
13
  #
14
- # @param options [Hash] Optional options.
15
- # @option options [Integer] :page_size Can ask for up to 200 payment_terms. default: 10
16
- # @option options [Integer] :page Page index. default: 1
17
- #
18
- # @return [Array<Unleashed::PaymentTerm>] List all payment_terms.
19
- def all(options = { page: 1, page_size: 10 })
20
- response = JSON.parse(@client.get('PaymentTerms', options).body)
14
+ # @return [Array<Unleashed::PaymentTerm>] List all payment terms.
15
+ # {
16
+ # "Items": [
17
+ # {
18
+ # "Guid": "6223b37e-2ee4-41ed-a215-5f14c53e8f7f",
19
+ # "Type": "DaysOfTheMonthFollowing",
20
+ # "Days": 20,
21
+ # "Obsolete": false,
22
+ # "PaymentTermDescription": "20th Month following"
23
+ # },
24
+ # {
25
+ # "Guid": "6488bee4-ea4c-4a25-ba1b-a86965120e34",
26
+ # "Type": "DaysOfTheMonthFollowing",
27
+ # "Days": 25,
28
+ # "Obsolete": false,
29
+ # "PaymentTermDescription": "25th Month following"
30
+ # }
31
+ # ]
32
+ # }
33
+ def all
34
+ endpoint = 'PaymentTerms'
35
+ response = JSON.parse(@client.get(endpoint).body)
21
36
  payment_terms = response.key?('Items') ? response['Items'] : []
22
37
  payment_terms.map { |attributes| Unleashed::PaymentTerm.new(@client, attributes) }
23
38
  end
@@ -35,16 +50,5 @@ module Unleashed
35
50
  def last
36
51
  all.last
37
52
  end
38
-
39
- # Create a new payment_term
40
- #
41
- # @param attributes [Hash] PaymentTerm's attributes.
42
- #
43
- # @return [Unleashed::PaymentTerm]
44
- def create(attributes)
45
- id = attributes[:Guid].present? ? attributes[:Guid] : ''
46
- response = JSON.parse(@client.post("PaymentTerms/#{id}", attributes).body)
47
- Unleashed::PaymentTerm.new(@client, response)
48
- end
49
53
  end
50
54
  end
@@ -2,7 +2,7 @@ module Unleashed
2
2
  module Version
3
3
  MAJOR = 0
4
4
  MINOR = 1
5
- TINY = 13
5
+ TINY = 14
6
6
 
7
7
  STRING = "#{MAJOR}.#{MINOR}.#{TINY}".freeze
8
8
  end
metadata CHANGED
@@ -1,14 +1,14 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: unleashed
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.1.13
4
+ version: 0.1.14
5
5
  platform: ruby
6
6
  authors:
7
7
  - Nhan Nguyen
8
8
  autorequire:
9
9
  bindir: exe
10
10
  cert_chain: []
11
- date: 2019-12-05 00:00:00.000000000 Z
11
+ date: 2020-02-25 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: faraday