mercator_bechlem 0.0.1 → 0.1
Sign up to get free protection for your applications and to get access to all the features.
- checksums.yaml +4 -4
- data/app/controllers/consumables_controller.rb +59 -0
- data/app/models/mercator_bechlem/access.rb +43 -0
- data/app/models/mercator_bechlem/base.rb +26 -0
- data/app/models/mercator_bechlem/vbrand.rb +12 -0
- data/app/models/mercator_bechlem/vcategory.rb +38 -0
- data/app/models/mercator_bechlem/vdescriptor.rb +12 -0
- data/app/models/mercator_bechlem/videntifier.rb +12 -0
- data/app/models/mercator_bechlem/vitem.rb +13 -0
- data/app/models/mercator_bechlem/vitem2item.rb +15 -0
- data/app/models/mercator_bechlem/vitem_media.rb +12 -0
- data/app/models/mercator_bechlem/vitem_printer.rb +12 -0
- data/app/models/mercator_bechlem/vitem_supply.rb +17 -0
- data/app/models/mercator_bechlem/vqualifier.rb +11 -0
- data/app/views/consumables/category.dryml +59 -0
- data/app/views/consumables/printers.dryml +71 -0
- data/app/views/consumables/products.dryml +37 -0
- data/app/views/mercator_bechlem/layouts/mercator_bechlem/application.html.erb +13 -0
- data/config/routes.rb +8 -2
- data/lib/mercator_bechlem/version.rb +1 -1
- data/lib/tasks/mercator_bechlem_tasks.rake +20 -4
- metadata +36 -13
- data/app/helpers/mercator_bechlem/application_helper.rb +0 -4
- data/app/views/layouts/mercator_bechlem/application.html.erb +0 -14
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA1:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: 7b418be9994e520a58f4ba2e64cdaa5965ec15cf
|
4
|
+
data.tar.gz: fa7c14413c5c0a58e3bd328aec3dbd1934cafc77
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: 3290318d66ce4d7dcb4dda1b8e71a285135bc8b176b6efcde40dee4ad8aadc01edec048b16f248c871d4e48c2e3f0ecf4d7b8a31892a487b6d63bc42b2514a2d
|
7
|
+
data.tar.gz: b60572d25121097cf9da268c54819fdc472b3cde3560b6ce7e766da4a234a688041d80af097de4947fe29093d19f3d9515cf4fe33ac5ccd73ec7e7fbbe49a37e
|
@@ -0,0 +1,59 @@
|
|
1
|
+
class ConsumablesController < ApplicationController
|
2
|
+
|
3
|
+
hobo_controller
|
4
|
+
|
5
|
+
def products
|
6
|
+
@printer = params[:id]
|
7
|
+
@printer ||= try_to{ MercatorBechlem::VitemPrinter.where(brand: "HP", DESCRIPTION: params[:printer]).first.IDITEM }
|
8
|
+
|
9
|
+
if @printer
|
10
|
+
icecat_products = MercatorBechlem::Vitem2item.where(IDITEM: @printer )
|
11
|
+
@printer_description = MercatorBechlem::VitemPrinter.where(IDITEM: @printer).first.DESCRIPTION
|
12
|
+
alternative_numbers = icecat_products.collect { |product| "#{product.ARTNR.gsub("\s", '')}" }.uniq
|
13
|
+
# gsub removes whitespace characters, compact removes nil elements
|
14
|
+
@products = Inventory.where(alternative_number: alternative_numbers).*.product.uniq
|
15
|
+
@active_products = @products.find_all{|product| product.state == "active" }
|
16
|
+
end
|
17
|
+
end
|
18
|
+
|
19
|
+
def printers
|
20
|
+
@printerserie = params[:id]
|
21
|
+
|
22
|
+
@printer_series = MercatorBechlem::VitemPrinter.where(brand: "HP")
|
23
|
+
.where.not(printerseries: nil)
|
24
|
+
.order(PRINTERSERIES: :asc)
|
25
|
+
@printer_series_names = @printer_series.*.PRINTERSERIES.uniq
|
26
|
+
|
27
|
+
if @printerserie == "All"
|
28
|
+
@printer_names = MercatorBechlem::VitemPrinter.where(brand: "HP")
|
29
|
+
.order(DESCRIPTION: :asc).*
|
30
|
+
.DESCRIPTION
|
31
|
+
.uniq
|
32
|
+
else
|
33
|
+
@printer_names = MercatorBechlem::VitemPrinter.where(brand: "HP", printerseries: @printerserie)
|
34
|
+
.order(DESCRIPTION: :asc).*
|
35
|
+
.DESCRIPTION.uniq
|
36
|
+
@printers = MercatorBechlem::VitemPrinter.where(brand: "HP", printerseries: @printerserie)
|
37
|
+
.select("CATEGORY, BRAND, DESCRIPTION, IDITEM")
|
38
|
+
.order(DESCRIPTION: :asc)
|
39
|
+
end
|
40
|
+
end
|
41
|
+
|
42
|
+
def category
|
43
|
+
category_id = (params[:id] == "All") ? "145200000" : params[:id]
|
44
|
+
@category = MercatorBechlem::Vcategory.where(IDCATEGORY: category_id).first
|
45
|
+
@ancestors = try_to { @category.ancestors }
|
46
|
+
@children = @category ? @category.children : MercatorBechlem::Vcategory.ivellio_top_categories
|
47
|
+
|
48
|
+
@printers = MercatorBechlem::VitemSupply.for_category_id(params[:id])
|
49
|
+
|
50
|
+
if @printers && @category && @category.parent
|
51
|
+
printer_alternative_numbers = @printers.collect { |printer| "#{printer.ARTNR.gsub("\s", '')}" }
|
52
|
+
.uniq
|
53
|
+
@products = Inventory.where(alternative_number: printer_alternative_numbers).*
|
54
|
+
.product
|
55
|
+
.uniq
|
56
|
+
@active_products = @products.find_all{|product| product.state == "active" }
|
57
|
+
end
|
58
|
+
end
|
59
|
+
end
|
@@ -0,0 +1,43 @@
|
|
1
|
+
require 'open-uri'
|
2
|
+
require 'zip/zip'
|
3
|
+
|
4
|
+
module MercatorBechlem
|
5
|
+
class Access
|
6
|
+
|
7
|
+
attr_accessor(:user, :password, :vendor, :lang, :typ, :base_uri, :full_index_url, :daily_index_url, :open_uri_options)
|
8
|
+
|
9
|
+
USER = "MB_Daten_Ivellio-Vellin"
|
10
|
+
PASSWORD = "247r9fhs47hefe4"
|
11
|
+
URL = "ftp://" + USER + ":" + PASSWORD + "@ww2.kompashop.de/Ivellio_Vellin.zip"
|
12
|
+
DESTINATION = Rails.root.join("vendor","bechlem")
|
13
|
+
TABLES = ["BRAND", "DESCRIPTOR", "ITEM", "IDENTIFIER", "QUALIFIER", "ITEM2ITEM"]
|
14
|
+
|
15
|
+
# --- Class Methods --- #
|
16
|
+
|
17
|
+
def self.download_index
|
18
|
+
|
19
|
+
io = open( URL, {"Accept-Encoding" => "gzip"})
|
20
|
+
Zip::ZipFile.open(io) do |zip_file|
|
21
|
+
zip_file.each do |f|
|
22
|
+
f_path=File.join(DESTINATION, f.name)
|
23
|
+
FileUtils.mkdir_p(File.dirname(f_path))
|
24
|
+
zip_file.extract(f, f_path) unless File.exist?(f_path)
|
25
|
+
end
|
26
|
+
end
|
27
|
+
io.close
|
28
|
+
end
|
29
|
+
|
30
|
+
def self.delete_first_lines
|
31
|
+
TABLES.each do |table|
|
32
|
+
filename = DESTINATION.join(table + '.CSV')
|
33
|
+
File.open(filename) do |f|
|
34
|
+
f.readline
|
35
|
+
File.open(filename.to_s + ".tmp", 'w') do |f2|
|
36
|
+
f2 << f.read
|
37
|
+
end
|
38
|
+
end
|
39
|
+
FileUtils.mv(filename.to_s + ".tmp", filename)
|
40
|
+
end
|
41
|
+
end
|
42
|
+
end
|
43
|
+
end
|
@@ -0,0 +1,26 @@
|
|
1
|
+
module MercatorBechlem
|
2
|
+
class Base < ActiveRecord::Base
|
3
|
+
|
4
|
+
establish_connection(:bechlem)
|
5
|
+
self.abstract_class = true
|
6
|
+
self.connection_config["local_infile"] = true # otherwise imporing from files is prohibitied
|
7
|
+
self.connection_config["strict"] = false # otherwise empty nil-values are not allowed in csv.-files
|
8
|
+
|
9
|
+
def self.update_from_download
|
10
|
+
tables = ["BRAND", "DESCRIPTOR", "ITEM", "IDENTIFIER", "QUALIFIER", "ITEM2ITEM"]
|
11
|
+
tables.each do |table|
|
12
|
+
self.connection.execute("TRUNCATE " + table + ";")
|
13
|
+
records_array = self.connection.execute(
|
14
|
+
"LOAD DATA LOCAL INFILE '" + Access::DESTINATION.to_s + "/" + table +
|
15
|
+
".CSV' REPLACE INTO TABLE " + table + " FIELDS TERMINATED BY ';' LINES TERMINATED BY '\\n';")
|
16
|
+
end
|
17
|
+
end
|
18
|
+
|
19
|
+
def self.copy_views_to_tables
|
20
|
+
self.connection.execute("TRUNCATE item2item_temp;")
|
21
|
+
self.connection.execute("TRUNCATE item_printer_temp;")
|
22
|
+
self.connection.execute("INSERT IGNORE INTO item_printer_temp SELECT * FROM VITEM_PRINTER;")
|
23
|
+
self.connection.execute("INSERT IGNORE INTO item2item_temp SELECT * FROM VITEM2ITEM;")
|
24
|
+
end
|
25
|
+
end
|
26
|
+
end
|
@@ -0,0 +1,38 @@
|
|
1
|
+
module MercatorBechlem
|
2
|
+
class Vcategory < Base
|
3
|
+
|
4
|
+
self.table_name = "VCATEGORY"
|
5
|
+
self.primary_key = "IDCATEGORY"
|
6
|
+
|
7
|
+
def self.ivellio_top_categories
|
8
|
+
Vcategory.find("145210000").children + Vcategory.find("145220000").children
|
9
|
+
end
|
10
|
+
|
11
|
+
def parent
|
12
|
+
cat_id = self.IDCATEGORY.to_s
|
13
|
+
parent_idCategory = cat_id[0..(9 - (cat_id.count("0") + 2))].ljust(9, '0')
|
14
|
+
if ["145200000", "145000000"].include? parent_idCategory
|
15
|
+
return nil
|
16
|
+
else
|
17
|
+
return Vcategory.find(parent_idCategory)
|
18
|
+
end
|
19
|
+
end
|
20
|
+
|
21
|
+
def children
|
22
|
+
Vcategory.find_by_sql ["SELECT c.* FROM VCATEGORY c, ITEM2ITEM i2i WHERE i2i.idItem = c.idCategory AND i2i.idParItem = ? ORDER by idCategory", id ]
|
23
|
+
end
|
24
|
+
|
25
|
+
def ancestors
|
26
|
+
ancestors = self.parents.reverse
|
27
|
+
end
|
28
|
+
|
29
|
+
def parents
|
30
|
+
[self.parent] + parent.parents.to_a if self.parent
|
31
|
+
end
|
32
|
+
|
33
|
+
# --- Instance Methods --- #
|
34
|
+
def readonly? # prevents unintentional changes
|
35
|
+
true
|
36
|
+
end
|
37
|
+
end
|
38
|
+
end
|
@@ -0,0 +1,13 @@
|
|
1
|
+
module MercatorBechlem
|
2
|
+
class Vitem < Base
|
3
|
+
|
4
|
+
self.table_name = "vitem"
|
5
|
+
self.primary_key = "IDITEM"
|
6
|
+
has_many :item2items, :class_name => "Vitem2item", :foreign_key => "IDITEM"
|
7
|
+
|
8
|
+
# --- Instance Methods --- #
|
9
|
+
def readonly? # prevents unintentional changes
|
10
|
+
true
|
11
|
+
end
|
12
|
+
end
|
13
|
+
end
|
@@ -0,0 +1,15 @@
|
|
1
|
+
module MercatorBechlem
|
2
|
+
class Vitem2item < Base
|
3
|
+
|
4
|
+
self.table_name = "item2item_temp"
|
5
|
+
self.primary_key = "IDITEM"
|
6
|
+
|
7
|
+
belongs_to :item, :class_name => "Vitem", :primary_key => "IDITEM"
|
8
|
+
belongs_to :part_item, :class_name => "Vitem", :primary_key => "IDPARTITEM"
|
9
|
+
|
10
|
+
# --- Instance Methods --- #
|
11
|
+
def readonly? # prevents unintentional changes
|
12
|
+
true
|
13
|
+
end
|
14
|
+
end
|
15
|
+
end
|
@@ -0,0 +1,17 @@
|
|
1
|
+
module MercatorBechlem
|
2
|
+
class VitemSupply < Base
|
3
|
+
|
4
|
+
self.table_name = "VITEM_SUPPLY"
|
5
|
+
self.primary_key = "IDITEM"
|
6
|
+
|
7
|
+
def self.for_category_id(category_id )
|
8
|
+
cat_id = category_id.to_s.gsub("0", "")
|
9
|
+
self.where(brand: "HP").where("idCategory like ?", "#{cat_id}%").order(artnr: :asc)
|
10
|
+
end
|
11
|
+
|
12
|
+
# --- Instance Methods --- #
|
13
|
+
def readonly? # prevents unintentional changes
|
14
|
+
true
|
15
|
+
end
|
16
|
+
end
|
17
|
+
end
|
@@ -0,0 +1,59 @@
|
|
1
|
+
<page title="Home">
|
2
|
+
|
3
|
+
<body: class="front-page"/>
|
4
|
+
|
5
|
+
<content:>
|
6
|
+
<header class="content-header">
|
7
|
+
<p>
|
8
|
+
<if test="&@category"> <t key="mercator.you_are_here" />:
|
9
|
+
<repeat with="&@ancestors">
|
10
|
+
<a href="/consumables/#{this.IDCATEGORY}/category"><view:DESCRIPTION/></a> /
|
11
|
+
</repeat>
|
12
|
+
<view with="&@category.DESCRIPTION"/>
|
13
|
+
</if>
|
14
|
+
</p>
|
15
|
+
<if test="&@category">
|
16
|
+
<h1>
|
17
|
+
<t key="mercator.consumeables" />
|
18
|
+
<t key="mercator.in_the_category" />
|
19
|
+
<view with="&@category.DESCRIPTION"/>
|
20
|
+
</h1>
|
21
|
+
</if>
|
22
|
+
<else>
|
23
|
+
<h1>
|
24
|
+
<t key="mercator.consumeables" />
|
25
|
+
<t key="mercator.in_all_categories" />
|
26
|
+
</h1>
|
27
|
+
</else>
|
28
|
+
</header>
|
29
|
+
|
30
|
+
<section class="content-body">
|
31
|
+
<p>
|
32
|
+
<if test="&@children"><t key="mercator.subcategories" />:
|
33
|
+
<repeat with="&@children">
|
34
|
+
<a href="/consumables/#{this.IDCATEGORY}/category"><view:DESCRIPTION/></a>
|
35
|
+
<%= last_item? ? "" : " - " %>
|
36
|
+
</repeat>
|
37
|
+
</if>
|
38
|
+
</p>
|
39
|
+
|
40
|
+
<if test="&@active_products">
|
41
|
+
<%= @active_products.in_groups_of(2) do |group| %>
|
42
|
+
<div class="row-fluid">
|
43
|
+
<div repeat="&group" class="span6">
|
44
|
+
<if><card/></if>
|
45
|
+
</div>
|
46
|
+
</div>
|
47
|
+
<% end %>
|
48
|
+
</if>
|
49
|
+
<else>
|
50
|
+
<if test="&@category.parent">
|
51
|
+
<p><t key="mercator.no_products_available" /></p>
|
52
|
+
</if>
|
53
|
+
<else>
|
54
|
+
<p><t key="mercator.select_a_category" /></p>
|
55
|
+
</else>
|
56
|
+
</else>
|
57
|
+
</section>
|
58
|
+
</content:>
|
59
|
+
</page>
|
@@ -0,0 +1,71 @@
|
|
1
|
+
<page title="Home">
|
2
|
+
|
3
|
+
<body: class="front-page"/>
|
4
|
+
|
5
|
+
<content:>
|
6
|
+
<header class="content-header">
|
7
|
+
<h1>
|
8
|
+
<t key="mercator.consumeables" /> HP <t key="mercator.printer" />
|
9
|
+
</h1>
|
10
|
+
</header>
|
11
|
+
|
12
|
+
<section class="content-body">
|
13
|
+
<p>
|
14
|
+
<t key="mercator.consumeable_search_help" />
|
15
|
+
</p>
|
16
|
+
|
17
|
+
<h2><t key="mercator.printer_series" /></h2>
|
18
|
+
<p>
|
19
|
+
<if test="&@printerserie != 'All' ">
|
20
|
+
<a href="/consumables/">
|
21
|
+
<t key="mercator.remove_filter" />
|
22
|
+
</a>
|
23
|
+
</if>
|
24
|
+
</p>
|
25
|
+
|
26
|
+
<p>
|
27
|
+
<repeat with="&@printer_series_names">
|
28
|
+
<if test="&@printerserie == this">
|
29
|
+
<view with="&this" />
|
30
|
+
</if>
|
31
|
+
<else>
|
32
|
+
<a href="/consumables/#{u this}/printers">
|
33
|
+
<view/>
|
34
|
+
</a>
|
35
|
+
</else>
|
36
|
+
|
37
|
+
<%= last_item? ? "" : " - "%>
|
38
|
+
</repeat>
|
39
|
+
</p>
|
40
|
+
|
41
|
+
<if test="&@printers">
|
42
|
+
<h2>
|
43
|
+
<t key="mercator.printer" />
|
44
|
+
</h2>
|
45
|
+
</if>
|
46
|
+
|
47
|
+
<form action="/consumables/products" method="post">
|
48
|
+
<h3>
|
49
|
+
<t key="mercator.identifier" />
|
50
|
+
</h3>
|
51
|
+
<autocomplete:printer name="printer"
|
52
|
+
with="&MercatorBechlem::VitemPrinter.new()"
|
53
|
+
source="&@printer_names"/>
|
54
|
+
<submit label="&t(hobo.live_search.label)"/>
|
55
|
+
</form>
|
56
|
+
|
57
|
+
<p>
|
58
|
+
|
59
|
+
<repeat with="&@printers">
|
60
|
+
<span class="underline">
|
61
|
+
<a href="/consumables/#{this.IDITEM}/products">
|
62
|
+
<view:DESCRIPTION />
|
63
|
+
</a>
|
64
|
+
</span>
|
65
|
+
<%= last_item? ? "" : " - "%>
|
66
|
+
</repeat>
|
67
|
+
|
68
|
+
</p>
|
69
|
+
</section>
|
70
|
+
</content:>
|
71
|
+
</page>
|
@@ -0,0 +1,37 @@
|
|
1
|
+
<page title="Home">
|
2
|
+
|
3
|
+
<body: class="front-page"/>
|
4
|
+
|
5
|
+
<content:>
|
6
|
+
<header class="content-header">
|
7
|
+
<if test="&@printer_description">
|
8
|
+
<h1><t key="mercator.consumeables" /> <view with="&@printer_description" /></h1>
|
9
|
+
</if>
|
10
|
+
<else>
|
11
|
+
<h2><t key="mercator.no_product_with_this_name" /></h2>
|
12
|
+
</else>
|
13
|
+
</header>
|
14
|
+
|
15
|
+
<section class="content-body">
|
16
|
+
<if test="&@active_products">
|
17
|
+
<%= @active_products.in_groups_of(2) do |group| %>
|
18
|
+
<div class="row-fluid">
|
19
|
+
<div repeat="&group" class="span6">
|
20
|
+
<if><card/></if>
|
21
|
+
</div>
|
22
|
+
</div>
|
23
|
+
<% end %>
|
24
|
+
</if>
|
25
|
+
<else>
|
26
|
+
<p><t key="mercator.no_products_available" /></p>
|
27
|
+
</else>
|
28
|
+
</section>
|
29
|
+
|
30
|
+
<p>
|
31
|
+
<a href="/consumables" class ="btn btn-primary">
|
32
|
+
<t key="mercator.goto_search" />
|
33
|
+
</a>
|
34
|
+
</p>
|
35
|
+
</content:>
|
36
|
+
|
37
|
+
</page>
|
@@ -0,0 +1,13 @@
|
|
1
|
+
<!DOCTYPE html>
|
2
|
+
<html>
|
3
|
+
<head>
|
4
|
+
<title><app-name/>Mercator Bechlem</title>
|
5
|
+
<%= stylesheet_link_tag "mercator_bechlem/application", media: "all" %>
|
6
|
+
<%= javascript_include_tag "mercator_bechlem/application" %>
|
7
|
+
<%= csrf_meta_tags %>
|
8
|
+
</head>
|
9
|
+
|
10
|
+
<body>
|
11
|
+
<%= yield %>
|
12
|
+
</body>
|
13
|
+
</html>
|
data/config/routes.rb
CHANGED
@@ -1,2 +1,8 @@
|
|
1
|
-
|
2
|
-
|
1
|
+
Mercator::Application.routes.draw do
|
2
|
+
get 'consumables', to: redirect('/consumables/All/printers/'), :as => 'consumables'
|
3
|
+
get 'consumables/:id/products/' => "consumables#products", :as => 'products_consumables'
|
4
|
+
post 'consumables/products/' => "consumables#products"
|
5
|
+
get 'consumables/:id/printers/' => "consumables#printers", :as => 'printers_consumables'
|
6
|
+
|
7
|
+
get 'consumables/:id/category/' => "consumables#category", :as => 'category_consumables'
|
8
|
+
end
|
@@ -1,4 +1,20 @@
|
|
1
|
-
|
2
|
-
#
|
3
|
-
#
|
4
|
-
|
1
|
+
namespace :bechlem do
|
2
|
+
# starten als: 'bundle exec rake bechlem:import'
|
3
|
+
# in Produktivumgebungen: 'bundle exec rake bechlem:import RAILS_ENV=production'
|
4
|
+
desc 'Import crosselling data from Bechlem'
|
5
|
+
task :import => :environment do
|
6
|
+
|
7
|
+
::JobLogger.info("=" * 50)
|
8
|
+
::JobLogger.info("Started Job: bechlem:import")
|
9
|
+
MercatorBechlem::Access.download_index
|
10
|
+
::JobLogger.info("Bechlem Index downloaded (1/4) ...")
|
11
|
+
MercatorBechlem::Access.delete_first_lines
|
12
|
+
::JobLogger.info("... first lines deleted (2/4) ...")
|
13
|
+
MercatorBechlem::Base.update_from_download
|
14
|
+
::JobLogger.info("... tables imported (3/4) ...")
|
15
|
+
MercatorBechlem::Base.copy_views_to_tables
|
16
|
+
::JobLogger.info("... views copied to tables (4/4)")
|
17
|
+
::JobLogger.info("Finished Job: bechlem:import")
|
18
|
+
::JobLogger.info("=" * 50)
|
19
|
+
end
|
20
|
+
end
|
metadata
CHANGED
@@ -1,35 +1,43 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: mercator_bechlem
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 0.
|
4
|
+
version: '0.1'
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- Stefan Haslinger
|
8
8
|
autorequire:
|
9
9
|
bindir: bin
|
10
10
|
cert_chain: []
|
11
|
-
date: 2014-
|
11
|
+
date: 2014-08-11 00:00:00.000000000 Z
|
12
12
|
dependencies:
|
13
13
|
- !ruby/object:Gem::Dependency
|
14
14
|
name: rails
|
15
15
|
requirement: !ruby/object:Gem::Requirement
|
16
16
|
requirements:
|
17
|
-
- - ~>
|
17
|
+
- - "~>"
|
18
18
|
- !ruby/object:Gem::Version
|
19
19
|
version: '4.0'
|
20
|
-
- - '>='
|
21
|
-
- !ruby/object:Gem::Version
|
22
|
-
version: 4.0.3
|
23
20
|
type: :runtime
|
24
21
|
prerelease: false
|
25
22
|
version_requirements: !ruby/object:Gem::Requirement
|
26
23
|
requirements:
|
27
|
-
- - ~>
|
24
|
+
- - "~>"
|
28
25
|
- !ruby/object:Gem::Version
|
29
26
|
version: '4.0'
|
30
|
-
|
27
|
+
- !ruby/object:Gem::Dependency
|
28
|
+
name: mysql2
|
29
|
+
requirement: !ruby/object:Gem::Requirement
|
30
|
+
requirements:
|
31
|
+
- - ">="
|
32
|
+
- !ruby/object:Gem::Version
|
33
|
+
version: '0'
|
34
|
+
type: :runtime
|
35
|
+
prerelease: false
|
36
|
+
version_requirements: !ruby/object:Gem::Requirement
|
37
|
+
requirements:
|
38
|
+
- - ">="
|
31
39
|
- !ruby/object:Gem::Version
|
32
|
-
version:
|
40
|
+
version: '0'
|
33
41
|
description: MercatorMesonic interfaces between Mercator and Bechlem in the realm
|
34
42
|
of product cross selling information.
|
35
43
|
email:
|
@@ -43,9 +51,24 @@ files:
|
|
43
51
|
- Rakefile
|
44
52
|
- app/assets/javascripts/mercator_bechlem/application.js
|
45
53
|
- app/assets/stylesheets/mercator_bechlem/application.css
|
54
|
+
- app/controllers/consumables_controller.rb
|
46
55
|
- app/controllers/mercator_bechlem/application_controller.rb
|
47
|
-
- app/
|
48
|
-
- app/
|
56
|
+
- app/models/mercator_bechlem/access.rb
|
57
|
+
- app/models/mercator_bechlem/base.rb
|
58
|
+
- app/models/mercator_bechlem/vbrand.rb
|
59
|
+
- app/models/mercator_bechlem/vcategory.rb
|
60
|
+
- app/models/mercator_bechlem/vdescriptor.rb
|
61
|
+
- app/models/mercator_bechlem/videntifier.rb
|
62
|
+
- app/models/mercator_bechlem/vitem.rb
|
63
|
+
- app/models/mercator_bechlem/vitem2item.rb
|
64
|
+
- app/models/mercator_bechlem/vitem_media.rb
|
65
|
+
- app/models/mercator_bechlem/vitem_printer.rb
|
66
|
+
- app/models/mercator_bechlem/vitem_supply.rb
|
67
|
+
- app/models/mercator_bechlem/vqualifier.rb
|
68
|
+
- app/views/consumables/category.dryml
|
69
|
+
- app/views/consumables/printers.dryml
|
70
|
+
- app/views/consumables/products.dryml
|
71
|
+
- app/views/mercator_bechlem/layouts/mercator_bechlem/application.html.erb
|
49
72
|
- config/routes.rb
|
50
73
|
- lib/mercator_bechlem.rb
|
51
74
|
- lib/mercator_bechlem/engine.rb
|
@@ -95,12 +118,12 @@ require_paths:
|
|
95
118
|
- lib
|
96
119
|
required_ruby_version: !ruby/object:Gem::Requirement
|
97
120
|
requirements:
|
98
|
-
- -
|
121
|
+
- - ">="
|
99
122
|
- !ruby/object:Gem::Version
|
100
123
|
version: '0'
|
101
124
|
required_rubygems_version: !ruby/object:Gem::Requirement
|
102
125
|
requirements:
|
103
|
-
- -
|
126
|
+
- - ">="
|
104
127
|
- !ruby/object:Gem::Version
|
105
128
|
version: '0'
|
106
129
|
requirements: []
|
@@ -1,14 +0,0 @@
|
|
1
|
-
<!DOCTYPE html>
|
2
|
-
<html>
|
3
|
-
<head>
|
4
|
-
<title>MercatorBechlem</title>
|
5
|
-
<%= stylesheet_link_tag "mercator_bechlem/application", media: "all" %>
|
6
|
-
<%= javascript_include_tag "mercator_bechlem/application" %>
|
7
|
-
<%= csrf_meta_tags %>
|
8
|
-
</head>
|
9
|
-
<body>
|
10
|
-
|
11
|
-
<%= yield %>
|
12
|
-
|
13
|
-
</body>
|
14
|
-
</html>
|