<< | Index | 20160913-migrate-steinwies-ch >>
ch.bbmb.sandoz> BBMB::Model::Product.find_by_pcode('4996172').pcode
-> 4996172
ch.bbmb.sandoz> BBMB::Model::Product.find_by_pcode('5117072').pcode
-> 5117072
INDEX has 3 products for 5117072. This was problem.
ch.bbmb.sandoz> ODBA.cache.retrieve_from_index('bbmb_model_product_pcode', '').select {|p| p.pcode == '4996172' }.length
-> 1
ch.bbmb.sandoz> ODBA.cache.retrieve_from_index('bbmb_model_product_pcode', '').select {|p| p.pcode == '5117072' }.length
-> 3
I think that we have recently already solved non-thread safe issue.
Then I've chedk, how many strange products in database?
ch.bbmb.sandoz> v = []; File.read('./phar.txt').each_line {|l| \
v << l.chop if ODBA.cache.retrieve_from_index('bbmb_model_product_pcode', '').select {|p| \
p.pcode == l.chop }.length != 1 }; v.length
-> 56
These products come from Artikel.txt.
In Artikel.txt:
1. Create phar.txt (pharmacode only text file from newest Artikel.txt) 2. Put phar.txt into /var/www/sandoz.bbmb.ch 3. Count duplicated products with pharmacode via bin/admin 4. Check these products
# How to count duplicated products from file.
ch.bbmb.sandoz> v = []; File.read('/var/www/sandoz.bbmb.ch/phar.txt').each_line {|l| next if l.chop.empty?; \
c = ODBA.cache.retrieve_from_index('bbmb_model_product_pcode', '').select {|p| \
p.pcode == l.chop }.length; v << l.chop if c > 1 }; p v
-> Array
This is a result on production
["1301904", "4124733", "2366082", "1421146", "2324014", "2315506", "2872112", "2991265", "2991259", "4124733", "4844628", "6479647", "1301867", "2991265", "2991259", "1421146", "1301904", "2324014", "2366082", "2872112", "2315506", "2508406"]
It seems that these products have some article code.
z.B. 1301904 has different article number.
ch.bbmb.sandoz> ODBA.cache.retrieve_from_index('bbmb_model_product_pcode', '').select {|p| \
p.pcode == '1301904' }[0].article_number
-> 00544207
ch.bbmb.sandoz> ODBA.cache.retrieve_from_index('bbmb_model_product_pcode', '').select {|p| \
p.pcode == '1301904' }[1].article_number
-> 44019496
z.B. 4124733 has different article number.
ch.bbmb.sandoz> ODBA.cache.retrieve_from_index('bbmb_model_product_pcode', '').select {|p| \
p.pcode == '4124733' }[0].article_number
-> 44015832
ch.bbmb.sandoz> ODBA.cache.retrieve_from_index('bbmb_model_product_pcode', '').select {|p| \
p.pcode == '4124733' }[1].article_number
-> 44065395
How to delete these (all) products
ch.bbmb.sandoz> ["1301904", "4124733", "2366082", "1421146", "2324014", \
"2315506", "2872112", "2991265", "2991259", "4124733", "4844628", "6479647", \
"1301867", "2991265", "2991259", "1421146", "1301904", "2324014", "2366082", \
"2872112", "2315506", "2508406"].map {|pcode| ODBA.cache.retrieve_from_index('bbmb_model_product_pcode', '').select {|p| \
p.pcode == pcode }.map {|p| p.odba_delete } }
And run (improved) update.
Then
ch.bbmb.sandoz> ODBA.cache.retrieve_from_index('bbmb_model_product_pcode', '').select {|p| p.pcode == "1301904" }.length
-> 1
Commits: