czech_post_b2b_client 1.2.8 → 1.3.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: c3f8150daa70de566a1a90f4287c3bb29f1547e9269409e573b6e7521a446df5
4
- data.tar.gz: 23a3271bcf33470fc45e85d4e1db58ee9ea192a864fc0266c887acc9a2d6b56b
3
+ metadata.gz: d3625c919136ebf4fa10070dee900b1491f19880a7cdc96c77cc5029e95ce09f
4
+ data.tar.gz: 4e66d3911f876a85215306b6ac21f6d2fc8629acae3aba75ca6b0a966af61468
5
5
  SHA512:
6
- metadata.gz: bbd09471e42a1af7f0f4bb7e8c6c34309e083dd224ad392ae11a84ec15c1aebedc178782f944a51d5be678a455daa769171dc02e2bf4d8cf50d18d0f98c9c643
7
- data.tar.gz: 84bdfde9c41917ffa85c0f191123aca5a6d8b6373907c4969d3bf38c65b8782e6d4466e912a3a0db48c258cf089ca8ca74ea7d5b27f421b5f0ff7ae5c6615b85
6
+ metadata.gz: f3b353230a9e87d89d81a093d970292001d357efb26dea1705d904c79061350eea2a7e3e38f843b6670604c0f6393877d07624059a1917d10fd3d3ecec93cb5c
7
+ data.tar.gz: ae7566f678cd5235daed64d53dac229f4a6352e44c303f88b9f39d29519416110e0f3faf042b46c7145dc9301da6e1208cd7fe9e373737f8530646eda859ff94
data/.rubocop.yml CHANGED
@@ -13,7 +13,10 @@ AllCops:
13
13
  - "**/*.jb"
14
14
  Exclude:
15
15
  - "bin/*"
16
- Documentation:
16
+ - "documents/**/*"
17
+ - "test/fixtures/**/*"
18
+
19
+ Style/Documentation:
17
20
  Enabled: false
18
21
  Layout/LineLength:
19
22
  Max: 140
data/CHANGELOG.md CHANGED
@@ -2,8 +2,14 @@
2
2
 
3
3
  All changes to the gem are documented here.
4
4
 
5
+ ## [1.3.0] - 2022-04-07
6
+ - checked currently available Print Templates codes
7
+ - enhanced address sheet printing with ability to print ZPL sheets (templates 200, 201 and 202).
8
+ Result of `AddressSheetGenerator` now have `pdf_content` and `zpl_content`.
9
+ - found new(?) API from Czech Post , see `documents/B2B-ZSKService-1.4.0.yaml` and https://www.ceskaposta.cz/napi/b2b.
10
+
5
11
  ## [1.2.8] - 2022-03-22
6
- - added new response codes
12
+ - added new response codes
7
13
 
8
14
  ## [1.2.6] - 2020-10-27
9
15
 
data/README.md CHANGED
@@ -1,5 +1,11 @@
1
1
 
2
2
  # FRESH NEWS
3
+ 7.4.2022
4
+ Finally there is some online documentation about nAPI of Czech post (https://www.ceskaposta.cz/napi/b2b)
5
+ Not yet checked if this is the same api we use or new one. Seems that authorization is different.
6
+
7
+
8
+ 26.8.2020
3
9
  After full usage in production (vyvolej.to, squared.one), we found that Czech POst have trouble with `parcelServiceSync` (maybe `sendParcels` too). When You try to register package with `:customs_documents`, you get `INVALID_BATCH` response with no error, but with `parcelCode`:
4
10
  ```
5
11
  <?xml version="1.0" encoding="UTF-8"?>
@@ -9,6 +9,10 @@ module CzechPostB2bClient
9
9
  class Base
10
10
  class << self
11
11
  attr_reader :id, :description, :page_dimensions
12
+
13
+ def content_type
14
+ :pdf
15
+ end
12
16
  end
13
17
  end
14
18
 
@@ -132,12 +136,6 @@ module CzechPostB2bClient
132
136
  @page_dimensions = 'unverified'
133
137
  end
134
138
 
135
- class CODVoucherForCSOB < Base
136
- @id = 13
137
- @description = 'Dobírková složenka ČSOB'
138
- @page_dimensions = 'unverified'
139
- end
140
-
141
139
  class RRLabels3x8 < Base
142
140
  @id = 26
143
141
  @description = 'štítky pro RR : 3x8'
@@ -175,29 +173,23 @@ module CzechPostB2bClient
175
173
  @page_dimensions = 'A5 landscape (210 × 148 mm)'
176
174
  end
177
175
 
178
- class CN22FourOnPage < Base
179
- @id = 74
180
- @description = 'Celní prohlášení CN22 : 4x (A4)'
181
- @page_dimensions = 'unverified A4'
182
- end
183
-
184
- class CN22WithCK < Base
185
- @id = 75
186
- @description = 'Celní prohlášení CN22 s ČK (A4)'
187
- @page_dimensions = 'unverified A4'
188
- end
189
-
190
- class CN22WithCKFourOnPage < Base
191
- @id = 76
192
- @description = 'Celní prohlášení CN22 s ČK : 4x (A4)'
193
- @page_dimensions = 'unverified A4'
194
- end
195
- end
196
-
197
- class CN22FourOnPage < Base
198
- @id = 74
199
- @description = 'Celní prohlášení CN22 : 4x'
200
- @page_dimensions = 'A4 portrait (210 × 297 mm)'
176
+ # class CN22FourOnPage < Base
177
+ # @id = 74
178
+ # @description = 'Celní prohlášení CN22 : 4x (A4)'
179
+ # @page_dimensions = 'unverified A4'
180
+ # end
181
+
182
+ # class CN22WithCK < Base
183
+ # @id = 75
184
+ # @description = 'Celní prohlášení CN22 s ČK (A4)'
185
+ # @page_dimensions = 'unverified A4'
186
+ # end
187
+
188
+ # class CN22WithCKFourOnPage < Base
189
+ # @id = 76
190
+ # @description = 'Celní prohlášení CN22 s ČK : 4x (A4)'
191
+ # @page_dimensions = 'unverified A4'
192
+ # end
201
193
  end
202
194
 
203
195
  module HarmonizedLabel
@@ -232,20 +224,28 @@ module CzechPostB2bClient
232
224
  @description = 'Harmonizovaný štítek bianco - na výšku'
233
225
  @page_dimensions = 'A6 landscape (148 × 105 mm)'
234
226
  end
227
+ end
235
228
 
236
- class ZebraBianco105x148 < Base
229
+ module ZebraLabel
230
+ class Base < CzechPostB2bClient::PrintingTemplates::Base
231
+ def self.content_type
232
+ :zpl
233
+ end
234
+ end
235
+
236
+ class Bianco105x148 < ZebraLabel::Base
237
237
  @id = 200
238
238
  @description = 'Harmonizovaný štítek bianco - (Zebra - 105x148); nejde o PDF'
239
239
  @page_dimensions = 'unverified 105 × 148 mm'
240
240
  end
241
241
 
242
- class ZebraBianco100x150 < Base
242
+ class Bianco100x150 < ZebraLabel::Base
243
243
  @id = 201
244
244
  @description = 'Harmonizovaný štítek bianco - (Zebra - 100x150); nejde o PDF'
245
245
  @page_dimensions = 'unverified 100 × 150 mm'
246
246
  end
247
247
 
248
- class ZebraBianco100x125 < Base
248
+ class Bianco100x125 < ZebraLabel::Base
249
249
  @id = 202
250
250
  @description = 'Harmonizovaný štítek bianco - (Zebra - 100x125); nejde o PDF'
251
251
  @page_dimensions = 'unverified 100 × 125 mm'
@@ -257,5 +257,12 @@ module CzechPostB2bClient
257
257
  base_class = CzechPostB2bClient::PrintingTemplates::Base
258
258
  ObjectSpace.each_object(base_class.singleton_class).reject { |c| c == base_class }
259
259
  end
260
+
261
+ def self.find(id)
262
+ klass = all_classes.detect { |k| k.id == id }
263
+ raise "PrintingTemplate with id: #{id} is unknown!" unless klass
264
+
265
+ klass
266
+ end
260
267
  end
261
268
  end
@@ -8,8 +8,8 @@ module CzechPostB2bClient
8
8
  def build_result
9
9
  super
10
10
  @result[:response][:state] = state_hash_from(printing_response_header_result['doPrintingStateResponse'])
11
- @result[:printings] = { options: options_hash,
12
- pdf_content: pdf_content }
11
+ opt_hash = options_hash
12
+ @result[:printings] = { options: opt_hash }.merge(content_hash(opt_hash[:template_id]))
13
13
  end
14
14
 
15
15
  def options_hash
@@ -24,11 +24,23 @@ module CzechPostB2bClient
24
24
  }
25
25
  end
26
26
 
27
- def pdf_content
28
- pdf_content_encoded = response_root_node.dig('doPrintingDataResult', 'file')
29
- return nil if pdf_content_encoded.nil?
27
+ def content_hash(template_id)
28
+ if zpl_template?(template_id)
29
+ { zpl_content: response_content.force_encoding('utf-8') }
30
+ else
31
+ { pdf_content: response_content }
32
+ end
33
+ end
34
+
35
+ def zpl_template?(template_id)
36
+ CzechPostB2bClient::PrintingTemplates.find(template_id).content_type == :zpl
37
+ end
38
+
39
+ def response_content
40
+ content_encoded = response_root_node.dig('doPrintingDataResult', 'file')
41
+ return nil if content_encoded.nil?
30
42
 
31
- ::Base64.decode64(pdf_content_encoded)
43
+ ::Base64.decode64(content_encoded)
32
44
  end
33
45
 
34
46
  def response_root_node_name
@@ -5,7 +5,7 @@ module CzechPostB2bClient
5
5
  class AddressSheetsGenerator < CzechPostB2bClient::Services::Communicator
6
6
  attr_reader :parcel_codes, :options
7
7
 
8
- AddressSheetsGeneratorResult = Struct.new(:pdf_content, :state_text, :state_code, keyword_init: true)
8
+ AddressSheetsGeneratorResult = Struct.new(:pdf_content, :zpl_content, :state_text, :state_code, keyword_init: true)
9
9
 
10
10
  def initialize(parcel_codes:, options: {})
11
11
  super()
@@ -41,6 +41,7 @@ module CzechPostB2bClient
41
41
 
42
42
  def build_result_from(response_hash)
43
43
  AddressSheetsGeneratorResult.new(pdf_content: response_hash.dig(:printings, :pdf_content),
44
+ zpl_content: response_hash.dig(:printings, :zpl_content),
44
45
  state_text: response_hash.dig(:response, :state, :text),
45
46
  state_code: response_hash.dig(:response, :state, :code))
46
47
  end
@@ -1,5 +1,5 @@
1
1
  # frozen_string_literal: true
2
2
 
3
3
  module CzechPostB2bClient
4
- VERSION = '1.2.8'
4
+ VERSION = '1.3.0'
5
5
  end
metadata CHANGED
@@ -1,14 +1,14 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: czech_post_b2b_client
3
3
  version: !ruby/object:Gem::Version
4
- version: 1.2.8
4
+ version: 1.3.0
5
5
  platform: ruby
6
6
  authors:
7
7
  - Petr Mlčoch
8
8
  autorequire:
9
9
  bindir: exe
10
10
  cert_chain: []
11
- date: 2022-03-22 00:00:00.000000000 Z
11
+ date: 2022-04-07 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: ox