elibri_onix 0.5.8 → 0.5.15
Sign up to get free protection for your applications and to get access to all the features.
- checksums.yaml +4 -4
- data/lib/elibri_onix/onix_3_0/contributor.rb +18 -9
- data/lib/elibri_onix/onix_3_0/language.rb +9 -7
- data/lib/elibri_onix/onix_3_0/product.rb +64 -16
- data/lib/elibri_onix/onix_3_0/publisher_subject.rb +32 -0
- data/lib/elibri_onix/onix_3_0/publishing_date.rb +6 -6
- data/lib/elibri_onix/onix_3_0/sender.rb +7 -15
- data/lib/elibri_onix/releases.rb +1 -1
- data/lib/elibri_onix/version.rb +1 -1
- data/test/elibri_product_form_features_test.rb +20 -0
- data/test/elibri_subjects_test.rb +6 -0
- data/test/fixtures/onix_board_game_example.xml +163 -0
- data/test/fixtures/onix_puzzle_example.xml +148 -0
- data/test/fixtures/onix_subjects_example.xml +0 -15
- metadata +7 -4
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA256:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: a7367d6b1d07cbd4a161bbd6a7ae0760466d4b6b3ace59975e06f026573e5944
|
4
|
+
data.tar.gz: 22f863fc8e21306ed1dbf320fa7efa3c20f18f55932cae3795e9c32d60c98f36
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: 907a89cfdf1d7431eeafc4b98fb27f8eacf7145cd2c396351f53eddac38e3aa253fae78a097a7a3d2103581b864b25fd43437abe0e3d21c101ea492cf1c2017c
|
7
|
+
data.tar.gz: fc336cb061e06884535668ef61869a5c4f7b06eb327c8bddf2f49af9a54b603cf1cdd41b67330197193f92e4029a7996892000f92a70b16d7570ee7292c2b0c2
|
@@ -7,7 +7,7 @@ module Elibri
|
|
7
7
|
include ExternalId
|
8
8
|
include ExternalTimestamp
|
9
9
|
include Inspector
|
10
|
-
|
10
|
+
|
11
11
|
#from ONIX documentation:
|
12
12
|
#Authorship and other forms of contribution are described by repeats of the <Contributor> composite,
|
13
13
|
#within which the recommended form of representation of a person name is the structured data element
|
@@ -16,20 +16,20 @@ module Elibri
|
|
16
16
|
#for example if a contributor is referenced both by their real name and by a pseudonym,
|
17
17
|
#or by the name given on the title page and by an authority-controlled name.
|
18
18
|
#In addition, more than one representation of the same name may be sent.
|
19
|
-
|
19
|
+
|
20
20
|
#:nodoc:
|
21
21
|
ATTRIBUTES =
|
22
22
|
[
|
23
23
|
:number, :role, :person_name, :from_language, :titles_before_names, :names_before_key, :prefix_to_key,
|
24
24
|
:key_names, :names_after_key, :biographical_note, :unnamed_persons, :role_name
|
25
25
|
]
|
26
|
-
|
26
|
+
|
27
27
|
#:nodoc:
|
28
28
|
RELATIONS =
|
29
29
|
[
|
30
30
|
:inspect_include_fields
|
31
31
|
]
|
32
|
-
|
32
|
+
|
33
33
|
#:nodoc:
|
34
34
|
attr_reader :number
|
35
35
|
|
@@ -41,6 +41,9 @@ module Elibri
|
|
41
41
|
#pełne imię i nazwisko - to pole jest zawsze uzupełnione
|
42
42
|
attr_reader :person_name
|
43
43
|
|
44
|
+
#jednak czasami, nie ma :person_name, jest za to :person_name_inverted - e-isbn
|
45
|
+
attr_reader :person_name_inverted
|
46
|
+
|
44
47
|
#w przypadku tłumacza kod języka oryginału, lista języków dostępna pod adresem
|
45
48
|
#https://github.com/elibri/elibri_onix_dict/blob/master/lib/elibri_onix_dict/onix_3_0/serialized/LanguageCode.yml
|
46
49
|
attr_reader :from_language
|
@@ -56,7 +59,7 @@ module Elibri
|
|
56
59
|
|
57
60
|
#nazwisko lub nazwiska
|
58
61
|
attr_reader :key_names
|
59
|
-
|
62
|
+
|
60
63
|
#dodatkowe oznaczenia, np. OHP (zakon)
|
61
64
|
attr_reader :names_after_key
|
62
65
|
|
@@ -65,16 +68,20 @@ module Elibri
|
|
65
68
|
|
66
69
|
#:nodoc:
|
67
70
|
attr_reader :unnamed_persons
|
68
|
-
|
71
|
+
|
72
|
+
attr_reader :corporate_name
|
73
|
+
attr_reader :corporate_name_inverted
|
74
|
+
|
69
75
|
#reprezentacja danych w xml-u
|
70
76
|
attr_reader :to_xml
|
71
|
-
|
77
|
+
|
72
78
|
|
73
79
|
def initialize(data)
|
74
80
|
@to_xml = data.to_s
|
75
81
|
@number = data.at_css('SequenceNumber').try(:text).try(:to_i)
|
76
82
|
@role = data.at_css('ContributorRole').try(:text)
|
77
83
|
@person_name = data.at_css('PersonName').try(:text)
|
84
|
+
@person_name_inverted = data.at_css('PersonNameInverted').try(:text)
|
78
85
|
@from_language = data.at_css('FromLanguage').try(:text)
|
79
86
|
@titles_before_names = data.at_css('TitlesBeforeNames').try(:text)
|
80
87
|
@names_before_key = data.at_css('NamesBeforeKey').try(:text)
|
@@ -83,18 +90,20 @@ module Elibri
|
|
83
90
|
@names_after_key = data.at_css('NamesAfterKey').try(:text)
|
84
91
|
@biographical_note = data.at_css('BiographicalNote').try(:text)
|
85
92
|
@unnamed_persons = data.at_css('UnnamedPersons').try(:text)
|
93
|
+
@corporate_name = data.at_css('CorporateName').try(:text)
|
94
|
+
@corporate_name_inverted = data.at_css('CorporateNameInverted').try(:text)
|
86
95
|
set_eid(data)
|
87
96
|
set_datestamp(data)
|
88
97
|
end
|
89
98
|
|
90
99
|
def role_name
|
91
|
-
Elibri::ONIX::Dict::Release_3_0::ContributorRole.find_by_onix_code(@role).const_name.downcase
|
100
|
+
Elibri::ONIX::Dict::Release_3_0::ContributorRole.find_by_onix_code(@role).const_name.downcase rescue nil
|
92
101
|
end
|
93
102
|
|
94
103
|
def inspect_include_fields
|
95
104
|
[:role_name, :person_name]
|
96
105
|
end
|
97
|
-
|
106
|
+
|
98
107
|
end
|
99
108
|
|
100
109
|
end
|
@@ -5,23 +5,23 @@ module Elibri
|
|
5
5
|
module Release_3_0
|
6
6
|
|
7
7
|
class Language
|
8
|
-
|
8
|
+
|
9
9
|
#from ONIX documentation:
|
10
10
|
#An optional and repeatable group of data elements which together represent a language, and specify its role and,
|
11
11
|
#where required, whether it is a country variant.
|
12
|
-
|
12
|
+
|
13
13
|
include Inspector
|
14
14
|
|
15
15
|
#:nodoc:
|
16
16
|
ATTRIBUTES = [
|
17
17
|
:role, :code, :role_name, :language
|
18
18
|
]
|
19
|
-
|
19
|
+
|
20
20
|
#:nodoc:
|
21
21
|
RELATIONS = [
|
22
22
|
:inspect_include_fields
|
23
23
|
]
|
24
|
-
|
24
|
+
|
25
25
|
#:doc:
|
26
26
|
#kod onix roli, np. '01'
|
27
27
|
#pełna lista ról: https://github.com/elibri/elibri_onix_dict/blob/master/lib/elibri_onix_dict/onix_3_0/serialized/LanguageRole.yml
|
@@ -33,7 +33,7 @@ module Elibri
|
|
33
33
|
|
34
34
|
#reprezentacja w xml
|
35
35
|
attr_reader :to_xml
|
36
|
-
|
36
|
+
|
37
37
|
def initialize(data)
|
38
38
|
@to_xml = data.to_s
|
39
39
|
@role = data.at_css('LanguageRole').try(:text)
|
@@ -44,10 +44,12 @@ module Elibri
|
|
44
44
|
def role_name
|
45
45
|
Elibri::ONIX::Dict::Release_3_0::LanguageRole.find_by_onix_code(@role).const_name.downcase
|
46
46
|
end
|
47
|
-
|
47
|
+
|
48
48
|
#język, np. 'polski'
|
49
49
|
def language
|
50
|
-
Elibri::ONIX::Dict::Release_3_0::LanguageCode.find_by_onix_code(@code).name(:pl).downcase
|
50
|
+
Elibri::ONIX::Dict::Release_3_0::LanguageCode.find_by_onix_code(@code).name(:pl).downcase rescue nil
|
51
|
+
rescue
|
52
|
+
|
51
53
|
end
|
52
54
|
|
53
55
|
def inspect_include_fields
|
@@ -11,15 +11,17 @@ module Elibri
|
|
11
11
|
#:nodoc:
|
12
12
|
ATTRIBUTES =
|
13
13
|
[
|
14
|
-
:height, :width, :thickness, :weight, :ean, :isbn13, :number_of_pages, :duration,
|
15
|
-
:file_size, :publisher_name, :publisher_id, :imprint_name, :current_state, :reading_age_from, :reading_age_to,
|
14
|
+
:height, :width, :thickness, :weight, :ean, :isbn13, :number_of_pages, :duration,
|
15
|
+
:file_size, :publisher_name, :publisher_id, :imprint_name, :current_state, :reading_age_from, :reading_age_to,
|
16
16
|
:table_of_contents, :description, :reviews, :excerpts, :series, :title, :subtitle, :collection_title,
|
17
17
|
:collection_part, :full_title, :original_title, :trade_title, :parsed_publishing_date, :record_reference,
|
18
|
-
:deletion_text, :cover_type, :cover_price, :vat, :pkwiu, :additional_info, :product_composition,
|
18
|
+
:deletion_text, :cover_type, :cover_price, :vat, :pkwiu, :additional_info, :product_composition,
|
19
19
|
:publisher, :product_form, :no_contributor, :edition_statement, :edition_type_onix_code, :number_of_illustrations, :publishing_status,
|
20
20
|
:publishing_date, :premiere, :front_cover, :series_names, :city_of_publication,
|
21
21
|
:preview_exists, :short_description, :sale_restricted_to_poland,
|
22
|
-
:technical_protection_onix_code, :unlimited_licence, :hyphenated_isbn, :preorder_embargo_date, :additional_trade_information
|
22
|
+
:technical_protection_onix_code, :unlimited_licence, :hyphenated_isbn, :preorder_embargo_date, :additional_trade_information,
|
23
|
+
:number_of_pieces, :players_number_from, :players_number_to, :playing_time_from, :playing_time_to
|
24
|
+
|
23
25
|
]
|
24
26
|
|
25
27
|
#:nodoc:
|
@@ -27,7 +29,7 @@ module Elibri
|
|
27
29
|
[
|
28
30
|
:contributors, #IMPORTANT
|
29
31
|
:related_products, :languages, :measures, :supply_details, :measures, :title_details,
|
30
|
-
:collections, :extents, :thema_subjects, :audience_ranges,
|
32
|
+
:collections, :extents, :thema_subjects, :publisher_subjects, :audience_ranges,
|
31
33
|
:text_contents, #IMPORTANT
|
32
34
|
:supporting_resources, #for example: cover
|
33
35
|
:sales_restrictions, :authors,
|
@@ -149,7 +151,7 @@ module Elibri
|
|
149
151
|
#AdditionalInfo
|
150
152
|
attr_reader :additional_info
|
151
153
|
|
152
|
-
#kod ONIX typu produktu, np. 'BA' - lista dostępna pod adresem
|
154
|
+
#kod ONIX typu produktu, np. 'BA' - lista dostępna pod adresem
|
153
155
|
#https://github.com/elibri/elibri_onix_dict/blob/master/lib/elibri_onix_dict/onix_3_0/serialized/ProductFormCode.yml
|
154
156
|
attr_reader :product_form
|
155
157
|
|
@@ -190,6 +192,21 @@ module Elibri
|
|
190
192
|
#dodatkowa informacja handlowa
|
191
193
|
attr_reader :additional_trade_information
|
192
194
|
|
195
|
+
#ilość elementów (puzzle, gry planszowe)
|
196
|
+
attr_reader :number_of_pieces
|
197
|
+
|
198
|
+
#min. ilość graczy - gry planszowe
|
199
|
+
attr_reader :players_number_from
|
200
|
+
|
201
|
+
#max. ilość graczy - gry planszowe
|
202
|
+
attr_reader :players_number_to
|
203
|
+
|
204
|
+
#min. czas gry - gry planszowe
|
205
|
+
attr_reader :playing_time_from
|
206
|
+
|
207
|
+
#max. czas gry - gry planszowe
|
208
|
+
attr_reader :playing_time_to
|
209
|
+
|
193
210
|
#:nodoc:
|
194
211
|
attr_reader :text_contents
|
195
212
|
attr_reader :file_size
|
@@ -207,6 +224,7 @@ module Elibri
|
|
207
224
|
attr_reader :collections
|
208
225
|
attr_reader :extents
|
209
226
|
attr_reader :thema_subjects
|
227
|
+
attr_reader :publisher_subjects
|
210
228
|
attr_reader :audience_ranges
|
211
229
|
attr_reader :supply_details
|
212
230
|
attr_reader :identifiers
|
@@ -234,6 +252,7 @@ module Elibri
|
|
234
252
|
@languages = []
|
235
253
|
@extents = []
|
236
254
|
@thema_subjects = []
|
255
|
+
@publisher_subjects = []
|
237
256
|
@audience_ranges = []
|
238
257
|
##publishing_details
|
239
258
|
@sales_restrictions = []
|
@@ -246,7 +265,7 @@ module Elibri
|
|
246
265
|
@deletion_text = data.at_css('DeletionText').try(:text)
|
247
266
|
|
248
267
|
if data.namespaces.values.any? { |uri| uri =~ /elibri/ }
|
249
|
-
@cover_type = data.at_xpath('elibri:CoverType').try(:text)
|
268
|
+
@cover_type = data.at_xpath('elibri:CoverType').try(:text)
|
250
269
|
@pkwiu = data.at_xpath('elibri:PKWiU').try(:text)
|
251
270
|
@hyphenated_isbn = data.at_xpath('elibri:HyphenatedISBN').try(:text)
|
252
271
|
@pdw_exclusiveness = data.at_xpath('elibri:PDWExclusiveness').try(:text)
|
@@ -270,7 +289,7 @@ module Elibri
|
|
270
289
|
@vat = data.at_xpath('elibri:Vat').try(:text).try(:to_i)
|
271
290
|
else
|
272
291
|
price_sd = @supply_details.find { |sd| sd.supplier && sd.supplier.role == Elibri::ONIX::Dict::Release_3_0::SupplierRole::PUB_TO_RET }
|
273
|
-
if price_sd && price_sd.price && price_sd.price && price_sd.price.type == Elibri::ONIX::Dict::Release_3_0::PriceTypeCode::RRP_WITH_TAX
|
292
|
+
if price_sd && price_sd.price && price_sd.price && price_sd.price.type == Elibri::ONIX::Dict::Release_3_0::PriceTypeCode::RRP_WITH_TAX
|
274
293
|
@vat = price_sd.price.tax_rate_percent.to_i
|
275
294
|
@cover_price = price_sd.price.amount
|
276
295
|
@additional_trade_information = price_sd.additional_trade_information
|
@@ -286,6 +305,7 @@ module Elibri
|
|
286
305
|
@preview_exists = @supporting_resources.find { |sr| sr.content_type_name == "widget" && sr.link =~ /p.elibri.com.pl/ }.present?
|
287
306
|
end
|
288
307
|
|
308
|
+
product_form_features_setup(data.css("ProductFormFeature"))
|
289
309
|
|
290
310
|
publishing_details_setup(data.at_css('PublishingDetail')) if data.at_css('PublishingDetail')
|
291
311
|
licence_information_setup(data)
|
@@ -313,14 +333,14 @@ module Elibri
|
|
313
333
|
elsif date = data.at_xpath("elibri:SaleRestrictedTo").try(:text)
|
314
334
|
@unlimited_licence = false
|
315
335
|
@licence_limited_to_before_type_cast = date
|
316
|
-
@licence_limited_to =
|
336
|
+
@licence_limited_to = _parse_date(date)
|
317
337
|
end
|
318
338
|
else
|
319
339
|
daten = data.css('PublishingDate').find { |d| d.at_css("PublishingDateRole") && d.at_css("PublishingDateRole").text == Elibri::ONIX::Dict::Release_3_0::PublishingDateRole::OUT_OF_PRINT_DATE }
|
320
340
|
if daten
|
321
341
|
date = daten.at_css('Date').text
|
322
342
|
@licence_limited_to_before_type_cast = date
|
323
|
-
@licence_limited_to =
|
343
|
+
@licence_limited_to = _parse_date(date)
|
324
344
|
@unlimited_licence = false
|
325
345
|
else
|
326
346
|
@unlimited_licence = true
|
@@ -329,6 +349,23 @@ module Elibri
|
|
329
349
|
end
|
330
350
|
end
|
331
351
|
|
352
|
+
def product_form_features_setup(data)
|
353
|
+
data.each do |feature|
|
354
|
+
ftype = feature.at_css("ProductFormFeatureType").inner_text
|
355
|
+
v1, v2 = feature.at_css("ProductFormFeatureValue, ProductFormFeatureDescription").inner_text.split("-").map(&:to_i)
|
356
|
+
|
357
|
+
if ftype == Elibri::ONIX::Dict::Release_3_0::ProductFormFeatureType::NUMBER_OF_GAME_PIECES
|
358
|
+
@number_of_pieces = v1
|
359
|
+
elsif ftype == Elibri::ONIX::Dict::Release_3_0::ProductFormFeatureType::GAME_PLAYERS
|
360
|
+
@players_number_from = v1
|
361
|
+
@players_number_to = v2
|
362
|
+
elsif ftype == Elibri::ONIX::Dict::Release_3_0::ProductFormFeatureType::GAME_PLAY_TIME
|
363
|
+
@playing_time_from = v1
|
364
|
+
@playing_time_to = v2
|
365
|
+
end
|
366
|
+
end
|
367
|
+
end
|
368
|
+
|
332
369
|
def descriptive_details_setup(data)
|
333
370
|
@product_composition = data.at_css('ProductComposition').try(:text)
|
334
371
|
@product_form = data.at_css('ProductForm').try(:text)
|
@@ -350,7 +387,7 @@ module Elibri
|
|
350
387
|
end
|
351
388
|
|
352
389
|
end
|
353
|
-
if classification = data.css('ProductClassification').find { |cl|
|
390
|
+
if classification = data.css('ProductClassification').find { |cl|
|
354
391
|
cl.at_css('ProductClassificationType').text == Elibri::ONIX::Dict::Release_3_0::ProductClassificationType::PKWIU }
|
355
392
|
@pkwiu = classification.at_css('ProductClassificationCode').text
|
356
393
|
end
|
@@ -361,7 +398,10 @@ module Elibri
|
|
361
398
|
@no_contributor = !!data.at_css('NoContributor')
|
362
399
|
@languages = data.css('Language').map { |language_data| Language.new(language_data) }
|
363
400
|
@extents = data.css('Extent').map { |extent_data| Extent.new(extent_data) }
|
364
|
-
|
401
|
+
|
402
|
+
@publisher_subjects = data.css('Subject').find_all { |sd|
|
403
|
+
%w{24}.include?(sd.at_css('SubjectSchemeIdentifier').try(:text)) }.map { |sd| PublisherSubject.new(sd) }
|
404
|
+
@thema_subjects = data.css('Subject').find_all { |sd|
|
365
405
|
%w{93 94 95 96 97 98 99}.include?(sd.at_css('SubjectSchemeIdentifier').try(:text)) }.map { |sd| ThemaSubject.new(sd) }
|
366
406
|
@audience_ranges = data.css('AudienceRange').map { |audience_data| AudienceRange.new(audience_data) }
|
367
407
|
|
@@ -396,7 +436,7 @@ module Elibri
|
|
396
436
|
preorder_embargo_date_as_object = publication_dates.find { |date| date.role == Elibri::ONIX::Dict::Release_3_0::PublishingDateRole::PREORDER_EMBARGO_DATE }
|
397
437
|
@preorder_embargo_date = Date.new(*preorder_embargo_date_as_object.parsed) if preorder_embargo_date_as_object
|
398
438
|
|
399
|
-
@sales_restrictions = data.css('SalesRestriction').map { |restriction_data| SalesRestriction.new(restriction_data) }
|
439
|
+
@sales_restrictions = data.css('SalesRestriction').map { |restriction_data| SalesRestriction.new(restriction_data) }
|
400
440
|
#ograniczenia terytorialne
|
401
441
|
if data.at_css("CountriesIncluded").try(:text) == "PL"
|
402
442
|
@sale_restricted_to_poland = true
|
@@ -422,7 +462,7 @@ module Elibri
|
|
422
462
|
|
423
463
|
#flaga - true, jeśli produkt nie ma żadnego autora
|
424
464
|
def no_contributor?
|
425
|
-
@no_contributor
|
465
|
+
@no_contributor
|
426
466
|
end
|
427
467
|
|
428
468
|
#flaga, czy książka to praca zbiorowa?
|
@@ -439,7 +479,7 @@ module Elibri
|
|
439
479
|
unnamed_persons? ? ["praca zbiorowa"] : @contributors.find_all { |c| c.role_name == "author" }.map(&:person_name)
|
440
480
|
end
|
441
481
|
|
442
|
-
[:ghostwriter, :scenarist, :originator, :illustrator, :photographer, :author_of_preface, :drawer, :cover_designer,
|
482
|
+
[:ghostwriter, :scenarist, :originator, :illustrator, :photographer, :author_of_preface, :drawer, :cover_designer,
|
443
483
|
:inked_or_colored_by, :editor, :revisor, :translator, :editor_in_chief, :read_by].each do |role|
|
444
484
|
define_method "#{role}s" do
|
445
485
|
@contributors.find_all { |c| c.role_name == role.to_s }.map(&:person_name)
|
@@ -465,6 +505,8 @@ module Elibri
|
|
465
505
|
#data premiery, jako instancja Date (tylko wtedy, gdy dokładna data jest znana)
|
466
506
|
def premiere
|
467
507
|
Date.new(*parsed_publishing_date) if parsed_publishing_date.size == 3
|
508
|
+
rescue ArgumentError
|
509
|
+
nil
|
468
510
|
end
|
469
511
|
|
470
512
|
def related_products_record_references
|
@@ -472,7 +514,7 @@ module Elibri
|
|
472
514
|
end
|
473
515
|
|
474
516
|
#:nodoc:
|
475
|
-
def proprietary_identifiers
|
517
|
+
def proprietary_identifiers
|
476
518
|
@identifiers.find_all { |i| i.identifier_type == "proprietary" }.inject({}) { |res, ident| res[ident.type_name] = ident.value; res }
|
477
519
|
end
|
478
520
|
|
@@ -556,6 +598,12 @@ module Elibri
|
|
556
598
|
end
|
557
599
|
end
|
558
600
|
end
|
601
|
+
|
602
|
+
def _parse_date(string)
|
603
|
+
Date.new(string[0...4].to_i, string[4...6].to_i, string[6...8].to_i)
|
604
|
+
rescue ArgumentError
|
605
|
+
raise "Invalid date '#{string}' when parsing date for #{@record_reference}"
|
606
|
+
end
|
559
607
|
end
|
560
608
|
|
561
609
|
end
|
@@ -0,0 +1,32 @@
|
|
1
|
+
|
2
|
+
module Elibri
|
3
|
+
module ONIX
|
4
|
+
module Release_3_0
|
5
|
+
|
6
|
+
class PublisherSubject
|
7
|
+
|
8
|
+
include HashId
|
9
|
+
|
10
|
+
ATTRIBUTES = [
|
11
|
+
:code, :heading_text
|
12
|
+
]
|
13
|
+
|
14
|
+
RELATIONS = [
|
15
|
+
:inspect_include_fields
|
16
|
+
]
|
17
|
+
|
18
|
+
attr_accessor :code, :heading_text, :to_xml
|
19
|
+
|
20
|
+
def initialize(data)
|
21
|
+
@to_xml = data.to_s
|
22
|
+
@code = data.at_css('SubjectCode').try(:text)
|
23
|
+
@heading_text = data.at_css('SubjectHeadingText').try(:text)
|
24
|
+
end
|
25
|
+
|
26
|
+
def inspect_include_fields
|
27
|
+
[:code]
|
28
|
+
end
|
29
|
+
end
|
30
|
+
end
|
31
|
+
end
|
32
|
+
end
|
@@ -6,26 +6,26 @@ module Elibri
|
|
6
6
|
module Release_3_0
|
7
7
|
|
8
8
|
class PublishingDate
|
9
|
-
|
9
|
+
|
10
10
|
#from ONIX documentation:
|
11
11
|
#A repeatable group of data elements which together specify a date associated with the publishing of the product.
|
12
12
|
#Optional, but a date of publication must be specified either or in <MarketPublishingDetail> (P.25).
|
13
13
|
#Other dates related to the publishing of a product can be sent in further repeats.
|
14
14
|
|
15
15
|
include HashId
|
16
|
-
|
16
|
+
|
17
17
|
ATTRIBUTES = [
|
18
18
|
:role, :format, :date, :parsed
|
19
19
|
]
|
20
|
-
|
20
|
+
|
21
21
|
RELATIONS = []
|
22
|
-
|
22
|
+
|
23
23
|
attr_accessor :role, :format, :date, :to_xml
|
24
|
-
|
24
|
+
|
25
25
|
def initialize(data)
|
26
26
|
@to_xml = data.to_s
|
27
27
|
@role = data.at_css('PublishingDateRole').try(:text)
|
28
|
-
@format = data.at_css('DateFormat').try(:text)
|
28
|
+
@format = data.at_css('DateFormat').try(:text) || data.at_css('Date')['dateformat'] || '00'
|
29
29
|
@date = data.at_css('Date').try(:text)
|
30
30
|
end
|
31
31
|
|
@@ -2,43 +2,35 @@
|
|
2
2
|
module Elibri
|
3
3
|
module ONIX
|
4
4
|
module Release_3_0
|
5
|
-
|
5
|
+
|
6
6
|
#Sender of the message
|
7
7
|
class Sender
|
8
8
|
include Inspector
|
9
|
-
|
9
|
+
|
10
10
|
#name of company, which sent the message
|
11
11
|
attr_accessor :sender_name
|
12
12
|
|
13
|
-
#contact person
|
14
|
-
attr_accessor :contact_name
|
15
|
-
|
16
|
-
#contact email
|
17
|
-
attr_accessor :email_address
|
18
|
-
|
19
13
|
#xml representation of sender
|
20
14
|
attr_accessor :to_xml
|
21
|
-
|
15
|
+
|
22
16
|
#:nodoc:
|
23
17
|
ATTRIBUTES = [
|
24
18
|
:sender_name, :contact_name, :email_address
|
25
19
|
]
|
26
|
-
|
20
|
+
|
27
21
|
#:nodoc:
|
28
22
|
RELATIONS = []
|
29
23
|
|
30
24
|
#:nodoc:
|
31
25
|
def inspect_include_fields
|
32
|
-
[:sender_name
|
26
|
+
[:sender_name]
|
33
27
|
end
|
34
|
-
|
28
|
+
|
35
29
|
def initialize(data)
|
36
30
|
@to_xml = data.to_s
|
37
31
|
@sender_name = data.at_css('SenderName').text
|
38
|
-
@contact_name = data.at_css('ContactName').text
|
39
|
-
@email_address = data.at_css('EmailAddress').text
|
40
32
|
end
|
41
|
-
|
33
|
+
|
42
34
|
end
|
43
35
|
|
44
36
|
end
|
data/lib/elibri_onix/releases.rb
CHANGED
@@ -4,7 +4,7 @@
|
|
4
4
|
sender header product_identifier measure title_element title_detail collection contributor
|
5
5
|
language extent audience_range text_content supporting_resource imprint publisher publishing_date
|
6
6
|
sales_restriction related_product supplier_identifier stock_quantity_coded price supplier supply_detail
|
7
|
-
product onix_message excerpt_info file_info thema_subject
|
7
|
+
product onix_message excerpt_info file_info thema_subject publisher_subject
|
8
8
|
}.each do |file_name|
|
9
9
|
require File.join(File.dirname(__FILE__), "onix_3_0", file_name)
|
10
10
|
end
|
data/lib/elibri_onix/version.rb
CHANGED
@@ -0,0 +1,20 @@
|
|
1
|
+
require 'helper'
|
2
|
+
|
3
|
+
describe Elibri::ONIX::Release_3_0::ONIXMessage do
|
4
|
+
|
5
|
+
it "should be able to parse number of pieces info" do
|
6
|
+
product = load_fixture("onix_puzzle_example.xml")
|
7
|
+
|
8
|
+
assert_equal 25, product.number_of_pieces
|
9
|
+
end
|
10
|
+
|
11
|
+
it "should be able to parse playing time and number of players" do
|
12
|
+
product = load_fixture("onix_board_game_example.xml")
|
13
|
+
|
14
|
+
assert_equal 2, product.players_number_from
|
15
|
+
assert_equal 5, product.players_number_to
|
16
|
+
assert_equal 20, product.playing_time_from
|
17
|
+
assert_nil product.playing_time_to
|
18
|
+
end
|
19
|
+
|
20
|
+
end
|
@@ -25,6 +25,12 @@ describe Elibri::ONIX::Release_3_0::ONIXMessage do
|
|
25
25
|
assert_equal "Kwalifikatory chronologiczne / od ok. 1500 do dzisiaj / XX wiek (ok. 1900–1999) " +
|
26
26
|
"/ 1. poł. XX wieku (ok. 1900–1950) / Dwudziestolecie międzywojenne (ok. 1919–1939) / ok. 1920–1929", s3.heading_text
|
27
27
|
|
28
|
+
assert_equal 1, product.publisher_subjects.count
|
29
|
+
|
30
|
+
p1 = product.publisher_subjects[0]
|
31
|
+
|
32
|
+
assert_equal "191", p1.code
|
33
|
+
assert_equal "Beletrystyka: Horror", p1.heading_text
|
28
34
|
end
|
29
35
|
|
30
36
|
end
|
@@ -0,0 +1,163 @@
|
|
1
|
+
<?xml version="1.0" encoding="UTF-8"?>
|
2
|
+
<ONIXMessage xmlns="http://ns.editeur.org/onix/3.0/reference" release="3.0">
|
3
|
+
<Header>
|
4
|
+
<Sender>
|
5
|
+
<SenderName>Elibri.com.pl</SenderName>
|
6
|
+
<ContactName>Tomasz Meka</ContactName>
|
7
|
+
<EmailAddress>kontakt@elibri.com.pl</EmailAddress>
|
8
|
+
</Sender>
|
9
|
+
<SentDateTime>20200118</SentDateTime>
|
10
|
+
</Header>
|
11
|
+
<Product>
|
12
|
+
<RecordReference>76843e73500beb04ddf8</RecordReference>
|
13
|
+
<!--NotificationType: CONFIRMED_ON_PUBLICATION--><NotificationType>03</NotificationType>
|
14
|
+
<ProductIdentifier>
|
15
|
+
<!--ProductIDType: EAN--><ProductIDType>03</ProductIDType>
|
16
|
+
<IDValue>5902719470332</IDValue>
|
17
|
+
</ProductIdentifier>
|
18
|
+
<DescriptiveDetail>
|
19
|
+
<!--ProductComposition: SINGLE_COMPONENT_RETAIL_PRODUCT--><ProductComposition>00</ProductComposition>
|
20
|
+
<!--ProductFormCode: GAME--><ProductForm>ZE</ProductForm>
|
21
|
+
<ProductFormFeature>
|
22
|
+
<!--ProductFormFeatureType: GAME_PLAYERS--><ProductFormFeatureType>23</ProductFormFeatureType>
|
23
|
+
<ProductFormFeatureDescription>2-5 graczy</ProductFormFeatureDescription>
|
24
|
+
</ProductFormFeature>
|
25
|
+
<ProductFormFeature>
|
26
|
+
<!--ProductFormFeatureType: GAME_PLAY_TIME--><ProductFormFeatureType>24</ProductFormFeatureType>
|
27
|
+
<ProductFormFeatureValue>20</ProductFormFeatureValue>
|
28
|
+
</ProductFormFeature>
|
29
|
+
<ProductClassification>
|
30
|
+
<!--ProductClassificationType: PKWIU--><ProductClassificationType>12</ProductClassificationType>
|
31
|
+
<ProductClassificationCode>32.40.39.0</ProductClassificationCode>
|
32
|
+
</ProductClassification>
|
33
|
+
<Collection>
|
34
|
+
<!--CollectionType: PUBLISHER_COLLECTION--><CollectionType>10</CollectionType>
|
35
|
+
<TitleDetail>
|
36
|
+
<!--TitleType: DISTINCTIVE_TITLE--><TitleType>01</TitleType>
|
37
|
+
<TitleElement>
|
38
|
+
<!--TitleElementLevel: COLLECTION--><TitleElementLevel>02</TitleElementLevel>
|
39
|
+
<TitleText>Gry planszowe</TitleText>
|
40
|
+
</TitleElement>
|
41
|
+
</TitleDetail>
|
42
|
+
</Collection>
|
43
|
+
<TitleDetail>
|
44
|
+
<!--TitleType: DISTINCTIVE_TITLE--><TitleType>01</TitleType>
|
45
|
+
<TitleElement>
|
46
|
+
<!--TitleElementLevel: PRODUCT--><TitleElementLevel>01</TitleElementLevel>
|
47
|
+
<TitleText>Jamniki</TitleText>
|
48
|
+
</TitleElement>
|
49
|
+
</TitleDetail>
|
50
|
+
<TitleDetail>
|
51
|
+
<!--TitleType: DISTRIBUTORS_TITLE--><TitleType>10</TitleType>
|
52
|
+
<TitleElement>
|
53
|
+
<!--TitleElementLevel: PRODUCT--><TitleElementLevel>01</TitleElementLevel>
|
54
|
+
<TitleText>JAMNIKI</TitleText>
|
55
|
+
</TitleElement>
|
56
|
+
</TitleDetail>
|
57
|
+
<Contributor sourcename="contributorid:201641" datestamp="20200118T2047">
|
58
|
+
<SequenceNumber>1</SequenceNumber>
|
59
|
+
<!--ContributorRole: AUTHOR--><ContributorRole>A01</ContributorRole>
|
60
|
+
<PersonName>David Short</PersonName>
|
61
|
+
<NamesBeforeKey>David</NamesBeforeKey>
|
62
|
+
<KeyNames>Short</KeyNames>
|
63
|
+
</Contributor>
|
64
|
+
<Contributor sourcename="contributorid:201642" datestamp="20200118T2047">
|
65
|
+
<SequenceNumber>2</SequenceNumber>
|
66
|
+
<!--ContributorRole: ILLUSTRATOR--><ContributorRole>A12</ContributorRole>
|
67
|
+
<PersonName>Maciej Szymanowicz</PersonName>
|
68
|
+
<NamesBeforeKey>Maciej</NamesBeforeKey>
|
69
|
+
<KeyNames>Szymanowicz</KeyNames>
|
70
|
+
</Contributor>
|
71
|
+
<Language>
|
72
|
+
<!--LanguageRole: LANGUAGE_OF_TEXT--><LanguageRole>01</LanguageRole>
|
73
|
+
<!--LanguageCode: Polish--><LanguageCode>pol</LanguageCode>
|
74
|
+
</Language>
|
75
|
+
<Subject>
|
76
|
+
<!--SubjectSchemeIdentifier: PROPRIETARY--><SubjectSchemeIdentifier>24</SubjectSchemeIdentifier>
|
77
|
+
<SubjectSchemeName>Nasza Księgarnia</SubjectSchemeName>
|
78
|
+
<SubjectCode>871</SubjectCode>
|
79
|
+
<SubjectHeadingText>Gry planszowe</SubjectHeadingText>
|
80
|
+
</Subject>
|
81
|
+
<AudienceRange>
|
82
|
+
<!--AudienceRangeQualifier: READING_AGE--><AudienceRangeQualifier>18</AudienceRangeQualifier>
|
83
|
+
<!--AudienceRangePrecision: FROM--><AudienceRangePrecision>03</AudienceRangePrecision>
|
84
|
+
<AudienceRangeValue>6</AudienceRangeValue>
|
85
|
+
</AudienceRange>
|
86
|
+
<AudienceRange>
|
87
|
+
<!--AudienceRangeQualifier: READING_AGE--><AudienceRangeQualifier>18</AudienceRangeQualifier>
|
88
|
+
<!--AudienceRangePrecision: TO--><AudienceRangePrecision>04</AudienceRangePrecision>
|
89
|
+
<AudienceRangeValue>106</AudienceRangeValue>
|
90
|
+
</AudienceRange>
|
91
|
+
</DescriptiveDetail>
|
92
|
+
<CollateralDetail>
|
93
|
+
<TextContent sourcename="textid:109999" datestamp="20200118T2047">
|
94
|
+
<!--OtherTextType: MAIN_DESCRIPTION--><TextType>03</TextType>
|
95
|
+
<!--ContentAudience: UNRESTRICTED--><ContentAudience>00</ContentAudience>
|
96
|
+
<Text>
|
97
|
+
<![CDATA[<p>
|
98
|
+
<strong>UBIERZ JAMNIKA W KUBRACZEK!</strong></p>
|
99
|
+
<p>
|
100
|
+
Podczas gry Twój jamnik będzie rósł, musisz więc ubierać go w coraz większy kubraczek. Staraj się, aby na kubraczku było jak najwięcej symboli kostek – zdobędziesz za nie punkty! Dodatkowe punkty dostaniesz za kolory kubraczka.</p>
|
101
|
+
]]>
|
102
|
+
</Text>
|
103
|
+
</TextContent>
|
104
|
+
</CollateralDetail>
|
105
|
+
<PublishingDetail>
|
106
|
+
<Publisher>
|
107
|
+
<PublishingRole>01</PublishingRole>
|
108
|
+
<PublisherIdentifier>
|
109
|
+
<PublisherIDType>01</PublisherIDType>
|
110
|
+
<IDTypeName>ElibriPublisherCode</IDTypeName>
|
111
|
+
<IDValue>41</IDValue>
|
112
|
+
</PublisherIdentifier>
|
113
|
+
<PublisherName>Nasza Księgarnia</PublisherName>
|
114
|
+
</Publisher>
|
115
|
+
<CityOfPublication>Warszawa</CityOfPublication>
|
116
|
+
<!--PublishingStatusCode: ACTIVE--><PublishingStatus>04</PublishingStatus>
|
117
|
+
<PublishingDate>
|
118
|
+
<!--PublishingDateRole: PUBLICATION_DATE--><PublishingDateRole>01</PublishingDateRole>
|
119
|
+
<!--DateFormat: YYYYMMDD--><DateFormat>00</DateFormat>
|
120
|
+
<Date dateformat="00">20180919</Date>
|
121
|
+
</PublishingDate>
|
122
|
+
<PublishingDate>
|
123
|
+
<!--PublishingDateRole: PREORDER_EMBARGO_DATE--><PublishingDateRole>27</PublishingDateRole>
|
124
|
+
<!--DateFormat: YYYYMMDD--><DateFormat>00</DateFormat>
|
125
|
+
<Date dateformat="00">20180905</Date>
|
126
|
+
</PublishingDate>
|
127
|
+
<SalesRights>
|
128
|
+
<!--SalesRightsType: FOR_SALE_WITH_EXLUSIVE_RIGHTS--><SalesRightsType>01</SalesRightsType>
|
129
|
+
<Territory>
|
130
|
+
<CountriesIncluded>PL</CountriesIncluded>
|
131
|
+
</Territory>
|
132
|
+
</SalesRights>
|
133
|
+
</PublishingDetail>
|
134
|
+
<ProductSupply>
|
135
|
+
<SupplyDetail>
|
136
|
+
<Supplier>
|
137
|
+
<!--SupplierRole: PUB_TO_RET--><SupplierRole>01</SupplierRole>
|
138
|
+
<SupplierIdentifier>
|
139
|
+
<!--SupplierIDType: VAT_IDENTITY_NUMBER--><SupplierIDType>23</SupplierIDType>
|
140
|
+
<IDValue>PL5260205285</IDValue>
|
141
|
+
</SupplierIdentifier>
|
142
|
+
<SupplierName>Nasza Księgarnia</SupplierName>
|
143
|
+
</Supplier>
|
144
|
+
<!--ProductAvailabilityType: IN_STOCK--><ProductAvailability>21</ProductAvailability>
|
145
|
+
<Stock>
|
146
|
+
<OnHand>200</OnHand>
|
147
|
+
<!--Proximity: MORE_THAN--><Proximity>07</Proximity>
|
148
|
+
</Stock>
|
149
|
+
<PackQuantity>12</PackQuantity>
|
150
|
+
<Price>
|
151
|
+
<!--PriceTypeCode: RRP_WITH_TAX--><PriceType>02</PriceType>
|
152
|
+
<PriceAmount>59.9</PriceAmount>
|
153
|
+
<Tax>
|
154
|
+
<!--TaxType: VAT--><TaxType>01</TaxType>
|
155
|
+
<TaxRatePercent>23</TaxRatePercent>
|
156
|
+
</Tax>
|
157
|
+
<CurrencyCode>PLN</CurrencyCode>
|
158
|
+
<!--PricePrintedOnProduct: NO--><PrintedOnProduct>01</PrintedOnProduct>
|
159
|
+
</Price>
|
160
|
+
</SupplyDetail>
|
161
|
+
</ProductSupply>
|
162
|
+
</Product>
|
163
|
+
</ONIXMessage>
|
@@ -0,0 +1,148 @@
|
|
1
|
+
<?xml version="1.0" encoding="UTF-8"?>
|
2
|
+
<ONIXMessage xmlns="http://ns.editeur.org/onix/3.0/reference" release="3.0">
|
3
|
+
<Header>
|
4
|
+
<Sender>
|
5
|
+
<SenderName>Elibri.com.pl</SenderName>
|
6
|
+
<ContactName>Tomasz Meka</ContactName>
|
7
|
+
<EmailAddress>kontakt@elibri.com.pl</EmailAddress>
|
8
|
+
</Sender>
|
9
|
+
<SentDateTime>20200118</SentDateTime>
|
10
|
+
</Header>
|
11
|
+
<Product>
|
12
|
+
<RecordReference>85b3ad798e01c3b5ee67</RecordReference>
|
13
|
+
<!--NotificationType: CONFIRMED_ON_PUBLICATION--><NotificationType>03</NotificationType>
|
14
|
+
<ProductIdentifier>
|
15
|
+
<!--ProductIDType: EAN--><ProductIDType>03</ProductIDType>
|
16
|
+
<IDValue>5902719471810</IDValue>
|
17
|
+
</ProductIdentifier>
|
18
|
+
<DescriptiveDetail>
|
19
|
+
<!--ProductComposition: SINGLE_COMPONENT_RETAIL_PRODUCT--><ProductComposition>00</ProductComposition>
|
20
|
+
<!--ProductFormCode: JIGSAW--><ProductForm>ZJ</ProductForm>
|
21
|
+
<ProductFormFeature>
|
22
|
+
<!--ProductFormFeatureType: NUMBER_OF_GAME_PIECES--><ProductFormFeatureType>22</ProductFormFeatureType>
|
23
|
+
<ProductFormFeatureValue>25</ProductFormFeatureValue>
|
24
|
+
</ProductFormFeature>
|
25
|
+
<ProductClassification>
|
26
|
+
<!--ProductClassificationType: PKWIU--><ProductClassificationType>12</ProductClassificationType>
|
27
|
+
<ProductClassificationCode>32.40.32</ProductClassificationCode>
|
28
|
+
</ProductClassification>
|
29
|
+
<Collection>
|
30
|
+
<!--CollectionType: PUBLISHER_COLLECTION--><CollectionType>10</CollectionType>
|
31
|
+
<TitleDetail>
|
32
|
+
<!--TitleType: DISTINCTIVE_TITLE--><TitleType>01</TitleType>
|
33
|
+
<TitleElement>
|
34
|
+
<!--TitleElementLevel: COLLECTION--><TitleElementLevel>02</TitleElementLevel>
|
35
|
+
<TitleText>Puzzle</TitleText>
|
36
|
+
</TitleElement>
|
37
|
+
</TitleDetail>
|
38
|
+
</Collection>
|
39
|
+
<TitleDetail>
|
40
|
+
<!--TitleType: DISTINCTIVE_TITLE--><TitleType>01</TitleType>
|
41
|
+
<TitleElement>
|
42
|
+
<!--TitleElementLevel: PRODUCT--><TitleElementLevel>01</TitleElementLevel>
|
43
|
+
<TitleText>Pucio. Puzzle: Co tu pasuje?</TitleText>
|
44
|
+
</TitleElement>
|
45
|
+
</TitleDetail>
|
46
|
+
<TitleDetail>
|
47
|
+
<!--TitleType: DISTRIBUTORS_TITLE--><TitleType>10</TitleType>
|
48
|
+
<TitleElement>
|
49
|
+
<!--TitleElementLevel: PRODUCT--><TitleElementLevel>01</TitleElementLevel>
|
50
|
+
<TitleText>PUCIO. PUZZLE: CO TU PASUJE?</TitleText>
|
51
|
+
</TitleElement>
|
52
|
+
</TitleDetail>
|
53
|
+
<Contributor sourcename="contributorid:210002" datestamp="20190116T1724">
|
54
|
+
<SequenceNumber>1</SequenceNumber>
|
55
|
+
<!--ContributorRole: AUTHOR--><ContributorRole>A01</ContributorRole>
|
56
|
+
<PersonName>Marta Galewska-Kustra</PersonName>
|
57
|
+
<NamesBeforeKey>Marta</NamesBeforeKey>
|
58
|
+
<KeyNames>Galewska-Kustra</KeyNames>
|
59
|
+
</Contributor>
|
60
|
+
<Contributor sourcename="contributorid:210003" datestamp="20190116T1724">
|
61
|
+
<SequenceNumber>2</SequenceNumber>
|
62
|
+
<!--ContributorRole: ILLUSTRATOR--><ContributorRole>A12</ContributorRole>
|
63
|
+
<PersonName>Joanna Kłos</PersonName>
|
64
|
+
<NamesBeforeKey>Joanna</NamesBeforeKey>
|
65
|
+
<KeyNames>Kłos</KeyNames>
|
66
|
+
</Contributor>
|
67
|
+
<Language>
|
68
|
+
<!--LanguageRole: LANGUAGE_OF_TEXT--><LanguageRole>01</LanguageRole>
|
69
|
+
<!--LanguageCode: Polish--><LanguageCode>pol</LanguageCode>
|
70
|
+
</Language>
|
71
|
+
</DescriptiveDetail>
|
72
|
+
<CollateralDetail>
|
73
|
+
<TextContent sourcename="textid:115723" datestamp="20190116T1724">
|
74
|
+
<!--OtherTextType: MAIN_DESCRIPTION--><TextType>03</TextType>
|
75
|
+
<!--ContentAudience: UNRESTRICTED--><ContentAudience>00</ContentAudience>
|
76
|
+
<Text>
|
77
|
+
<![CDATA[<p>
|
78
|
+
<strong>Wreszcie są! Długo wyczekiwane, mądre i piękne zabawki z PUCIEM!</strong></p>
|
79
|
+
<p>
|
80
|
+
Uwielbiany przez dzieci i rodziców bohater bestsellerowej serii Marty Galewskiej-Kustry, fenomenalnie ilustrowanej przez Joannę Kłos, w końcu wykracza poza karty książek i pojawia się także na puzzlach! Zapraszamy do wspólnej zabawy i nauki!</p>
|
81
|
+
<p>
|
82
|
+
Puzzle przeznaczone dla dzieci od 2 lat. Składają się z 5 obrazków głównych oraz 20 uzupełniających. Na obrazkach głównych jest Pucio w znanych dziecku codziennych sytuacjach (np. jedzenie posiłku, poranna toaleta, ubieranie się). Elementy uzupełniające przedstawiają pojedyncze obiekty zaprezentowane także na obrazku głównym (np. kanapka, szczoteczka do zębów, czapka). Dziecko ma się przyjrzeć obrazkowi głównemu, odnaleźć pasujące do niego elementy uzupełniające i dołączyć je do obrazka głównego.</p>
|
83
|
+
<p>
|
84
|
+
To na pozór proste zadanie wymaga skupienia uwagi na ilustracji, rozwija spostrzegawczość i mowę, ale przede wszystkim pobudza do myślenia. Mimo niedużej liczby elementów puzzle dają okazję do wielu zabaw o różnym stopniu trudności. </p>
|
85
|
+
<p>
|
86
|
+
Wyprodukowano w Polsce.</p>
|
87
|
+
]]>
|
88
|
+
</Text>
|
89
|
+
</TextContent>
|
90
|
+
</CollateralDetail>
|
91
|
+
<PublishingDetail>
|
92
|
+
<Publisher>
|
93
|
+
<PublishingRole>01</PublishingRole>
|
94
|
+
<PublisherIdentifier>
|
95
|
+
<PublisherIDType>01</PublisherIDType>
|
96
|
+
<IDTypeName>ElibriPublisherCode</IDTypeName>
|
97
|
+
<IDValue>41</IDValue>
|
98
|
+
</PublisherIdentifier>
|
99
|
+
<PublisherName>Nasza Księgarnia</PublisherName>
|
100
|
+
</Publisher>
|
101
|
+
<CityOfPublication>Warszawa</CityOfPublication>
|
102
|
+
<!--PublishingStatusCode: ACTIVE--><PublishingStatus>04</PublishingStatus>
|
103
|
+
<PublishingDate>
|
104
|
+
<!--PublishingDateRole: PUBLICATION_DATE--><PublishingDateRole>01</PublishingDateRole>
|
105
|
+
<!--DateFormat: YYYYMMDD--><DateFormat>00</DateFormat>
|
106
|
+
<Date dateformat="00">20190227</Date>
|
107
|
+
</PublishingDate>
|
108
|
+
<PublishingDate>
|
109
|
+
<!--PublishingDateRole: PREORDER_EMBARGO_DATE--><PublishingDateRole>27</PublishingDateRole>
|
110
|
+
<!--DateFormat: YYYYMMDD--><DateFormat>00</DateFormat>
|
111
|
+
<Date dateformat="00">20190213</Date>
|
112
|
+
</PublishingDate>
|
113
|
+
<SalesRights>
|
114
|
+
<!--SalesRightsType: FOR_SALE_WITH_EXLUSIVE_RIGHTS--><SalesRightsType>01</SalesRightsType>
|
115
|
+
<Territory>
|
116
|
+
<CountriesIncluded>PL</CountriesIncluded>
|
117
|
+
</Territory>
|
118
|
+
</SalesRights>
|
119
|
+
</PublishingDetail>
|
120
|
+
<ProductSupply>
|
121
|
+
<SupplyDetail>
|
122
|
+
<Supplier>
|
123
|
+
<!--SupplierRole: PUB_TO_RET--><SupplierRole>01</SupplierRole>
|
124
|
+
<SupplierIdentifier>
|
125
|
+
<!--SupplierIDType: VAT_IDENTITY_NUMBER--><SupplierIDType>23</SupplierIDType>
|
126
|
+
<IDValue>PL5260205285</IDValue>
|
127
|
+
</SupplierIdentifier>
|
128
|
+
<SupplierName>Nasza Księgarnia</SupplierName>
|
129
|
+
</Supplier>
|
130
|
+
<!--ProductAvailabilityType: NOT_AVAILABLE--><ProductAvailability>40</ProductAvailability>
|
131
|
+
<Stock>
|
132
|
+
<OnHand>0</OnHand>
|
133
|
+
<!--Proximity: EXACTLY--><Proximity>03</Proximity>
|
134
|
+
</Stock>
|
135
|
+
<Price>
|
136
|
+
<!--PriceTypeCode: RRP_WITH_TAX--><PriceType>02</PriceType>
|
137
|
+
<PriceAmount>24.9</PriceAmount>
|
138
|
+
<Tax>
|
139
|
+
<!--TaxType: VAT--><TaxType>01</TaxType>
|
140
|
+
<TaxRatePercent>23</TaxRatePercent>
|
141
|
+
</Tax>
|
142
|
+
<CurrencyCode>PLN</CurrencyCode>
|
143
|
+
<!--PricePrintedOnProduct: NO--><PrintedOnProduct>01</PrintedOnProduct>
|
144
|
+
</Price>
|
145
|
+
</SupplyDetail>
|
146
|
+
</ProductSupply>
|
147
|
+
</Product>
|
148
|
+
</ONIXMessage>
|
@@ -25,21 +25,6 @@
|
|
25
25
|
<TitleText>Nielegalni</TitleText>
|
26
26
|
</TitleElement>
|
27
27
|
</TitleDetail>
|
28
|
-
<Subject>
|
29
|
-
<MainSubject/>
|
30
|
-
<SubjectSchemeIdentifier>24</SubjectSchemeIdentifier>
|
31
|
-
<SubjectSchemeName>elibri.com.pl</SubjectSchemeName>
|
32
|
-
<SubjectSchemeVersion>1.0</SubjectSchemeVersion>
|
33
|
-
<SubjectCode>1110</SubjectCode>
|
34
|
-
<SubjectHeadingText>Historia / II Wojna Światowa / Ruch oporu</SubjectHeadingText>
|
35
|
-
</Subject>
|
36
|
-
<Subject>
|
37
|
-
<SubjectSchemeIdentifier>24</SubjectSchemeIdentifier>
|
38
|
-
<SubjectSchemeName>elibri.com.pl</SubjectSchemeName>
|
39
|
-
<SubjectSchemeVersion>1.0</SubjectSchemeVersion>
|
40
|
-
<SubjectCode>491</SubjectCode>
|
41
|
-
<SubjectHeadingText>Szkoła i nauczanie / Lektury szkolne z opracowaniami</SubjectHeadingText>
|
42
|
-
</Subject>
|
43
28
|
<Subject>
|
44
29
|
<SubjectSchemeIdentifier>93</SubjectSchemeIdentifier>
|
45
30
|
<SubjectSchemeVersion>1.3</SubjectSchemeVersion>
|
metadata
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: elibri_onix
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 0.5.
|
4
|
+
version: 0.5.15
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- Marcin Urbanski
|
@@ -9,7 +9,7 @@ authors:
|
|
9
9
|
autorequire:
|
10
10
|
bindir: bin
|
11
11
|
cert_chain: []
|
12
|
-
date:
|
12
|
+
date: 2021-05-26 00:00:00.000000000 Z
|
13
13
|
dependencies:
|
14
14
|
- !ruby/object:Gem::Dependency
|
15
15
|
name: activesupport
|
@@ -187,6 +187,7 @@ files:
|
|
187
187
|
- lib/elibri_onix/onix_3_0/product.rb
|
188
188
|
- lib/elibri_onix/onix_3_0/product_identifier.rb
|
189
189
|
- lib/elibri_onix/onix_3_0/publisher.rb
|
190
|
+
- lib/elibri_onix/onix_3_0/publisher_subject.rb
|
190
191
|
- lib/elibri_onix/onix_3_0/publishing_date.rb
|
191
192
|
- lib/elibri_onix/onix_3_0/related_product.rb
|
192
193
|
- lib/elibri_onix/onix_3_0/sales_restriction.rb
|
@@ -217,6 +218,7 @@ files:
|
|
217
218
|
- test/elibri_onix_message_attributes_test.rb
|
218
219
|
- test/elibri_onix_release_3_0_onix_message_test.rb
|
219
220
|
- test/elibri_onix_test.rb
|
221
|
+
- test/elibri_product_form_features_test.rb
|
220
222
|
- test/elibri_product_form_test.rb
|
221
223
|
- test/elibri_publisher_info_test.rb
|
222
224
|
- test/elibri_publishing_status_test.rb
|
@@ -236,6 +238,7 @@ files:
|
|
236
238
|
- test/fixtures/onix_audience_range_example.xml
|
237
239
|
- test/fixtures/onix_audiobook_example.xml
|
238
240
|
- test/fixtures/onix_audiobook_extent_example.xml
|
241
|
+
- test/fixtures/onix_board_game_example.xml
|
239
242
|
- test/fixtures/onix_collective_work_example.xml
|
240
243
|
- test/fixtures/onix_contributors_example.xml
|
241
244
|
- test/fixtures/onix_ebook_extent_example.xml
|
@@ -252,6 +255,7 @@ files:
|
|
252
255
|
- test/fixtures/onix_published_group_product_example.xml
|
253
256
|
- test/fixtures/onix_published_product_example.xml
|
254
257
|
- test/fixtures/onix_publisher_info_example.xml
|
258
|
+
- test/fixtures/onix_puzzle_example.xml
|
255
259
|
- test/fixtures/onix_record_identifiers_example.xml
|
256
260
|
- test/fixtures/onix_related_products_example.xml
|
257
261
|
- test/fixtures/onix_removed_elibri_extensions.xml
|
@@ -284,8 +288,7 @@ required_rubygems_version: !ruby/object:Gem::Requirement
|
|
284
288
|
- !ruby/object:Gem::Version
|
285
289
|
version: '0'
|
286
290
|
requirements: []
|
287
|
-
|
288
|
-
rubygems_version: 2.7.9
|
291
|
+
rubygems_version: 3.0.1
|
289
292
|
signing_key:
|
290
293
|
specification_version: 4
|
291
294
|
summary: EDItEUR ONIX format subset implementation used in Elibri publication system
|