Module: InvoiceQueryConcern
- Extended by:
- AcumenOrderQueryConcern
- Included in:
- Agents::AcumenOrderAgent
- Defined in:
- lib/huginn_acumen_order_agent/concerns/invoice_query_concern.rb
Overview
This module is responsible for reading/processing data recrods from the Invoice table in Acumen. This table contains the baseline order/shipment information Shipping method, tracking numbers, etc.
Instance Method Summary collapse
-
#fetch_invoice_data(acumen_client, order_codes) ⇒ Object
Fetch/Process the Acumen data,.
-
#process_invoice_response(raw_data) ⇒ Object
This function returns an array of Acumen invoices.
Instance Method Details
#fetch_invoice_data(acumen_client, order_codes) ⇒ Object
Fetch/Process the Acumen data,
10 11 12 13 14 |
# File 'lib/huginn_acumen_order_agent/concerns/invoice_query_concern.rb', line 10 def fetch_invoice_data(acumen_client, order_codes) invoice_data = acumen_client.get_invoices(order_codes) return process_invoice_response(invoice_data) end |
#process_invoice_response(raw_data) ⇒ Object
This function returns an array of Acumen invoices.
17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 |
# File 'lib/huginn_acumen_order_agent/concerns/invoice_query_concern.rb', line 17 def process_invoice_response(raw_data) raw_data.map do |i| log('------------------------------------------------------------') log(":: raw invoice #{i}") log('------------------------------------------------------------') invoice = nil begin invoice = response_mapper(i, { 'Invoice.Invoice_ID' => 'identifier', 'Invoice.Order_Code' => 'orderNumber', 'Invoice.Order_Date' => 'orderDate', 'Invoice.Status' => 'orderStatus', 'Invoice.Customer_Name' => 'customer', 'Invoice.Modified_Date' => 'modified_date', }) invoice['type'] = '@Order' #---------- Parse Tracking Numbers ----------# invoice['orderDelivery'] = [] tracking_numbers = get_field_value(i, 'Invoice.Tracking_Num') tracking_numbers = tracking_numbers.blank? ? [] : tracking_numbers.split(/\s| /) tracking_numbers.map do |tn| invoice['orderDelivery'] << { 'type' => '@ParcelDelivery', 'trackingNumber' => tn, } end rescue => error issue_error(AcumenOrderError.new( 500, 'process_invoice_response', 'Failed to load invoice records', { invoice_id: get_field_value(i, 'Invoice.Invoice_ID') }, error, )) end log('------------------------------------------------------------') log(":: parsed invoice #{invoice}") log('------------------------------------------------------------') invoice end end |