diff --git a/src/plugin/bsv_xml.rb b/src/plugin/bsv_xml.rb index 88f09af..f69b67e 100644 --- a/src/plugin/bsv_xml.rb +++ b/src/plugin/bsv_xml.rb @@ -322,29 +322,38 @@ module ODDB :lim_text => @lim_data, :size => @size, }) - elsif @pack && !@conflict && !@duplicate_iksnr - @report.store :pharmacode_oddb, @pack.pharmacode - if seq = @pack.sequence - @app.update seq.pointer, @seq_data, :bag + #elsif @pack && !@conflict && !@duplicate_iksnr + elsif @pack && !@duplicate_iksnr + ## check @conflict case (compare @pcode (bag pharmacode) and @pack.pharmacode (oddb pharmacode)) + update_conflict = true + if @conflict and @pcode and @pack and @pcode.to_i < @pack.pharmacode.to_i + update_conflict = false end - pold = @pack.price_public - pnew = @data[:price_public] - unless pold && pnew - pold = @pack.price_exfactory - pnew = @data[:price_exfactory] - end - if pold && pnew - if pold > pnew - flag_change @pack.pointer, :price_cut - elsif pold < pnew - flag_change @pack.pointer, :price_rise + if update_conflict + @report.store :pharmacode_oddb, @pack.pharmacode + if seq = @pack.sequence + @app.update seq.pointer, @seq_data, :bag + end + pold = @pack.price_public + pnew = @data[:price_public] + unless pold && pnew + pold = @pack.price_exfactory + pnew = @data[:price_exfactory] end + if pold && pnew + if pold > pnew + flag_change @pack.pointer, :price_cut + elsif pold < pnew + flag_change @pack.pointer, :price_rise + end + end + + ## don't take the Swissmedic-Category unless it's missing in the DB + @data.delete :ikscat if @pack.ikscat + @app.update @pack.pointer, @data, :bag + @sl_entries.store @pack.pointer, @sl_data + @lim_texts.store @pack.pointer, @lim_data end - ## don't take the Swissmedic-Category unless it's missing in the DB - @data.delete :ikscat if @pack.ikscat - @app.update @pack.pointer, @data, :bag - @sl_entries.store @pack.pointer, @sl_data - @lim_texts.store @pack.pointer, @lim_data end @pcode, @pack, @sl_data, @lim_data, @out_of_trade, @ikscd, @data, @size = nil