oddb2xml 1.6.5 → 1.6.6
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.
- data/History.txt +5 -0
- data/lib/oddb2xml/builder.rb +14 -7
- data/lib/oddb2xml/version.rb +1 -1
- data/spec/builder_spec.rb +26 -6
- metadata +2 -2
data/History.txt
CHANGED
data/lib/oddb2xml/builder.rb
CHANGED
@@ -395,7 +395,7 @@ module Oddb2xml
|
|
395
395
|
xml.GTIN ean
|
396
396
|
ppac = ((_ppac = @packs[ean[4..11].intern] and !_ppac[:is_tier]) ? _ppac : {})
|
397
397
|
unless ppac
|
398
|
-
|
398
|
+
ppac = @packs.find{|pac| pac.ean == ean }.first
|
399
399
|
end
|
400
400
|
xml.PRODNO ppac[:prodno] if ppac[:prodno] and !ppac[:prodno].empty?
|
401
401
|
if seq
|
@@ -958,19 +958,26 @@ module Oddb2xml
|
|
958
958
|
rows = []
|
959
959
|
@articles.each do |obj|
|
960
960
|
obj[:de].each_with_index do |idx, i|
|
961
|
-
|
961
|
+
ean = idx[:ean]
|
962
|
+
next if ((ean.to_s.length != 13) and !ean14)
|
962
963
|
row = ''
|
963
964
|
# Oddb2tdat.parse
|
964
965
|
if idx[:status] =~ /A|I/
|
965
966
|
pac,no8 = nil,nil
|
966
967
|
if obj[:seq]
|
967
968
|
pac = obj[:seq][:packages][idx[:pharmacode]]
|
968
|
-
pac = obj[:seq][:packages][
|
969
|
+
pac = obj[:seq][:packages][ean] unless pac
|
970
|
+
else
|
971
|
+
pac = @items[ean][:packages][ean] if @items and @items[ean]
|
969
972
|
end
|
970
|
-
|
973
|
+
# :swissmedic_numbers
|
971
974
|
if pac
|
972
975
|
no8 = pac[:swissmedic_number8].intern
|
973
976
|
end
|
977
|
+
if pac and pac[:prices] == nil and no8
|
978
|
+
ppac = ((ppac = @packs[no8.intern] and ppac[:is_tier]) ? ppac : nil)
|
979
|
+
pac = ppac if ppac
|
980
|
+
end
|
974
981
|
row << "%#{DAT_LEN[:RECA]}s" % '11'
|
975
982
|
row << "%#{DAT_LEN[:CMUT]}s" % if (phar = idx[:pharmacode] and phar.size > 3) # does not check expiration_date
|
976
983
|
idx[:status] == "I" ? '3' : '1'
|
@@ -986,7 +993,7 @@ module Oddb2xml
|
|
986
993
|
row << format_name(abez)
|
987
994
|
row << "%#{DAT_LEN[:PRMO]}s" % (pac ? format_price(pac[:prices][:exf_price][:price].to_s) : ('0' * DAT_LEN[:PRMO]))
|
988
995
|
row << "%#{DAT_LEN[:PRPU]}s" % (pac ? format_price(pac[:prices][:pub_price][:price].to_s) : ('0' * DAT_LEN[:PRPU]))
|
989
|
-
row << "%#{DAT_LEN[:CKZL]}s" % if (@lppvs[
|
996
|
+
row << "%#{DAT_LEN[:CKZL]}s" % if (@lppvs[ean])
|
990
997
|
'2'
|
991
998
|
elsif pac # sl_entry
|
992
999
|
'1'
|
@@ -1000,7 +1007,7 @@ module Oddb2xml
|
|
1000
1007
|
'0'
|
1001
1008
|
end
|
1002
1009
|
row << "%#{DAT_LEN[:CBGG]}s" % if ((pac && pac[:narcosis_flag] == 'Y') or # BAGXml
|
1003
|
-
(@flags[
|
1010
|
+
(@flags[ean])) # ywesee BM_update
|
1004
1011
|
'3'
|
1005
1012
|
else
|
1006
1013
|
'0'
|
@@ -1015,7 +1022,7 @@ module Oddb2xml
|
|
1015
1022
|
else
|
1016
1023
|
('0' * DAT_LEN[:ITHE])
|
1017
1024
|
end.to_i
|
1018
|
-
row << "%0#{DAT_LEN[:CEAN]}d" %
|
1025
|
+
row << "%0#{DAT_LEN[:CEAN]}d" % ean.to_i
|
1019
1026
|
row << "%#{DAT_LEN[:CMWS]}s" % '2' # pharma
|
1020
1027
|
rows << row
|
1021
1028
|
end
|
data/lib/oddb2xml/version.rb
CHANGED
data/spec/builder_spec.rb
CHANGED
@@ -59,12 +59,12 @@ describe Oddb2xml::Builder do
|
|
59
59
|
article_xml.should match(/<SMNO>53662013</)
|
60
60
|
article_xml.should match(/<DSCRD>3TC Filmtabl 150 mg</)
|
61
61
|
article_xml.should match(/<COMPNO>7601001392175</)
|
62
|
-
article_xml.should match(/<BC>7680536620137</)
|
63
|
-
article_xml.should match(/<VDAT>01.10.2011</)
|
64
|
-
article_xml.should match(/<PTYP>PEXF</)
|
65
|
-
article_xml.should match(/<PRICE>164.55</)
|
66
|
-
article_xml.should match(/<PTYP>PPUB</)
|
67
|
-
article_xml.should match(/<PRICE>205.3</)
|
62
|
+
article_xml.should match(/<BC>7680536620137</)
|
63
|
+
article_xml.should match(/<VDAT>01.10.2011</)
|
64
|
+
article_xml.should match(/<PTYP>PEXF</)
|
65
|
+
article_xml.should match(/<PRICE>164.55</)
|
66
|
+
article_xml.should match(/<PTYP>PPUB</)
|
67
|
+
article_xml.should match(/<PRICE>205.3</)
|
68
68
|
|
69
69
|
article_xml.should match(/Levetiracetam DESITIN/i) #
|
70
70
|
article_xml.should match(/7680536620137/) # Pharmacode
|
@@ -79,5 +79,25 @@ describe Oddb2xml::Builder do
|
|
79
79
|
article_xml.should match(/<COMPNO>7601001320451</)
|
80
80
|
end
|
81
81
|
end
|
82
|
+
|
83
|
+
context 'when -a nonpharma -f dat is given' do
|
84
|
+
let(:cli) do
|
85
|
+
opts = {
|
86
|
+
:nonpharma => 'true',
|
87
|
+
:format => :dat,
|
88
|
+
}
|
89
|
+
Oddb2xml::Cli.new(opts)
|
90
|
+
end
|
91
|
+
it 'should generate a valid oddb_with_migel.dat' do
|
92
|
+
res = capture(:stdout){ cli.run }
|
93
|
+
res.should match(/products/)
|
94
|
+
dat_filename = File.expand_path(File.join(File.dirname(__FILE__), '..', 'oddb_with_migel.dat'))
|
95
|
+
File.exists?(dat_filename).should be_true
|
96
|
+
oddb_dat = IO.read(dat_filename)
|
97
|
+
# $stdout.puts oddb_dat
|
98
|
+
# return
|
99
|
+
oddb_dat.should match(/1115819012LEVETIRACETAM DESITIN Filmtabl 250 mg 30 Stk 001349002780100B010710076806206900842/)
|
100
|
+
end
|
101
|
+
end
|
82
102
|
end
|
83
103
|
|
metadata
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: oddb2xml
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 1.6.
|
4
|
+
version: 1.6.6
|
5
5
|
prerelease:
|
6
6
|
platform: ruby
|
7
7
|
authors:
|
@@ -9,7 +9,7 @@ authors:
|
|
9
9
|
autorequire:
|
10
10
|
bindir: bin
|
11
11
|
cert_chain: []
|
12
|
-
date: 2013-12-
|
12
|
+
date: 2013-12-12 00:00:00.000000000 Z
|
13
13
|
dependencies:
|
14
14
|
- !ruby/object:Gem::Dependency
|
15
15
|
name: rubyzip
|