Class: ErpIntegration::Fulfil::Resources::SalesOrder
- Inherits:
-
ApiResource
- Object
- ApiResource
- ErpIntegration::Fulfil::Resources::SalesOrder
- Defined in:
- lib/erp_integration/fulfil/resources/sales_order.rb
Defined Under Namespace
Classes: MissingIdempotencyKey
Constant Summary
Constants included from PaginationMethods
PaginationMethods::DEFAULT_LIMIT, PaginationMethods::DEFAULT_OFFSET, PaginationMethods::MAX_LIMIT
Instance Attribute Summary
Attributes inherited from ApiResource
Attributes included from QueryMethods
#or_clauses, #selected_fields, #where_clauses
Attributes included from PaginationMethods
#limit_value, #offset_value, #page_number
Instance Method Summary collapse
-
#cancel(id) ⇒ boolean
Allows cancelling the entire sales order in Fulfil.
-
#confirm(id) ⇒ boolean
Confirm the order on Fulfil.
-
#create_for(sales_channel, attributes:) ⇒ ErpIntegration::SalesOrder
Creates the sales order in one API call in Fulfil.
-
#duplicate(id) ⇒ Array|boolean
Allows duplicating the entire sales order in Fulfil.
-
#process(id) ⇒ boolean
Process the order on Fulfil.
-
#return!(id, options) ⇒ Object
Creates a return order in Fulfil.
Methods inherited from ApiResource
#all, api_keys_pool, api_keys_pool=, client, config, #count, #each, #find_each, #initialize, model_name, model_name=
Methods included from QueryMethods
#or, #or!, #select, #select!, #where, #where!, #where_domain, #where_ilike, #where_in, #where_less_or_equal_to, #where_less_than, #where_like, #where_more_or_equal_to, #where_more_than, #where_not, #where_not_in
Methods included from Persistence
Methods included from PaginationMethods
#limit, #limit!, #offset, #offset!, #page, #page!
Methods included from FinderMethods
Methods included from Context
Constructor Details
This class inherits a constructor from ErpIntegration::Fulfil::ApiResource
Instance Method Details
#cancel(id) ⇒ boolean
Allows cancelling the entire sales order in Fulfil.
24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 |
# File 'lib/erp_integration/fulfil/resources/sales_order.rb', line 24 def cancel(id) client.put("model/sale.sale/#{id}/cancel") true # Fulfil will return an 400 (a.k.a. "Bad Request") status code when a sales order couldn't # be cancelled. If a sales order isn't cancellable by design, no exception should be raised. # # See the Fulfil's documentation for more information: # https://developers.fulfil.io/rest_api/model/sale.sale/#cancel-a-sales-order rescue ErpIntegration::HttpError::BadRequest false # Workaround: Fulfil api does not return a json when status code is 200 (a.k.a. "Ok") # and faraday is having an error when trying to parse it. Let's skip the parse error # and move on. rescue Faraday::ParsingError true end |
#confirm(id) ⇒ boolean
Confirm the order on Fulfil.
45 46 47 48 49 50 51 52 53 54 55 56 57 58 |
# File 'lib/erp_integration/fulfil/resources/sales_order.rb', line 45 def confirm(id) client.put("model/sale.sale/#{id}/confirm") true # Fulfil will return an 400 (a.k.a. "Bad Request") status code when a sales order couldn't # be confirmed. rescue ErpIntegration::HttpError::BadRequest false # Workaround: Fulfil api does not return a json when status code is 200 (a.k.a. "Ok") # and faraday is having an error when trying to parse it. Let's skip the parse error # and move on. rescue Faraday::ParsingError true end |
#create_for(sales_channel, attributes:) ⇒ ErpIntegration::SalesOrder
Creates the sales order in one API call in Fulfil.
Fulfil allows two ways of creating a new sales order. Through their regular/generic API endpoint just like any other resource or through the sales channel.
The benefit of using the Sales Channel route is it allows creating the sales
The sales order number is used as an idempotency key for Fulfil to prevent sales orders from being processed twice. Due to that it’s a required attribute.
78 79 80 81 82 83 84 |
# File 'lib/erp_integration/fulfil/resources/sales_order.rb', line 78 def create_for(sales_channel, attributes:) raise MissingIdempotencyKey if attributes['reference'].blank? && attributes[:reference].blank? ErpIntegration::SalesOrder.new( client.put("model/sale.channel/#{sales_channel}/create_order", [attributes]) ) end |
#duplicate(id) ⇒ Array|boolean
Allows duplicating the entire sales order in Fulfil.
89 90 91 92 93 94 95 96 97 |
# File 'lib/erp_integration/fulfil/resources/sales_order.rb', line 89 def duplicate(id) duplicated_order_id = client.put("model/sale.sale/#{id}/copy").first ErpIntegration::SalesOrder.new(id: duplicated_order_id) # Fulfil will return an 400 (a.k.a. "Bad Request") status code when a sales order couldn't # be duplicated. rescue ErpIntegration::HttpError::BadRequest false end |
#process(id) ⇒ boolean
Process the order on Fulfil.
102 103 104 105 106 107 108 109 110 111 112 113 114 115 |
# File 'lib/erp_integration/fulfil/resources/sales_order.rb', line 102 def process(id) client.put("model/sale.sale/#{id}/process") true # Fulfil will return an 400 (a.k.a. "Bad Request") status code when a sales order couldn't # be processed. rescue ErpIntegration::HttpError::BadRequest false # Workaround: Fulfil api does not return a json when status code is 200 (a.k.a. "Ok") # and faraday is having an error when trying to parse it. Let's skip the parse error # and move on. rescue Faraday::ParsingError true end |
#return!(id, options) ⇒ Object
Creates a return order in Fulfil.
121 122 123 |
# File 'lib/erp_integration/fulfil/resources/sales_order.rb', line 121 def return!(id, ) client.put("model/sale.sale/#{id}/return_order", ) end |