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

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