magento 0.6.0 → 0.7.0

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: f899948f7690202bfadf8b2d0afbb066a864fd85f3e7d0c591df07b4f631d7bb
4
- data.tar.gz: 63585fc1f5b5ba321a065e2796c253b52f544b3b057b941b933c027a04d63d07
3
+ metadata.gz: 9c96180295e2e45d66ac2ea4aa956ec516c3c5045d81db431538cd5462b5efcc
4
+ data.tar.gz: b2d13f614c5af4b956e97b87c7e2476d1a40fd1ada11cb94270698630d44f9b2
5
5
  SHA512:
6
- metadata.gz: 0142acdd5ef93981d5170c39fecd73852458d8ea4a01d8b3c2ee28fd01c82ae26f2f16c533219908d8110648f50a99188b89a0f8537750b187fe62f003ff04c3
7
- data.tar.gz: 39092a61524a5f09cc61ead86e66917f5833f2b30ca6a7155479c41af471a88394ccdbd233341a03ef6a8fadbd3e3dbd6b222d554b9eee590f0fec1b3b1f7006
6
+ metadata.gz: 512781570485d5af44f8567b31c4988d096682f0e3fe6119803c18385842cecbfc28bdb2a16fb02091d0000cbf2cbae2b5174cf3b0489d398450957c76377069
7
+ data.tar.gz: 51dd50c0b4a2542e6467dff88553eb5a0542f7efff10de0430a6fb3bdba32e5e8232bf4ef4e5f07b886eeebf6835aad8127791c3d84ddc89632db6ed73d35c0d
data/README.md CHANGED
@@ -5,7 +5,7 @@
5
5
  Add in your Gemfile
6
6
 
7
7
  ```rb
8
- gem 'magento', '~> 0.6.0'
8
+ gem 'magento', '~> 0.7.0'
9
9
  ```
10
10
 
11
11
  or run
@@ -288,6 +288,129 @@ cart.payment_information(
288
288
  >> "234575" # return the order id
289
289
  ```
290
290
 
291
+ ## Invoice an Order
292
+
293
+ ```rb
294
+ Magento::Order.invoice(order_id)
295
+ >> 25 # return incoice id
296
+
297
+ # or from instance
298
+
299
+ order = Magento::Order.find(order_id)
300
+
301
+ invoice_id = order.invoice
302
+
303
+ # you can pass parameters too
304
+
305
+ invoice_id = order.invoice(
306
+ capture: false,
307
+ appendComment: true,
308
+ items: [{ order_item_id: 123, qty: 1 }], # pass items to partial invoice
309
+ comment: {
310
+ extension_attributes: { },
311
+ comment: "string",
312
+ is_visible_on_front: 0
313
+ },
314
+ notify: true
315
+ )
316
+ ```
317
+
318
+ [Complete Invoice Documentation](https://magento.redoc.ly/2.4-admin/tag/orderorderIdinvoice#operation/salesInvoiceOrderV1ExecutePost)
319
+
320
+ ## Create refund for invoice
321
+
322
+ ```rb
323
+ Magento::Invoice.invoice(refund_id)
324
+ >> 12 # return refund id
325
+
326
+ # or from instance
327
+
328
+ invoice = Magento::Invoice.find(invoice_id)
329
+
330
+ refund_id = invoice.refund
331
+
332
+ # you can pass parameters too
333
+
334
+ invoice.refund(
335
+ items: [
336
+ {
337
+ extension_attributes: {},
338
+ order_item_id: 0,
339
+ qty: 0
340
+ }
341
+ ],
342
+ isOnline: true,
343
+ notify: true,
344
+ appendComment: true,
345
+ comment: {
346
+ extension_attributes: {},
347
+ comment: string,
348
+ is_visible_on_front: 0
349
+ },
350
+ arguments: {
351
+ shipping_amount: 0,
352
+ adjustment_positive: 0,
353
+ adjustment_negative: 0,
354
+ extension_attributes: {
355
+ return_to_stock_items: [0]
356
+ }
357
+ }
358
+ )
359
+ ```
360
+
361
+ [Complete Refund Documentation](https://magento.redoc.ly/2.4-admin/tag/invoicescomments#operation/salesRefundInvoiceV1ExecutePost)
362
+
363
+
364
+ ## Other Invoice methods
365
+
366
+ ```rb
367
+ invoice = Magento::Invoice.find(invoice_id)
368
+
369
+ invoice.capture # or
370
+ Magento::Invoice.capture(invoice_id)
371
+
372
+ invoice.void # or
373
+ Magento::Invoice.void(invoice_id)
374
+
375
+ invoice.send_email # or
376
+ Magento::Invoice.send_email(invoice_id)
377
+
378
+ Magento::Invoice.comments(invoice_id).all
379
+ Magento::Invoice.comments(invoice_id).where(created_at_gt: Date.today.prev_day).all
380
+ ```
381
+
382
+ ## Creates new Shipment for given Order.
383
+
384
+ ```rb
385
+ Magento::Order.ship(order_id)
386
+ >> 25 # return shipment id
387
+
388
+ # or from instance
389
+
390
+ order = Magento::Order.find(order_id)
391
+
392
+ order.ship
393
+
394
+ # you can pass parameters too
395
+
396
+ order.ship(
397
+ capture: false,
398
+ appendComment: true,
399
+ items: [{ order_item_id: 123, qty: 1 }], # pass items to partial shipment
400
+ tracks: [
401
+ {
402
+ extension_attributes: { },
403
+ track_number: "string",
404
+ title: "string",
405
+ carrier_code: "string"
406
+ }
407
+ ]
408
+ notify: true
409
+ )
410
+ ```
411
+
412
+ [Complete Shipment Documentation](https://magento.redoc.ly/2.4-admin/tag/orderorderIdship#operation/salesShipOrderV1ExecutePost)
413
+
291
414
  ___
292
415
 
293
416
  ##TODO:
@@ -296,3 +419,31 @@ ___
296
419
  ```rb
297
420
  Magento::Product.search('tshort')
298
421
  ```
422
+
423
+ ### First result
424
+ ```rb
425
+ Magento::Product.first
426
+ >> <Magento::Product @sku="some-sku" ...>
427
+
428
+ Magento::Product.where(name_like: 'some name%').first
429
+ >> <Magento::Product @sku="some-sku" ...>
430
+ ```
431
+
432
+ ### Last result
433
+ ```rb
434
+ Magento::Product.last
435
+ >> <Magento::Product @sku="some-sku" ...>
436
+
437
+ Magento::Product.where(name_like: 'some name%').last
438
+ >> <Magento::Product @sku="some-sku" ...>
439
+ ```
440
+
441
+ ### Count result
442
+ ```rb
443
+ Magento::Product.count
444
+ >> 7855
445
+ Magento::Product.where(name_like: 'some name%').count
446
+ >> 15
447
+ ```
448
+
449
+ ### Tests
@@ -0,0 +1,20 @@
1
+ require './lib/magento'
2
+
3
+ Magento.url = 'https://maniadagua.com'
4
+ Magento.token = 'f44251o3xjijz8ou78hoyh8a06kdtkmh'
5
+
6
+ page = 245
7
+
8
+ loop do
9
+ products = Magento::Product.page(page).per(5).all
10
+
11
+ products.each do |product|
12
+ Magento::Product.update(product.sku, extension_attributes: { website_ids: [1, 2] })
13
+ puts "update page #{page}, product: #{product.name}"
14
+ rescue => e
15
+ puts "ERRO ao cadastrar: #{product.name}, #{e.message}"
16
+ end
17
+
18
+ break if products.last_page?
19
+ page = products.next_page
20
+ end
@@ -6,6 +6,7 @@ require 'dry/inflector'
6
6
  require_relative 'magento/errors'
7
7
  require_relative 'magento/request'
8
8
  require_relative 'magento/model_mapper'
9
+ require_relative 'magento/polymorphic_model'
9
10
  require_relative 'magento/model'
10
11
  require_relative 'magento/record_collection'
11
12
  require_relative 'magento/query'
@@ -14,6 +15,7 @@ require_relative 'magento/product'
14
15
  require_relative 'magento/country'
15
16
  require_relative 'magento/customer'
16
17
  require_relative 'magento/order'
18
+ require_relative 'magento/invoice'
17
19
  require_relative 'magento/guest_cart'
18
20
 
19
21
  Dir[File.expand_path('magento/shared/*.rb', __dir__)].map { |f| require f }
@@ -0,0 +1,132 @@
1
+ # frozen_string_literal: true
2
+
3
+ module Magento
4
+ class Invoice < Model
5
+ self.primary_key = :entity_id
6
+ self.entity_key = :entity
7
+
8
+ #
9
+ # Sets invoice capture.
10
+ def capture
11
+ self.class.capture(id)
12
+ end
13
+
14
+ #
15
+ # Voids a specified invoice.
16
+ #
17
+ # @return {Boolean}
18
+ def void
19
+ self.class.void(id)
20
+ end
21
+
22
+ #
23
+ # Emails a user a specified invoice.
24
+ #
25
+ # @return {Boolean}
26
+ def send_email
27
+ self.class.send_email(id)
28
+ end
29
+
30
+ #
31
+ # Create refund for invoice
32
+ #
33
+ # invoice = Magento::Invoice.find(invoice_id)
34
+ #
35
+ # invoice.refund # or you can pass parameters
36
+ # invoice.invoice(notify: false) # See the refund class method for more information
37
+ #
38
+ # @return {Integer} return the refund id
39
+ def refund(refund_params = nil)
40
+ self.class.refund(id, refund_params)
41
+ end
42
+
43
+ class << self
44
+ def save
45
+ raise NotImplementedError
46
+ end
47
+
48
+ def update(_attributes)
49
+ raise NotImplementedError
50
+ end
51
+
52
+ def create(_attributes)
53
+ raise NotImplementedError
54
+ end
55
+
56
+ #
57
+ # Sets invoice capture.
58
+ def capture(invoice_id)
59
+ request.post("invoices/#{invoice_id}/capture").parse
60
+ end
61
+
62
+ #
63
+ # Voids a specified invoice.
64
+ #
65
+ # @return {Boolean}
66
+ def void(invoice_id)
67
+ request.post("invoices/#{invoice_id}/avoid").parse
68
+ end
69
+
70
+ #
71
+ # Emails a user a specified invoice.
72
+ #
73
+ # @return {Boolean}
74
+ def send_email(invoice_id)
75
+ request.post("invoices/#{invoice_id}/emails").parse
76
+ end
77
+
78
+ #
79
+ # Lists comments for a specified invoice.
80
+ #
81
+ # Magento::Invoice.comments(invoice_id).all
82
+ # Magento::Invoice.comments(invoice_id).where(created_at_gt: Date.today.prev_day).all
83
+ def comments(invoice_id)
84
+ api_resource = "invoices/#{invoice_id}/comments"
85
+ Query.new(PolymorphicModel.new(Comment, api_resource))
86
+ end
87
+
88
+ #
89
+ # Create refund for invoice
90
+ #
91
+ # Magento::Invoice.refund(invoice_id)
92
+ #
93
+ # or
94
+ #
95
+ # Magento::Order.refund(
96
+ # invoice_id,
97
+ # items: [
98
+ # {
99
+ # extension_attributes: {},
100
+ # order_item_id: 0,
101
+ # qty: 0
102
+ # }
103
+ # ],
104
+ # isOnline: true,
105
+ # notify: true,
106
+ # appendComment: true,
107
+ # comment: {
108
+ # extension_attributes: {},
109
+ # comment: string,
110
+ # is_visible_on_front: 0
111
+ # },
112
+ # arguments: {
113
+ # shipping_amount: 0,
114
+ # adjustment_positive: 0,
115
+ # adjustment_negative: 0,
116
+ # extension_attributes: {
117
+ # return_to_stock_items: [
118
+ # 0
119
+ # ]
120
+ # }
121
+ # }
122
+ # )
123
+ #
124
+ # to complete [documentation](https://magento.redoc.ly/2.4-admin/tag/invoicescomments#operation/salesRefundInvoiceV1ExecutePost)
125
+ #
126
+ # @return {Integer} return the refund id
127
+ def refund(invoice_id, refund_params=nil)
128
+ request.post("invoice/#{order_id}/refund", invoice_params).parse
129
+ end
130
+ end
131
+ end
132
+ end
@@ -16,11 +16,94 @@ module Magento
16
16
  self.class.update(attrs)
17
17
  end
18
18
 
19
+ #
20
+ # Invoice current order
21
+ #
22
+ # order = Magento::Order.find(order_id)
23
+ #
24
+ # order.invoice # or you can pass parameters
25
+ # order.invoice(capture: false) # See the invoice class method for more information
26
+ #
27
+ # @return String: return the invoice id
28
+ def invoice(params=nil)
29
+ self.class.invoice(id, params)
30
+ end
31
+
32
+ #
33
+ # Creates new Shipment for given Order.
34
+ #
35
+ # order = Magento::Order.find(order_id)
36
+ #
37
+ # order.ship # or you can pass parameters
38
+ # order.ship(notify: false) # See the shipment class method for more information
39
+ #
40
+ # Return the shipment id
41
+ def ship(params=nil)
42
+ self.class.ship(id, params)
43
+ end
44
+
19
45
  class << self
20
46
  def update(attributes)
21
47
  hash = request.put('orders/create', { entity_key => attributes }).parse
22
48
  build(hash)
23
49
  end
50
+
51
+ #
52
+ # Invoice an order
53
+ #
54
+ # Magento::Order.invoice(order_id)
55
+ #
56
+ # or
57
+ #
58
+ # Magento::Order.invoice(
59
+ # order_id,
60
+ # capture: false,
61
+ # appendComment: true,
62
+ # items: [{ order_item_id: 123, qty: 1 }], # pass items to partial invoice
63
+ # comment: {
64
+ # extension_attributes: { },
65
+ # comment: "string",
66
+ # is_visible_on_front: 0
67
+ # },
68
+ # notify: true
69
+ # )
70
+ #
71
+ # to complete [documentation](https://magento.redoc.ly/2.4-admin/tag/orderorderIdinvoice#operation/salesInvoiceOrderV1ExecutePost)
72
+ #
73
+ # @return String: return the invoice id
74
+ def invoice(order_id, invoice_params=nil)
75
+ request.post("order/#{order_id}/invoice", invoice_params).parse
76
+ end
77
+
78
+ #
79
+ # Creates new Shipment for given Order.
80
+ #
81
+ # Magento::Order.ship(order_id)
82
+ #
83
+ # or
84
+ #
85
+ # Magento::Order.ship(
86
+ # order_id,
87
+ # capture: false,
88
+ # appendComment: true,
89
+ # items: [{ order_item_id: 123, qty: 1 }], # pass items to partial shipment
90
+ # tracks: [
91
+ # {
92
+ # extension_attributes: { },
93
+ # track_number: "string",
94
+ # title: "string",
95
+ # carrier_code: "string"
96
+ # }
97
+ # ]
98
+ # notify: true
99
+ # )
100
+ #
101
+ # to complete [documentation](https://magento.redoc.ly/2.4-admin/tag/orderorderIdship#operation/salesShipOrderV1ExecutePost)
102
+ #
103
+ # @return {String}: return the shipment id
104
+ def ship(order_id, shipment_params = nil)
105
+ request.post("order/#{order_id}/ship", shipment_params).parse
106
+ end
24
107
  end
25
108
  end
26
109
  end
@@ -0,0 +1,18 @@
1
+ module Magento
2
+ class PolymorphicModel
3
+ attr_reader :api_resource
4
+
5
+ def initialize(model, api_resource)
6
+ @model = model
7
+ @api_resource = api_resource
8
+ end
9
+
10
+ def new
11
+ @model.new
12
+ end
13
+
14
+ def build(attributes)
15
+ @model.build(attributes)
16
+ end
17
+ end
18
+ end
@@ -0,0 +1,5 @@
1
+ module Magento
2
+ class Comment
3
+ include Magento::ModelParser
4
+ end
5
+ end
@@ -1,3 +1,3 @@
1
1
  module Magento
2
- VERSION = '0.6.0'
2
+ VERSION = '0.7.0'
3
3
  end
metadata CHANGED
@@ -1,7 +1,7 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: magento
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.6.0
4
+ version: 0.7.0
5
5
  platform: ruby
6
6
  authors:
7
7
  - Wallas Faria
@@ -48,15 +48,18 @@ files:
48
48
  - ".gitignore"
49
49
  - Gemfile
50
50
  - README.md
51
+ - atrelar_produto_loja.rb
51
52
  - lib/magento.rb
52
53
  - lib/magento/category.rb
53
54
  - lib/magento/country.rb
54
55
  - lib/magento/customer.rb
55
56
  - lib/magento/errors.rb
56
57
  - lib/magento/guest_cart.rb
58
+ - lib/magento/invoice.rb
57
59
  - lib/magento/model.rb
58
60
  - lib/magento/model_mapper.rb
59
61
  - lib/magento/order.rb
62
+ - lib/magento/polymorphic_model.rb
60
63
  - lib/magento/product.rb
61
64
  - lib/magento/query.rb
62
65
  - lib/magento/record_collection.rb
@@ -66,6 +69,7 @@ files:
66
69
  - lib/magento/shared/billing_address.rb
67
70
  - lib/magento/shared/bundle_product_option.rb
68
71
  - lib/magento/shared/category_link.rb
72
+ - lib/magento/shared/comment.rb
69
73
  - lib/magento/shared/configurable_product_option.rb
70
74
  - lib/magento/shared/currency.rb
71
75
  - lib/magento/shared/custom_attribute.rb