unidom-inventory 0.4 → 0.5

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: 12619e1472bdf219dca48771bb4d211ea9386d2b
4
- data.tar.gz: 68a778acdbfa624d1e16d14b530318b0ca3988bf
3
+ metadata.gz: f5478f1bad555fc1a2a79c73149c2f68d8152541
4
+ data.tar.gz: eddb97b1856d6e4da7f8d324608df5515a3f1a1e
5
5
  SHA512:
6
- metadata.gz: 5292a0127f1c169d009b7abd74b29ce118df76a1f24111648b5387f738e8b14e47123a1a4541e9e2f75619190471260a9c58fd2159d7108c185785b5b4f84ef2
7
- data.tar.gz: 9f7b435e07318c2c14c89481f1a4ee5fe3d1237cd849f914e5bec9a13766a86e27be75392212ee96994cfb3d0559e5516bdf2a40858883155d17d4aa22f86ff6
6
+ metadata.gz: ff4b4696568e894df9813d74e71c96211763385dfab254c6763976a0e80612e47ca8377ad630a1fdaf24adebb2d8b6fdf9b0e78a268131dd6d8438efd07be30c
7
+ data.tar.gz: 79215e93fe985eec472b13e512dc6f23bb61c28321db94a506aba17cd3b403b07b1b6ca4258c87c27bf31886872111dc01afb01306a7d511d7c2a85e3e1a9ec9
data/README.md CHANGED
@@ -7,7 +7,10 @@
7
7
  Unidom (UNIfied Domain Object Model) is a series of domain model engines. The Inventory domain model engine includes the Serialized Inventory Item, the Grouped Inventory Item, the Lot, and the Inventory Item Variance models.
8
8
  Unidom (统一领域对象模型)是一系列的领域模型引擎。库存领域模型引擎包括序列化库存项、分组库存项、批量和库存项变化的模型。
9
9
 
10
+
11
+
10
12
  ## Recent Update
13
+
11
14
  Check out the [Road Map](ROADMAP.md) to find out what's the next.
12
15
  Check out the [Change Log](CHANGELOG.md) to find out what's new.
13
16
 
@@ -40,26 +43,37 @@ grouped_inventory_item = Unidom::Inventory::GroupedInventoryItem.create! store:
40
43
 
41
44
  lot.grouped_inventory_items.create! store: @shop, stored: @product, quantity: 100
42
45
  lot.serialized_inventory_items.create! store: @shop, stored: @product, serial_number: '19840101'
46
+
47
+ pick_list = Unidom::Inventory::PickList.create!
48
+ pick_item = pick_list.items.create! inventory_item: grouped_inventory_item, quantity: 100
49
+ item_issuing = Unidom::Inventory::ItemIssuing.create! pick_item: pick_item, inventory_item: grouped_inventory_item, target_item: nil
50
+ # target_item could be nil or any model like: shipment item or order item
43
51
  ```
44
52
 
45
53
 
46
54
 
47
55
  ## Include the Concerns
56
+
48
57
  ```ruby
49
58
  include Unidom::Inventory::AsInventoryItem
50
59
  ```
51
60
 
52
61
  ### As Inventory Item concern
62
+
53
63
  The As Inventory Item concern do the following tasks for the includer automatically:
54
64
  1. Define the belongs_to :stored macro as: ``belongs_to :stored, polymorphic: true``
55
65
  2. Define the belongs_to :store macro as: ``belongs_to :store, polymorphic: true``
66
+ 3. Define the belongs_to :lot macro as: ``belongs_to :lot, class_name: 'Unidom::Inventory::Lot'``
67
+ 4. Define the has_many :pick_items macro as: ``has_many :pick_items, class_name: 'Unidom::Inventory::PickItem', as: :inventory_item``
56
68
 
57
69
  ### As Store concern
70
+
58
71
  The As Store concern do the following tasks for the includer automatically:
59
72
  1. Define the has_many :grouped_inventory_items macro as: ``has_many :grouped_inventory_items, class_name: 'Unidom::Inventory::GroupedInventoryItem', foreign_key: :store_id``
60
73
  2. Define the has_many :serialized_inventory_items macro as: ``has_many :serialized_inventory_items, class_name: 'Unidom::Inventory::SerializedInventoryItem', foreign_key: :store_id``
61
74
 
62
75
  ### As Stored concern
76
+
63
77
  The As Stored concern do the following tasks for the includer automatically:
64
78
  1. Define the has_many :grouped_inventory_items macro as: ``has_many :grouped_inventory_items, class_name: 'Unidom::Inventory::GroupedInventoryItem', foreign_key: :stored_id``
65
79
  2. Define the has_many :serialized_inventory_items macro as: ``has_many :serialized_inventory_items, class_name: 'Unidom::Inventory::SerializedInventoryItem', foreign_key: :stored_id``
@@ -8,6 +8,8 @@ module Unidom::Inventory::Concerns::AsInventoryItem
8
8
  belongs_to :store, polymorphic: true
9
9
  belongs_to :lot, class_name: 'Unidom::Inventory::Lot'
10
10
 
11
+ has_many :pick_items, class_name: 'Unidom::Inventory::PickItem', as: :inventory_item
12
+
11
13
  end
12
14
 
13
15
  module ClassMethods
@@ -0,0 +1,18 @@
1
+ # Item Issuing 是条目出库。
2
+ # #pick_item 是出库项。
3
+ # #inventory_item 是库存项,可以由 #pick_item 导出。
4
+ # #target_item 是目标项,比如: ShipmentItem 、 OrderItem 等。
5
+
6
+ class Unidom::Inventory::ItemIssuing < ActiveRecord::Base
7
+
8
+ self.table_name = 'unidom_item_issuings'
9
+
10
+ include Unidom::Common::Concerns::ModelExtension
11
+
12
+ validates :quantity, presence: true, numericality: true
13
+
14
+ belongs_to :pick_item, class_name: 'Unidom::Inventory::PickItem'
15
+ belongs_to :inventory_item, polymorphic: true
16
+ belongs_to :target_item, polymorphic: true
17
+
18
+ end
@@ -5,7 +5,6 @@ class Unidom::Inventory::Lot < ActiveRecord::Base
5
5
  self.table_name = 'unidom_lots'
6
6
 
7
7
  include Unidom::Common::Concerns::ModelExtension
8
- include Unidom::Inventory::Concerns::AsInventoryItem
9
8
 
10
9
  validates :quantity, presence: true, numericality: true
11
10
  validates :identification_number, presence: true, length: { in: 2..columns_hash['identification_number'].limit }
@@ -0,0 +1,14 @@
1
+ # Pick Item 是出库单项。
2
+
3
+ class Unidom::Inventory::PickItem < ActiveRecord::Base
4
+
5
+ self.table_name = 'unidom_pick_items'
6
+
7
+ include Unidom::Common::Concerns::ModelExtension
8
+
9
+ validates :quantity, presence: true, numericality: true
10
+
11
+ belongs_to :pick_list, class_name: 'Unidom::Inventory::PickList'
12
+ belongs_to :inventory_item, polymorphic: true
13
+
14
+ end
@@ -0,0 +1,11 @@
1
+ # Pick List 是出库单。
2
+
3
+ class Unidom::Inventory::PickList < ActiveRecord::Base
4
+
5
+ self.table_name = 'unidom_pick_lists'
6
+
7
+ include Unidom::Common::Concerns::ModelExtension
8
+
9
+ has_many :items, class_name: 'Unidom::Inventory::PickItem' #, foreign_key: :pick_list_id
10
+
11
+ end
@@ -0,0 +1,22 @@
1
+ class CreateUnidomPickLists < ActiveRecord::Migration
2
+
3
+ def change
4
+
5
+ create_table :unidom_pick_lists, id: :uuid do |t|
6
+
7
+ t.text :description
8
+ t.text :instruction
9
+
10
+ t.column :state, 'char(1)', null: false, default: 'C'
11
+ t.datetime :opened_at, null: false, default: ::Time.utc(1970)
12
+ t.datetime :closed_at, null: false, default: ::Time.utc(3000)
13
+ t.boolean :defunct, null: false, default: false
14
+ t.jsonb :notation, null: false, default: {}
15
+
16
+ t.timestamps null: false
17
+
18
+ end
19
+
20
+ end
21
+
22
+ end
@@ -0,0 +1,31 @@
1
+ class CreateUnidomPickItems < ActiveRecord::Migration
2
+
3
+ def change
4
+
5
+ create_table :unidom_pick_items, id: :uuid do |t|
6
+
7
+ t.references :pick_list, type: :uuid, null: false
8
+ t.references :inventory_item, type: :uuid, null: false,
9
+ polymorphic: { null: false, default: '', limit: 200 }
10
+
11
+ t.decimal :quantity, null: false, default: 0.0, precision: 10, scale: 6
12
+
13
+ t.text :description
14
+ t.text :instruction
15
+
16
+ t.column :state, 'char(1)', null: false, default: 'C'
17
+ t.datetime :opened_at, null: false, default: ::Time.utc(1970)
18
+ t.datetime :closed_at, null: false, default: ::Time.utc(3000)
19
+ t.boolean :defunct, null: false, default: false
20
+ t.jsonb :notation, null: false, default: {}
21
+
22
+ t.timestamps null: false
23
+
24
+ end
25
+
26
+ add_index :unidom_pick_items, :pick_list_id
27
+ add_index :unidom_pick_items, :inventory_item_id
28
+
29
+ end
30
+
31
+ end
@@ -0,0 +1,34 @@
1
+ class CreateUnidomItemIssuings < ActiveRecord::Migration
2
+
3
+ def change
4
+
5
+ create_table :unidom_item_issuings, id: :uuid do |t|
6
+
7
+ t.references :pick_item, type: :uuid, null: false
8
+ t.references :inventory_item, type: :uuid, null: false,
9
+ polymorphic: { null: false, default: '', limit: 200 }
10
+ t.references :target_item, type: :uuid, null: true,
11
+ polymorphic: { null: true, default: nil, limit: 200 }
12
+
13
+ t.decimal :quantity, null: false, default: 0.0, precision: 10, scale: 6
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_item_issuings, :pick_item_id
29
+ add_index :unidom_item_issuings, :inventory_item_id
30
+ add_index :unidom_item_issuings, :target_item_id
31
+
32
+ end
33
+
34
+ end
@@ -1,5 +1,5 @@
1
1
  module Unidom
2
2
  module Inventory
3
- VERSION = '0.4'.freeze
3
+ VERSION = '0.5'.freeze
4
4
  end
5
5
  end
metadata CHANGED
@@ -1,14 +1,14 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: unidom-inventory
3
3
  version: !ruby/object:Gem::Version
4
- version: '0.4'
4
+ version: '0.5'
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-10-02 00:00:00.000000000 Z
11
+ date: 2016-10-09 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: unidom-common
@@ -44,13 +44,19 @@ files:
44
44
  - app/models/unidom/inventory/concerns/as_store.rb
45
45
  - app/models/unidom/inventory/concerns/as_stored.rb
46
46
  - app/models/unidom/inventory/grouped_inventory_item.rb
47
+ - app/models/unidom/inventory/item_issuing.rb
47
48
  - app/models/unidom/inventory/lot.rb
49
+ - app/models/unidom/inventory/pick_item.rb
50
+ - app/models/unidom/inventory/pick_list.rb
48
51
  - app/models/unidom/inventory/serialized_inventory_item.rb
49
52
  - app/views/layouts/unidom/inventory/application.html.erb
50
53
  - config/routes.rb
51
54
  - db/migrate/20020901000000_create_unidom_serialized_inventory_items.rb
52
55
  - db/migrate/20020902000000_create_unidom_grouped_inventory_items.rb
53
56
  - db/migrate/20020911000000_create_unidom_lots.rb
57
+ - db/migrate/20020921000000_create_unidom_pick_lists.rb
58
+ - db/migrate/20020922000000_create_unidom_pick_items.rb
59
+ - db/migrate/20020923000000_create_unidom_item_issuings.rb
54
60
  - lib/tasks/inventory_tasks.rake
55
61
  - lib/unidom/inventory.rb
56
62
  - lib/unidom/inventory/engine.rb