purchase 1.0.2 → 1.0.3
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.
- data/features/purchase_committees.feature +229 -105
- data/features/purchase_emissions.feature +18 -38
- data/lib/purchase/carbon_model.rb +90 -99
- data/lib/purchase/characterization.rb +5 -6
- data/lib/purchase/data.rb +5 -14
- data/lib/purchase/relationships.rb +11 -0
- data/lib/test_support/purchase_record.rb +0 -5
- data/lib/test_support/test_impact_vectors_adapter.rb +7 -37
- data/lib/test_support/test_sector_direct_requirements_adapter.rb +7 -36
- metadata +59 -10
|
@@ -8,23 +8,20 @@ Feature: Purchase Committee Calculations
|
|
|
8
8
|
Then the committee should have used quorum "from purchase amount"
|
|
9
9
|
And the conclusion of the committee should be "100"
|
|
10
10
|
|
|
11
|
-
Scenario
|
|
11
|
+
Scenario: Cost committee from purchase amount and tax
|
|
12
12
|
Given a purchase emitter
|
|
13
|
-
And a characteristic "purchase_amount" of "
|
|
14
|
-
And a characteristic "tax" of "
|
|
13
|
+
And a characteristic "purchase_amount" of "10.00"
|
|
14
|
+
And a characteristic "tax" of "1.00"
|
|
15
15
|
When the "cost" committee is calculated
|
|
16
16
|
Then the committee should have used quorum "from purchase amount and tax"
|
|
17
|
-
And the conclusion of the committee should be "
|
|
18
|
-
Examples:
|
|
19
|
-
| amount | tax | cost |
|
|
20
|
-
| 10.00 | 1.00 | 9.00 |
|
|
17
|
+
And the conclusion of the committee should be "9.00"
|
|
21
18
|
|
|
22
19
|
Scenario: Cost committee from default
|
|
23
20
|
Given a purchase emitter
|
|
24
21
|
When the "cost" committee is calculated
|
|
25
22
|
Then the conclusion of the committee should be "100"
|
|
26
23
|
|
|
27
|
-
Scenario Outline: Adjusted cost committee
|
|
24
|
+
Scenario Outline: Adjusted cost committee from cost and date
|
|
28
25
|
Given a purchase emitter
|
|
29
26
|
And a characteristic "cost" of "<cost>"
|
|
30
27
|
And characteristic "date" of "<date>"
|
|
@@ -35,20 +32,15 @@ Feature: Purchase Committee Calculations
|
|
|
35
32
|
| 831.23 | 2010-08-01 | 688.67439 |
|
|
36
33
|
| 11.00 | 2005-07-14 | 9.11350 |
|
|
37
34
|
|
|
38
|
-
Scenario Outline: Merchant category committee
|
|
35
|
+
Scenario Outline: Merchant category committee from merchant
|
|
39
36
|
Given a purchase emitter
|
|
40
37
|
And a characteristic "merchant.id" of "<id>"
|
|
41
38
|
When the "merchant_category" committee is calculated
|
|
42
39
|
Then the conclusion of the committee should have "mcc" of "<mcc>"
|
|
43
40
|
Examples:
|
|
44
41
|
| id | mcc |
|
|
45
|
-
|
|
|
46
|
-
|
|
|
47
|
-
|
|
48
|
-
Scenario: Merchant category committee from default
|
|
49
|
-
Given a purchase emitter
|
|
50
|
-
When the "merchant_category" committee is calculated
|
|
51
|
-
Then the conclusion of the committee should have "mcc" of "5111"
|
|
42
|
+
| 1 | 1111 |
|
|
43
|
+
| 2 | 2222 |
|
|
52
44
|
|
|
53
45
|
Scenario Outline: Merchant category industries committee from merchant category
|
|
54
46
|
Given a purchase emitter
|
|
@@ -57,134 +49,266 @@ Feature: Purchase Committee Calculations
|
|
|
57
49
|
Then the conclusion of the committee should have a record identified with "naics_code" of "<naics>" and having "ratio" of "<ratio>"
|
|
58
50
|
Examples:
|
|
59
51
|
| mcc | naics | ratio |
|
|
60
|
-
|
|
|
61
|
-
|
|
|
62
|
-
|
|
|
52
|
+
| 1111 | 111111 | 1 |
|
|
53
|
+
| 2222 | 399900 | 0.5 |
|
|
54
|
+
| 2222 | 459000 | 0.5 |
|
|
63
55
|
|
|
64
|
-
Scenario Outline:
|
|
56
|
+
Scenario Outline: Trade industry ratios from merchant category industries
|
|
65
57
|
Given a purchase emitter
|
|
66
58
|
And a characteristic "merchant_category.mcc" of "<mcc>"
|
|
67
59
|
When the "merchant_category_industries" committee is calculated
|
|
68
|
-
And the "
|
|
69
|
-
Then the
|
|
60
|
+
And the "trade_industry_ratios" committee is calculated
|
|
61
|
+
Then the committee should have used quorum "from merchant category industries"
|
|
62
|
+
And the conclusion of the committee should include a key of "<naics>" and value "<ratio>"
|
|
70
63
|
Examples:
|
|
71
|
-
| mcc | naics |
|
|
72
|
-
|
|
|
73
|
-
| 9999 | 999991 | 0.5 |
|
|
74
|
-
| 9999 | 999992 | 0.5 |
|
|
64
|
+
| mcc | naics | ratio |
|
|
65
|
+
| 2222 | 459000 | 0.5 |
|
|
75
66
|
|
|
76
|
-
Scenario Outline:
|
|
67
|
+
Scenario Outline: Trade industry ratios from industry
|
|
77
68
|
Given a purchase emitter
|
|
78
|
-
And a characteristic "naics_code" of "<naics>"
|
|
79
|
-
When the "
|
|
80
|
-
Then the committee should have used quorum "from
|
|
81
|
-
And the conclusion of the committee should
|
|
69
|
+
And a characteristic "industry.naics_code" of "<naics>"
|
|
70
|
+
When the "trade_industry_ratios" committee is calculated
|
|
71
|
+
Then the committee should have used quorum "from naics code"
|
|
72
|
+
And the conclusion of the committee should include a key of "<naics>" and value "1"
|
|
82
73
|
Examples:
|
|
83
|
-
| naics |
|
|
84
|
-
|
|
|
85
|
-
| 999992 | 99992 | 0.75 |
|
|
86
|
-
| 999992 | 99993 | 0.25 |
|
|
74
|
+
| naics |
|
|
75
|
+
| 459000 |
|
|
87
76
|
|
|
88
|
-
Scenario Outline:
|
|
77
|
+
Scenario Outline: Non-trade industry ratios from merchant category industries
|
|
89
78
|
Given a purchase emitter
|
|
90
79
|
And a characteristic "merchant_category.mcc" of "<mcc>"
|
|
91
80
|
When the "merchant_category_industries" committee is calculated
|
|
92
|
-
And the "
|
|
93
|
-
|
|
94
|
-
|
|
95
|
-
Examples:
|
|
96
|
-
| mcc |
|
|
97
|
-
|
|
|
98
|
-
|
|
|
99
|
-
|
|
100
|
-
|
|
101
|
-
|
|
102
|
-
|
|
103
|
-
|
|
104
|
-
|
|
105
|
-
|
|
106
|
-
|
|
107
|
-
|
|
108
|
-
|
|
|
109
|
-
|
|
110
|
-
|
|
111
|
-
|
|
112
|
-
|
|
113
|
-
|
|
114
|
-
|
|
115
|
-
|
|
116
|
-
Scenario Outline:
|
|
81
|
+
And the "non_trade_industry_ratios" committee is calculated
|
|
82
|
+
Then the committee should have used quorum "from merchant category industries"
|
|
83
|
+
And the conclusion of the committee should include a key of "<naics>" and value "<ratio>"
|
|
84
|
+
Examples:
|
|
85
|
+
| mcc | naics | ratio |
|
|
86
|
+
| 1111 | 111111 | 1 |
|
|
87
|
+
| 2222 | 399900 | 0.5 |
|
|
88
|
+
|
|
89
|
+
Scenario Outline: Non-trade industry ratios from industry
|
|
90
|
+
Given a purchase emitter
|
|
91
|
+
And a characteristic "industry.naics_code" of "<naics>"
|
|
92
|
+
When the "non_trade_industry_ratios" committee is calculated
|
|
93
|
+
Then the conclusion of the committee should include a key of "<naics>" and value "1"
|
|
94
|
+
Examples:
|
|
95
|
+
| naics |
|
|
96
|
+
| 111111 |
|
|
97
|
+
| 399900 |
|
|
98
|
+
|
|
99
|
+
Scenario Outline: Non-trade industry ratios from default
|
|
100
|
+
Given a purchase emitter
|
|
101
|
+
When the "non_trade_industry_ratios" committee is calculated
|
|
102
|
+
Then the committee should have used quorum "from default"
|
|
103
|
+
And the conclusion of the committee should include a key of "111111" and value "1"
|
|
104
|
+
|
|
105
|
+
Scenario Outline: Product line ratios from trade industry ratios
|
|
106
|
+
Given a purchase emitter
|
|
107
|
+
And a characteristic "merchant_category.mcc" of "<mcc>"
|
|
108
|
+
When the "merchant_category_industries" committee is calculated
|
|
109
|
+
And the "trade_industry_ratios" committee is calculated
|
|
110
|
+
And the "product_line_ratios" committee is calculated
|
|
111
|
+
Then the conclusion of the committee should include a key of "<ps_code>" and value "<ratio>"
|
|
112
|
+
Examples:
|
|
113
|
+
| mcc | ps_code | ratio |
|
|
114
|
+
| 2222 | 45911 | 0.375 |
|
|
115
|
+
| 2222 | 45912 | 0.125 |
|
|
116
|
+
|
|
117
|
+
Scenario Outline: Product line industry product ratios from product line ratios
|
|
118
|
+
Given a purchase emitter
|
|
119
|
+
And a characteristic "merchant_category.mcc" of "<mcc>"
|
|
120
|
+
When the "merchant_category_industries" committee is calculated
|
|
121
|
+
And the "trade_industry_ratios" committee is calculated
|
|
122
|
+
And the "product_line_ratios" committee is calculated
|
|
123
|
+
And the "product_line_industry_product_ratios" committee is calculated
|
|
124
|
+
Then the conclusion of the committee should include a key of "<naics_product_code>" and value "<ratio>"
|
|
125
|
+
Examples:
|
|
126
|
+
| mcc | naics_product_code | ratio |
|
|
127
|
+
| 2222 | 399100A | 0.1875 |
|
|
128
|
+
| 2222 | 399100B | 0.1875 |
|
|
129
|
+
| 2222 | 399200A | 0.0625 |
|
|
130
|
+
| 2222 | 399200B | 0.0625 |
|
|
131
|
+
|
|
132
|
+
Scenario Outline: Industry product ratios from product line industry product ratios
|
|
133
|
+
Given a purchase emitter
|
|
134
|
+
And a characteristic "merchant_category.mcc" of "<mcc>"
|
|
135
|
+
When the "merchant_category_industries" committee is calculated
|
|
136
|
+
And the "trade_industry_ratios" committee is calculated
|
|
137
|
+
And the "product_line_ratios" committee is calculated
|
|
138
|
+
And the "product_line_industry_product_ratios" committee is calculated
|
|
139
|
+
And the "industry_product_ratios" committee is calculated
|
|
140
|
+
Then the conclusion of the committee should include a key of "<naics>" and value "<ratio>"
|
|
141
|
+
Examples:
|
|
142
|
+
| mcc | naics | ratio |
|
|
143
|
+
| 2222 | 399100 | 0.1875 |
|
|
144
|
+
| 2222 | 399200 | 0.0625 |
|
|
145
|
+
|
|
146
|
+
Scenario Outline: Industry ratios committee from non trade industry and industry product ratios
|
|
147
|
+
Given a purchase emitter
|
|
148
|
+
And a characteristic "merchant_category.mcc" of "<mcc>"
|
|
149
|
+
When the "merchant_category_industries" committee is calculated
|
|
150
|
+
And the "non_trade_industry_ratios" committee is calculated
|
|
151
|
+
And the "trade_industry_ratios" committee is calculated
|
|
152
|
+
And the "product_line_ratios" committee is calculated
|
|
153
|
+
And the "product_line_industry_product_ratios" committee is calculated
|
|
154
|
+
And the "industry_product_ratios" committee is calculated
|
|
155
|
+
And the "industry_ratios" committee is calculated
|
|
156
|
+
Then the conclusion of the committee should include a key of "<naics>" and value "<ratio>"
|
|
157
|
+
Examples:
|
|
158
|
+
| mcc | naics | ratio |
|
|
159
|
+
| 1111 | 111111 | 1.0 |
|
|
160
|
+
| 2222 | 399100 | 0.1875 |
|
|
161
|
+
| 2222 | 399200 | 0.0625 |
|
|
162
|
+
| 2222 | 399900 | 0.5 |
|
|
163
|
+
|
|
164
|
+
Scenario Outline: Industry ratios committee from industry
|
|
165
|
+
Given a purchase emitter
|
|
166
|
+
And a characteristic "industry.naics_code" of "<naics>"
|
|
167
|
+
When the "non_trade_industry_ratios" committee is calculated
|
|
168
|
+
And the "trade_industry_ratios" committee is calculated
|
|
169
|
+
And the "product_line_ratios" committee is calculated
|
|
170
|
+
And the "product_line_industry_product_ratios" committee is calculated
|
|
171
|
+
And the "industry_product_ratios" committee is calculated
|
|
172
|
+
And the "industry_ratios" committee is calculated
|
|
173
|
+
Then the conclusion of the committee should include a key of "<new_naics>" and value "<ratio>"
|
|
174
|
+
Examples:
|
|
175
|
+
| naics | new_naics | ratio |
|
|
176
|
+
| 111111 | 111111 | 1.0 |
|
|
177
|
+
| 459000 | 399100 | 0.375 |
|
|
178
|
+
| 459000 | 399200 | 0.125 |
|
|
179
|
+
| 399900 | 399900 | 1.0 |
|
|
180
|
+
|
|
181
|
+
Scenario Outline: Industry sector ratios committee from merchant category
|
|
117
182
|
Given a purchase emitter
|
|
118
183
|
And a characteristic "merchant_category.mcc" of "<mcc>"
|
|
119
184
|
And a characteristic "cost" of "100"
|
|
120
185
|
And a characteristic "date" of "2010-08-01"
|
|
121
|
-
When the "
|
|
122
|
-
And the "
|
|
123
|
-
And the "
|
|
124
|
-
And the "
|
|
125
|
-
|
|
126
|
-
And the
|
|
186
|
+
When the "merchant_category_industries" committee is calculated
|
|
187
|
+
And the "non_trade_industry_ratios" committee is calculated
|
|
188
|
+
And the "trade_industry_ratios" committee is calculated
|
|
189
|
+
And the "product_line_ratios" committee is calculated
|
|
190
|
+
And the "product_line_industry_product_ratios" committee is calculated
|
|
191
|
+
And the "industry_product_ratios" committee is calculated
|
|
192
|
+
And the "industry_ratios" committee is calculated
|
|
193
|
+
And the "industry_sector_ratios" committee is calculated
|
|
194
|
+
Then the conclusion of the committee should include a key of "<io_code>" and value "<ratio>"
|
|
195
|
+
Examples:
|
|
196
|
+
| mcc | io_code | ratio |
|
|
197
|
+
| 1111 | 111000 | 1.0 |
|
|
198
|
+
| 2222 | 3991A0 | 0.140625 |
|
|
199
|
+
| 2222 | 3991B0 | 0.046875 |
|
|
200
|
+
| 2222 | 399200 | 0.0625 |
|
|
201
|
+
| 2222 | 399900 | 0.5 |
|
|
202
|
+
|
|
203
|
+
Scenario Outline: Industry sector ratios committee from industry
|
|
204
|
+
Given a purchase emitter
|
|
205
|
+
And a characteristic "industry.naics_code" of "<naics>"
|
|
206
|
+
When the "non_trade_industry_ratios" committee is calculated
|
|
207
|
+
And the "trade_industry_ratios" committee is calculated
|
|
208
|
+
And the "product_line_ratios" committee is calculated
|
|
209
|
+
And the "product_line_industry_product_ratios" committee is calculated
|
|
210
|
+
And the "industry_product_ratios" committee is calculated
|
|
211
|
+
And the "industry_ratios" committee is calculated
|
|
212
|
+
And the "industry_sector_ratios" committee is calculated
|
|
213
|
+
Then the conclusion of the committee should include a key of "<io_code>" and value "<ratio>"
|
|
214
|
+
Examples:
|
|
215
|
+
| naics | io_code | ratio |
|
|
216
|
+
| 111111 | 111000 | 1.0 |
|
|
217
|
+
| 399100 | 3991A0 | 0.75 |
|
|
218
|
+
| 399100 | 3991B0 | 0.25 |
|
|
219
|
+
| 399200 | 399200 | 1.0 |
|
|
220
|
+
| 399900 | 399900 | 1.0 |
|
|
221
|
+
|
|
222
|
+
Scenario Outline: Industry sector shares committee from merchant category
|
|
223
|
+
Given a purchase emitter
|
|
224
|
+
And a characteristic "merchant_category.mcc" of "<mcc>"
|
|
225
|
+
And a characteristic "adjusted_cost" of "100.00"
|
|
226
|
+
When the "merchant_category_industries" committee is calculated
|
|
227
|
+
And the "non_trade_industry_ratios" committee is calculated
|
|
228
|
+
And the "trade_industry_ratios" committee is calculated
|
|
229
|
+
And the "product_line_ratios" committee is calculated
|
|
230
|
+
And the "product_line_industry_product_ratios" committee is calculated
|
|
231
|
+
And the "industry_product_ratios" committee is calculated
|
|
232
|
+
And the "industry_ratios" committee is calculated
|
|
233
|
+
And the "industry_sector_ratios" committee is calculated
|
|
234
|
+
And the "industry_sector_shares" committee is calculated
|
|
235
|
+
Then the conclusion of the committee should include a key of "<io_code>" and value "<share>"
|
|
127
236
|
Examples:
|
|
128
|
-
| mcc | io_code
|
|
129
|
-
|
|
|
130
|
-
|
|
|
131
|
-
|
|
|
237
|
+
| mcc | io_code | share |
|
|
238
|
+
| 1111 | 111000 | 100.0 |
|
|
239
|
+
| 2222 | 3991A0 | 14.0625 |
|
|
240
|
+
| 2222 | 3991B0 | 4.6875 |
|
|
241
|
+
| 2222 | 399200 | 6.25 |
|
|
242
|
+
| 2222 | 399900 | 50.0 |
|
|
132
243
|
|
|
133
244
|
Scenario Outline: Sector shares committee from industry and product line shares
|
|
134
245
|
Given a purchase emitter
|
|
135
246
|
And a characteristic "merchant_category.mcc" of "<mcc>"
|
|
136
|
-
And a characteristic "adjusted_cost" of "
|
|
247
|
+
And a characteristic "adjusted_cost" of "100.00"
|
|
137
248
|
When the "merchant_category_industries" committee is calculated
|
|
138
|
-
And the "
|
|
139
|
-
And the "
|
|
140
|
-
And the "
|
|
249
|
+
And the "non_trade_industry_ratios" committee is calculated
|
|
250
|
+
And the "trade_industry_ratios" committee is calculated
|
|
251
|
+
And the "product_line_ratios" committee is calculated
|
|
252
|
+
And the "product_line_industry_product_ratios" committee is calculated
|
|
253
|
+
And the "industry_product_ratios" committee is calculated
|
|
254
|
+
And the "industry_ratios" committee is calculated
|
|
255
|
+
And the "industry_sector_ratios" committee is calculated
|
|
256
|
+
And the "industry_sector_shares" committee is calculated
|
|
141
257
|
And the "sector_shares" committee is calculated
|
|
142
|
-
Then the conclusion of the committee should be a vector with values "<
|
|
258
|
+
Then the conclusion of the committee should be a vector with values "<111000>,<3991A0>,<3991B0>,<399200>,<399900>,<4A0000>"
|
|
143
259
|
Examples:
|
|
144
|
-
| mcc|
|
|
145
|
-
|
|
|
146
|
-
|
|
|
260
|
+
| mcc|111000|3991A0 |3991B0|399200|399900|4A0000|
|
|
261
|
+
|1111|100.00| 0| 0| 0| 0| 0|
|
|
262
|
+
|2222| 0|14.0625|4.6875| 6.25| 50.0| 0|
|
|
147
263
|
|
|
148
|
-
Scenario: Sector direct requirements
|
|
264
|
+
Scenario: Sector direct requirements committee
|
|
149
265
|
Given a purchase emitter
|
|
150
266
|
When the "sector_direct_requirements" committee is calculated
|
|
151
|
-
Then the conclusion of the committee should be a square matrix with "
|
|
267
|
+
Then the conclusion of the committee should be a square matrix with "6" rows and columns
|
|
152
268
|
|
|
153
269
|
Scenario: Economic flows from merchant category
|
|
154
270
|
Given a purchase emitter
|
|
155
|
-
And a characteristic "merchant_category.mcc" of "
|
|
156
|
-
And a characteristic "
|
|
157
|
-
|
|
158
|
-
|
|
159
|
-
And the "
|
|
160
|
-
And the "
|
|
161
|
-
And the "
|
|
162
|
-
And the "
|
|
271
|
+
And a characteristic "merchant_category.mcc" of "1111"
|
|
272
|
+
And a characteristic "adjusted_cost" of "100"
|
|
273
|
+
When the "merchant_category_industries" committee is calculated
|
|
274
|
+
And the "non_trade_industry_ratios" committee is calculated
|
|
275
|
+
And the "trade_industry_ratios" committee is calculated
|
|
276
|
+
And the "product_line_ratios" committee is calculated
|
|
277
|
+
And the "product_line_industry_product_ratios" committee is calculated
|
|
278
|
+
And the "industry_product_ratios" committee is calculated
|
|
279
|
+
And the "industry_ratios" committee is calculated
|
|
280
|
+
And the "industry_sector_ratios" committee is calculated
|
|
281
|
+
And the "industry_sector_shares" committee is calculated
|
|
163
282
|
And the "sector_shares" committee is calculated
|
|
164
283
|
And the "sector_direct_requirements" committee is calculated
|
|
165
284
|
And the "economic_flows" committee is calculated
|
|
166
|
-
Then the conclusion of the committee should be a vector with "
|
|
285
|
+
Then the conclusion of the committee should be a vector with "6" items
|
|
286
|
+
|
|
287
|
+
Scenario: Impact vectors committee
|
|
288
|
+
Given a purchase emitter
|
|
289
|
+
When the "impact_vectors" committee is calculated
|
|
290
|
+
Then the conclusion of the committee should be a square matrix with "6" rows and columns
|
|
167
291
|
|
|
168
292
|
Scenario Outline: Impacts committee from economic flows
|
|
169
293
|
Given a purchase emitter
|
|
170
294
|
And a characteristic "merchant_category.mcc" of "<mcc>"
|
|
171
|
-
And a characteristic "
|
|
172
|
-
|
|
173
|
-
|
|
174
|
-
And the "
|
|
175
|
-
And the "
|
|
176
|
-
And the "
|
|
177
|
-
And the "
|
|
295
|
+
And a characteristic "adjusted_cost" of "100"
|
|
296
|
+
When the "merchant_category_industries" committee is calculated
|
|
297
|
+
And the "non_trade_industry_ratios" committee is calculated
|
|
298
|
+
And the "trade_industry_ratios" committee is calculated
|
|
299
|
+
And the "product_line_ratios" committee is calculated
|
|
300
|
+
And the "product_line_industry_product_ratios" committee is calculated
|
|
301
|
+
And the "industry_product_ratios" committee is calculated
|
|
302
|
+
And the "industry_ratios" committee is calculated
|
|
303
|
+
And the "industry_sector_ratios" committee is calculated
|
|
304
|
+
And the "industry_sector_shares" committee is calculated
|
|
178
305
|
And the "sector_shares" committee is calculated
|
|
179
306
|
And the "sector_direct_requirements" committee is calculated
|
|
180
307
|
And the "economic_flows" committee is calculated
|
|
181
308
|
And the "impact_vectors" committee is calculated
|
|
182
309
|
And the "impacts" committee is calculated
|
|
183
|
-
Then the conclusion of the committee should be a vector with values "<
|
|
184
|
-
Examples:
|
|
185
|
-
|
|
|
186
|
-
|
|
|
187
|
-
|
|
|
188
|
-
|5172| 35.58872 | 23.75424 | 19.71380 | 65.44441 | 70.92181 | 40.52542 | 46.99530 | 26.65128 | 34.40320 | 37.53618 | 24.68486 | 55.96723 | 82.58029 | 48.39434 | 8.55823 | 16.05688 | 13.17485 | 7.93908 | 24.20801 | 72.40388 | 39.79780 | 20.18866 | 3.40454 | 19.65695 | 19.28569 | 4.97658 | 0.23634 | 2.57416 | 3.79738 | 4.40459 | 68.84678 | 23.57193 | 23.57193 | 23.68206 | 20.88125 |
|
|
189
|
-
|5732| 23.82496 | 38.07691 | 13.11535 | 67.43841 | 47.01503 | 26.86485 | 28.54448 | 16.48957 | 21.28581 | 23.75176 | 16.05288 | 36.48537 | 34.13793 | 33.78076 | 6.37445 | 13.50597 | 11.33464 | 10.34780 | 23.80141 | 71.08195 | 37.57537 | 19.56198 | 3.32479 | 19.24582 | 18.92542 | 4.96435 | 0.29751 | 2.39136 | 3.54334 | 4.20360 | 64.55618 | 22.09769 | 22.09769 | 22.17096 | 20.29572 |
|
|
190
|
-
|5812| 34.59232 | 23.08918 | 19.48251 | 64.67657 | 70.88026 | 40.50168 | 43.64568 | 25.42384 | 32.81874 | 37.49322 | 25.83877 | 58.82688 | 56.29772 | 54.71279 | 11.61328 | 25.17174 | 21.33815 | 14.31873 | 81.35713 | 123.84802 | 53.98569 | 22.37338 | 3.51343 | 20.06660 | 19.35014 | 4.96561 | 0.24528 | 2.52186 | 3.73916 | 4.34106 | 67.67328 | 23.16928 | 23.16928 | 23.27813 | 20.55662 |
|
|
310
|
+
Then the conclusion of the committee should be a vector with values "<111000>,<3991A0>,<3991B0>,<399200>,<399900>,<4A0000>"
|
|
311
|
+
Examples:
|
|
312
|
+
|mcc |111000 |3991A0 |3991B0 |399200 |399900 |4A0000 |
|
|
313
|
+
|1111|90.44460| 6.83919| 5.58981| 18.5568|19.91952 |11.38220|
|
|
314
|
+
|2222|28.14742|26.31519|16.92866|58.00083|105.81262|31.07553|
|
|
@@ -4,17 +4,17 @@ Feature: Purchase Emissions Calculations
|
|
|
4
4
|
Scenario: Calculations starting from nothing
|
|
5
5
|
Given a purchase has nothing
|
|
6
6
|
When emissions are calculated
|
|
7
|
-
Then the emission value should be within "0.001" kgs of "
|
|
7
|
+
Then the emission value should be within "0.001" kgs of "126.538"
|
|
8
8
|
|
|
9
9
|
Scenario: Calculations starting from purchase amount
|
|
10
10
|
Given a purchase has "purchase_amount" of "107.11"
|
|
11
11
|
When emissions are calculated
|
|
12
|
-
Then the emission value should be within "0.001" kgs of "
|
|
12
|
+
Then the emission value should be within "0.001" kgs of "126.538"
|
|
13
13
|
|
|
14
14
|
Scenario: Calculations starting from date
|
|
15
15
|
Given a purchase has "date" of "2010-07-28"
|
|
16
16
|
When emissions are calculated
|
|
17
|
-
Then the emission value should be within "0.001" kgs of "
|
|
17
|
+
Then the emission value should be within "0.001" kgs of "126.538"
|
|
18
18
|
|
|
19
19
|
Scenario Outline: Calculations starting from a merchant
|
|
20
20
|
Given a purchase has "merchant.id" of "<id>"
|
|
@@ -22,11 +22,8 @@ Feature: Purchase Emissions Calculations
|
|
|
22
22
|
Then the emission value should be within "0.001" kgs of "<emission>"
|
|
23
23
|
Examples:
|
|
24
24
|
| id | emission |
|
|
25
|
-
| 1 |
|
|
26
|
-
| 2 |
|
|
27
|
-
| 3 | 1158.876 |
|
|
28
|
-
| 4 | 1007.731 |
|
|
29
|
-
| 5 | 1034.378 |
|
|
25
|
+
| 1 | 126.538 |
|
|
26
|
+
| 2 | 220.613 |
|
|
30
27
|
|
|
31
28
|
Scenario Outline: Calculations starting from a merchant with purchase amount
|
|
32
29
|
Given a purchase has "merchant.id" of "<id>"
|
|
@@ -35,11 +32,8 @@ Feature: Purchase Emissions Calculations
|
|
|
35
32
|
Then the emission value should be within "0.001" kgs of "<emission>"
|
|
36
33
|
Examples:
|
|
37
34
|
| id | amount | emission |
|
|
38
|
-
| 1 | 107.11 |
|
|
39
|
-
| 2 | 107.11 |
|
|
40
|
-
| 3 | 107.11 | 1158.876 |
|
|
41
|
-
| 4 | 107.11 | 1007.731 |
|
|
42
|
-
| 5 | 107.11 | 1034.378 |
|
|
35
|
+
| 1 | 107.11 | 126.538 |
|
|
36
|
+
| 2 | 107.11 | 220.613 |
|
|
43
37
|
|
|
44
38
|
Scenario Outline: Calculations starting from a merchant with purchase amount and date
|
|
45
39
|
Given a purchase has "merchant.id" of "<id>"
|
|
@@ -49,11 +43,8 @@ Feature: Purchase Emissions Calculations
|
|
|
49
43
|
Then the emission value should be within "0.001" kgs of "<emission>"
|
|
50
44
|
Examples:
|
|
51
45
|
| id | amount | date | emission |
|
|
52
|
-
| 1 | 107.11 | 2010-07-28 |
|
|
53
|
-
| 2 | 107.11 | 2010-07-28 |
|
|
54
|
-
| 3 | 107.11 | 2010-07-28 | 1158.876 |
|
|
55
|
-
| 4 | 107.11 | 2010-07-28 | 1007.731 |
|
|
56
|
-
| 5 | 107.11 | 2010-07-28 | 1034.378 |
|
|
46
|
+
| 1 | 107.11 | 2010-07-28 | 126.538 |
|
|
47
|
+
| 2 | 107.11 | 2010-07-28 | 220.613 |
|
|
57
48
|
|
|
58
49
|
Scenario Outline: Calculations starting from a merchant with purchase amount, date, and tax
|
|
59
50
|
Given a purchase has "merchant.id" of "<id>"
|
|
@@ -64,11 +55,8 @@ Feature: Purchase Emissions Calculations
|
|
|
64
55
|
Then the emission value should be within "0.001" kgs of "<emission>"
|
|
65
56
|
Examples:
|
|
66
57
|
| id | amount | tax | date | emission |
|
|
67
|
-
| 1 | 108.00 | 8.00 | 2010-07-28 |
|
|
68
|
-
| 2 | 108.00 | 8.00 | 2010-07-28 |
|
|
69
|
-
| 3 | 108.00 | 8.00 | 2010-07-28 | 1158.876 |
|
|
70
|
-
| 4 | 108.00 | 8.00 | 2010-07-28 | 1007.731 |
|
|
71
|
-
| 5 | 108.00 | 8.00 | 2010-07-28 | 1034.378 |
|
|
58
|
+
| 1 | 108.00 | 8.00 | 2010-07-28 | 126.538 |
|
|
59
|
+
| 2 | 108.00 | 8.00 | 2010-07-28 | 220.613 |
|
|
72
60
|
|
|
73
61
|
Scenario Outline: Calculations starting from a merchant category
|
|
74
62
|
Given a purchase has "merchant_category.mcc" of "<mcc>"
|
|
@@ -78,26 +66,18 @@ Feature: Purchase Emissions Calculations
|
|
|
78
66
|
Then the emission value should be within "0.001" kgs of "<emission>"
|
|
79
67
|
Examples:
|
|
80
68
|
| mcc | cost | date | emission |
|
|
81
|
-
|
|
|
82
|
-
|
|
|
83
|
-
|
|
|
84
|
-
| 3504 | 100.00 | 2010-07-28 | 1007.731 |
|
|
85
|
-
| 5172 | 100.00 | 2010-07-28 | 1034.378 |
|
|
69
|
+
| 1111 | 100.00 | 2010-07-28 | 126.538 |
|
|
70
|
+
| 2222 | 100.00 | 2010-07-28 | 220.613 |
|
|
71
|
+
| 5111 | 100.00 | 2010-07-28 | 126.538 |
|
|
86
72
|
|
|
87
73
|
Scenario Outline: Calculations starting from industry
|
|
88
|
-
Given a purchase has "naics_code" of "<naics>"
|
|
74
|
+
Given a purchase has "industry.naics_code" of "<naics>"
|
|
89
75
|
And it has "cost" of "<cost>"
|
|
90
76
|
And it has "date" of "<date>"
|
|
91
77
|
When emissions are calculated
|
|
92
78
|
Then the emission value should be within "0.001" kgs of "<emission>"
|
|
93
79
|
Examples:
|
|
94
80
|
| naics | cost | date | emission |
|
|
95
|
-
|
|
|
96
|
-
|
|
|
97
|
-
|
|
|
98
|
-
| 72111 | 100.00 | 2010-07-28 | 1007.731 |
|
|
99
|
-
| 32411 | 100.00 | 2010-07-28 | 1029.897 |
|
|
100
|
-
| 324121 | 100.00 | 2010-07-28 | 1032.748 |
|
|
101
|
-
| 324122 | 100.00 | 2010-07-28 | 1029.932 |
|
|
102
|
-
| 324191 | 100.00 | 2010-07-28 | 1059.298 |
|
|
103
|
-
| 324199 | 100.00 | 2010-07-28 | 1087.243 |
|
|
81
|
+
| 111111 | 100.00 | 2010-07-28 | 126.538 |
|
|
82
|
+
| 399900 | 100.00 | 2010-07-28 | 334.190 |
|
|
83
|
+
| 459000 | 100.00 | 2010-07-28 | 107.036 |
|
|
@@ -46,130 +46,137 @@ module BrighterPlanet
|
|
|
46
46
|
end
|
|
47
47
|
|
|
48
48
|
committee :sector_shares do
|
|
49
|
-
quorum 'from industry
|
|
50
|
-
|
|
51
|
-
|
|
52
|
-
unless ['420000','4A0000'].include?(industry_sector.io_code)
|
|
53
|
-
industry_sector_shares[industry_sector.io_code] ||= 0
|
|
54
|
-
industry_sector_shares[industry_sector.io_code] +=
|
|
55
|
-
industry_sector.ratio * characteristics[:adjusted_cost]
|
|
56
|
-
end
|
|
49
|
+
quorum 'from industry sector shares', :needs => :industry_sector_shares do |characteristics|
|
|
50
|
+
shares = BrighterPlanet::Purchase.key_map.map do |key|
|
|
51
|
+
characteristics[:industry_sector_shares][key] || 0
|
|
57
52
|
end
|
|
53
|
+
Vector[*shares]
|
|
54
|
+
end
|
|
55
|
+
end
|
|
58
56
|
|
|
59
|
-
|
|
60
|
-
|
|
61
|
-
|
|
62
|
-
|
|
63
|
-
|
|
64
|
-
product_line_sector_shares[io_code] +=
|
|
65
|
-
product_line_sector.ratio * product_line_share.ratio * characteristics[:adjusted_cost]
|
|
66
|
-
end
|
|
57
|
+
committee :industry_sector_shares do
|
|
58
|
+
quorum 'from industry sector ratios', :needs => [:industry_sector_ratios, :adjusted_cost] do |characteristics|
|
|
59
|
+
characteristics[:industry_sector_ratios].inject({}) do |new_ratios, (io_code, ratio)|
|
|
60
|
+
new_ratios[io_code] = ratio * characteristics[:adjusted_cost]
|
|
61
|
+
new_ratios
|
|
67
62
|
end
|
|
68
|
-
|
|
63
|
+
end
|
|
64
|
+
end
|
|
69
65
|
|
|
70
|
-
|
|
71
|
-
|
|
66
|
+
committee :industry_sector_ratios do
|
|
67
|
+
quorum 'from industry ratios', :needs => :industry_ratios do |characteristics|
|
|
68
|
+
characteristics[:industry_ratios].inject({}) do |new_ratios, (naics_code, ratio)|
|
|
69
|
+
IndustrySector.where(:naics_code => naics_code).each do |industry_sector|
|
|
70
|
+
new_ratio = ratio * industry_sector.ratio
|
|
71
|
+
new_ratios[industry_sector.io_code] = new_ratio
|
|
72
|
+
end
|
|
73
|
+
new_ratios
|
|
72
74
|
end
|
|
73
|
-
Vector[*shares]
|
|
74
75
|
end
|
|
76
|
+
end
|
|
75
77
|
|
|
76
|
-
|
|
77
|
-
|
|
78
|
-
|
|
79
|
-
|
|
80
|
-
|
|
81
|
-
|
|
82
|
-
|
|
78
|
+
# industries = the industries needed to produce the purchased item
|
|
79
|
+
# ratios = the portion of the purchase amount that goes to each industry
|
|
80
|
+
committee :industry_ratios do
|
|
81
|
+
quorum 'from non trade industry and industry product ratios', :needs => [:non_trade_industry_ratios, :industry_product_ratios] do |characteristics|
|
|
82
|
+
combined_ratios = characteristics[:non_trade_industry_ratios].
|
|
83
|
+
merge characteristics[:industry_product_ratios]
|
|
84
|
+
end
|
|
85
|
+
end
|
|
86
|
+
|
|
87
|
+
committee :industry_product_ratios do
|
|
88
|
+
quorum 'from product line industry product ratios', :needs => :product_line_industry_product_ratios do |characteristics|
|
|
89
|
+
characteristics[:product_line_industry_product_ratios].inject({}) do |new_ratios, (naics_product_code, ratio)|
|
|
90
|
+
IndustryProduct.where(:naics_product_code => naics_product_code).each do |industry_product|
|
|
91
|
+
new_ratios[industry_product.naics_code] = ratio
|
|
83
92
|
end
|
|
93
|
+
new_ratios
|
|
84
94
|
end
|
|
85
|
-
|
|
86
|
-
shares = BrighterPlanet::Purchase.key_map.map do |key|
|
|
87
|
-
industry_sector_shares[key] || 0
|
|
88
|
-
end
|
|
89
|
-
Vector[*shares]
|
|
90
95
|
end
|
|
91
96
|
end
|
|
92
97
|
|
|
93
|
-
committee :
|
|
94
|
-
quorum 'from
|
|
95
|
-
|
|
96
|
-
|
|
97
|
-
|
|
98
|
-
|
|
98
|
+
committee :product_line_industry_product_ratios do
|
|
99
|
+
quorum 'from product line ratios', :needs => :product_line_ratios do |characteristics|
|
|
100
|
+
characteristics[:product_line_ratios].inject({}) do |new_ratios, (ps_code, ratio)|
|
|
101
|
+
ProductLineIndustryProduct.where(:ps_code => ps_code).each do |plip|
|
|
102
|
+
new_ratio = ratio * plip.ratio
|
|
103
|
+
new_ratios[plip.naics_product_code] = new_ratio
|
|
104
|
+
end
|
|
105
|
+
new_ratios
|
|
99
106
|
end
|
|
100
107
|
end
|
|
101
|
-
|
|
102
|
-
|
|
103
|
-
|
|
104
|
-
|
|
105
|
-
|
|
106
|
-
|
|
107
|
-
|
|
108
|
-
|
|
108
|
+
end
|
|
109
|
+
|
|
110
|
+
committee :product_line_ratios do
|
|
111
|
+
quorum 'from trade industry ratios', :needs => :trade_industry_ratios do |characteristics|
|
|
112
|
+
characteristics[:trade_industry_ratios].inject({}) do |new_ratios, (naics, ratio)|
|
|
113
|
+
IndustryProductLine.where(:naics_code => naics).each do |industry_product_line|
|
|
114
|
+
new_ratio = ratio * industry_product_line.ratio
|
|
115
|
+
new_ratios[industry_product_line.ps_code] = new_ratio
|
|
109
116
|
end
|
|
110
|
-
|
|
117
|
+
new_ratios
|
|
111
118
|
end
|
|
112
119
|
end
|
|
113
120
|
end
|
|
114
121
|
|
|
115
|
-
|
|
116
|
-
|
|
117
|
-
|
|
118
|
-
|
|
119
|
-
|
|
120
|
-
IndustryProductLine.
|
|
121
|
-
find_all_by_naics_code(characteristics[:naics_code]).
|
|
122
|
-
map do |industry_product_line|
|
|
123
|
-
ProductLineShare.new industry_product_line.ps_code,
|
|
124
|
-
industry_product_line.ratio
|
|
122
|
+
committee :non_trade_industry_ratios do
|
|
123
|
+
quorum 'from merchant category industries', :needs => :merchant_category_industries do |characteristics|
|
|
124
|
+
characteristics[:merchant_category_industries].inject({}) do |hash, merchant_category_industry|
|
|
125
|
+
unless merchant_category_industry.industry.trade_industry?
|
|
126
|
+
hash[merchant_category_industry.naics_code] = merchant_category_industry.ratio
|
|
125
127
|
end
|
|
128
|
+
hash
|
|
129
|
+
end
|
|
126
130
|
end
|
|
127
131
|
|
|
128
|
-
quorum 'from industry
|
|
129
|
-
|
|
130
|
-
|
|
131
|
-
|
|
132
|
-
|
|
133
|
-
industry_product_lines.each do |industry_product_line|
|
|
134
|
-
ratio = industry_product_line.ratio * industry_share.ratio
|
|
135
|
-
list << ProductLineShare.new(industry_product_line.ps_code,
|
|
136
|
-
ratio)
|
|
137
|
-
end
|
|
138
|
-
list
|
|
132
|
+
quorum 'from industry', :needs => :industry do |characteristics|
|
|
133
|
+
if characteristics[:industry].trade_industry?
|
|
134
|
+
{}
|
|
135
|
+
else
|
|
136
|
+
{ characteristics[:industry].naics_code.to_s => 1 }
|
|
139
137
|
end
|
|
140
138
|
end
|
|
139
|
+
|
|
140
|
+
quorum 'default' do
|
|
141
|
+
mci = MerchantCategoryIndustry.where(:mcc => 5111).first
|
|
142
|
+
{ mci.naics_code.to_s => mci.ratio }
|
|
143
|
+
end
|
|
141
144
|
end
|
|
142
|
-
|
|
143
|
-
|
|
144
|
-
# ratios = the portion of the purchase amount that goes to each industry
|
|
145
|
-
committee :industry_shares do
|
|
145
|
+
|
|
146
|
+
committee :trade_industry_ratios do
|
|
146
147
|
quorum 'from merchant category industries', :needs => :merchant_category_industries do |characteristics|
|
|
147
|
-
characteristics[:merchant_category_industries].
|
|
148
|
-
|
|
148
|
+
characteristics[:merchant_category_industries].inject({}) do |hash, merchant_category_industry|
|
|
149
|
+
if merchant_category_industry.industry.trade_industry?
|
|
150
|
+
hash[merchant_category_industry.naics_code] = merchant_category_industry.ratio
|
|
151
|
+
end
|
|
152
|
+
hash
|
|
153
|
+
end
|
|
154
|
+
end
|
|
155
|
+
|
|
156
|
+
quorum 'from naics code', :needs => :industry do |characteristics|
|
|
157
|
+
if characteristics[:industry].trade_industry?
|
|
158
|
+
{ characteristics[:industry].naics_code.to_s => 1 }
|
|
159
|
+
else
|
|
160
|
+
{}
|
|
149
161
|
end
|
|
150
162
|
end
|
|
163
|
+
|
|
164
|
+
quorum 'default' do
|
|
165
|
+
{}
|
|
166
|
+
end
|
|
151
167
|
end
|
|
152
168
|
|
|
153
169
|
# a dictionary to go from merchant categories to industries
|
|
154
170
|
committee :merchant_category_industries do
|
|
155
171
|
quorum 'from merchant category', :needs => :merchant_category do |characteristics|
|
|
156
|
-
puts 'here'
|
|
157
172
|
characteristics[:merchant_category].merchant_category_industries
|
|
158
173
|
end
|
|
159
|
-
quorum 'from industry', :needs => :naics_code do |characteristics|
|
|
160
|
-
MerchantCategoryIndustry.find_all_by_naics_code characteristics[:naics_code]
|
|
161
|
-
end
|
|
162
174
|
end
|
|
163
175
|
|
|
164
176
|
committee :merchant_category do
|
|
165
177
|
quorum 'from merchant', :needs => [:merchant] do |characteristics|
|
|
166
178
|
characteristics[:merchant].merchant_category
|
|
167
179
|
end
|
|
168
|
-
|
|
169
|
-
quorum 'default' do
|
|
170
|
-
# FIXME TODO figure out a better merchant category or fallback sectors to use
|
|
171
|
-
MerchantCategory.find_by_mcc 5111
|
|
172
|
-
end
|
|
173
180
|
end
|
|
174
181
|
|
|
175
182
|
committee :adjusted_cost do
|
|
@@ -210,22 +217,6 @@ module BrighterPlanet
|
|
|
210
217
|
end
|
|
211
218
|
end
|
|
212
219
|
end
|
|
213
|
-
|
|
214
|
-
class IndustryShare < Struct.new(:naics_code, :ratio); end
|
|
215
|
-
class IndustrySectorShare < Struct.new(:io_code, :ratio); end
|
|
216
|
-
|
|
217
|
-
class ProductLineShare
|
|
218
|
-
attr_accessor :ps_code, :ratio
|
|
219
|
-
|
|
220
|
-
def initialize(ps_code, ratio)
|
|
221
|
-
self.ps_code = ps_code
|
|
222
|
-
self.ratio = ratio
|
|
223
|
-
end
|
|
224
|
-
|
|
225
|
-
def product_line_sectors
|
|
226
|
-
ProductLineSector.find_all_by_ps_code ps_code
|
|
227
|
-
end
|
|
228
|
-
end
|
|
229
220
|
end
|
|
230
221
|
end
|
|
231
222
|
end
|
|
@@ -6,14 +6,13 @@ module BrighterPlanet
|
|
|
6
6
|
def self.included(base)
|
|
7
7
|
base.send :include, Characterizable
|
|
8
8
|
base.characterize do
|
|
9
|
-
has :purchase_amount
|
|
10
|
-
has :merchant
|
|
11
|
-
has :merchant_category
|
|
12
|
-
has :naics_code
|
|
13
|
-
has :total # full purchase amount
|
|
14
|
-
has :tax # tax portion of purchase
|
|
15
9
|
has :cost # cost before tax
|
|
10
|
+
has :purchase_amount # full purchase amount, including tax
|
|
11
|
+
has :tax # tax portion of purchase
|
|
16
12
|
has :date
|
|
13
|
+
has :merchant
|
|
14
|
+
has :merchant_category
|
|
15
|
+
has :industry
|
|
17
16
|
end
|
|
18
17
|
base.add_implicit_characteristics
|
|
19
18
|
end
|
data/lib/purchase/data.rb
CHANGED
|
@@ -6,25 +6,16 @@ module BrighterPlanet
|
|
|
6
6
|
def self.included(base)
|
|
7
7
|
base.data_miner do
|
|
8
8
|
schema do
|
|
9
|
-
|
|
10
|
-
string '
|
|
11
|
-
string 'naics_code'
|
|
12
|
-
string 'ps_code'
|
|
13
|
-
string 'io_code'
|
|
9
|
+
float 'cost'
|
|
10
|
+
string 'cost_units'
|
|
14
11
|
float 'purchase_amount'
|
|
15
12
|
string 'purchase_amount_units'
|
|
16
13
|
float 'tax'
|
|
17
14
|
string 'tax_units'
|
|
18
|
-
float 'cost'
|
|
19
|
-
string 'cost_units'
|
|
20
|
-
string 'line_item'
|
|
21
|
-
string 'customer_code'
|
|
22
|
-
string 'zip_code_name'
|
|
23
15
|
date 'date'
|
|
24
|
-
|
|
25
|
-
string '
|
|
26
|
-
|
|
27
|
-
string 'emission_factor_units'
|
|
16
|
+
string 'merchant_id'
|
|
17
|
+
string 'mcc'
|
|
18
|
+
string 'naics_code'
|
|
28
19
|
end
|
|
29
20
|
|
|
30
21
|
process :run_data_miner_on_belongs_to_associations
|
|
@@ -0,0 +1,11 @@
|
|
|
1
|
+
module BrighterPlanet
|
|
2
|
+
module Purchase
|
|
3
|
+
module Relationships
|
|
4
|
+
def self.included(target)
|
|
5
|
+
target.belongs_to :merchant, :foreign_key => 'merchant_id'
|
|
6
|
+
target.belongs_to :merchant_category, :foreign_key => 'mcc'
|
|
7
|
+
target.belongs_to :industry, :foreign_key => 'naics_code'
|
|
8
|
+
end
|
|
9
|
+
end
|
|
10
|
+
end
|
|
11
|
+
end
|
|
@@ -6,9 +6,4 @@ require 'sniff'
|
|
|
6
6
|
class PurchaseRecord < ActiveRecord::Base
|
|
7
7
|
include Sniff::Emitter
|
|
8
8
|
include BrighterPlanet::Purchase
|
|
9
|
-
|
|
10
|
-
belongs_to :merchant, :foreign_key => 'merchant_id'
|
|
11
|
-
belongs_to :merchant_category, :foreign_key => 'mcc'
|
|
12
|
-
|
|
13
|
-
attr_accessor :naics_code, :purchase_amount
|
|
14
9
|
end
|
|
@@ -13,43 +13,13 @@ module BrighterPlanet
|
|
|
13
13
|
|
|
14
14
|
def data
|
|
15
15
|
matrix_text = <<-MATRIX
|
|
16
|
-
|
|
|
17
|
-
|
|
|
18
|
-
|
|
|
19
|
-
|
|
|
20
|
-
|
|
|
21
|
-
|
|
|
22
|
-
|
|
|
23
|
-
| 7| 0| 0| 0| 0| 0| 0|0.567| 0| 0| 0| 0| 0| 0| 0| 0| 0| 0| 0| 0| 0| 0| 0| 0| 0| 0| 0| 0| 0| 0| 0| 0| 0| 0| 0| 0|
|
|
24
|
-
| 8| 0| 0| 0| 0| 0| 0| 0|0.284| 0| 0| 0| 0| 0| 0| 0| 0| 0| 0| 0| 0| 0| 0| 0| 0| 0| 0| 0| 0| 0| 0| 0| 0| 0| 0| 0|
|
|
25
|
-
| 9| 0| 0| 0| 0| 0| 0| 0| 0|0.37| 0| 0| 0| 0| 0| 0| 0| 0| 0| 0| 0| 0| 0| 0| 0| 0| 0| 0| 0| 0| 0| 0| 0| 0| 0| 0|
|
|
26
|
-
| 10| 0| 0| 0| 0| 0| 0| 0| 0| 0|0.362| 0| 0| 0| 0| 0| 0| 0| 0| 0| 0| 0| 0| 0| 0| 0| 0| 0| 0| 0| 0| 0| 0| 0| 0| 0|
|
|
27
|
-
| 11| 0| 0| 0| 0| 0| 0| 0| 0| 0| 0|0.22| 0| 0| 0| 0| 0| 0| 0| 0| 0| 0| 0| 0| 0| 0| 0| 0| 0| 0| 0| 0| 0| 0| 0| 0|
|
|
28
|
-
| 12| 0| 0| 0| 0| 0| 0| 0| 0| 0| 0| 0|0.549| 0| 0| 0| 0| 0| 0| 0| 0| 0| 0| 0| 0| 0| 0| 0| 0| 0| 0| 0| 0| 0| 0| 0|
|
|
29
|
-
| 13| 0| 0| 0| 0| 0| 0| 0| 0| 0| 0| 0| 0|0.544| 0| 0| 0| 0| 0| 0| 0| 0| 0| 0| 0| 0| 0| 0| 0| 0| 0| 0| 0| 0| 0| 0|
|
|
30
|
-
| 14| 0| 0| 0| 0| 0| 0| 0| 0| 0| 0| 0| 0| 0|0.535| 0| 0| 0| 0| 0| 0| 0| 0| 0| 0| 0| 0| 0| 0| 0| 0| 0| 0| 0| 0| 0|
|
|
31
|
-
| 15| 0| 0| 0| 0| 0| 0| 0| 0| 0| 0| 0| 0| 0| 0|0.101| 0| 0| 0| 0| 0| 0| 0| 0| 0| 0| 0| 0| 0| 0| 0| 0| 0| 0| 0| 0|
|
|
32
|
-
| 16| 0| 0| 0| 0| 0| 0| 0| 0| 0| 0| 0| 0| 0| 0| 0|0.245| 0| 0| 0| 0| 0| 0| 0| 0| 0| 0| 0| 0| 0| 0| 0| 0| 0| 0| 0|
|
|
33
|
-
| 17| 0| 0| 0| 0| 0| 0| 0| 0| 0| 0| 0| 0| 0| 0| 0| 0|0.23| 0| 0| 0| 0| 0| 0| 0| 0| 0| 0| 0| 0| 0| 0| 0| 0| 0| 0|
|
|
34
|
-
| 18| 0| 0| 0| 0| 0| 0| 0| 0| 0| 0| 0| 0| 0| 0| 0| 0| 0|0.186| 0| 0| 0| 0| 0| 0| 0| 0| 0| 0| 0| 0| 0| 0| 0| 0| 0|
|
|
35
|
-
| 19| 0| 0| 0| 0| 0| 0| 0| 0| 0| 0| 0| 0| 0| 0| 0| 0| 0| 0|0.559| 0| 0| 0| 0| 0| 0| 0| 0| 0| 0| 0| 0| 0| 0| 0| 0|
|
|
36
|
-
| 20| 0| 0| 0| 0| 0| 0| 0| 0| 0| 0| 0| 0| 0| 0| 0| 0| 0| 0| 0|2.0| 0| 0| 0| 0| 0| 0| 0| 0| 0| 0| 0| 0| 0| 0| 0|
|
|
37
|
-
| 21| 0| 0| 0| 0| 0| 0| 0| 0| 0| 0| 0| 0| 0| 0| 0| 0| 0| 0| 0| 0|1.3| 0| 0| 0| 0| 0| 0| 0| 0| 0| 0| 0| 0| 0| 0|
|
|
38
|
-
| 22| 0| 0| 0| 0| 0| 0| 0| 0| 0| 0| 0| 0| 0| 0| 0| 0| 0| 0| 0| 0| 0|0.9| 0| 0| 0| 0| 0| 0| 0| 0| 0| 0| 0| 0| 0|
|
|
39
|
-
| 23| 0| 0| 0| 0| 0| 0| 0| 0| 0| 0| 0| 0| 0| 0| 0| 0| 0| 0| 0| 0| 0| 0|0.2| 0| 0| 0| 0| 0| 0| 0| 0| 0| 0| 0| 0|
|
|
40
|
-
| 24| 0| 0| 0| 0| 0| 0| 0| 0| 0| 0| 0| 0| 0| 0| 0| 0| 0| 0| 0| 0| 0| 0| 0|1.2| 0| 0| 0| 0| 0| 0| 0| 0| 0| 0| 0|
|
|
41
|
-
| 25| 0| 0| 0| 0| 0| 0| 0| 0| 0| 0| 0| 0| 0| 0| 0| 0| 0| 0| 0| 0| 0| 0| 0| 0|1.6| 0| 0| 0| 0| 0| 0| 0| 0| 0| 0|
|
|
42
|
-
| 26| 0| 0| 0| 0| 0| 0| 0| 0| 0| 0| 0| 0| 0| 0| 0| 0| 0| 0| 0| 0| 0| 0| 0| 0| 0|0.8| 0| 0| 0| 0| 0| 0| 0| 0| 0|
|
|
43
|
-
|44100| 0| 0| 0| 0| 0| 0| 0| 0| 0| 0| 0| 0| 0| 0| 0| 0| 0| 0| 0| 0| 0| 0| 0| 0| 0| 0| 0.7| 0| 0| 0| 0| 0| 0| 0| 0|
|
|
44
|
-
|44102| 0| 0| 0| 0| 0| 0| 0| 0| 0| 0| 0| 0| 0| 0| 0| 0| 0| 0| 0| 0| 0| 0| 0| 0| 0| 0| 0| 0.7| 0| 0| 0| 0| 0| 0| 0|
|
|
45
|
-
|44103| 0| 0| 0| 0| 0| 0| 0| 0| 0| 0| 0| 0| 0| 0| 0| 0| 0| 0| 0| 0| 0| 0| 0| 0| 0| 0| 0| 0| 1.2| 0| 0| 0| 0| 0| 0|
|
|
46
|
-
|44104| 0| 0| 0| 0| 0| 0| 0| 0| 0| 0| 0| 0| 0| 0| 0| 0| 0| 0| 0| 0| 0| 0| 0| 0| 0| 0| 0| 0| 0| 1.4| 0| 0| 0| 0| 0|
|
|
47
|
-
|44105| 0| 0| 0| 0| 0| 0| 0| 0| 0| 0| 0| 0| 0| 0| 0| 0| 0| 0| 0| 0| 0| 0| 0| 0| 0| 0| 0| 0| 0| 0| 0.3| 0| 0| 0| 0|
|
|
48
|
-
| A| 0| 0| 0| 0| 0| 0| 0| 0| 0| 0| 0| 0| 0| 0| 0| 0| 0| 0| 0| 0| 0| 0| 0| 0| 0| 0| 0| 0| 0| 0| 0|0.1| 0| 0| 0|
|
|
49
|
-
| B| 0| 0| 0| 0| 0| 0| 0| 0| 0| 0| 0| 0| 0| 0| 0| 0| 0| 0| 0| 0| 0| 0| 0| 0| 0| 0| 0| 0| 0| 0| 0| 0|0.1| 0| 0|
|
|
50
|
-
| C| 0| 0| 0| 0| 0| 0| 0| 0| 0| 0| 0| 0| 0| 0| 0| 0| 0| 0| 0| 0| 0| 0| 0| 0| 0| 0| 0| 0| 0| 0| 0| 0| 0|0.1| 0|
|
|
51
|
-
| D| 0| 0| 0| 0| 0| 0| 0| 0| 0| 0| 0| 0| 0| 0| 0| 0| 0| 0| 0| 0| 0| 0| 0| 0| 0| 0| 0| 0| 0| 0| 0| 0| 0| 0|0.1|
|
|
52
|
-
|
|
16
|
+
| X |111000|3991A0|3991B0|399200|399900|4A0000|
|
|
17
|
+
|111000|0.81 |0 |0 |0 |0 |0 |
|
|
18
|
+
|3991A0|0 |0.546 |0 |0 |0 |0 |
|
|
19
|
+
|3991B0|0 |0 |0.358 |0 |0 |0 |
|
|
20
|
+
|399200|0 |0 |0 |1.2 |0 |0 |
|
|
21
|
+
|399900|0 |0 |0 |0 |1.08 |0 |
|
|
22
|
+
|4A0000|0 |0 |0 |0 |0 |0.623 |
|
|
53
23
|
MATRIX
|
|
54
24
|
lines = matrix_text.split(/\n/)
|
|
55
25
|
lines.shift
|
|
@@ -7,42 +7,13 @@ module BrighterPlanet
|
|
|
7
7
|
|
|
8
8
|
def self.data
|
|
9
9
|
matrix_text = <<-MATRIX
|
|
10
|
-
| X
|
|
11
|
-
|
|
|
12
|
-
|
|
|
13
|
-
|
|
|
14
|
-
|
|
|
15
|
-
|
|
|
16
|
-
|
|
|
17
|
-
| 15 | 0.212193869651688 | 0.422164528332642 | 0.627169341955671 | 0.837859668653946 | 0.87352422556479 | 0.820704782473821 | 1.79693533112508 | 0.852501310618306 | 0.837959665312599 | 0.822183524763731 | 0.940822523948768 | 0.991800736132706 | 1.01522794226959 | 0.91544048508758 | 0.941491969567255 | 0.958110546088266 | 0.94954105823658 | 0.935464791236729 | 0.929106556094517 | 0.906004805233736 | 0.757801074512588 | 0.838000392733056 | 0.804185416646659 | 0.755323876548388 | 0.688068529628399 | 0.354764432585494 | 0.0429296608689297 | 0.0425267327024958 | 0.0421246079820568 | 0.0417232843068776 | 0.0413227592857784 | 0.0389703156268542 | 0.00148846376526439 | 0.00135445995889622 | 0.00152015554068163 |
|
|
18
|
-
| 16 | 0.242406786718193 | 0.482320941609924 | 0.71653966329168 | 0.957487144014299 | 0.994349987201864 | 0.927588809968975 | 0.971992910363318 | 1.88029572085916 | 0.932624994095769 | 0.915084622598097 | 1.0452392678578 | 1.10278884511392 | 1.13764711320185 | 1.15525084940753 | 1.08023417626027 | 1.10513929046828 | 1.11061677963145 | 1.10137413581581 | 1.08051355703546 | 1.05658298311275 | 0.885271152612735 | 0.977106241239471 | 0.938285482888756 | 0.881354521637801 | 0.802663202626527 | 0.413906564740078 | 0.0500863864120119 | 0.0496162868251107 | 0.0491471246252223 | 0.0486788970113895 | 0.048211601193803 | 0.0454669859387909 | 0.00173660284750275 | 0.00158025951073778 | 0.00177357790105551 |
|
|
19
|
-
| 17 | 0.240182871243715 | 0.477895978842861 | 0.709965904912858 | 0.948702858289397 | 0.985227510255058 | 0.919078820886691 | 0.963075544213196 | 0.945614108741182 | 1.84149999414994 | 0.906689350831143 | 1.03564991677653 | 1.09267151625966 | 1.12720998372293 | 1.14465221776158 | 1.07032377097348 | 1.09500039789518 | 1.10042763486419 | 1.09126978594594 | 1.0706005886223 | 1.04688956124933 | 0.87714939891904 | 0.968141963796907 | 0.929677359192529 | 0.873268700338371 | 0.795299320033623 | 0.410109256806682 | 0.0496268782797916 | 0.0491610915331372 | 0.0486962335736148 | 0.0482323016259639 | 0.04776929292597 | 0.0450498576274258 | 0.00172067071128713 | 0.00156576171706129 | 0.00175730654416509 |
|
|
20
|
-
| 18 | 0.271782183469522 | 0.540832745313607 | 0.803467531208225 | 1.07395928155164 | 1.11007792831509 | 1.02721146364839 | 1.07387859710272 | 1.04423697755425 | 1.02019046950976 | 1.91070476111306 | 1.14141043345737 | 1.1995282046653 | 1.24523598438383 | 1.26936527137919 | 1.32805634958021 | 1.24272130711313 | 1.26711455263427 | 1.26518949342746 | 1.25011949089346 | 1.20861638539411 | 1.01793708290226 | 1.12339407267671 | 1.07721712999349 | 1.01281877546985 | 0.922260965145154 | 0.475613882440562 | 0.0575535222878011 | 0.0570133378386847 | 0.0564742305270541 | 0.0559361971343709 | 0.055399234454907 | 0.0522454378533439 | 0.00199550452425609 | 0.00181585271941169 | 0.00203799200880401 |
|
|
21
|
-
| 19 | 0.300602475946448 | 0.598263334407089 | 0.888789982738558 | 1.18840187466383 | 1.22168792117974 | 1.12128348321563 | 1.16447216004152 | 1.12920562782696 | 1.10439138167824 | 1.08517394199199 | 2.13464117822183 | 1.29010368488038 | 1.33550718179812 | 1.36350349414729 | 1.44681434284062 | 1.49431333269763 | 1.41327920780033 | 1.42243695868643 | 1.41760936714279 | 1.38043404653272 | 1.15453136633639 | 1.27728803876375 | 1.22544387405263 | 1.15103279057963 | 1.04860047929701 | 0.540637213792007 | 0.0654219253944537 | 0.0648078898789101 | 0.0641950787612042 | 0.0635834883827765 | 0.0629731150996293 | 0.0593881486583924 | 0.00226831899978861 | 0.00206410618176618 | 0.0023166151410811 |
|
|
22
|
-
| 2 | 0.273652258887148 | 0.544633059518311 | 0.809116185463372 | 1.08190192207294 | 1.11166589256965 | 1.01955671428974 | 1.05819306958555 | 1.02588799029688 | 1.00344230956417 | 0.904886249553391 | 1.12081309328616 | 2.0643413122774 | 1.21240122621208 | 1.23799317086212 | 1.31531989785274 | 1.3700139898063 | 1.2875254155312 | 1.29677328107071 | 1.29333432896353 | 1.26019656527849 | 1.05333581102069 | 1.16558063907151 | 1.11832230999917 | 1.0503254642825 | 0.956893245986751 | 0.493344570593814 | 0.0596990937134495 | 0.0591387714122516 | 0.0585795664037779 | 0.0580214753495043 | 0.0574644949241944 | 0.0541931260941796 | 0.00206989610476763 | 0.00188354695519579 | 0.0021139675051068 |
|
|
23
|
-
| 20 | 0.256733916330697 | 0.51104230441626 | 0.75921611300497 | 1.01557979047912 | 1.03675002652783 | 0.939022929118602 | 0.966825358334092 | 0.936248842166872 | 0.852074921334713 | 0.821610405030754 | 0.942609848594383 | 1.06181814301638 | 1.9803730402916 | 1.11890746121298 | 1.21511881035419 | 1.27639498512683 | 1.34861727863252 | 1.24009629976239 | 1.24910584790243 | 1.22630310781183 | 1.017301127635 | 1.12878582849953 | 1.08360819562401 | 1.01663172604512 | 0.926664799074554 | 0.477633446129552 | 0.0577979075088326 | 0.0572554293148549 | 0.0567140328321314 | 0.0561737148284572 | 0.0556344720844918 | 0.0524672837520854 | 0.00200397788600432 | 0.00182356323912541 | 0.00204664578198302 |
|
|
24
|
-
| 21 | 0.248227779488166 | 0.494218368734223 | 0.734226003303193 | 0.982687643398007 | 0.994479034454911 | 0.883155696567892 | 0.907368134918183 | 0.846735544045006 | 0.790129655278206 | 0.775393006491093 | 0.872702204723139 | 0.92703689329313 | 1.01689274306809 | 1.9153542736887 | 1.13754644945804 | 1.20265820993786 | 1.31040849777737 | 1.34669100041271 | 1.23436161840835 | 1.22631771544052 | 1.03746925066632 | 1.13295943081614 | 1.09192804077095 | 1.02618811044321 | 0.933163800959011 | 0.481579621805752 | 0.058275429965844 | 0.0577284698532082 | 0.0571826003888529 | 0.0566378183138688 | 0.0560941203823175 | 0.0529007649511441 | 0.00202053461764335 | 0.00183862939698467 | 0.0020635550329329 |
|
|
25
|
-
| 22 | 0.247740481072168 | 0.493396019374998 | 0.733009653160218 | 0.9817939611424 | 0.981251566457224 | 0.854244634978202 | 0.876760757470747 | 0.786275311878566 | 0.766496818915394 | 0.756558965456113 | 0.84462045011121 | 0.856460482725332 | 0.940671337094794 | 0.990872541046555 | 1.96139382784761 | 1.15628669412462 | 1.29573257263814 | 1.34816250726081 | 1.38784532256333 | 1.2557893478117 | 1.09091964247158 | 1.20305826270504 | 1.14393680981988 | 1.08158513098675 | 0.98407201882014 | 0.507707871768901 | 0.0614371812773887 | 0.0608605456762237 | 0.0602850598967958 | 0.0597107205033827 | 0.0591375240739366 | 0.0557709121652278 | 0.00213015934252483 | 0.0019383847983737 | 0.00217551384362969 |
|
|
26
|
-
| 23 | 0.216927165525523 | 0.432226758418132 | 0.642141228192199 | 0.861067944812799 | 0.843674196018218 | 0.716825352225776 | 0.695610255206846 | 0.654734822364087 | 0.647905732513161 | 0.642298989917132 | 0.711876443894582 | 0.703337906783647 | 0.704083681085624 | 0.732419249914895 | 0.906887100092866 | 1.82308975918707 | 1.09321195475424 | 1.16997863357336 | 1.24009348466059 | 1.26752354823618 | 1.01124390900566 | 1.13785151927113 | 1.0956491075349 | 1.02216090329094 | 0.934121689750038 | 0.480825228903178 | 0.0581841416953897 | 0.0576380383939816 | 0.0570930240323569 | 0.0565490953567116 | 0.0560062491261919 | 0.0528178960758577 | 0.00201736945677288 | 0.00183574919004745 | 0.00206032248072257 |
|
|
27
|
-
| 24 | 0.193492192907198 | 0.385569347517664 | 0.572825592020731 | 0.768302509701516 | 0.749698371981323 | 0.616747317011816 | 0.59311574425243 | 0.57374314116502 | 0.569108306448091 | 0.564704120297908 | 0.624438679973295 | 0.613037186156672 | 0.609762817938952 | 0.621974156710297 | 0.766078270982995 | 0.852600174774314 | 1.83100700605279 | 1.04981189809783 | 1.11978907938031 | 1.15351134275698 | 0.914348555479648 | 1.03092842014415 | 0.993381470568937 | 0.925847679527178 | 0.846439888126328 | 0.435601982265045 | 0.0527117254573296 | 0.0522169850270957 | 0.0517232311181584 | 0.0512304607827449 | 0.0507386710848148 | 0.0478501934729921 | 0.00182762900427627 | 0.00166309074078794 | 0.00186654215036771 |
|
|
28
|
-
| 25 | 0.165925826746795 | 0.33086784402779 | 0.491565979529305 | 0.660452428268094 | 0.627527747278574 | 0.470962759812992 | 0.48165365507294 | 0.474157744369669 | 0.471902467756529 | 0.469117708397332 | 0.516160631110634 | 0.500300930798932 | 0.492007476935382 | 0.497052697771133 | 0.54069464832611 | 0.60224363469453 | 0.791621863699181 | 1.70473787279777 | 0.929177916732962 | 0.997955357774641 | 0.961995500948763 | 0.949059809593501 | 0.938161788176031 | 0.892132379953116 | 0.798736088424077 | 0.415590375973661 | 0.0502901425910015 | 0.0498181305943133 | 0.0493470597980173 | 0.0488769273897617 | 0.0484077305683882 | 0.0456519499577332 | 0.00174366751289344 | 0.00158668815657922 | 0.00178079298447732 |
|
|
29
|
-
| 26 | 0.172808437336453 | 0.344822811294809 | 0.512307030731636 | 0.689462611066773 | 0.633914938943071 | 0.479108285645414 | 0.493450793768153 | 0.487554687273473 | 0.485522230185971 | 0.482937020852494 | 0.530418382279189 | 0.511923309454059 | 0.503848240787414 | 0.507818997145943 | 0.543299289585638 | 0.572427734369471 | 0.768932368523526 | 0.8457310081337 | 1.75667381746505 | 0.988836108575665 | 1.00041561438658 | 1.17264294385693 | 1.03335791765504 | 1.0100048589901 | 0.922762833986326 | 0.475045615443243 | 0.05748475691214 | 0.0569452178794133 | 0.0564067546972005 | 0.0558693641508089 | 0.0553330430383404 | 0.0521830146163681 | 0.00199312028063746 | 0.00181368312510309 | 0.00203555700082345 |
|
|
30
|
-
| 3 | 0.151185191337698 | 0.301929277729937 | 0.448588806166573 | 0.604967212263329 | 0.532719818778295 | 0.4033103234474 | 0.421891249725435 | 0.418857559466621 | 0.417497963908512 | 0.415626457496146 | 0.455317172137666 | 0.436702568040918 | 0.429935661541026 | 0.432095581519658 | 0.446634997140905 | 0.460772417860325 | 0.520675183515443 | 0.633865790925671 | 0.747422847917021 | 1.64497605894068 | 0.862144054484936 | 1.07918318071632 | 1.12095503389319 | 0.971446848036996 | 0.908406264900471 | 0.462039996955376 | 0.0559109610639886 | 0.0553861933260404 | 0.0548624719843793 | 0.0543397939123231 | 0.0538181559956341 | 0.0507543678557532 | 0.00193855339036901 | 0.00176402879714773 | 0.00197982829414269 |
|
|
31
|
-
| 4 | 0.131049030350643 | 0.262160099158857 | 0.389518146811556 | 0.527504519834192 | 0.442316019133042 | 0.342154353033725 | 0.360152070109594 | 0.358339072613479 | 0.357338908706596 | 0.355970989575256 | 0.38917767600088 | 0.37135982051374 | 0.366574696444962 | 0.367924155990893 | 0.374894958762277 | 0.380614941224336 | 0.401516167997669 | 0.429583627766712 | 0.501236422436724 | 0.648700314125699 | 1.53055041120305 | 0.946910165209208 | 1.037148725901 | 1.07525227502152 | 0.885296222779025 | 0.481873724984365 | 0.0583110190738792 | 0.0577637249298592 | 0.0572175221001842 | 0.0566724073239547 | 0.0561283773532501 | 0.0529330717233137 | 0.00202176856863845 | 0.00183975225751585 | 0.00206481525671926 |
|
|
32
|
-
|44100| 0.101802251583302 | 0.2041615762505 | 0.303362144064407 | 0.413342771816601 | 0.284622594699509 | 0.251867108036271 | 0.266099348597074 | 0.265219069168578 | 0.264658806354956 | 0.264191822310273 | 0.286782552531528 | 0.269217726827595 | 0.269859942524894 | 0.270539438020624 | 0.27319781366125 | 0.275077767377702 | 0.278474262223577 | 0.284657241284663 | 0.300051918238832 | 0.331358253707055 | 0.518530079410501 | 1.55312344110517 | 0.847084571247971 | 0.9481498344351 | 0.953967515708387 | 0.467512216045307 | 0.0565731483864864 | 0.0560421655068788 | 0.0555122414166623 | 0.0549833729521235 | 0.054455556962141 | 0.0513554825265779 | 0.00196151285045803 | 0.00178492125694028 | 0.00200327659787697 |
|
|
33
|
-
|44102| 0.0786003663073115 | 0.157742684717276 | 0.234392686933455 | 0.319920514187864 | 0.206791220744278 | 0.191402811111519 | 0.202446561435298 | 0.201882974907995 | 0.201498026768017 | 0.201268386510349 | 0.218006017990471 | 0.203626068635594 | 0.205080035469048 | 0.205523611078922 | 0.206970236850932 | 0.207858324019256 | 0.207658702953865 | 0.208999408566081 | 0.212035521576962 | 0.217910571996919 | 0.253000902868432 | 0.565820701995427 | 1.47613166218156 | 0.756861642484798 | 0.795063546650924 | 0.381440179941917 | 0.0461576642487795 | 0.0457244387667657 | 0.0452920771441377 | 0.0448605767996425 | 0.0444299351623004 | 0.0419006045695359 | 0.00160038559198758 | 0.00145630565803969 | 0.00163446036219419 |
|
|
34
|
-
|44103| 0.0747202542534306 | 0.151085686209771 | 0.224541552072727 | 0.312040927748068 | 0.197664444987144 | 0.184190895856601 | 0.194845757487178 | 0.194310988156741 | 0.193941174360235 | 0.193733758957363 | 0.209995908441732 | 0.195840239899937 | 0.197383709387289 | 0.197806084595572 | 0.199134453782789 | 0.19992259887598 | 0.199321087591085 | 0.200139037105878 | 0.201836582360058 | 0.204952918088907 | 0.223545284511533 | 0.45757281726198 | 0.61787585399038 | 1.52472063910656 | 0.792422155343949 | 0.569519311016879 | 0.0689169167891968 | 0.0682700780684594 | 0.0676245291557394 | 0.0669802661970289 | 0.066337285353659 | 0.0625608016682105 | 0.0023894978757846 | 0.00217437553412187 | 0.00244037410925871 |
|
|
35
|
-
|44104| 0.0549174321105287 | 0.111348367233971 | 0.165495331393948 | 0.231473232529146 | 0.14394441384678 | 0.135569788984884 | 0.143447866589725 | 0.143069512622344 | 0.142802636343115 | 0.142669267562676 | 0.154624093972315 | 0.143993487969017 | 0.145288480973515 | 0.145589016539356 | 0.146477959618935 | 0.146972753534402 | 0.146073945362429 | 0.146130900617773 | 0.145972642961014 | 0.145353633748688 | 0.14161792626782 | 0.236913900138336 | 0.354476928856865 | 0.53067709278976 | 1.39909427099508 | 0.474309162195365 | 0.057395639499927 | 0.0568569369032395 | 0.0563193084891974 | 0.0557827510480917 | 0.0552472613829881 | 0.0521021163839691 | 0.00199003038809585 | 0.00181087141021786 | 0.00203240131952514 |
|
|
36
|
-
|44105| 0.0236726533638111 | 0.0528419473958301 | 0.0787105155710479 | 0.133703058223812 | 0.0738960374559481 | 0.069838323071707 | 0.073882321455352 | 0.0736595119014691 | 0.0735013996827904 | 0.0734189535785694 | 0.0804837676639267 | 0.0742446374496168 | 0.0749744240992277 | 0.0751517195134499 | 0.0756658181928333 | 0.0759463876934597 | 0.0753283469309581 | 0.0752648369364433 | 0.0749187015795843 | 0.0740286163259196 | 0.0686848084891527 | 0.102858361773066 | 0.135509890729056 | 0.209725983382074 | 0.384892545448841 | 1.09147594591117 | 0.132078325504823 | 0.130838667970984 | 0.129601482336515 | 0.128366761215261 | 0.127134497250468 | 0.119896918079653 | 0.00457943989566919 | 0.00416716087929357 | 0.00467694349911398 |
|
|
37
|
-
| 5 | 0.00428206805760895 | 0.00143066948454697 | 0.00248609622013471 | 0.0143117389077685 | 0.00399723884855405 | 0.00368776360460498 | 0.0038837959153822 | 0.00384817138869325 | 0.00382329399451112 | 0.00380498715486426 | 0.00486317124205566 | 0.00399893037788482 | 0.00405494366918949 | 0.00408316199355551 | 0.0041691900054045 | 0.00421928484955422 | 0.00415518112338903 | 0.00418380759293969 | 0.00422943429719749 | 0.00429682184501568 | 0.00469640136199786 | 0.00965375227436077 | 0.0153530270373853 | 0.0280591806267465 | 0.0576326391564692 | 0.177464596687384 | 0.780529204483932 | 0.217058498282155 | 0.2156480201853 | 0.214240351805769 | 0.212835484756346 | 0.204584138628267 | 0.000604139081936176 | 0.00692343936454599 | 0.00777620026969846 |
|
|
38
|
-
| 6 | 0.0259402288354608 | 0.0453067426790929 | 0.067079346258279 | 0.0390920098750296 | 0.0436167929042948 | 0.0416693653940306 | 0.0441500318608842 | 0.0441068690385687 | 0.0440743149903576 | 0.0440784347669058 | 0.04574864583306 | 0.0439952376544178 | 0.0443781531355459 | 0.0444131175895012 | 0.0444943156685055 | 0.0445240818635329 | 0.0442366504206094 | 0.0440375653817638 | 0.0434841380133667 | 0.0423015074177095 | 0.0352251014092748 | 0.0379153673265637 | 0.0350318480649831 | 0.0298833037282514 | 0.0200879211521154 | 0.0224788345113363 | 0.384172117569439 | 0.615255016128572 | 0.381328671975407 | 0.37991119735408 | 0.37849654357777 | 0.370187716087991 | 0.0064102855341364 | 0.0042413464396756 | 0.00475875747304311 |
|
|
39
|
-
| 7 | 0.0232078133677134 | 0.0339272275917191 | 0.0501135004887265 | 0.0443092196934612 | 0.0375804954755689 | 0.0357951203347312 | 0.0379144448526338 | 0.0378627346044663 | 0.0378248250112203 | 0.0378194279746241 | 0.0396588983260008 | 0.0378449115375506 | 0.0381783528972693 | 0.0382198900092202 | 0.0383276188469578 | 0.0383771160743835 | 0.0381282932410054 | 0.0379960424275712 | 0.0376097319839136 | 0.0367676539958474 | 0.0317270862523631 | 0.0387079346991589 | 0.0421418709491858 | 0.0507811599939226 | 0.0725698614086085 | 0.158648479992167 | 0.264214527838954 | 0.263097441769912 | 0.735026389890218 | 0.26086994544499 | 0.25975952190391 | 0.253237560277727 | 0.00222942561270641 | 0.000425315374909903 | 0.00944154681479051 |
|
|
40
|
-
| 8 | 0.0182907332924413 | 0.0351597425158603 | 0.052033993145768 | 0.0444018564173223 | 0.0373303300991636 | 0.0355389861905309 | 0.0376354365783722 | 0.0375730140647305 | 0.037527608260277 | 0.0375159471649261 | 0.0396677710847952 | 0.0376088431525067 | 0.0379509426699467 | 0.0380009704744415 | 0.0381343985393365 | 0.0381988491664444 | 0.0379289998237746 | 0.0378035261819059 | 0.0374261535221454 | 0.0365943930720028 | 0.0316144366657436 | 0.0387208637274869 | 0.0423406202037888 | 0.0513852580456434 | 0.0741022669535889 | 0.163962325837437 | 0.274129442680653 | 0.273008701093938 | 0.271890194286061 | 0.725242020675586 | 0.26965985832289 | 0.263116554432538 | 0.00258327120194925 | 0.00871848943562744 | 0.000834110680426044 |
|
|
41
|
-
| 9 | 1.55596163072858 | 2.63641405458023 | 3.90003008467143 | 2.91386832729571 | 2.72330930990013 | 2.59663823089974 | 2.75054926392216 | 2.74698455270021 | 2.74435624445472 | 2.7440884674722 | 2.87277297556912 | 2.74457794830801 | 2.76887083104418 | 2.77173907981294 | 2.77902135392293 | 2.78224737634749 | 2.76376852139839 | 2.75318156846493 | 2.72272190511781 | 2.65671885877008 | 2.26167492252177 | 2.63725825108415 | 2.72052412446678 | 2.98081243909448 | 3.71421620035713 | 6.5182699867831 | 9.95531339228791 | 9.95082299332193 | 9.94634154829207 | 9.94186903044355 | 8.94238053750617 | 8.95198482308775 | 0.348279118154781 | 0.310394862809376 | 0.349153967999911 |
|
|
42
|
-
| A | 1.60140161530726 | 2.70906326046144 | 4.00731495999829 | 2.98835193545263 | 2.79724629228759 | 2.66719361217727 | 2.82529735381085 | 2.82165026130486 | 2.81896055812585 | 2.81869398995385 | 2.95046005061251 | 2.81910531837086 | 2.84404796494854 | 2.84698270960749 | 2.8544270390703 | 2.85771920366709 | 2.83875653496251 | 2.82786162138841 | 2.79653322257733 | 2.72866253609162 | 2.32244209786277 | 2.70619070500343 | 2.78914593246354 | 3.0508189285373 | 3.79099563674582 | 6.61782698097902 | 10.082765652096 | 10.0792551111839 | 10.0757515703534 | 10.0722550086879 | 10.0687654053541 | 9.04826956913328 | 0.352774173894877 | 0.32248044240785 | 0.362759028653842 |
|
|
43
|
-
| B | 1.60140161530726 | 2.70906326046144 | 4.00731495999829 | 2.98835193545263 | 2.79724629228759 | 2.66719361217727 | 2.82529735381085 | 2.82165026130486 | 2.81896055812585 | 2.81869398995385 | 2.95046005061251 | 2.81910531837086 | 2.84404796494854 | 2.84698270960749 | 2.8544270390703 | 2.85771920366709 | 2.83875653496251 | 2.82786162138841 | 2.79653322257733 | 2.72866253609162 | 2.32244209786277 | 2.70619070500343 | 2.78914593246354 | 3.0508189285373 | 3.79099563674582 | 6.61782698097902 | 10.082765652096 | 10.0792551111839 | 10.0757515703534 | 10.0722550086879 | 10.0687654053541 | 10.0482695691333 | 0.647225826105123 | 0.32248044240785 | 0.362759028653842 |
|
|
44
|
-
| C | 1.60452460094489 | 2.71527538820124 | 4.03596115725938 | 3.00067535762834 | 2.81018791385647 | 2.67949913316264 | 2.83830804001222 | 2.83460865924746 | 2.83188160715427 | 2.83159380876738 | 2.96501623020695 | 2.8322212304407 | 2.85731703787758 | 2.86029347016249 | 2.86785602109649 | 2.87121134458886 | 2.85208052789896 | 2.84114554398891 | 2.80967031258351 | 2.74145442249456 | 2.33316438341254 | 2.7180363086118 | 2.80051312961269 | 3.06149845024229 | 3.80072262147018 | 6.62284259741394 | 10.0821587177676 | 10.078653873405 | 10.075156017765 | 10.0716651299648 | 10.0681811892051 | 10.0477186115468 | 0.35275313017505 | 0.677538706782447 | 0.362737536879545 |
|
|
45
|
-
| D | 0.880295136150399 | 2.55484170189327 | 3.8073308206926 | 2.6825243723863 | 2.4742130853796 | 2.35718105609542 | 2.49602827306575 | 2.49153917629882 | 2.48827467381092 | 2.48731946279743 | 2.64096633220124 | 2.49540023294212 | 2.51871053196511 | 2.52230804871015 | 2.53190917764079 | 2.53656532191272 | 2.51718688061478 | 2.50820823152121 | 2.48118438411519 | 2.4216054518236 | 2.06488244095408 | 2.42177546089277 | 2.51619901771912 | 2.79436480065111 | 3.55743177781448 | 6.49738783199494 | 10.0973398634495 | 10.0936925322591 | 10.0900524739126 | 10.0864196666783 | 10.0827940889112 | 10.0614996204536 | 0.353279493179214 | 0.322940268675082 | 0.636724893005641 |
|
|
10
|
+
| X |111000 |3991A0 |3991B0 |399200 |399900 |4A0000 |
|
|
11
|
+
|111000|1.11660|0.25159|0.37377|0.49894|0.52683|0.50533|
|
|
12
|
+
|3991A0|0.12526|1.22952|0.37011|0.49405|0.52167|0.50038|
|
|
13
|
+
|3991B0|0.15614|0.31060|1.43230|0.61617|0.64708|0.61527|
|
|
14
|
+
|399200|0.15464|0.30761|0.45699|1.57178|0.64085|0.60935|
|
|
15
|
+
|399900|0.18444|0.36693|0.54511|0.72808|1.71418|0.72007|
|
|
16
|
+
|4A0000|0.18270|0.36347|0.53997|0.72121|0.75461|1.65668|
|
|
46
17
|
MATRIX
|
|
47
18
|
lines = matrix_text.split(/\n/)
|
|
48
19
|
lines.shift
|
metadata
CHANGED
|
@@ -1,13 +1,13 @@
|
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
|
2
2
|
name: purchase
|
|
3
3
|
version: !ruby/object:Gem::Version
|
|
4
|
-
hash:
|
|
4
|
+
hash: 17
|
|
5
5
|
prerelease: false
|
|
6
6
|
segments:
|
|
7
7
|
- 1
|
|
8
8
|
- 0
|
|
9
|
-
-
|
|
10
|
-
version: 1.0.
|
|
9
|
+
- 3
|
|
10
|
+
version: 1.0.3
|
|
11
11
|
platform: ruby
|
|
12
12
|
authors:
|
|
13
13
|
- Andy Rossmeissl
|
|
@@ -19,7 +19,7 @@ autorequire:
|
|
|
19
19
|
bindir: bin
|
|
20
20
|
cert_chain: []
|
|
21
21
|
|
|
22
|
-
date: 2010-
|
|
22
|
+
date: 2010-10-05 00:00:00 -04:00
|
|
23
23
|
default_executable:
|
|
24
24
|
dependencies:
|
|
25
25
|
- !ruby/object:Gem::Dependency
|
|
@@ -63,12 +63,12 @@ dependencies:
|
|
|
63
63
|
requirements:
|
|
64
64
|
- - ~>
|
|
65
65
|
- !ruby/object:Gem::Version
|
|
66
|
-
hash:
|
|
66
|
+
hash: 59
|
|
67
67
|
segments:
|
|
68
68
|
- 0
|
|
69
|
-
-
|
|
70
|
-
-
|
|
71
|
-
version: 0.
|
|
69
|
+
- 9
|
|
70
|
+
- 0
|
|
71
|
+
version: 0.9.0
|
|
72
72
|
requirement: *id003
|
|
73
73
|
- !ruby/object:Gem::Dependency
|
|
74
74
|
type: :development
|
|
@@ -151,8 +151,24 @@ dependencies:
|
|
|
151
151
|
- !ruby/object:Gem::Dependency
|
|
152
152
|
type: :runtime
|
|
153
153
|
prerelease: false
|
|
154
|
-
name:
|
|
154
|
+
name: earth
|
|
155
155
|
version_requirements: &id009 !ruby/object:Gem::Requirement
|
|
156
|
+
none: false
|
|
157
|
+
requirements:
|
|
158
|
+
- - ~>
|
|
159
|
+
- !ruby/object:Gem::Version
|
|
160
|
+
hash: 31
|
|
161
|
+
segments:
|
|
162
|
+
- 0
|
|
163
|
+
- 2
|
|
164
|
+
- 4
|
|
165
|
+
version: 0.2.4
|
|
166
|
+
requirement: *id009
|
|
167
|
+
- !ruby/object:Gem::Dependency
|
|
168
|
+
type: :runtime
|
|
169
|
+
prerelease: false
|
|
170
|
+
name: emitter
|
|
171
|
+
version_requirements: &id010 !ruby/object:Gem::Requirement
|
|
156
172
|
none: false
|
|
157
173
|
requirements:
|
|
158
174
|
- - ~>
|
|
@@ -163,7 +179,39 @@ dependencies:
|
|
|
163
179
|
- 1
|
|
164
180
|
- 4
|
|
165
181
|
version: 0.1.4
|
|
166
|
-
requirement: *
|
|
182
|
+
requirement: *id010
|
|
183
|
+
- !ruby/object:Gem::Dependency
|
|
184
|
+
type: :runtime
|
|
185
|
+
prerelease: false
|
|
186
|
+
name: fastercsv
|
|
187
|
+
version_requirements: &id011 !ruby/object:Gem::Requirement
|
|
188
|
+
none: false
|
|
189
|
+
requirements:
|
|
190
|
+
- - ~>
|
|
191
|
+
- !ruby/object:Gem::Version
|
|
192
|
+
hash: 5
|
|
193
|
+
segments:
|
|
194
|
+
- 1
|
|
195
|
+
- 5
|
|
196
|
+
- 3
|
|
197
|
+
version: 1.5.3
|
|
198
|
+
requirement: *id011
|
|
199
|
+
- !ruby/object:Gem::Dependency
|
|
200
|
+
type: :runtime
|
|
201
|
+
prerelease: false
|
|
202
|
+
name: slither
|
|
203
|
+
version_requirements: &id012 !ruby/object:Gem::Requirement
|
|
204
|
+
none: false
|
|
205
|
+
requirements:
|
|
206
|
+
- - ~>
|
|
207
|
+
- !ruby/object:Gem::Version
|
|
208
|
+
hash: 405
|
|
209
|
+
segments:
|
|
210
|
+
- 0
|
|
211
|
+
- 99
|
|
212
|
+
- 3
|
|
213
|
+
version: 0.99.3
|
|
214
|
+
requirement: *id012
|
|
167
215
|
description: A software model in Ruby for the greenhouse gas emissions of a purchase
|
|
168
216
|
email: seamus@brighterplanet.com
|
|
169
217
|
executables: []
|
|
@@ -180,6 +228,7 @@ files:
|
|
|
180
228
|
- lib/purchase/carbon_model.rb
|
|
181
229
|
- lib/purchase/characterization.rb
|
|
182
230
|
- lib/purchase/data.rb
|
|
231
|
+
- lib/purchase/relationships.rb
|
|
183
232
|
- lib/purchase/summarization.rb
|
|
184
233
|
- lib/test_support/db/schema.rb
|
|
185
234
|
- lib/test_support/purchase_record.rb
|