unleashed 0.1.13 → 0.1.14

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
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