unidom-product 0.2 → 0.3

Sign up to get free protection for your applications and to get access to all the features.
checksums.yaml CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA1:
3
- metadata.gz: 3ffc91256049f8adff3103f2b2c0bc758c9fc213
4
- data.tar.gz: d97de3611d61a28105031e08d080e72bdb5bdf82
3
+ metadata.gz: 388edde88bb09434d63ff9a0bd6e1473ade4f16c
4
+ data.tar.gz: 3b2eb0a046a4b04de46cb28e108e63e225dc9a78
5
5
  SHA512:
6
- metadata.gz: 87b2e3ebf3901d80f0fe6a9fb9c98889c594c6fd674abf8790f345fce5e3ae5d88966acf437d3bc9ed1fb8b772889e79eba601f452ad95ea991a68b5f04bd260
7
- data.tar.gz: 64b7b2eb1213caad9fc7fd5442ac87b751c500b26e754ad683c9443d5fbe91993aea9baad1877aa1e9a344fd27bebf27b70b8c0fdf198a5e46da7222e02f4994
6
+ metadata.gz: 9f2bc5b3bad27833224eef03a1542a2001a3363ad4b8647855b0148137b330ec8bda5087d64d3992bba0ae66ad7761aaa4992728a4b7eb7d4deb8d49006c013b
7
+ data.tar.gz: 69b7c736b9ab7d7a6deb36eaa6eba1fd47db6d6490005f3acdb147eacd0e16bf46d36170b29a10279743925c094adf12f0ceacab8cdbc26977b77d58424d03b7
data/README.md CHANGED
@@ -6,6 +6,10 @@
6
6
  Unidom (UNIfied Domain Object Model) is a series of domain model engines. The Product domain model engine includes Product and its relative models.
7
7
  Unidom (统一领域对象模型)是一系列的领域模型引擎。产品领域模型引擎包括产品及其相关的模型。
8
8
 
9
+ ## Recent Update
10
+ Check out the [Road Map](ROADMAP.md) to find out what's the next.
11
+ Check out the [Change Log](CHANGELOG.md) to find out what's new.
12
+
9
13
  ## Usage in Gemfile
10
14
  ```ruby
11
15
  gem 'unidom-product'
@@ -15,8 +19,19 @@ gem 'unidom-product'
15
19
  ```shell
16
20
  rake db:migrate
17
21
  ```
22
+ The migration versions start with 200202.
18
23
 
19
24
  ## Call the Model
20
25
  ```ruby
21
- Unidom::Product::Product.valid_at.alive.first
26
+ # Create a Product
27
+ product = Unidom::Product::Product.create(name: 'Apple iPhone 6S Plus 64G',
28
+ abbreviation: 'iPhone 6S+ 64G',
29
+ measurement_unit: 'unit',
30
+ packing_norm: '1 unit per pack',
31
+ formset_code: 'WARE',
32
+ description: 'the latest iPhone model',
33
+ instruction: 'It is almost sold out.')
34
+
35
+ # Find the Product per Formset Code
36
+ Product.formset_coded_as('SRVC').valid_at.alive.first
22
37
  ```
@@ -10,4 +10,4 @@
10
10
  // Read Sprockets README (https://github.com/rails/sprockets#sprockets-directives) for details
11
11
  // about supported directives.
12
12
  //
13
- //= require_tree .
13
+ //= require_self
@@ -10,6 +10,5 @@
10
10
  * defined in the other CSS/SCSS files in this directory. It is generally better to create a new
11
11
  * file per style scope.
12
12
  *
13
- *= require_tree .
14
13
  *= require_self
15
14
  */
@@ -4,11 +4,17 @@ class Unidom::Product::Product < ActiveRecord::Base
4
4
 
5
5
  self.table_name = 'unidom_products'
6
6
 
7
+ include Unidom::Common::Concerns::ModelExtension
8
+
7
9
  validates :name, presence: true, length: { in: 2..self.columns_hash['name'].limit }
8
10
  validates :abbreviation, presence: true, length: { in: 1..self.columns_hash['abbreviation'].limit }
9
11
  validates :measurement_unit, presence: true, length: { in: 1..self.columns_hash['measurement_unit'].limit }
10
12
  validates :packing_norm, presence: true, length: { in: 1..self.columns_hash['packing_norm'].limit }
11
13
 
12
- include Unidom::Common::Concerns::ModelExtension
14
+ has_many :source_product_associatings, class_name: 'Unidom::Product::ProductAssociating', foreign_key: :target_id #, as: :target
15
+ has_many :source_products, through: :source_product_associatings, source: :source
16
+
17
+ has_many :target_product_associatings, class_name: 'Unidom::Product::ProductAssociating', foreign_key: :source_id #, as: :source
18
+ has_many :target_products, through: :target_product_associatings, source: :target
13
19
 
14
20
  end
@@ -0,0 +1,22 @@
1
+ # Product Associating 表示产品之间的关联。常见的关联包括销售包装、产品换代等。
2
+ # source 是来源产品。如组合后的产品、被换代的产品、不兼容产品中的主产品。
3
+ # target 是目标产品。如参与组合的产品、替换其它产品的新产品、不兼容产品中的次要产品。
4
+ # product_association_code 是产品关联:
5
+ # CPLM 是产品补充 complement
6
+ # ICPT 是产品不兼容 incompatibility
7
+ # OBSL 是产品废弃 obsolescence
8
+ # PCKG 是销售包装 package
9
+ # SBST 是产品替代 substitute
10
+
11
+ class Unidom::Product::ProductAssociating < ActiveRecord::Base
12
+
13
+ self.table_name = 'unidom_product_associatings'
14
+
15
+ include Unidom::Common::Concerns::ModelExtension
16
+
17
+ validates :quantity, presence: true, numericality: { greater_than_or_equal_to: 0 }
18
+
19
+ belongs_to :source, class_name: 'Unidom::Product::Product'
20
+ belongs_to :target, class_name: 'Unidom::Product::Product'
21
+
22
+ end
@@ -2,13 +2,14 @@
2
2
  <html>
3
3
  <head>
4
4
  <title>Product</title>
5
- <%= stylesheet_link_tag "product/application", media: "all" %>
6
- <%= javascript_include_tag "product/application" %>
5
+ <%= stylesheet_link_tag "product/application", media: "all" %>
7
6
  <%= csrf_meta_tags %>
8
7
  </head>
9
8
  <body>
10
9
 
11
10
  <%= yield %>
12
11
 
12
+ <%= javascript_include_tag 'unidom/product/application' %>
13
+
13
14
  </body>
14
15
  </html>
@@ -25,9 +25,9 @@ class CreateUnidomProducts < ActiveRecord::Migration
25
25
 
26
26
  end
27
27
 
28
- add_index :unidom_products, :slug, unique: true
29
28
  add_index :unidom_products, :name
30
29
  add_index :unidom_products, :abbreviation
30
+ add_index :unidom_products, :slug, unique: true
31
31
 
32
32
  end
33
33
 
@@ -0,0 +1,33 @@
1
+ class CreateUnidomProductAssociatings < ActiveRecord::Migration
2
+
3
+ def change
4
+
5
+ create_table :unidom_product_associatings, id: :uuid do |t|
6
+
7
+ t.references :source, type: :uuid, null: false, default: nil
8
+ t.references :target, type: :uuid, null: false, default: nil
9
+
10
+ t.column :product_association_code, 'char(4)', null: false, default: 'ZZZZ'
11
+
12
+ t.integer :ordinal, null: false, default: 0
13
+ t.decimal :quantity, null: false, default: 0.0, precision: 12, scale: 2
14
+
15
+ t.text :description
16
+ t.text :instruction
17
+
18
+ t.column :state, 'char(1)', null: false, default: 'C'
19
+ t.datetime :opened_at, null: false, default: Time.utc(1970)
20
+ t.datetime :closed_at, null: false, default: Time.utc(3000)
21
+ t.boolean :defunct, null: false, default: false
22
+ t.jsonb :notation, null: false, default: {}
23
+
24
+ t.timestamps null: false
25
+
26
+ end
27
+
28
+ add_index :unidom_product_associatings, :source_id
29
+ add_index :unidom_product_associatings, :target_id
30
+
31
+ end
32
+
33
+ end
@@ -1,5 +1,5 @@
1
1
  module Unidom
2
2
  module Product
3
- VERSION = '0.2'.freeze
3
+ VERSION = '0.3'.freeze
4
4
  end
5
5
  end
metadata CHANGED
@@ -1,29 +1,29 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: unidom-product
3
3
  version: !ruby/object:Gem::Version
4
- version: '0.2'
4
+ version: '0.3'
5
5
  platform: ruby
6
6
  authors:
7
7
  - Topbit Du
8
8
  autorequire:
9
9
  bindir: bin
10
10
  cert_chain: []
11
- date: 2016-02-25 00:00:00.000000000 Z
11
+ date: 2016-08-10 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: unidom-common
15
15
  requirement: !ruby/object:Gem::Requirement
16
16
  requirements:
17
- - - "~>"
17
+ - - ">="
18
18
  - !ruby/object:Gem::Version
19
- version: '0.2'
19
+ version: '1.0'
20
20
  type: :runtime
21
21
  prerelease: false
22
22
  version_requirements: !ruby/object:Gem::Requirement
23
23
  requirements:
24
- - - "~>"
24
+ - - ">="
25
25
  - !ruby/object:Gem::Version
26
- version: '0.2'
26
+ version: '1.0'
27
27
  description: Unidom (UNIfied Domain Object Model) is a series of domain model engines.
28
28
  The Product domain model engine includes Product and its relative models. Unidom
29
29
  (统一领域对象模型)是一系列的领域模型引擎。产品领域模型引擎包括产品及其相关的模型。
@@ -41,9 +41,11 @@ files:
41
41
  - app/controllers/unidom/product/application_controller.rb
42
42
  - app/helpers/unidom/product/application_helper.rb
43
43
  - app/models/unidom/product/product.rb
44
+ - app/models/unidom/product/product_associating.rb
44
45
  - app/views/layouts/unidom/product/application.html.erb
45
46
  - config/routes.rb
46
47
  - db/migrate/20020201000000_create_unidom_products.rb
48
+ - db/migrate/20020211000000_create_unidom_product_associatings.rb
47
49
  - lib/tasks/product_tasks.rake
48
50
  - lib/unidom/product.rb
49
51
  - lib/unidom/product/engine.rb
@@ -68,7 +70,7 @@ required_rubygems_version: !ruby/object:Gem::Requirement
68
70
  version: '0'
69
71
  requirements: []
70
72
  rubyforge_project:
71
- rubygems_version: 2.4.5.1
73
+ rubygems_version: 2.6.4
72
74
  signing_key:
73
75
  specification_version: 4
74
76
  summary: Unidom Product Domain Model Engine 产品领域模型引擎