mercator_bechlem 0.0.1 → 0.1
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 +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>
|