openbill-ruby 0.1.5 → 0.1.6

Sign up to get free protection for your applications and to get access to all the features.
Files changed (4) hide show
  1. checksums.yaml +4 -4
  2. data/README.md +90 -10
  3. data/lib/openbill/version.rb +1 -1
  4. metadata +2 -2
checksums.yaml CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA1:
3
- metadata.gz: b81bdc0ec906d8dd0d12577772d4a6bd3c4eabce
4
- data.tar.gz: f79967c83942d3f7e15df4cb5e62b2ba89048193
3
+ metadata.gz: 2e8d41cf49c4b4c79c67648a13bb8d620021fdff
4
+ data.tar.gz: cefc16e4aa3aaa1a0f64c1da0048e9ea30a7ff8b
5
5
  SHA512:
6
- metadata.gz: bc1d4999a0428e9e23ca906417a0e9f7a3891699b1884636c79f9bbc02733f0265b7d01bb1587aa4c9335dea06618134ebbb5e8e8ba9f680239e690bdb98c795
7
- data.tar.gz: ec4e573a1ff094828af7870f493bf252314d6133182f20e32c13f37ecba2d4a7dbd7692c2efde3a3f1bcc5161ea2f592cf05a7fcaca4da6422a16e5e04e263f7
6
+ metadata.gz: b2b78ea598a78806137e6844fb7fcd35526dcaac3791ac53c2cadc34dc06972a580c0908a2421a5466a79887d94c6e9e01f93e687a56c29f1c1d912e02caaa86
7
+ data.tar.gz: 6053481084ad0b63af80a33c881e380281b054f1616f00a2c26e0bc2105b27b8a4fc813234378d3be5347a0d78c066ef0c9e8511ba9b40279d85149c018388fd
data/README.md CHANGED
@@ -1,34 +1,114 @@
1
1
  # Openbill
2
2
 
3
- Welcome to your new gem! In this directory, you'll find the files you need to be able to package up your Ruby library into a gem. Put your Ruby code in the file `lib/openbill`. To experiment with that code, run `bin/console` for an interactive prompt.
4
-
5
- TODO: Delete this and the text above, and describe your gem
3
+ Это модуль для биллиноговой системы [openbill-core](https://github.com/dapi/openbill-core).
6
4
 
7
5
  ## Installation
8
6
 
9
7
  Add this line to your application's Gemfile:
10
8
 
11
9
  ```ruby
12
- gem 'openbill'
10
+ gem 'openbill-ruby'
13
11
  ```
14
12
 
15
13
  And then execute:
16
14
 
17
15
  $ bundle
18
16
 
19
- Or install it yourself as:
17
+ Migrate database:
18
+
19
+ $ rake db:migrate
20
+
21
+ Add database configurartion to `./config/initializers/openbill.rb`
22
+
23
+ ```ruby
24
+ Openbill.config.database = ActiveRecord::Base.connection.instance_variable_get('@config');
25
+ ```
26
+
27
+ ## Usage
28
+
29
+ ### Создание системных счетов
20
30
 
21
- $ gem install openbill
22
31
 
32
+ Рекомендую создать такой сервис для работы с системными счетами:
23
33
 
34
+ ```ruby
35
+ module Billing
36
+ NS = :system
24
37
 
25
- Openbill.create_connection do
26
- new ActiveRecord::Base.connection.instance_variable_get('@config')
38
+ class << self
39
+ def payments
40
+ account :payments, 'Счет с которого поступает оплата'
27
41
  end
28
42
 
29
- ## Usage
43
+ def subscriptions
44
+ account :subscriptions, 'Абонентская плата'
45
+ end
46
+
47
+ private
48
+
49
+ # Находит, или создает аккаунт с указанным именем
50
+ #
51
+ def account(path, details)
52
+ # Создаем uri аккаунта из его названия
53
+ uri = Openbill.generate_uri NS, path
54
+
55
+ Openbill.get_account_by_uri(uri) ||
56
+ Openbill.create_account(uri, details: details)
57
+ end
58
+ end
59
+ end
60
+ ```
61
+
62
+ Таким образом в системе появляется два счета `Billing.payments` и `Billing.subscriptions`
30
63
 
31
- TODO: Write usage instructions here
64
+ ### Поддержка биллинга со стороны клиента (автоматическое создание клиентского счета):
65
+
66
+ ```
67
+ module AccountBilling
68
+ extend ActiveSupport::Concern
69
+
70
+ included do
71
+ after_commit :attach_billing, on: :create
72
+ end
73
+
74
+ delegate :amount, to: :billing_account
75
+
76
+ def billing_account
77
+ find_billing || attach_billing
78
+ end
79
+
80
+ private
81
+
82
+ def account_uri
83
+ Openbill.generate_uri :accounts, id
84
+ end
85
+
86
+ def find_billing
87
+ Openbill.current.get_account_by_uri account_uri
88
+ end
89
+
90
+ def attach_billing
91
+ Openbill.current.create_account account_uri
92
+ end
93
+ end
94
+ ```
95
+
96
+ Добавляем concern в модель ответсвенную за счет (например в User)
97
+
98
+
99
+ ### Прием оплаты.
100
+
101
+ Оплата проводится транзакцией между системным счетом `payments` и счетом клиента.
102
+
103
+ ```ruby
104
+ Openbill.current.make_transaction(
105
+ from_account_id: Billing.payment.id,
106
+ to_account_id: user.billing_account.id,
107
+ amount: Money(123),
108
+ details: 'Оплата такая-то',
109
+ meta: { key: 'value' } // не обязательно
110
+ )
111
+ ```
32
112
 
33
113
  ## Development
34
114
 
@@ -1,3 +1,3 @@
1
1
  module Openbill
2
- VERSION = '0.1.5'
2
+ VERSION = '0.1.6'
3
3
  end
metadata CHANGED
@@ -1,14 +1,14 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: openbill-ruby
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.1.5
4
+ version: 0.1.6
5
5
  platform: ruby
6
6
  authors:
7
7
  - Danil Pismenny
8
8
  autorequire:
9
9
  bindir: exe
10
10
  cert_chain: []
11
- date: 2016-03-28 00:00:00.000000000 Z
11
+ date: 2016-03-29 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: bundler