colissimo_label 0.12.0 → 0.13.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 +4 -4
- data/CHANGELOG.md +4 -0
- data/lib/colissimo_label/generate_label.rb +33 -11
- data/lib/colissimo_label/version.rb +1 -1
- metadata +2 -2
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA256:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: 3839699e6df747be915fcfdbcdf6e4c1379d5a4416d8abb2192c6f375e304b20
|
4
|
+
data.tar.gz: af49d9fa2eabdee0eab4e7f66a26143936c6bad91ce3941c75909b92b97fbb9e
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: a75c052a57417f1026dc313bf2a1145864fdf0a33c0d5d01a226c6ce7128ee06d9658ee19fcc81739c4c6a09ea14aa0fe7cfdcada17db27e7fca2a36025a0887
|
7
|
+
data.tar.gz: ff5615cbdc6966a449edbfca3de8fc1410ca02ff931c0b0ed1f901b244260c5318e216425c7f39e1f51d3d6020f215e7dce122268026edeea28b8d25c435e8d1
|
data/CHANGELOG.md
CHANGED
@@ -12,9 +12,12 @@ class ColissimoLabel::GenerateLabel
|
|
12
12
|
@addressee_data = addressee_data
|
13
13
|
@pickup_id = options.fetch(:pickup_id, nil)
|
14
14
|
@pickup_type = options.fetch(:pickup_type, nil)
|
15
|
+
@total_weight = options.fetch(:total_weight, nil)
|
15
16
|
@customs_total_weight = options.fetch(:customs_total_weight, nil)
|
16
17
|
@customs_data = options.fetch(:customs_data, nil)
|
17
18
|
@with_signature = options.fetch(:with_signature, false)
|
19
|
+
@insurance_value = options.fetch(:insurance_value, false)
|
20
|
+
@label_output_format = options.fetch(:label_output_format, 'PDF_10x15_300dpi')
|
18
21
|
@errors = []
|
19
22
|
end
|
20
23
|
|
@@ -22,13 +25,14 @@ class ColissimoLabel::GenerateLabel
|
|
22
25
|
response = perform_request
|
23
26
|
status = response.code
|
24
27
|
parts = response.to_a.last.force_encoding('BINARY').split('Content-ID: ')
|
25
|
-
label_filename = @filename + '.
|
28
|
+
label_filename = @filename + '.' + file_format
|
29
|
+
local_path = ColissimoLabel.colissimo_local_path.chomp('/')
|
26
30
|
|
27
31
|
if ColissimoLabel.s3_bucket
|
28
32
|
colissimo_pdf = ColissimoLabel.s3_bucket.object(ColissimoLabel.s3_path.chomp('/') + '/' + label_filename)
|
29
33
|
colissimo_pdf.put(acl: 'public-read', body: parts[2])
|
30
34
|
else
|
31
|
-
File.open(
|
35
|
+
File.open(local_path + '/' + label_filename, 'wb') do |file|
|
32
36
|
file.write(parts[2])
|
33
37
|
end
|
34
38
|
end
|
@@ -40,7 +44,7 @@ class ColissimoLabel::GenerateLabel
|
|
40
44
|
customs_pdf = ColissimoLabel.s3_bucket.object(ColissimoLabel.s3_path.chomp('/') + '/' + customs_filename)
|
41
45
|
customs_pdf.put(acl: 'public-read', body: parts[3])
|
42
46
|
else
|
43
|
-
File.open(
|
47
|
+
File.open(local_path + '/' + customs_filename, 'wb') do |file|
|
44
48
|
file.write(parts[3])
|
45
49
|
end
|
46
50
|
end
|
@@ -49,6 +53,8 @@ class ColissimoLabel::GenerateLabel
|
|
49
53
|
if status == 400
|
50
54
|
error_message = response.body.to_s.encode('UTF-8', 'binary', invalid: :replace, undef: :replace, replace: '').scan(/"messageContent":"(.*?)"/).last&.first
|
51
55
|
raise StandardError, error_message
|
56
|
+
elsif status == 503
|
57
|
+
raise StandardError, { message: 'Colissimo: Service Unavailable' }
|
52
58
|
else
|
53
59
|
if (response_message = response.body.to_s.encode('UTF-8', 'binary', invalid: :replace, undef: :replace, replace: '').scan(/"parcelNumber":"(.*?)",/).last)
|
54
60
|
parcel_number = response_message.first
|
@@ -71,7 +77,7 @@ class ColissimoLabel::GenerateLabel
|
|
71
77
|
"outputFormat": {
|
72
78
|
"x": '0',
|
73
79
|
"y": '0',
|
74
|
-
"outputPrintingType":
|
80
|
+
"outputPrintingType": @label_output_format
|
75
81
|
},
|
76
82
|
"letter": {
|
77
83
|
"service": {
|
@@ -83,7 +89,8 @@ class ColissimoLabel::GenerateLabel
|
|
83
89
|
},
|
84
90
|
"parcel": {
|
85
91
|
"weight": format_weight,
|
86
|
-
"pickupLocationId": @pickup_id
|
92
|
+
"pickupLocationId": @pickup_id,
|
93
|
+
"insuranceValue": @insurance_value
|
87
94
|
}.compact,
|
88
95
|
"sender": {
|
89
96
|
"address": format_sender
|
@@ -105,14 +112,29 @@ class ColissimoLabel::GenerateLabel
|
|
105
112
|
"https://ws.colissimo.fr/sls-ws/SlsServiceWSRest/2.0/#{service}"
|
106
113
|
end
|
107
114
|
|
115
|
+
def file_format
|
116
|
+
case @label_output_format
|
117
|
+
when 'PDF_A4_300dpi', 'PDF_10x15_300dpi'
|
118
|
+
'pdf'
|
119
|
+
when 'ZPL_10x15_300dpi', 'ZPL_10x15_203dpi'
|
120
|
+
'zpl'
|
121
|
+
when 'DPL_10x15_300dpi', 'DPL_10x15_203dpi'
|
122
|
+
'dpl'
|
123
|
+
else
|
124
|
+
'pdf'
|
125
|
+
end
|
126
|
+
end
|
127
|
+
|
108
128
|
def format_sender
|
109
129
|
{
|
110
130
|
"companyName": @sender_data[:company_name],
|
131
|
+
"lastName": @sender_data[:last_name],
|
132
|
+
"firstName": @sender_data[:first_name],
|
111
133
|
"line2": @sender_data[:address],
|
112
134
|
"city": @sender_data[:city],
|
113
135
|
"zipCode": @sender_data[:postcode],
|
114
136
|
"countryCode": @sender_data[:country_code]
|
115
|
-
}
|
137
|
+
}.compact.transform_values(&:strip)
|
116
138
|
end
|
117
139
|
|
118
140
|
def format_addressee
|
@@ -141,7 +163,7 @@ class ColissimoLabel::GenerateLabel
|
|
141
163
|
if require_customs?
|
142
164
|
@customs_total_weight
|
143
165
|
else
|
144
|
-
'0.1'
|
166
|
+
@total_weight ? @total_weight : '0.1'
|
145
167
|
end
|
146
168
|
end
|
147
169
|
|
@@ -155,9 +177,9 @@ class ColissimoLabel::GenerateLabel
|
|
155
177
|
"article": @customs_data.map { |customs|
|
156
178
|
{
|
157
179
|
"description": customs[:description],
|
158
|
-
"quantity": customs[:quantity],
|
159
|
-
"weight": customs[:weight],
|
160
|
-
"value": customs[:item_price],
|
180
|
+
"quantity": customs[:quantity]&.to_i,
|
181
|
+
"weight": customs[:weight]&.to_f.round(2),
|
182
|
+
"value": customs[:item_price]&.to_f.round(2),
|
161
183
|
"originCountry": customs[:country_code],
|
162
184
|
"currency": customs[:currency_code],
|
163
185
|
"hsCode": customs[:customs_code] # Objets d'art, de collection ou d'antiquité (https://pro.douane.gouv.fr/prodouane.asp)
|
@@ -182,7 +204,7 @@ class ColissimoLabel::GenerateLabel
|
|
182
204
|
end
|
183
205
|
|
184
206
|
def require_customs?
|
185
|
-
%w[CH].include?(@destination_country)
|
207
|
+
%w[CH NO US].include?(@destination_country)
|
186
208
|
end
|
187
209
|
|
188
210
|
# Certains pays, comme l'Allemagne, requiert une signature pour la livraison
|
metadata
CHANGED
@@ -1,14 +1,14 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: colissimo_label
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 0.
|
4
|
+
version: 0.13.0
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- FloXcoder
|
8
8
|
autorequire:
|
9
9
|
bindir: exe
|
10
10
|
cert_chain: []
|
11
|
-
date: 2020-
|
11
|
+
date: 2020-08-07 00:00:00.000000000 Z
|
12
12
|
dependencies:
|
13
13
|
- !ruby/object:Gem::Dependency
|
14
14
|
name: rack
|