Skip to content

Commit

Permalink
Correct SwissmedicNo8 when less than 8 chars long
Browse files Browse the repository at this point in the history
  • Loading branch information
ngiger committed Oct 23, 2017
1 parent 2007b80 commit a887ba2
Show file tree
Hide file tree
Showing 2 changed files with 14 additions and 4 deletions.
16 changes: 13 additions & 3 deletions lib/oddb2xml/extractor.rb
Original file line number Diff line number Diff line change
Expand Up @@ -68,11 +68,21 @@ def to_hash
item[:pharmacodes] = []
item[:packages] = {} # pharmacode => package
seq.Packs.Pack.each do |pac|
if pac.SwissmedicNo8 && pac.SwissmedicNo8.length < 8
puts "BagXmlExtractor: Adding leading zeros for SwissmedicNo8 #{pac.SwissmedicNo8} BagDossierNo #{pac.BagDossierNo} PackId #{pac.PackId} #{item[:name_de]}"
pac.SwissmedicNo8 = pac.SwissmedicNo8.rjust(8, '0')
end
unless pac.GTIN
puts "BagXmlExtractor: Skipping as missing GTIN in SwissmedicNo8 #{pac.SwissmedicNo8} BagDossierNo #{pac.BagDossierNo} PackId #{pac.PackId}. Skipping"
next
unless pac.SwissmedicNo8
puts "BagXmlExtractor: Skipping as missing GTIN in SwissmedicNo8 #{pac.SwissmedicNo8} BagDossierNo #{pac.BagDossierNo} PackId #{pac.PackId} #{item[:name_de]}. Skipping"
else
ean12 = '7680' + pac.SwissmedicNo8
pac.GTIN = (ean12 + Oddb2xml.calc_checksum(ean12))
puts "BagXmlExtractor: Setting missing GTIN #{pac.GTIN} in SwissmedicNo8 #{pac.SwissmedicNo8} BagDossierNo #{pac.BagDossierNo} PackId #{pac.PackId} #{item[:name_de]}."
end
end
ean = pac.GTIN.to_i

# packages
exf = {:price => '', :valid_date => '', :price_code => ''}
if pac.Prices and pac.Prices.ExFactoryPrice
Expand All @@ -89,7 +99,7 @@ def to_hash
item[:packages][ean] = {
:ean => ean,
:swissmedic_category => (cat = pac.SwissmedicCategory) ? cat : '',
:swissmedic_number8 => (num = pac.SwissmedicNo8) ? num.rjust(8, '0') : '',
:swissmedic_number8 => (num = pac.SwissmedicNo8) ? num : '',
:prices => { :exf_price => exf, :pub_price => pub },
}
# related all limitations
Expand Down
2 changes: 1 addition & 1 deletion spec/extractor_spec.rb
Original file line number Diff line number Diff line change
Expand Up @@ -125,7 +125,7 @@ def common_after
expect(with_pharma[:packages].size).to eq(1)
expect(with_pharma[:packages].first[0]).to eq(Oddb2xml::THREE_TC_GTIN)
expect(with_pharma[:packages].first[1][:prices][:pub_price][:price]).to eq('205.3')
expect(@items.size).to eq(4)
expect(@items.size).to eq(5)
end
it "should handle pub_price for 7680620690084 correctly" do
@items = subject.to_hash
Expand Down

0 comments on commit a887ba2

Please sign in to comment.