colissimo_label 0.12.0 → 0.13.0

Sign up to get free protection for your applications and to get access to all the features.
checksums.yaml CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA256:
3
- metadata.gz: ca83c743c1c77cb16b1f6b69affd27a9cef0f8764ac8e040e0dc1140c7b6ca00
4
- data.tar.gz: '085eb898be66d652bc0ec3d3956d8c85d45a7a057d51bdaba9f1a0735d4b2b90'
3
+ metadata.gz: 3839699e6df747be915fcfdbcdf6e4c1379d5a4416d8abb2192c6f375e304b20
4
+ data.tar.gz: af49d9fa2eabdee0eab4e7f66a26143936c6bad91ce3941c75909b92b97fbb9e
5
5
  SHA512:
6
- metadata.gz: b062b3410066ffe720a0964ef55e38549cdfa46bcf28baa3ee453cdb21e69c89946ea379c81115e39da9d78c4888164749d93d999495ff5a3afa385920c6af96
7
- data.tar.gz: 53da88d14f748ef7af9c6c32aa2146df98f0afb29809df1a66e5b3dcc052cdedaab1aef2ff27ba5e695da47fade9071715273a0fb7efa2e1ff4738c52f77eb32
6
+ metadata.gz: a75c052a57417f1026dc313bf2a1145864fdf0a33c0d5d01a226c6ce7128ee06d9658ee19fcc81739c4c6a09ea14aa0fe7cfdcada17db27e7fca2a36025a0887
7
+ data.tar.gz: ff5615cbdc6966a449edbfca3de8fc1410ca02ff931c0b0ed1f901b244260c5318e216425c7f39e1f51d3d6020f215e7dce122268026edeea28b8d25c435e8d1
@@ -1,3 +1,7 @@
1
+ ## 0.13.0
2
+
3
+ - Multiple improvements
4
+
1
5
  ## 0.12.0
2
6
 
3
7
  - Add Austria to mandatory signature countries
@@ -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 + '.pdf'
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(ColissimoLabel.colissimo_local_path.chomp('/') + '/' + label_filename, 'wb') do |file|
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(ColissimoLabel.colissimo_local_path.chomp('/') + '/' + customs_filename, 'wb') do |file|
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": 'PDF_10x15_300dpi'
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
@@ -1,5 +1,5 @@
1
1
  # frozen_string_literal: true
2
2
 
3
3
  module ColissimoLabel
4
- VERSION = '0.12.0'.freeze
4
+ VERSION = '0.13.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.12.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-05-18 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