cargowise 0.6 → 0.7
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.
- data/CHANGELOG +7 -0
- data/README.markdown +4 -4
- data/lib/cargowise.rb +1 -0
- data/lib/cargowise/consol.rb +27 -0
- data/lib/cargowise/order.rb +2 -0
- data/lib/cargowise/order_search.rb +15 -0
- data/lib/cargowise/shipment.rb +22 -1
- metadata +4 -3
data/CHANGELOG
CHANGED
@@ -1,3 +1,10 @@
|
|
1
|
+
v0.7 - 31st August 2010
|
2
|
+
* new attribute Shipment#consols
|
3
|
+
* new method Shipment#transport_mode
|
4
|
+
* new method Shipment#orders
|
5
|
+
* new attribute Order#invoice_number
|
6
|
+
* new Order search method - Order.via(blah).by_shipment_number
|
7
|
+
|
1
8
|
v0.6 - 31st August 2010
|
2
9
|
* new methods Order#to_xml and Shipment#to_xml
|
3
10
|
* new attribute Shipment#invoices
|
data/README.markdown
CHANGED
@@ -32,10 +32,10 @@ need to register the URI and authentication details for the company you want to
|
|
32
32
|
:user => "user@example.com",
|
33
33
|
:password => "secret")
|
34
34
|
|
35
|
-
Cargowise::
|
36
|
-
|
37
|
-
|
38
|
-
|
35
|
+
Cargowise::Shipment.register(:ijs, :uri => "http://visibility.ijsglobal.com/Tracker/WebService/ShipmentService.asmx",
|
36
|
+
:code => "company_code",
|
37
|
+
:user => "user@example.com",
|
38
|
+
:password => "secret")
|
39
39
|
|
40
40
|
In a rails app the registration should be done in a file like
|
41
41
|
config/initializers/cargowise.rb.
|
data/lib/cargowise.rb
CHANGED
@@ -0,0 +1,27 @@
|
|
1
|
+
# coding: utf-8
|
2
|
+
|
3
|
+
module Cargowise
|
4
|
+
|
5
|
+
# Extra shipping detail associated with a Shipment. Not built
|
6
|
+
# directly, but available via the consols() attribute
|
7
|
+
# of the Shipment model.
|
8
|
+
#
|
9
|
+
class Consol < AbstractResult
|
10
|
+
|
11
|
+
attr_reader :master_bill, :console_mode, :transport_mode
|
12
|
+
attr_reader :vessel_name, :voyage_flight
|
13
|
+
attr_reader :load_port, :discharge_port
|
14
|
+
|
15
|
+
def initialize(node)
|
16
|
+
@node = node
|
17
|
+
|
18
|
+
@master = text_value("./MasterBill")
|
19
|
+
@console_mode = text_value("./ConsolMode")
|
20
|
+
@transport_mode = text_value("./TransportMode")
|
21
|
+
@vessel_name = text_value("./VesselName")
|
22
|
+
@voyage_flight = text_value("./VoyageFlight")
|
23
|
+
@load_port = text_value("./LoadPort")
|
24
|
+
@discharge_port = text_value("./DischargePort")
|
25
|
+
end
|
26
|
+
end
|
27
|
+
end
|
data/lib/cargowise/order.rb
CHANGED
@@ -23,6 +23,7 @@ module Cargowise
|
|
23
23
|
|
24
24
|
attr_reader :order_number, :order_status, :description, :datetime
|
25
25
|
attr_reader :order_total, :transport_mode, :container_mode
|
26
|
+
attr_reader :invoice_number
|
26
27
|
|
27
28
|
attr_reader :buyer_name
|
28
29
|
|
@@ -34,6 +35,7 @@ module Cargowise
|
|
34
35
|
@node = node
|
35
36
|
|
36
37
|
@order_number = text_value("./OrderIdentifier/OrderNumber")
|
38
|
+
@invoice_number = text_value("./OrderDetail/InvoiceNumber")
|
37
39
|
@order_status = text_value("./OrderDetail/OrderStatus")
|
38
40
|
@description = text_value("./OrderDetail/Description")
|
39
41
|
@datetime = time_value("./OrderDetail/OrderDateTime")
|
@@ -19,6 +19,21 @@ module Cargowise
|
|
19
19
|
OrdersClient.get_order_list(ep.code, ep.user, ep.password, filter_hash)
|
20
20
|
end
|
21
21
|
|
22
|
+
# find all orders with a ShipmentNumber that matches ref
|
23
|
+
#
|
24
|
+
def by_shipment_number(ref)
|
25
|
+
filter_hash = {
|
26
|
+
"tns:Filter" => {
|
27
|
+
"tns:Number" => {
|
28
|
+
"tns:NumberSearchField" => "ShipmentNumber",
|
29
|
+
"tns:NumberValue" => ref
|
30
|
+
}
|
31
|
+
}
|
32
|
+
}
|
33
|
+
OrdersClient.endpoint(endpoint_hash) # probably not threadsafe. oops.
|
34
|
+
OrdersClient.get_order_list(ep.code, ep.user, ep.password, filter_hash)
|
35
|
+
end
|
36
|
+
|
22
37
|
# find all orders still marked as incomplete.
|
23
38
|
#
|
24
39
|
def incomplete
|
data/lib/cargowise/shipment.rb
CHANGED
@@ -28,7 +28,7 @@ module Cargowise
|
|
28
28
|
|
29
29
|
attr_reader :consignee_name
|
30
30
|
|
31
|
-
attr_reader :documents, :invoices
|
31
|
+
attr_reader :consols, :documents, :invoices
|
32
32
|
|
33
33
|
def initialize(node)
|
34
34
|
@node = node
|
@@ -47,6 +47,10 @@ module Cargowise
|
|
47
47
|
|
48
48
|
@consignee_name = text_value("./Consignee/OrganisationDetails/Name")
|
49
49
|
|
50
|
+
@consols = node_array("./Consols/Consol").map { |node|
|
51
|
+
Consol.new(node)
|
52
|
+
}
|
53
|
+
|
50
54
|
@documents = node_array("./DocumentLinks/DocumentLink").map { |node|
|
51
55
|
Document.new(node)
|
52
56
|
}.sort_by { |doc|
|
@@ -60,9 +64,26 @@ module Cargowise
|
|
60
64
|
}
|
61
65
|
end
|
62
66
|
|
67
|
+
# returns the raw XML string this shipment is based on
|
68
|
+
#
|
63
69
|
def to_xml
|
64
70
|
@node.to_xml
|
65
71
|
end
|
66
72
|
|
73
|
+
# returns a space separated string with all transport modes being used
|
74
|
+
# to move this shipment
|
75
|
+
#
|
76
|
+
def transport_mode
|
77
|
+
@consols.map { |con| con.transport_mode }.uniq.sort.join(" ")
|
78
|
+
end
|
79
|
+
|
80
|
+
# lookup full Cargowise::Order objects for each order on this shipment.
|
81
|
+
#
|
82
|
+
# 'via' is a symbol indicating which API endpoint to lookup.
|
83
|
+
#
|
84
|
+
def orders(via)
|
85
|
+
@orders ||= Cargowise::Order.via(via).by_shipment_number(self.number)
|
86
|
+
end
|
87
|
+
|
67
88
|
end
|
68
89
|
end
|
metadata
CHANGED
@@ -1,12 +1,12 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: cargowise
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
hash:
|
4
|
+
hash: 5
|
5
5
|
prerelease: false
|
6
6
|
segments:
|
7
7
|
- 0
|
8
|
-
-
|
9
|
-
version: "0.
|
8
|
+
- 7
|
9
|
+
version: "0.7"
|
10
10
|
platform: ruby
|
11
11
|
authors:
|
12
12
|
- James Healy
|
@@ -60,6 +60,7 @@ extra_rdoc_files: []
|
|
60
60
|
files:
|
61
61
|
- lib/cargowise/shipment.rb
|
62
62
|
- lib/cargowise/shipments_client.rb
|
63
|
+
- lib/cargowise/consol.rb
|
63
64
|
- lib/cargowise/invoice.rb
|
64
65
|
- lib/cargowise/abstract_client.rb
|
65
66
|
- lib/cargowise/abstract_search.rb
|