oddb2xml 2.4.3 → 2.4.4

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
  SHA1:
3
- metadata.gz: f3bb1935034ceac75c20a7a760647779e269cfbd
4
- data.tar.gz: c7a68dad6adbf982c83d6ef8b9794bc551f2233b
3
+ metadata.gz: d53eced411a8265a49354d1c7ffb1309c10a4545
4
+ data.tar.gz: d53b5e31652a7b16b3889a3bf6636f2a06ca5ba8
5
5
  SHA512:
6
- metadata.gz: 549c6c25a4e157b3dd463fbae8ab2fea31d26a6ef0eac7c6020acc8a0904ed6c638d4ee29f4bad6e594874686a1c24e3b6ec84fefb0bf6baf0e85381e453f546
7
- data.tar.gz: 0dce9a5cf5bb1afc960d524cf2208e27d79c516c0f00b42596783004de39f2b3d949c66874dba7576e2bfd41768bc21bf850c58e7dba91b873ffca1b0e5e9515
6
+ metadata.gz: 9f782573e7dca61022e7f44c2a34794673473def7c79d20676106387c779e6965a157a29f510f56a396afad5c3838558d59b0e876d2b0e54a38ec60cf2536faf
7
+ data.tar.gz: ddb93469191bbcb33f3ae744fbf463bad8480d863b45631fb43e543a7a1052a7a596baec4fd044396d8508270c5289c3944201ef6ff41d0d9ad0d072a05eb6dd
@@ -1,3 +1,8 @@
1
+ === 2.4.4 / 23.10.2017
2
+
3
+ * Add articles which are only found in the Preparation.xml (e.g. Mutagrid)
4
+ * Correct SwissmedicNo8 when less than 8 chars long
5
+
1
6
  === 2.4.3 / 11.09.2017
2
7
 
3
8
  * Never drop lines with UTF-8 problems while creating XML files
@@ -768,10 +768,28 @@ module Oddb2xml
768
768
  prepare_articles
769
769
  idx = 0
770
770
  nbr_records = 0
771
+ @preparations_only = []
771
772
  Oddb2xml.log "build_article #{idx} of #{@articles.size} articles"
772
773
  _builder = Nokogiri::XML::Builder.new(:encoding => 'utf-8') do |xml|
773
774
  xml.doc.tag_suffix = @tag_suffix
774
775
  datetime = Time.new.strftime('%FT%T%z')
776
+ eans_from_refdata = @articles.collect{|refdata| refdata[:ean] }
777
+ eans_from_preparations = @items.keys
778
+ missing_eans = []
779
+ eans_from_preparations.each do |ean|
780
+ next if ean.to_i == 0
781
+ unless eans_from_refdata.index(ean)
782
+ @preparations_only << ean
783
+ missing_eans << ean
784
+ item = @items[ean].clone
785
+ next if defined?(RSpec) && !item[:pharmacode]
786
+ item[:ean] = ean
787
+ item[:_type] = :preparations_xml
788
+ item[:desc_de] = item[:name_de] + ' ' + item[:desc_de]
789
+ item[:desc_fr] = item[:name_fr] + ' ' + item[:desc_fr]
790
+ @articles << item
791
+ end
792
+ end
775
793
  xml.ARTICLE(XML_OPTIONS) {
776
794
  @articles.sort! { |a,b| a[:ean] <=> b[:ean] }
777
795
  @articles.each do |obj|
@@ -844,9 +862,6 @@ module Oddb2xml
844
862
  xml.BG(flag ? 'Y' : 'N')
845
863
  end
846
864
  #xml.EXP
847
- if item and item[:substances] and substance = item[:substances].first
848
- xml.QTY "#{substance[:quantity]}#{substance[:unit] ? ' ' + substance[:unit] : ''}"
849
- end if false # TODO: get qty/unit from refdata name
850
865
  xml.DSCRD obj[:desc_de] if obj[:desc_de] and not obj[:desc_de].empty?
851
866
  xml.DSCRF obj[:desc_fr] if obj[:desc_fr] and not obj[:desc_fr].empty?
852
867
  xml.DSCRF obj[:desc_de] if !obj[:desc_fr] or obj[:desc_fr].empty?
@@ -953,7 +968,7 @@ module Oddb2xml
953
968
  }
954
969
  }
955
970
  end
956
- Oddb2xml.log "build_article. Done #{idx} of #{@articles.size} articles"
971
+ Oddb2xml.log "build_article. Done #{idx} of #{@articles.size} articles " + ( @preparations_only.size > 0 ? ('. Only in preparations.xml '+ @preparations_only.join(' ')) : '')
957
972
  Oddb2xml.add_hash(_builder.to_xml)
958
973
  end
959
974
  def build_fi
@@ -1108,6 +1123,7 @@ module Oddb2xml
1108
1123
  elsif @items[de_idx[:pharmacode]] # BAG-XML (SL/LS)
1109
1124
  10
1110
1125
  elsif (de_idx[:migel] or # MiGel (xls)
1126
+ de_idx[:_type] == :preparations_xml or
1111
1127
  de_idx[:_type] == :nonpharma) # MiGel (swissindex)
1112
1128
  13
1113
1129
  else
@@ -68,11 +68,21 @@ module Oddb2xml
68
68
  item[:pharmacodes] = []
69
69
  item[:packages] = {} # pharmacode => package
70
70
  seq.Packs.Pack.each do |pac|
71
+ if pac.SwissmedicNo8 && pac.SwissmedicNo8.length < 8
72
+ puts "BagXmlExtractor: Adding leading zeros for SwissmedicNo8 #{pac.SwissmedicNo8} BagDossierNo #{pac.BagDossierNo} PackId #{pac.PackId} #{item[:name_de]}"
73
+ pac.SwissmedicNo8 = pac.SwissmedicNo8.rjust(8, '0')
74
+ end
71
75
  unless pac.GTIN
72
- puts "BagXmlExtractor: Skipping as missing GTIN in SwissmedicNo8 #{pac.SwissmedicNo8} BagDossierNo #{pac.BagDossierNo} PackId #{pac.PackId}. Skipping"
73
- next
76
+ unless pac.SwissmedicNo8
77
+ puts "BagXmlExtractor: Skipping as missing GTIN in SwissmedicNo8 #{pac.SwissmedicNo8} BagDossierNo #{pac.BagDossierNo} PackId #{pac.PackId} #{item[:name_de]}. Skipping"
78
+ else
79
+ ean12 = '7680' + pac.SwissmedicNo8
80
+ pac.GTIN = (ean12 + Oddb2xml.calc_checksum(ean12))
81
+ puts "BagXmlExtractor: Setting missing GTIN #{pac.GTIN} in SwissmedicNo8 #{pac.SwissmedicNo8} BagDossierNo #{pac.BagDossierNo} PackId #{pac.PackId} #{item[:name_de]}."
82
+ end
74
83
  end
75
84
  ean = pac.GTIN.to_i
85
+
76
86
  # packages
77
87
  exf = {:price => '', :valid_date => '', :price_code => ''}
78
88
  if pac.Prices and pac.Prices.ExFactoryPrice
@@ -89,7 +99,7 @@ module Oddb2xml
89
99
  item[:packages][ean] = {
90
100
  :ean => ean,
91
101
  :swissmedic_category => (cat = pac.SwissmedicCategory) ? cat : '',
92
- :swissmedic_number8 => (num = pac.SwissmedicNo8) ? num.rjust(8, '0') : '',
102
+ :swissmedic_number8 => (num = pac.SwissmedicNo8) ? num : '',
93
103
  :prices => { :exf_price => exf, :pub_price => pub },
94
104
  }
95
105
  # related all limitations
@@ -1,3 +1,3 @@
1
1
  module Oddb2xml
2
- VERSION = "2.4.3"
2
+ VERSION = "2.4.4"
3
3
  end
@@ -125,7 +125,7 @@ describe Oddb2xml::BagXmlExtractor do
125
125
  expect(with_pharma[:packages].size).to eq(1)
126
126
  expect(with_pharma[:packages].first[0]).to eq(Oddb2xml::THREE_TC_GTIN)
127
127
  expect(with_pharma[:packages].first[1][:prices][:pub_price][:price]).to eq('205.3')
128
- expect(@items.size).to eq(4)
128
+ expect(@items.size).to eq(5)
129
129
  end
130
130
  it "should handle pub_price for 7680620690084 correctly" do
131
131
  @items = subject.to_hash
metadata CHANGED
@@ -1,14 +1,14 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: oddb2xml
3
3
  version: !ruby/object:Gem::Version
4
- version: 2.4.3
4
+ version: 2.4.4
5
5
  platform: ruby
6
6
  authors:
7
7
  - Yasuhiro Asaka, Zeno R.R. Davatz, Niklaus Giger
8
8
  autorequire:
9
9
  bindir: bin
10
10
  cert_chain: []
11
- date: 2017-09-11 00:00:00.000000000 Z
11
+ date: 2017-10-23 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: rubyzip