unidom-price 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: 1f20f135316d6af62b17f2365e3428f6aa261ab6
4
- data.tar.gz: 7383d872088aa6dd5666444b7c3b270d7327340f
3
+ metadata.gz: a7422b3380bb3fa170c26e2001ba508c80f0cae8
4
+ data.tar.gz: 9f885c54e377a75b55349076a35ccc609e495576
5
5
  SHA512:
6
- metadata.gz: 6a582a9f53eb2e3f28f1cbe03843161bc01ba1882bba74350380348d3ef16758866acaf6769df8203e05b4f55bb3a9306b4b85c705208d0b822e889c8bc192c1
7
- data.tar.gz: 07003a93113b94bcb3db04fce751ae0cd72f3889c44f8bb814b28185508f49b8b51110cd62ed134a824ffc93cf0eb940bf99b81c63214ac38f60896de90719eb
6
+ metadata.gz: ffa0e8904aa5687e5c4faa4aa2c6915ae8c90a15a3baac070d22ecf667917b602e4df794c2615a2cb9453577364e5519a3f42139d310c68b82f18dc7c75fae5d
7
+ data.tar.gz: 2f1e37d460c02356f5e15aabb2cd8ff7eda7614e9d25058ead43e84d3102305211311d04d69e4a5f4cca8fbca76000e87f415d086f64a03d962c75d56a391602
data/README.md CHANGED
@@ -6,6 +6,10 @@
6
6
  Unidom (UNIfied Domain Object Model) is a series of domain model engines. The Price domain model engine includes Pricing 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-price'
@@ -15,8 +19,37 @@ gem 'unidom-price'
15
19
  ```shell
16
20
  rake db:migrate
17
21
  ```
22
+ The migration versions start with 200203.
18
23
 
19
24
  ## Call the Model
20
25
  ```ruby
21
- Unidom::Price::Price.valid_at.alive.first
26
+ # Create 2 Prices for the same product
27
+ product = Product.create name: 'iPhone 6S'
28
+ pricer = Person.create name: 'John'
29
+ price = Unidom::Price::Price.create(priced: product,
30
+ pricer: pricer,
31
+ calculation_code: 'AMNT',
32
+ pricing_code: 'BASE',
33
+ charging_code: 'ONCE',
34
+ currency_code: 'RMB',
35
+ amount: 20.00,
36
+ description: 'the normal price',
37
+ instruction: 'Here is a promotion coming soon.',
38
+ opened_at: Time.now)
39
+ promotion_price = Unidom::Price::Price.create(priced: product,
40
+ pricer: pricer,
41
+ calculation_code: 'PCNT',
42
+ pricing_code: 'DSCT',
43
+ charging_code: 'ONCE',
44
+ currency_code: 'RMB',
45
+ amount: 15.00,
46
+ description: 'the promotion price',
47
+ instruction: 'Here is a promotion coming 1 week later.',
48
+ opened_at: Time.now+7.days)
49
+
50
+ # Find the prices.
51
+ prices = Unidom::Price::Price.priced_is(product).priced_by(pricer).charging_coded_as('ONCE').currency_coded_as('RMB').valid_at.alive.first
52
+
53
+ # Price a product
54
+ Unidom::Price::Price.price! product, amount
22
55
  ```
@@ -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,6 +4,8 @@ class Unidom::Price::Price < ActiveRecord::Base
4
4
 
5
5
  self.table_name = 'unidom_prices'
6
6
 
7
+ include Unidom::Common::Concerns::ModelExtension
8
+
7
9
  validates :amount, presence: true, numericality: { less_than: 1000000000, greater_than: 0 }
8
10
 
9
11
  belongs_to :priced, polymorphic: true
@@ -12,6 +14,26 @@ class Unidom::Price::Price < ActiveRecord::Base
12
14
  scope :priced_by, ->(pricer) { where pricer: pricer }
13
15
  scope :priced_is, ->(priced) { where priced: priced }
14
16
 
15
- include Unidom::Common::Concerns::ModelExtension
17
+ def self.price!(priced, amount, pricer = nil, calculation_code = 'AMNT', pricing_code = 'BASE', charging_code = 'ONCE', opened_at = Time.now)
18
+ price = priced_is(priced).calculation_coded_as(calculation_code).pricing_coded_as(pricing_code).charging_coded_as(charging_code).valid_at.alive.first
19
+ if price.present?
20
+ price.amount = amount
21
+ if pricer.present?
22
+ price.pricer = pricer
23
+ else
24
+ price.pricer_id = Unidom::Common::NULL_UUID
25
+ price.pricer_type = ''
26
+ end
27
+ else
28
+ attributes = { priced: priced, amount: amount, calculation_code: calculation_code, pricing_code: pricing_code, charging_code: charging_code, opened_at: opened_at }
29
+ if pricer.present?
30
+ attributes[:pricer] = pricer
31
+ else
32
+ attributes[:pricer_id] = Unidom::Common::NULL_UUID
33
+ attributes[:pricer_type] = ''
34
+ end
35
+ create! attributes
36
+ end
37
+ end
16
38
 
17
39
  end
@@ -2,13 +2,14 @@
2
2
  <html>
3
3
  <head>
4
4
  <title>Price</title>
5
- <%= stylesheet_link_tag "price/application", media: "all" %>
6
- <%= javascript_include_tag "price/application" %>
5
+ <%= stylesheet_link_tag "price/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 'price/application' %>
13
+
13
14
  </body>
14
15
  </html>
@@ -1,5 +1,5 @@
1
1
  module Unidom
2
2
  module Price
3
- VERSION = '0.2'.freeze
3
+ VERSION = '0.3'.freeze
4
4
  end
5
5
  end
metadata CHANGED
@@ -1,14 +1,14 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: unidom-price
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-07-21 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: unidom-common
@@ -16,14 +16,14 @@ dependencies:
16
16
  requirements:
17
17
  - - "~>"
18
18
  - !ruby/object:Gem::Version
19
- version: '0.2'
19
+ version: '0.9'
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: '0.9'
27
27
  description: Unidom (UNIfied Domain Object Model) is a series of domain model engines.
28
28
  The Price domain model engine includes Pricing and its relative models. Unidom (统一领域对象模型)是一系列的领域模型引擎。价格领域模型引擎包括定价及其相关的模型。
29
29
  email:
@@ -67,7 +67,7 @@ required_rubygems_version: !ruby/object:Gem::Requirement
67
67
  version: '0'
68
68
  requirements: []
69
69
  rubyforge_project:
70
- rubygems_version: 2.4.5.1
70
+ rubygems_version: 2.6.4
71
71
  signing_key:
72
72
  specification_version: 4
73
73
  summary: Unidom Price Domain Model Engine 价格领域模型引擎