oddb2xml 1.9.3 → 1.9.4
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 +8 -8
- data/Gemfile.lock +1 -1
- data/History.txt +8 -0
- data/lib/oddb2xml/builder.rb +17 -13
- data/lib/oddb2xml/options.rb +5 -1
- data/lib/oddb2xml/version.rb +1 -1
- data/oddb2xml.xsd +1 -0
- data/spec/builder_spec.rb +36 -20
- data/spec/options_spec.rb +1 -1
- metadata +2 -2
checksums.yaml
CHANGED
@@ -1,15 +1,15 @@
|
|
1
1
|
---
|
2
2
|
!binary "U0hBMQ==":
|
3
3
|
metadata.gz: !binary |-
|
4
|
-
|
4
|
+
Njk4OTQyNjMxODA2YTY1Yzk5MjU5ZDRkZDM2NzAwYWUyMGVkNWM4Yw==
|
5
5
|
data.tar.gz: !binary |-
|
6
|
-
|
6
|
+
NTU0N2NjMWViNmRlMDNjYjI5NDMzMmUwMDgyMmExZGFmN2Q0MmE3OA==
|
7
7
|
SHA512:
|
8
8
|
metadata.gz: !binary |-
|
9
|
-
|
10
|
-
|
11
|
-
|
9
|
+
YmUwZDVjYWU3NGNkN2I3ZGMzZDg1MTNiZTYxYTAwMTZkNDdhNjQ5YzdjOTYx
|
10
|
+
YTlmZWZjZWE4MzczN2YzMTM2MDIzYjNhMjI4MWUzNGM2M2MxMGE2ZmUzMWFh
|
11
|
+
NjI0NDkwMjM1MmNkYjc3N2FmZjA4OTFiOWRjNmViYzdjY2NmYTk=
|
12
12
|
data.tar.gz: !binary |-
|
13
|
-
|
14
|
-
|
15
|
-
|
13
|
+
OWFhYTNiODdiMmI2Yzk4MDA1YTRiMjg0NDUzYzZkMWI0MWM0NDVjZTQyMThk
|
14
|
+
YjI5NjI2ZTM5NjcwYWZkY2U3ZjA0MmFkODgyYTM1OWNkMGQzN2JlYjE0MjIz
|
15
|
+
MDY3NmY5NDJmOGFjMGVkZWM0ODUyMDc2ODEwOTRlMDU5YTc0NTQ=
|
data/Gemfile.lock
CHANGED
data/History.txt
CHANGED
@@ -1,7 +1,15 @@
|
|
1
|
+
=== 1.9.4 /21.01.2015
|
2
|
+
|
3
|
+
* Create additional field resellerpub in oddb_article.xml
|
4
|
+
* Adapted xsd for this change
|
5
|
+
* Adapted -h message
|
6
|
+
|
1
7
|
=== 1.9.3 / 19.01.2015
|
8
|
+
|
2
9
|
* Fixed missing DSCRD/DSCF in oddb_product.xml because BAG-Preparation.xml ships without Pharmacode now
|
3
10
|
|
4
11
|
=== 1.9.2 / 19.01.2015
|
12
|
+
|
5
13
|
* Niklaus did not run all necesary tests!
|
6
14
|
* Fixed bin/oddbxml
|
7
15
|
|
data/lib/oddb2xml/builder.rb
CHANGED
@@ -734,18 +734,23 @@ module Oddb2xml
|
|
734
734
|
end
|
735
735
|
end
|
736
736
|
if info_zur_rose
|
737
|
+
price = info_zur_rose[:price]
|
738
|
+
vdat = Time.parse(datetime).strftime("%d.%m.%Y")
|
737
739
|
xml.ARTPRI {
|
738
|
-
xml.VDAT
|
740
|
+
xml.VDAT vdat
|
739
741
|
xml.PTYP "ZURROSE"
|
740
|
-
price = info_zur_rose[:price]
|
741
|
-
price = (price.to_f*(1 + (@options[:percent].to_f/100))).round_by(0.05).round(2) if @options[:percent] != nil
|
742
742
|
xml.PRICE price
|
743
743
|
}
|
744
744
|
xml.ARTPRI {
|
745
|
-
xml.VDAT
|
745
|
+
xml.VDAT vdat
|
746
746
|
xml.PTYP "ZURROSEPUB"
|
747
747
|
xml.PRICE info_zur_rose[:pub_price]
|
748
748
|
}
|
749
|
+
xml.ARTPRI {
|
750
|
+
xml.VDAT vdat
|
751
|
+
xml.PTYP "RESELLERPUB"
|
752
|
+
xml.PRICE (price.to_f*(1 + (@options[:percent].to_f/100))).round_by(0.05).round(2)
|
753
|
+
} if @options[:percent] != nil
|
749
754
|
end
|
750
755
|
#xml.ARTMIG {
|
751
756
|
#xml.VDAT
|
@@ -1031,19 +1036,18 @@ module Oddb2xml
|
|
1031
1036
|
(pac ? pac[:name_de].to_s : '') +
|
1032
1037
|
(idx[:additional_desc] ? idx[:additional_desc] : '')
|
1033
1038
|
).gsub(/"/, '')
|
1034
|
-
price_doctor = pac ? format_price(pac[:prices][:exf_price][:price]).to_s : nil
|
1035
|
-
price_public = pac ? format_price(pac[:prices][:pub_price][:price]).to_s : nil
|
1036
1039
|
if @infos_zur_rose[ean]
|
1037
|
-
|
1038
|
-
|
1039
|
-
|
1040
|
-
|
1041
|
-
price_doctor = sprintf('%06i', (price_doctor.to_f*(1 + (@options[:percent].to_f/100))).round_by(0.05).round(2))
|
1042
|
-
end
|
1040
|
+
price_exf = sprintf('%06i', ((@infos_zur_rose[ean][:price].to_f)*100).to_i)
|
1041
|
+
price_public = sprintf('%06i', ((@infos_zur_rose[ean][:pub_price].to_f)*100).to_i)
|
1042
|
+
if @options[:percent] != nil
|
1043
|
+
price_public = sprintf('%06i', (price_exf.to_f*(1 + (@options[:percent].to_f/100))).round_by(0.05).round(2))
|
1043
1044
|
end
|
1045
|
+
elsif pac and pac[:prices]
|
1046
|
+
price_exf = sprintf('%06i', (pac[:prices][:exf_price][:price].to_f*100).to_i) if pac[:prices][:exf_price] and pac[:prices][:exf_price][:price]
|
1047
|
+
price_public = sprintf('%06i', (pac[:prices][:pub_price][:price].to_f*100).to_i) if pac[:prices][:pub_price] and pac[:prices][:pub_price][:price]
|
1044
1048
|
end
|
1045
1049
|
row << format_name(abez)
|
1046
|
-
row << "%#{DAT_LEN[:PRMO]}s" % (
|
1050
|
+
row << "%#{DAT_LEN[:PRMO]}s" % (price_exf ? price_exf.to_s : ('0' * DAT_LEN[:PRMO]))
|
1047
1051
|
row << "%#{DAT_LEN[:PRPU]}s" % (price_public ? price_public.to_s : ('0' * DAT_LEN[:PRPU]))
|
1048
1052
|
row << "%#{DAT_LEN[:CKZL]}s" % if (@lppvs[ean])
|
1049
1053
|
'2'
|
data/lib/oddb2xml/options.rb
CHANGED
@@ -19,7 +19,7 @@ module Oddb2xml
|
|
19
19
|
:ean14 => false,
|
20
20
|
:skip_download=> false,
|
21
21
|
:log => false,
|
22
|
-
:percent =>
|
22
|
+
:percent => nil,
|
23
23
|
}
|
24
24
|
end
|
25
25
|
def Options.help
|
@@ -34,6 +34,10 @@ Usage:
|
|
34
34
|
-f F, --format=F File format F, default is xml. {xml|dat}
|
35
35
|
If F is given, -o option is ignored.
|
36
36
|
-I x, --increment=x Increment price by x percent. Forces -f dat -p zurrose.
|
37
|
+
-I x, --increment=x create additional field price_resellerpub as
|
38
|
+
price_extfactory incremented by x percent (rounded to the next 0.05 francs)
|
39
|
+
in oddb_article.xml. In generated zurrose_transfer.dat PRPU is set to this price
|
40
|
+
Forces -f dat -p zurrose.
|
37
41
|
-i, --include Include target option for ean14 for 'dat' format.
|
38
42
|
'xml' format includes always ean14 records.
|
39
43
|
-o, --option Optional fachinfo output.
|
data/lib/oddb2xml/version.rb
CHANGED
data/oddb2xml.xsd
CHANGED
data/spec/builder_spec.rb
CHANGED
@@ -192,10 +192,12 @@ describe Oddb2xml::Builder do
|
|
192
192
|
File.exists?(product_filename).should eq true
|
193
193
|
doc = REXML::Document.new File.new(@article_xml)
|
194
194
|
unless /1\.8\.7/.match(RUBY_VERSION)
|
195
|
-
price_zur_rose = XPath.match( doc, "//ART[DSCRD='SOFRADEX Gtt Auric']/ARTPRI[PTYP='ZURROSE']/PRICE").first.text
|
196
|
-
price_zur_rose.should eq '12.9'
|
197
195
|
price_zur_rose_pub = XPath.match( doc, "//ART[DSCRD='SOFRADEX Gtt Auric']/ARTPRI[PTYP='ZURROSEPUB']/PRICE").first.text
|
198
196
|
price_zur_rose_pub.should eq '15.45'
|
197
|
+
price_reseller_pub = XPath.match( doc, "//ART[DSCRD='SOFRADEX Gtt Auric']/ARTPRI[PTYP='RESELLERPUB']/PRICE").first.text
|
198
|
+
price_reseller_pub.should eq '12.9'
|
199
|
+
price_zur_rose = XPath.match( doc, "//ART[DSCRD='SOFRADEX Gtt Auric']/ARTPRI[PTYP='ZURROSE']/PRICE").first.text
|
200
|
+
price_zur_rose.should eq '7.18'
|
199
201
|
end
|
200
202
|
end
|
201
203
|
end
|
@@ -218,9 +220,11 @@ describe Oddb2xml::Builder do
|
|
218
220
|
doc = REXML::Document.new File.new(@article_xml)
|
219
221
|
unless /1\.8\.7/.match(RUBY_VERSION)
|
220
222
|
price_zur_rose = XPath.match( doc, "//ART[DSCRD='SOFRADEX Gtt Auric']/ARTPRI[PTYP='ZURROSE']/PRICE").first.text
|
221
|
-
price_zur_rose.should eq '7.
|
223
|
+
price_zur_rose.should eq '7.18'
|
222
224
|
price_zur_rose_pub = XPath.match( doc, "//ART[DSCRD='SOFRADEX Gtt Auric']/ARTPRI[PTYP='ZURROSEPUB']/PRICE").first.text
|
223
225
|
price_zur_rose_pub.should eq '15.45'
|
226
|
+
price_reseller_pub = XPath.match( doc, "//ART[DSCRD='SOFRADEX Gtt Auric']/ARTPRI[PTYP='RESELLERPUB']/PRICE")
|
227
|
+
price_reseller_pub.size.should eq 0
|
224
228
|
end
|
225
229
|
end
|
226
230
|
|
@@ -436,8 +440,9 @@ describe Oddb2xml::Builder do
|
|
436
440
|
options.parser.parse!('-e -I 80 --skip-download'.split(' '))
|
437
441
|
Oddb2xml::Cli.new(options.opts)
|
438
442
|
end
|
439
|
-
|
440
|
-
|
443
|
+
search_path_reseller = "//ART[PHAR=0023722]/ARTPRI[PTYP='RESELLERPUB']/PRICE"
|
444
|
+
search_path_rose = "//ART[PHAR=0023722]/ARTPRI[PTYP='ZURROSE']/PRICE"
|
445
|
+
search_path_pub = "//ART[PHAR=0023722]/ARTPRI[PTYP='ZURROSEPUB']/PRICE"
|
441
446
|
# sl-entries have a PPUB price
|
442
447
|
search_path_desitin = "//ART[SMNO='62069008']/ARTPRI[PTYP='PPUB']/PRICE"
|
443
448
|
|
@@ -455,6 +460,7 @@ describe Oddb2xml::Builder do
|
|
455
460
|
smno = article.elements['SMNO'] ? article.elements['SMNO'].text : 'nil'
|
456
461
|
XPath.match( doc, search_path_rose).size.should eq 1
|
457
462
|
XPath.match( doc, search_path_rose).first.text.should eq '9.85'
|
463
|
+
XPath.match( doc, search_path_reseller).size.should eq 0
|
458
464
|
price = 15.20 # This is the zurrose pub price.
|
459
465
|
XPath.match( doc, search_path_pub).first.text.to_f.should eq price
|
460
466
|
XPath.match( doc, search_path_desitin).first.text.should eq '27.8'
|
@@ -472,43 +478,52 @@ describe Oddb2xml::Builder do
|
|
472
478
|
refdata = article.elements['REF_DATA'].text
|
473
479
|
smno = article.elements['SMNO'] ? article.elements['SMNO'].text : 'nil'
|
474
480
|
XPath.match( doc, search_path_rose).size.should eq 1
|
475
|
-
XPath.match( doc, search_path_rose).first.text.should eq '
|
481
|
+
XPath.match( doc, search_path_rose).first.text.should eq '9.85'
|
476
482
|
XPath.match( doc, search_path_pub).first.text
|
477
483
|
XPath.match( doc, search_path_pub).first.text.should eq '15.20'
|
484
|
+
XPath.match( doc, search_path_reseller).size.should eq 1
|
485
|
+
XPath.match( doc, search_path_reseller).first.text.should eq '17.75'
|
486
|
+
|
478
487
|
XPath.match( doc, search_path_desitin).first.text.should eq '27.8'
|
488
|
+
|
479
489
|
# sl-entries have a PPUB price, but no ZURROSEPUB, and vice versa
|
480
490
|
XPath.match( doc, "//ART[PHAR=0023722]/ARTPRI[PTYP='PPUB']").size.should eq 0
|
481
491
|
XPath.match( doc, "//ART[SMNO='62069008']/ARTPRI[PTYP='ZURROSEPUB']").size.should eq 0
|
492
|
+
XPath.match( doc, "//ART[SMNO='62069008']/ARTPRI[PTYP='RESELLERPUB']").size.should eq 0
|
482
493
|
end
|
483
494
|
end
|
484
495
|
|
496
|
+
# Check IGM-Format
|
485
497
|
def check_article(line, check_prices = false, add_80_percents=0)
|
486
|
-
|
487
|
-
|
488
|
-
|
489
|
-
|
490
|
-
|
498
|
+
typ = line[0..1]
|
499
|
+
name = line[10..59]
|
500
|
+
ckzl = line[72]
|
501
|
+
ciks = line[75]
|
502
|
+
price_exf = line[60..65].to_i
|
503
|
+
price_reseller = line[66..71].to_i
|
504
|
+
price_public = line[66..71].to_i
|
505
|
+
typ.should eq '11'
|
491
506
|
puts "check_article: #{price_doctor} #{price_public} CKZL is #{ckzl} CIKS is #{ciks} name #{name} " if $VERBOSE
|
492
507
|
return unless check_prices
|
493
508
|
if /11116999473TC/.match(line)
|
494
|
-
price_doctor.should eq 16455
|
495
509
|
line[60..65].should eq '016455'
|
510
|
+
price_exf.should eq 16455
|
496
511
|
ckzl.should eq '1'
|
497
512
|
price_public.should eq 20530 # this is a SL-product. Therefore we may not have a price increase
|
498
513
|
line[66..71].should eq '020530' # the dat format requires leading zeroes and not point
|
499
514
|
end
|
500
515
|
if /1130598003SOFRADEX/.match(line)
|
501
|
-
|
502
|
-
line[66..71].should eq '001545' # the dat format requires leading zeroes and not point
|
503
|
-
|
516
|
+
# 1130598003SOFRADEX Gtt Auric 8 ml 000718001545300B120130076803169501572
|
504
517
|
ckzl.should eq '3'
|
505
518
|
if add_80_percents
|
506
|
-
|
507
|
-
line[
|
519
|
+
price_reseller.should eq 1292 # = 1545*1.8 this is a non SL-product. Therefore we must increase its price as requsted
|
520
|
+
line[66..71].should eq '001292' # dat format requires leading zeroes and not poin
|
508
521
|
else
|
509
|
-
|
510
|
-
line[
|
511
|
-
end
|
522
|
+
price_reseller.should eq 718 # this is a non SL-product, but no price increase was requested
|
523
|
+
line[66..71].should eq '000718' # the dat format requires leading zeroes and not point
|
524
|
+
end if false
|
525
|
+
line[60..65].should eq '000718' # the dat format requires leading zeroes and not point
|
526
|
+
price_exf.should eq 718 # this is a non SL-product, but no price increase was requested
|
512
527
|
end
|
513
528
|
end
|
514
529
|
|
@@ -541,6 +556,7 @@ describe Oddb2xml::Builder do
|
|
541
556
|
end
|
542
557
|
it 'should contain the corect prices' do
|
543
558
|
res = buildr_capture(:stdout){ cli.run }
|
559
|
+
# res = cli.run
|
544
560
|
res.should match(/products/)
|
545
561
|
dat_filename = File.join(Oddb2xml::WorkDir, 'oddb.dat')
|
546
562
|
File.exists?(dat_filename).should eq true
|
data/spec/options_spec.rb
CHANGED
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: 1.9.
|
4
|
+
version: 1.9.4
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- Yasuhiro Asaka, Zeno R.R. Davatz
|
8
8
|
autorequire:
|
9
9
|
bindir: bin
|
10
10
|
cert_chain: []
|
11
|
-
date: 2015-01-
|
11
|
+
date: 2015-01-22 00:00:00.000000000 Z
|
12
12
|
dependencies:
|
13
13
|
- !ruby/object:Gem::Dependency
|
14
14
|
name: rubyzip
|