colissimo_label 0.10.0 → 0.15.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 CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA256:
3
- metadata.gz: 3a22b61de439cdc82fd0aa84681df72ddb77a9684c2a779ccfff59f26dadad4b
4
- data.tar.gz: f48aa5520d7506e839c1482a9df01c35c37ef5bf5ef2b6e091c1fcdab2e5f219
3
+ metadata.gz: 8a6695bec2480207d3e9479703468a8252941b2598944ac67b105330f9c7366a
4
+ data.tar.gz: e28880586b4cef27762d685a8774d800cc8e1b85f07ca4ec2f07532b7a5c3dd6
5
5
  SHA512:
6
- metadata.gz: 060fa43d23c1a77f125b2ec4075032845eb00217c61ba129dc6acff606cd3ebe5728faf6e040f9b7fb99dd87c65bb74aa1642c180cdcf4febca1270f65c15b85
7
- data.tar.gz: f2d2f7aee74e4b54d34d84e471be2cc7a8f7eef09cc01a094defc50f25d412f7a28597edf08ad07100793ed2cff33b0a82d0048cd1c33398db3c5a36b6a6bd2b
6
+ metadata.gz: a2dde7499384b99d861bdf13dd98909fdbb3385e0412bbfab0241096eabd070cbc9eb33d786c4c6e5793ab36bfe3b9433ae4eb74612421871823cee9448aa12d
7
+ data.tar.gz: 03dadf09a8be60b8c7da502d1da1363d5bc1aae17ecad0aede37e2d0bc573d7fc069296770f3b01b2e6655d2284588cb38837ffa91badd95c2e0a3975cac86bc
@@ -1,3 +1,23 @@
1
+ ## 0.15.0
2
+
3
+ - Comment insurance value
4
+
5
+ ## 0.14.0
6
+
7
+ - Ensure local path is present
8
+
9
+ ## 0.13.0
10
+
11
+ - Multiple improvements
12
+
13
+ ## 0.12.0
14
+
15
+ - Add Austria to mandatory signature countries
16
+
17
+ ## 0.11.0
18
+
19
+ - Add option to generate label with signature
20
+
1
21
  ## 0.10.0
2
22
 
3
23
  - Add Denmark to mandatory signature countries
data/README.md CHANGED
@@ -138,6 +138,12 @@ parcel_number = ColissimoLabel::GenerateLabel.new(
138
138
  ).perform
139
139
  ```
140
140
 
141
+ You can add the following option to require the signature:
142
+
143
+ ```
144
+ with_signature: true
145
+ ```
146
+
141
147
  For a national address and delivered to a relay point:
142
148
 
143
149
  ```ruby
@@ -12,8 +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)
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')
17
21
  @errors = []
18
22
  end
19
23
 
@@ -21,13 +25,14 @@ class ColissimoLabel::GenerateLabel
21
25
  response = perform_request
22
26
  status = response.code
23
27
  parts = response.to_a.last.force_encoding('BINARY').split('Content-ID: ')
24
- label_filename = @filename + '.pdf'
28
+ label_filename = @filename + '.' + file_format
29
+ local_path = ColissimoLabel.colissimo_local_path&.chomp('/')
25
30
 
26
31
  if ColissimoLabel.s3_bucket
27
32
  colissimo_pdf = ColissimoLabel.s3_bucket.object(ColissimoLabel.s3_path.chomp('/') + '/' + label_filename)
28
33
  colissimo_pdf.put(acl: 'public-read', body: parts[2])
29
34
  else
30
- File.open(ColissimoLabel.colissimo_local_path.chomp('/') + '/' + label_filename, 'wb') do |file|
35
+ File.open(local_path + '/' + label_filename, 'wb') do |file|
31
36
  file.write(parts[2])
32
37
  end
33
38
  end
@@ -39,15 +44,17 @@ class ColissimoLabel::GenerateLabel
39
44
  customs_pdf = ColissimoLabel.s3_bucket.object(ColissimoLabel.s3_path.chomp('/') + '/' + customs_filename)
40
45
  customs_pdf.put(acl: 'public-read', body: parts[3])
41
46
  else
42
- File.open(ColissimoLabel.colissimo_local_path.chomp('/') + '/' + customs_filename, 'wb') do |file|
47
+ File.open(local_path + '/' + customs_filename, 'wb') do |file|
43
48
  file.write(parts[3])
44
49
  end
45
50
  end
46
51
  end
47
52
 
48
- if status == 400
53
+ if status == 400 || status == 500
49
54
  error_message = response.body.to_s.encode('UTF-8', 'binary', invalid: :replace, undef: :replace, replace: '').scan(/"messageContent":"(.*?)"/).last&.first
50
55
  raise StandardError, error_message
56
+ elsif status == 503
57
+ raise StandardError, { message: 'Colissimo: Service Unavailable' }
51
58
  else
52
59
  if (response_message = response.body.to_s.encode('UTF-8', 'binary', invalid: :replace, undef: :replace, replace: '').scan(/"parcelNumber":"(.*?)",/).last)
53
60
  parcel_number = response_message.first
@@ -70,7 +77,7 @@ class ColissimoLabel::GenerateLabel
70
77
  "outputFormat": {
71
78
  "x": '0',
72
79
  "y": '0',
73
- "outputPrintingType": 'PDF_10x15_300dpi'
80
+ "outputPrintingType": @label_output_format
74
81
  },
75
82
  "letter": {
76
83
  "service": {
@@ -82,7 +89,8 @@ class ColissimoLabel::GenerateLabel
82
89
  },
83
90
  "parcel": {
84
91
  "weight": format_weight,
85
- "pickupLocationId": @pickup_id
92
+ "pickupLocationId": @pickup_id,
93
+ # "insuranceValue": @insurance_value
86
94
  }.compact,
87
95
  "sender": {
88
96
  "address": format_sender
@@ -104,14 +112,29 @@ class ColissimoLabel::GenerateLabel
104
112
  "https://ws.colissimo.fr/sls-ws/SlsServiceWSRest/2.0/#{service}"
105
113
  end
106
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
+
107
128
  def format_sender
108
129
  {
109
130
  "companyName": @sender_data[:company_name],
131
+ "lastName": @sender_data[:last_name],
132
+ "firstName": @sender_data[:first_name],
110
133
  "line2": @sender_data[:address],
111
134
  "city": @sender_data[:city],
112
135
  "zipCode": @sender_data[:postcode],
113
136
  "countryCode": @sender_data[:country_code]
114
- }
137
+ }.compact.transform_values(&:strip)
115
138
  end
116
139
 
117
140
  def format_addressee
@@ -140,7 +163,7 @@ class ColissimoLabel::GenerateLabel
140
163
  if require_customs?
141
164
  @customs_total_weight
142
165
  else
143
- '0.1'
166
+ @total_weight ? @total_weight : '0.1'
144
167
  end
145
168
  end
146
169
 
@@ -154,9 +177,9 @@ class ColissimoLabel::GenerateLabel
154
177
  "article": @customs_data.map { |customs|
155
178
  {
156
179
  "description": customs[:description],
157
- "quantity": customs[:quantity],
158
- "weight": customs[:weight],
159
- "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),
160
183
  "originCountry": customs[:country_code],
161
184
  "currency": customs[:currency_code],
162
185
  "hsCode": customs[:customs_code] # Objets d'art, de collection ou d'antiquité (https://pro.douane.gouv.fr/prodouane.asp)
@@ -181,7 +204,7 @@ class ColissimoLabel::GenerateLabel
181
204
  end
182
205
 
183
206
  def require_customs?
184
- %w[CH].include?(@destination_country)
207
+ %w[CH NO US].include?(@destination_country)
185
208
  end
186
209
 
187
210
  # Certains pays, comme l'Allemagne, requiert une signature pour la livraison
@@ -191,10 +214,12 @@ class ColissimoLabel::GenerateLabel
191
214
  # BPR : Colissimo - Point Retrait – en Bureau de Poste
192
215
  # A2P : Colissimo - Point Retrait – en relais Pickup ou en consigne Pickup Station
193
216
  def product_code
194
- if %w[DE IT ES GB LU NL DK].include?(@destination_country)
217
+ if %w[DE IT ES GB LU NL DK AT].include?(@destination_country)
195
218
  'DOS'
196
219
  elsif !@pickup_id.nil? && %w[FR].include?(@destination_country)
197
220
  @pickup_type || 'BPR'
221
+ elsif @with_signature
222
+ 'DOS'
198
223
  else
199
224
  'DOM'
200
225
  end
@@ -1,5 +1,5 @@
1
1
  # frozen_string_literal: true
2
2
 
3
3
  module ColissimoLabel
4
- VERSION = '0.10.0'.freeze
4
+ VERSION = '0.15.0'.freeze
5
5
  end
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.10.0
4
+ version: 0.15.0
5
5
  platform: ruby
6
6
  authors:
7
7
  - FloXcoder
8
8
  autorequire:
9
9
  bindir: exe
10
10
  cert_chain: []
11
- date: 2019-11-28 00:00:00.000000000 Z
11
+ date: 2020-08-07 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: rack
@@ -182,7 +182,7 @@ required_rubygems_version: !ruby/object:Gem::Requirement
182
182
  - !ruby/object:Gem::Version
183
183
  version: '0'
184
184
  requirements: []
185
- rubygems_version: 3.0.4
185
+ rubygems_version: 3.1.3
186
186
  signing_key:
187
187
  specification_version: 4
188
188
  summary: Generate Colissimo label for all countries