stockor 0.1.8 → 0.1.9
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.
- checksums.yaml +4 -4
- data/.gitignore +1 -0
- data/Gemfile.lock +38 -40
- data/client/skr/Extension.coffee +8 -9
- data/client/skr/components/address/Address.cjsx +51 -0
- data/client/skr/components/address/styles.scss +6 -0
- data/client/skr/index.js +1 -4
- data/client/skr/models/Customer.coffee +1 -1
- data/client/skr/models/GlAccount.coffee +11 -11
- data/client/skr/models/SalesOrder.coffee +0 -2
- data/client/skr/screens/Base.coffee +8 -2
- data/client/skr/screens/customer-maint/CustomerMaint.cjsx +58 -0
- data/client/skr/screens/customer-maint/index.js +1 -5
- data/client/skr/screens/customer-maint/index.scss +2 -0
- data/client/skr/screens/sales-order/index.js +1 -1
- data/client/skr/screens/sku-maint/index.js +1 -1
- data/client/skr/screens/vendor-maint/index.js +1 -1
- data/client/skr/styles.scss +23 -0
- data/coffeelint.json +49 -0
- data/config/screens.rb +41 -44
- data/db/migrate/20140322014401_create_skr_inventory_adjustments.rb +1 -1
- data/db/migrate/20140322223912_create_skr_sales_orders.rb +1 -2
- data/db/migrate/20140327202102_create_skr_purchase_orders.rb +1 -1
- data/db/migrate/20140327224000_create_skr_invoices.rb +1 -1
- data/db/migrate/20140330232810_create_skr_sku_qty_details_view.rb +2 -2
- data/db/migrate/20140400164729_create_skr_vouchers.rb +2 -6
- data/db/schema.sql +50 -1
- data/db/seed.rb +1 -1
- data/lib/skr/access_roles.rb +3 -2
- data/lib/skr/db/migration_helpers.rb +4 -0
- data/lib/skr/extension.rb +3 -2
- data/lib/skr/models/inventory_adjustment.rb +4 -0
- data/lib/skr/models/invoice.rb +6 -0
- data/lib/skr/models/purchase_order.rb +6 -2
- data/lib/skr/models/sales_order.rb +3 -3
- data/lib/skr/models/voucher.rb +6 -0
- data/lib/skr/version.rb +1 -1
- data/spec/skr/models/CustomerSpec.coffee +6 -12
- data/spec/skr/models/SalesOrderSpec.coffee +1 -1
- data/spec/skr/screens/CustomerMaint.coffee +1 -1
- data/spec/skr/screens/sales-order/SalesOrderSpec.coffee +1 -1
- data/spec/skr/screens/sku-maint/SkuMaintSpec.coffee +1 -1
- data/spec/skr/screens/vendor-maint/VendorMaintSpec.coffee +1 -1
- metadata +7 -5
- data/client/skr/components/address/Address.coffee +0 -20
- data/client/skr/screens/customer-maint/CustomerMaint.coffee +0 -28
checksums.yaml
CHANGED
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
---
|
|
2
2
|
SHA1:
|
|
3
|
-
metadata.gz:
|
|
4
|
-
data.tar.gz:
|
|
3
|
+
metadata.gz: 0a414367906d22c62241eefcdd7dd7e1222f5f14
|
|
4
|
+
data.tar.gz: 5c774edc4a5bebe21b462e00c815201a71bb8d8a
|
|
5
5
|
SHA512:
|
|
6
|
-
metadata.gz:
|
|
7
|
-
data.tar.gz:
|
|
6
|
+
metadata.gz: a3e8300d12e447cf2dc450ee1e62949926e797327a8210b92bb7fea109860d5dd76a60fc123f190186c20eed38cb21be252984d912949109821afb7b98e753c1
|
|
7
|
+
data.tar.gz: 928f00055f0c0269c863169e08997c6501bc2b2f3fd4612eae934ffef4eed3361ef880f203f07250c65630a3991ed8eaa2cefa2243a2291a85a92ca83fc5bf35
|
data/.gitignore
CHANGED
data/Gemfile.lock
CHANGED
|
@@ -1,12 +1,13 @@
|
|
|
1
1
|
GIT
|
|
2
2
|
remote: git://github.com/argosity/lanes.git
|
|
3
|
-
revision:
|
|
3
|
+
revision: 208a0fafd5337b4299e2f123c97e8ddee6a19d32
|
|
4
4
|
branch: master
|
|
5
5
|
specs:
|
|
6
|
-
lanes (0.1.9)
|
|
6
|
+
lanes (0.1.9.5)
|
|
7
7
|
activerecord (~> 4.2)
|
|
8
8
|
bcrypt (~> 3.1)
|
|
9
9
|
closure-compiler (~> 1.1)
|
|
10
|
+
coffee-react (~> 3.0)
|
|
10
11
|
coffee-script (~> 2.3)
|
|
11
12
|
compass-import-once (~> 1.0)
|
|
12
13
|
execjs (~> 2.2)
|
|
@@ -35,22 +36,22 @@ GIT
|
|
|
35
36
|
PATH
|
|
36
37
|
remote: .
|
|
37
38
|
specs:
|
|
38
|
-
stockor (0.1.
|
|
39
|
+
stockor (0.1.9)
|
|
39
40
|
aasm (~> 4.1)
|
|
40
41
|
lanes
|
|
41
42
|
|
|
42
43
|
GEM
|
|
43
44
|
remote: https://rubygems.org/
|
|
44
45
|
specs:
|
|
45
|
-
aasm (4.
|
|
46
|
-
activemodel (4.2.
|
|
47
|
-
activesupport (= 4.2.
|
|
46
|
+
aasm (4.2.0)
|
|
47
|
+
activemodel (4.2.3)
|
|
48
|
+
activesupport (= 4.2.3)
|
|
48
49
|
builder (~> 3.1)
|
|
49
|
-
activerecord (4.2.
|
|
50
|
-
activemodel (= 4.2.
|
|
51
|
-
activesupport (= 4.2.
|
|
50
|
+
activerecord (4.2.3)
|
|
51
|
+
activemodel (= 4.2.3)
|
|
52
|
+
activesupport (= 4.2.3)
|
|
52
53
|
arel (~> 6.0)
|
|
53
|
-
activesupport (4.2.
|
|
54
|
+
activesupport (4.2.3)
|
|
54
55
|
i18n (~> 0.7)
|
|
55
56
|
json (~> 1.7, >= 1.7.7)
|
|
56
57
|
minitest (~> 5.1)
|
|
@@ -61,12 +62,12 @@ GEM
|
|
|
61
62
|
builder (3.2.2)
|
|
62
63
|
byebug (4.0.5)
|
|
63
64
|
columnize (= 0.9.0)
|
|
64
|
-
celluloid (0.16.0)
|
|
65
|
-
timers (~> 4.0.0)
|
|
66
65
|
childprocess (0.5.6)
|
|
67
66
|
ffi (~> 1.0, >= 1.0.11)
|
|
68
67
|
closure-compiler (1.1.11)
|
|
69
68
|
coderay (1.1.0)
|
|
69
|
+
coffee-react (3.0.1)
|
|
70
|
+
execjs
|
|
70
71
|
coffee-script (2.4.1)
|
|
71
72
|
coffee-script-source
|
|
72
73
|
execjs
|
|
@@ -75,16 +76,15 @@ GEM
|
|
|
75
76
|
compass-import-once (1.0.5)
|
|
76
77
|
sass (>= 3.2, < 3.5)
|
|
77
78
|
crass (1.0.2)
|
|
78
|
-
eventmachine (1.0.7)
|
|
79
79
|
execjs (2.5.2)
|
|
80
80
|
faker (1.4.3)
|
|
81
81
|
i18n (~> 0.5)
|
|
82
|
-
ffi (1.9.
|
|
82
|
+
ffi (1.9.10)
|
|
83
83
|
formatador (0.2.5)
|
|
84
84
|
growl (1.0.3)
|
|
85
|
-
guard (2.12.
|
|
85
|
+
guard (2.12.8)
|
|
86
86
|
formatador (>= 0.2.4)
|
|
87
|
-
listen (
|
|
87
|
+
listen (>= 2.7, <= 4.0)
|
|
88
88
|
lumberjack (~> 1.0)
|
|
89
89
|
nenv (~> 0.1)
|
|
90
90
|
notiffany (~> 0.0)
|
|
@@ -92,7 +92,7 @@ GEM
|
|
|
92
92
|
shellany (~> 0.0)
|
|
93
93
|
thor (>= 0.18.1)
|
|
94
94
|
guard-compat (1.2.1)
|
|
95
|
-
guard-jasmine (2.0.
|
|
95
|
+
guard-jasmine (2.0.6)
|
|
96
96
|
childprocess (~> 0.5)
|
|
97
97
|
guard (~> 2.8)
|
|
98
98
|
guard-compat (~> 1.2)
|
|
@@ -103,35 +103,32 @@ GEM
|
|
|
103
103
|
guard-minitest (2.4.4)
|
|
104
104
|
guard-compat (~> 1.2)
|
|
105
105
|
minitest (>= 3.0)
|
|
106
|
-
hashie (3.4.
|
|
106
|
+
hashie (3.4.2)
|
|
107
107
|
hike (1.2.3)
|
|
108
|
-
hitimes (1.2.2)
|
|
109
108
|
i18n (0.7.0)
|
|
110
|
-
jasmine (2.
|
|
111
|
-
jasmine-core (~> 2.
|
|
109
|
+
jasmine (2.3.0)
|
|
110
|
+
jasmine-core (~> 2.3)
|
|
112
111
|
phantomjs
|
|
113
112
|
rack (>= 1.2.1)
|
|
114
113
|
rake
|
|
115
|
-
jasmine-core (2.
|
|
116
|
-
json (1.8.
|
|
117
|
-
listen (
|
|
118
|
-
celluloid (~> 0.16.0)
|
|
114
|
+
jasmine-core (2.3.4)
|
|
115
|
+
json (1.8.3)
|
|
116
|
+
listen (3.0.1)
|
|
119
117
|
rb-fsevent (>= 0.9.3)
|
|
120
118
|
rb-inotify (>= 0.9)
|
|
121
119
|
lumberjack (1.0.9)
|
|
122
|
-
message_bus (1.0.
|
|
123
|
-
eventmachine
|
|
120
|
+
message_bus (1.0.14)
|
|
124
121
|
rack (>= 1.1.3)
|
|
125
122
|
redis
|
|
126
123
|
metaclass (0.0.4)
|
|
127
124
|
method_source (0.8.2)
|
|
128
125
|
mini_portile (0.6.2)
|
|
129
|
-
minitest (5.
|
|
126
|
+
minitest (5.7.0)
|
|
130
127
|
minitest-around (0.3.1)
|
|
131
128
|
minitest (~> 5.0)
|
|
132
129
|
mocha (1.1.0)
|
|
133
130
|
metaclass (~> 0.0.1)
|
|
134
|
-
multi_json (1.11.
|
|
131
|
+
multi_json (1.11.2)
|
|
135
132
|
nenv (0.2.0)
|
|
136
133
|
nokogiri (1.6.6.2)
|
|
137
134
|
mini_portile (~> 0.6.0)
|
|
@@ -140,8 +137,8 @@ GEM
|
|
|
140
137
|
notiffany (0.0.6)
|
|
141
138
|
nenv (~> 0.1)
|
|
142
139
|
shellany (~> 0.0)
|
|
143
|
-
oj (2.12.
|
|
144
|
-
pg (0.18.
|
|
140
|
+
oj (2.12.9)
|
|
141
|
+
pg (0.18.2)
|
|
145
142
|
phantomjs (1.9.8.0)
|
|
146
143
|
pry (0.10.1)
|
|
147
144
|
coderay (~> 1.1.0)
|
|
@@ -150,9 +147,9 @@ GEM
|
|
|
150
147
|
pry-byebug (3.1.0)
|
|
151
148
|
byebug (~> 4.0)
|
|
152
149
|
pry (~> 0.10)
|
|
153
|
-
puma (2.11.
|
|
150
|
+
puma (2.11.3)
|
|
154
151
|
rack (>= 1.1, < 2.0)
|
|
155
|
-
rack (1.6.
|
|
152
|
+
rack (1.6.4)
|
|
156
153
|
rack-protection (1.5.3)
|
|
157
154
|
rack
|
|
158
155
|
rack-test (0.6.3)
|
|
@@ -160,7 +157,7 @@ GEM
|
|
|
160
157
|
rack_csrf (2.5.0)
|
|
161
158
|
rack (>= 1.1.0)
|
|
162
159
|
rake (10.4.2)
|
|
163
|
-
rb-fsevent (0.9.
|
|
160
|
+
rb-fsevent (0.9.5)
|
|
164
161
|
rb-inotify (0.9.5)
|
|
165
162
|
ffi (>= 0.5.0)
|
|
166
163
|
redis (3.2.1)
|
|
@@ -169,25 +166,23 @@ GEM
|
|
|
169
166
|
crass (~> 1.0.1)
|
|
170
167
|
nokogiri (>= 1.4.4)
|
|
171
168
|
nokogumbo (= 1.2.0)
|
|
172
|
-
sass (3.4.
|
|
169
|
+
sass (3.4.15)
|
|
173
170
|
shellany (0.0.1)
|
|
174
171
|
sinatra (1.4.6)
|
|
175
172
|
rack (~> 1.4)
|
|
176
173
|
rack-protection (~> 1.4)
|
|
177
174
|
tilt (>= 1.3, < 3)
|
|
178
175
|
slop (3.6.0)
|
|
179
|
-
sprockets (2.12.
|
|
176
|
+
sprockets (2.12.4)
|
|
180
177
|
hike (~> 1.2)
|
|
181
178
|
multi_json (~> 1.0)
|
|
182
179
|
rack (~> 1.0)
|
|
183
180
|
tilt (~> 1.1, != 1.3.0)
|
|
184
|
-
sprockets-helpers (1.1
|
|
185
|
-
sprockets (
|
|
181
|
+
sprockets-helpers (1.2.1)
|
|
182
|
+
sprockets (>= 2.2)
|
|
186
183
|
thor (0.19.1)
|
|
187
184
|
thread_safe (0.3.5)
|
|
188
185
|
tilt (1.4.1)
|
|
189
|
-
timers (4.0.1)
|
|
190
|
-
hitimes
|
|
191
186
|
tzinfo (1.2.2)
|
|
192
187
|
thread_safe (~> 0.1)
|
|
193
188
|
yui-compressor (0.12.0)
|
|
@@ -206,3 +201,6 @@ DEPENDENCIES
|
|
|
206
201
|
puma
|
|
207
202
|
rake
|
|
208
203
|
stockor!
|
|
204
|
+
|
|
205
|
+
BUNDLED WITH
|
|
206
|
+
1.10.5
|
data/client/skr/Extension.coffee
CHANGED
|
@@ -2,14 +2,13 @@ class Skr.Extension extends Lanes.Extensions.Base
|
|
|
2
2
|
|
|
3
3
|
identifier: "skr"
|
|
4
4
|
|
|
5
|
-
# This method is called when the extension is registered
|
|
6
|
-
# Not all of Lanes will be available yet
|
|
7
|
-
onRegistered: ->
|
|
8
|
-
|
|
9
5
|
# Data that is provided by lib/skr/extension.rb's
|
|
10
6
|
# client_bootstrap_data method ends up here
|
|
11
|
-
setBootstrapData: (data)->
|
|
12
|
-
Skr.Models.GlAccount.initialize(
|
|
13
|
-
|
|
14
|
-
|
|
15
|
-
|
|
7
|
+
setBootstrapData: (data) ->
|
|
8
|
+
Skr.Models.GlAccount.initialize(
|
|
9
|
+
accounts: data.gl_accounts
|
|
10
|
+
default_ids: data.default_gl_account_ids,
|
|
11
|
+
)
|
|
12
|
+
|
|
13
|
+
rootComponent: (viewport) ->
|
|
14
|
+
Lanes.Workspace.Layout
|
|
@@ -0,0 +1,51 @@
|
|
|
1
|
+
class Skr.Components.Address extends Lanes.React.Component
|
|
2
|
+
|
|
3
|
+
propTypes:
|
|
4
|
+
model: Lanes.PropTypes.State.isRequired
|
|
5
|
+
|
|
6
|
+
renderTitle: ->
|
|
7
|
+
<BS.Row>
|
|
8
|
+
<BS.Col xs=12>
|
|
9
|
+
<h3 className="address-title">{@props.title}</h3>
|
|
10
|
+
</BS.Col>
|
|
11
|
+
</BS.Row>
|
|
12
|
+
|
|
13
|
+
render: ->
|
|
14
|
+
colProps = _.omit(@props, 'name')
|
|
15
|
+
colProps.className = _.classnames("address", @props.className)
|
|
16
|
+
|
|
17
|
+
<BS.Col {...colProps}>
|
|
18
|
+
{@renderTitle() if @props.title}
|
|
19
|
+
<BS.Row>
|
|
20
|
+
<BS.Col xs=12>
|
|
21
|
+
<LC.TextField name="name" model={@model} />
|
|
22
|
+
</BS.Col>
|
|
23
|
+
</BS.Row>
|
|
24
|
+
<BS.Row>
|
|
25
|
+
<BS.Col sm=6>
|
|
26
|
+
<LC.TextField name="phone" model={@model} />
|
|
27
|
+
</BS.Col>
|
|
28
|
+
<BS.Col sm=6>
|
|
29
|
+
<LC.TextField name="email" model={@model} />
|
|
30
|
+
</BS.Col>
|
|
31
|
+
</BS.Row>
|
|
32
|
+
<BS.Row>
|
|
33
|
+
<BS.Col md=6>
|
|
34
|
+
<LC.TextField name="line1" model={@model} />
|
|
35
|
+
</BS.Col>
|
|
36
|
+
<BS.Col md=6>
|
|
37
|
+
<LC.TextField name="line2" model={@model} />
|
|
38
|
+
</BS.Col>
|
|
39
|
+
</BS.Row>
|
|
40
|
+
<BS.Row>
|
|
41
|
+
<BS.Col md=7>
|
|
42
|
+
<LC.TextField name="city" model={@model} />
|
|
43
|
+
</BS.Col>
|
|
44
|
+
<BS.Col sm=8 md=3>
|
|
45
|
+
<LC.TextField name="state" model={@model} />
|
|
46
|
+
</BS.Col>
|
|
47
|
+
<BS.Col sm=4 md=2>
|
|
48
|
+
<LC.TextField name="postal_code" model={@model} />
|
|
49
|
+
</BS.Col>
|
|
50
|
+
</BS.Row>
|
|
51
|
+
</BS.Col>
|
data/client/skr/index.js
CHANGED
|
@@ -1,11 +1,8 @@
|
|
|
1
1
|
//=require ./models/Base
|
|
2
|
-
|
|
2
|
+
|
|
3
3
|
//=require_tree ./models/mixins
|
|
4
4
|
//=require_tree ./models
|
|
5
|
-
//=require_tree ./views
|
|
6
5
|
//=require_tree ./components
|
|
7
|
-
//=require ./screens/Base
|
|
8
|
-
//=require ./screens/mixins
|
|
9
6
|
//=require ./Extension
|
|
10
7
|
|
|
11
8
|
/*
|
|
@@ -3,7 +3,7 @@ class Skr.Models.Customer extends Skr.Models.Base
|
|
|
3
3
|
|
|
4
4
|
props:
|
|
5
5
|
id: {"type":"integer","required":true}
|
|
6
|
-
code: {"type":"
|
|
6
|
+
code: {"type":"code","required":true}
|
|
7
7
|
billing_address_id: {"type":"integer","required":true}
|
|
8
8
|
shipping_address_id: {"type":"integer","required":true}
|
|
9
9
|
terms_id: {"type":"integer","required":true}
|
|
@@ -1,20 +1,20 @@
|
|
|
1
1
|
class Skr.Models.GlAccount extends Skr.Models.Base
|
|
2
2
|
|
|
3
|
-
cacheDuration: [1,'day']
|
|
3
|
+
cacheDuration: [1, 'day']
|
|
4
4
|
|
|
5
5
|
props:
|
|
6
|
-
id: {"type":"integer","required":true}
|
|
7
|
-
number: {"type":"string","required":true}
|
|
8
|
-
name: {"type":"string","required":true}
|
|
9
|
-
is_active: {"type":"boolean","required":true,"default":
|
|
6
|
+
id: {"type":"integer", "required":true}
|
|
7
|
+
number: {"type":"string", "required":true}
|
|
8
|
+
name: {"type":"string", "required":true}
|
|
9
|
+
is_active: {"type":"boolean", "required":true, "default":true}
|
|
10
10
|
|
|
11
11
|
derived:
|
|
12
12
|
combined_name:
|
|
13
|
-
deps: ['number','name'], fn
|
|
14
|
-
"#{@number}: #{@name}"
|
|
13
|
+
deps: ['number', 'name'], fn: ->
|
|
14
|
+
if @isNew() then "" else "#{@number}: #{@name}"
|
|
15
15
|
|
|
16
16
|
|
|
17
|
-
@initialize: (data)->
|
|
18
|
-
this.default_ids = data.
|
|
19
|
-
ms=Lanes.Vendor.Moment.duration(this::cacheDuration...).asMilliseconds()
|
|
20
|
-
Lanes.Models.ServerCache.store(this::urlRoot(), data.
|
|
17
|
+
@initialize: (data) ->
|
|
18
|
+
this.default_ids = data.default_ids
|
|
19
|
+
ms = Lanes.Vendor.Moment.duration(this::cacheDuration...).asMilliseconds()
|
|
20
|
+
Lanes.Models.ServerCache.store(this::urlRoot(), data.accounts, ms)
|
|
@@ -1,6 +1,5 @@
|
|
|
1
1
|
class Skr.Models.SalesOrder extends Skr.Models.Base
|
|
2
2
|
|
|
3
|
-
|
|
4
3
|
props:
|
|
5
4
|
id: {"type":"integer","required":true}
|
|
6
5
|
visible_id: {"type":"integer","required":true}
|
|
@@ -14,7 +13,6 @@ class Skr.Models.SalesOrder extends Skr.Models.Base
|
|
|
14
13
|
is_revised: {"type":"boolean","required":true,"default":"false"}
|
|
15
14
|
hash_code: {"type":"string","required":true}
|
|
16
15
|
ship_partial: {"type":"boolean","required":true,"default":"false"}
|
|
17
|
-
is_complete: {"type":"boolean","required":true,"default":"false"}
|
|
18
16
|
po_num: "string"
|
|
19
17
|
notes: "string"
|
|
20
18
|
options: "any"
|
|
@@ -1,3 +1,9 @@
|
|
|
1
|
-
|
|
1
|
+
Skr.Screens.Base = {
|
|
2
2
|
|
|
3
|
-
|
|
3
|
+
# An extension point to modify the prototypes for screens
|
|
4
|
+
extend: (klass) ->
|
|
5
|
+
# Extend screen component with Lanes defaults,
|
|
6
|
+
# which will eventually call React.createClass
|
|
7
|
+
Lanes.React.Screen.extend(klass)
|
|
8
|
+
|
|
9
|
+
}
|
|
@@ -0,0 +1,58 @@
|
|
|
1
|
+
class Skr.Screens.CustomerMaint extends Lanes.React.Screen
|
|
2
|
+
|
|
3
|
+
dataObjects:
|
|
4
|
+
customer: ->
|
|
5
|
+
@props.customer || new Skr.Models.Customer
|
|
6
|
+
query: ->
|
|
7
|
+
new Lanes.Models.Query({
|
|
8
|
+
loadAssociations: ['billing_address', 'shipping_address']
|
|
9
|
+
modelClass: Skr.Models.Customer, fields: [
|
|
10
|
+
{id:'id', visible: false}
|
|
11
|
+
'code', 'name', 'notes',
|
|
12
|
+
{ id: 'open_balance', flex: 0.5, textAlign: 'center' }
|
|
13
|
+
]
|
|
14
|
+
})
|
|
15
|
+
|
|
16
|
+
getInitialState: ->
|
|
17
|
+
commands: new Lanes.Screens.Commands(this, modelName: 'customer')
|
|
18
|
+
|
|
19
|
+
modelForAccess: 'customer'
|
|
20
|
+
|
|
21
|
+
render: ->
|
|
22
|
+
<div className="customer-maint">
|
|
23
|
+
<LC.Toolbar commands={@state.commands} />
|
|
24
|
+
<LC.ErrorDisplay model={@customer} />
|
|
25
|
+
<BS.Row>
|
|
26
|
+
<LC.RecordFinder ref="finder" sm=4 autoFocus
|
|
27
|
+
model={@customer}
|
|
28
|
+
commands={@state.commands}
|
|
29
|
+
query={@query} />
|
|
30
|
+
<LC.TextField sm=8 name="name" model={@customer} />
|
|
31
|
+
</BS.Row>
|
|
32
|
+
<BS.Row>
|
|
33
|
+
<LC.TextArea sm=12
|
|
34
|
+
name="notes"
|
|
35
|
+
model={@customer} />
|
|
36
|
+
</BS.Row>
|
|
37
|
+
<BS.Row>
|
|
38
|
+
<LC.SelectField sm=6
|
|
39
|
+
label="Receivables Account"
|
|
40
|
+
name="gl_receivables_account"
|
|
41
|
+
labelField="combined_name"
|
|
42
|
+
model={@customer} />
|
|
43
|
+
<LC.SelectField sm=6
|
|
44
|
+
label="Payment Terms"
|
|
45
|
+
name="terms"
|
|
46
|
+
labelField="code"
|
|
47
|
+
model={@customer} />
|
|
48
|
+
</BS.Row>
|
|
49
|
+
<BS.Row>
|
|
50
|
+
<LC.FieldSet sm=12 title="Address">
|
|
51
|
+
<Skr.Components.Address lg=6 title="Billing"
|
|
52
|
+
model={@customer.billing_address} />
|
|
53
|
+
<Skr.Components.Address lg=6 title="Shipping"
|
|
54
|
+
model={@customer.shipping_address} />
|
|
55
|
+
</LC.FieldSet>
|
|
56
|
+
</BS.Row>
|
|
57
|
+
|
|
58
|
+
</div>
|
data/client/skr/styles.scss
CHANGED
|
@@ -1,4 +1,5 @@
|
|
|
1
1
|
/* Enter styles for your application in scss format here */
|
|
2
|
+
|
|
2
3
|
.header-top {
|
|
3
4
|
.logo {
|
|
4
5
|
display: inline-block;
|
|
@@ -9,3 +10,25 @@
|
|
|
9
10
|
background: url(asset_path('images/skr/logo-sm.png')) no-repeat;
|
|
10
11
|
}
|
|
11
12
|
}
|
|
13
|
+
|
|
14
|
+
|
|
15
|
+
.record-finder-dialog {
|
|
16
|
+
min-height: 250px;
|
|
17
|
+
.clause {
|
|
18
|
+
.dropdown-menu {
|
|
19
|
+
min-width: 300px;
|
|
20
|
+
padding: 0.5rem;
|
|
21
|
+
.row {
|
|
22
|
+
margin-bottom: 5px;
|
|
23
|
+
}
|
|
24
|
+
input[type=radio] { margin-right: 0.5rem; }
|
|
25
|
+
}
|
|
26
|
+
|
|
27
|
+
}
|
|
28
|
+
|
|
29
|
+
.grid-component {
|
|
30
|
+
margin-top: 10px;
|
|
31
|
+
}
|
|
32
|
+
}
|
|
33
|
+
|
|
34
|
+
@import "components/address/styles.scss";
|
data/coffeelint.json
ADDED
|
@@ -0,0 +1,49 @@
|
|
|
1
|
+
{
|
|
2
|
+
"coffeelint": {
|
|
3
|
+
"transforms": [
|
|
4
|
+
"coffee-react-transform"
|
|
5
|
+
]
|
|
6
|
+
},
|
|
7
|
+
"indentation": {
|
|
8
|
+
"level": "error",
|
|
9
|
+
"value": 4
|
|
10
|
+
},
|
|
11
|
+
"line_endings": {
|
|
12
|
+
"value": "unix",
|
|
13
|
+
"level": "error"
|
|
14
|
+
},
|
|
15
|
+
"arrow_spacing": {
|
|
16
|
+
"level": "error"
|
|
17
|
+
},
|
|
18
|
+
"no_empty_functions": {
|
|
19
|
+
"level": "error"
|
|
20
|
+
},
|
|
21
|
+
"no_empty_param_list": {
|
|
22
|
+
"level": "error"
|
|
23
|
+
},
|
|
24
|
+
"no_interpolation_in_single_quotes": {
|
|
25
|
+
"level": "error"
|
|
26
|
+
},
|
|
27
|
+
"no_throwing_strings": {
|
|
28
|
+
"level": "error"
|
|
29
|
+
},
|
|
30
|
+
"no_unnecessary_double_quotes": {
|
|
31
|
+
"level": "ignore"
|
|
32
|
+
},
|
|
33
|
+
"no_unnecessary_fat_arrows": {
|
|
34
|
+
"level": "error"
|
|
35
|
+
},
|
|
36
|
+
"prefer_english_operator": {
|
|
37
|
+
"level": "ignore"
|
|
38
|
+
},
|
|
39
|
+
"space_operators": {
|
|
40
|
+
"level": "error"
|
|
41
|
+
},
|
|
42
|
+
"spacing_after_comma": {
|
|
43
|
+
"level": "error"
|
|
44
|
+
},
|
|
45
|
+
"max_line_length": {
|
|
46
|
+
"value": 135,
|
|
47
|
+
"level": "error"
|
|
48
|
+
}
|
|
49
|
+
}
|
data/config/screens.rb
CHANGED
|
@@ -1,52 +1,49 @@
|
|
|
1
1
|
Lanes::Screen.define_group 'maint' do | group |
|
|
2
2
|
group.title = "Maintenance"
|
|
3
3
|
group.description = "Maintain records"
|
|
4
|
-
group.icon = "
|
|
4
|
+
group.icon = "pencil-square"
|
|
5
5
|
end
|
|
6
|
-
|
|
7
6
|
Lanes::Screen.define_group 'customer' do | group |
|
|
8
7
|
group.title = "Customer"
|
|
9
|
-
group.description = "
|
|
10
|
-
group.icon = "
|
|
8
|
+
group.description = "Customer records"
|
|
9
|
+
group.icon = "heart"
|
|
11
10
|
end
|
|
12
|
-
|
|
13
|
-
|
|
14
|
-
|
|
15
|
-
|
|
16
|
-
|
|
17
|
-
|
|
18
|
-
|
|
19
|
-
|
|
20
|
-
|
|
21
|
-
|
|
22
|
-
|
|
23
|
-
|
|
24
|
-
|
|
25
|
-
screen.
|
|
26
|
-
screen.
|
|
27
|
-
screen.
|
|
28
|
-
screen.
|
|
29
|
-
screen.
|
|
30
|
-
|
|
31
|
-
|
|
32
|
-
|
|
33
|
-
|
|
34
|
-
|
|
35
|
-
screen.
|
|
36
|
-
screen.
|
|
37
|
-
screen.
|
|
38
|
-
screen.
|
|
39
|
-
|
|
40
|
-
|
|
41
|
-
screen.
|
|
42
|
-
|
|
43
|
-
|
|
44
|
-
screen.
|
|
45
|
-
screen.
|
|
46
|
-
screen.
|
|
47
|
-
screen.
|
|
48
|
-
screen.
|
|
49
|
-
|
|
50
|
-
screen.js = "skr/screens/sales-order.js"
|
|
51
|
-
screen.css = "skr/screens/sales-order.css"
|
|
11
|
+
Lanes::Screen.for_extension 'Skr' do | screens |
|
|
12
|
+
screens.define "customer-maint" do | screen |
|
|
13
|
+
screen.title = "Customer Maintenance"
|
|
14
|
+
screen.icon = "heartbeat"
|
|
15
|
+
screen.group_id = "maint"
|
|
16
|
+
screen.model_class = "Customer"
|
|
17
|
+
screen.view_class = "CustomerMaint"
|
|
18
|
+
screen.js = 'customer-maint.js'
|
|
19
|
+
screen.css = 'customer-maint.css'
|
|
20
|
+
end
|
|
21
|
+
# screens.define "sku-maint" do | screen |
|
|
22
|
+
# screen.title = "SKU Maintenance"
|
|
23
|
+
# screen.icon = "archive"
|
|
24
|
+
# screen.group_id = "maint"
|
|
25
|
+
# screen.model_class = "Sku"
|
|
26
|
+
# screen.view_class = "SkuMaint"
|
|
27
|
+
# screen.js = "sku-maint.js"
|
|
28
|
+
# screen.css = "sku-maint.css"
|
|
29
|
+
# end
|
|
30
|
+
# screens.define "vendor-maint" do | screen |
|
|
31
|
+
# screen.title = "Vendor Maintenance"
|
|
32
|
+
# screen.icon = "truck"
|
|
33
|
+
# screen.group_id = "maint"
|
|
34
|
+
# screen.model_class = "Vendor"
|
|
35
|
+
# screen.view_class = "Skr.Screens.VendorMaint"
|
|
36
|
+
# screen.js = "vendor-maint.js"
|
|
37
|
+
# screen.css = "vendor-maint.css"
|
|
38
|
+
# end
|
|
39
|
+
# screens.define "sales-order" do | screen |
|
|
40
|
+
# screen.title = "Sales Order"
|
|
41
|
+
# screen.description = ""
|
|
42
|
+
# screen.icon = "shopping-cart"
|
|
43
|
+
# screen.group_id = "customer"
|
|
44
|
+
# screen.model_class = "SalesOrder"
|
|
45
|
+
# screen.view_class = "Skr.Screens.SalesOrder"
|
|
46
|
+
# screen.js = "sales-order.js"
|
|
47
|
+
# screen.css = "sales-order.css"
|
|
48
|
+
# end
|
|
52
49
|
end
|
|
@@ -5,9 +5,9 @@ class CreateSkrInventoryAdjustments < ActiveRecord::Migration
|
|
|
5
5
|
|
|
6
6
|
create_skr_table "inventory_adjustments" do |t|
|
|
7
7
|
t.skr_visible_id
|
|
8
|
+
t.skr_state
|
|
8
9
|
t.skr_reference :location, null: false, single: true
|
|
9
10
|
t.skr_reference :reason, null: false, to_table: 'ia_reasons'
|
|
10
|
-
t.string "state", null: false
|
|
11
11
|
t.text "description", null: false
|
|
12
12
|
t.skr_track_modifications
|
|
13
13
|
end
|
|
@@ -5,17 +5,16 @@ class CreateSkrSalesOrders < ActiveRecord::Migration
|
|
|
5
5
|
|
|
6
6
|
create_skr_table "sales_orders" do |t|
|
|
7
7
|
t.skr_visible_id
|
|
8
|
+
t.skr_state
|
|
8
9
|
t.skr_reference :customer, single: true
|
|
9
10
|
t.skr_reference :location, single: true
|
|
10
11
|
t.skr_reference :shipping_address, to_table: 'addresses'
|
|
11
12
|
t.skr_reference :billing_address, to_table: 'addresses'
|
|
12
13
|
t.skr_reference :terms, to_table: 'payment_terms'
|
|
13
14
|
t.date "order_date", null: false
|
|
14
|
-
t.integer "state", null: false, limit: 2
|
|
15
15
|
t.boolean "is_revised", null: false, default: false
|
|
16
16
|
t.string "hash_code", null: false
|
|
17
17
|
t.boolean "ship_partial", null: false, default: false
|
|
18
|
-
t.boolean "is_complete", null: false, default: false
|
|
19
18
|
t.string "po_num"
|
|
20
19
|
t.text "notes"
|
|
21
20
|
t.hstore "options", default: {}
|
|
@@ -5,11 +5,11 @@ class CreateSkrPurchaseOrders < ActiveRecord::Migration
|
|
|
5
5
|
|
|
6
6
|
create_skr_table "purchase_orders" do |t|
|
|
7
7
|
t.skr_visible_id
|
|
8
|
+
t.skr_state
|
|
8
9
|
t.skr_reference :vendor, single: true
|
|
9
10
|
t.skr_reference :location, single: true
|
|
10
11
|
t.skr_reference :ship_addr, to_table: 'addresses'
|
|
11
12
|
t.skr_reference :terms, to_table: 'payment_terms'
|
|
12
|
-
t.integer "state", null: false, limit: 2
|
|
13
13
|
t.boolean "is_revised", null: false, default: false
|
|
14
14
|
t.date "order_date", null: false
|
|
15
15
|
t.datetime "receiving_completed_at"
|
|
@@ -5,6 +5,7 @@ class CreateSkrInvoices < ActiveRecord::Migration
|
|
|
5
5
|
def change
|
|
6
6
|
create_skr_table "invoices" do |t|
|
|
7
7
|
t.skr_visible_id
|
|
8
|
+
t.skr_state
|
|
8
9
|
t.skr_reference :terms, to_table: 'payment_terms'
|
|
9
10
|
t.skr_reference :customer, single: true
|
|
10
11
|
t.skr_reference :location, single: true
|
|
@@ -13,7 +14,6 @@ class CreateSkrInvoices < ActiveRecord::Migration
|
|
|
13
14
|
t.skr_reference :shipping_address, to_table: 'addresses'
|
|
14
15
|
t.skr_reference :billing_address, to_table: 'addresses'
|
|
15
16
|
t.skr_currency :amount_paid, null: false, default: 0.0
|
|
16
|
-
t.string "state", null: false
|
|
17
17
|
t.string "hash_code", null: false
|
|
18
18
|
t.date "invoice_date", null: false
|
|
19
19
|
t.string "po_num"
|
|
@@ -21,7 +21,7 @@ class CreateSkrSkuQtyDetailsView < ActiveRecord::Migration
|
|
|
21
21
|
sum( ( sol.qty - sol.qty_canceled ) * sol.uom_size ) as qty
|
|
22
22
|
from #{skr_prefix}so_lines sol
|
|
23
23
|
join #{skr_prefix}sales_orders so on so.id = sol.sales_order_id
|
|
24
|
-
and so.state not in (5,
|
|
24
|
+
and so.state not in (5,10) -- complete, canceled
|
|
25
25
|
join #{skr_prefix}sku_locs sl on sl.id = sol.sku_loc_id
|
|
26
26
|
join #{skr_prefix}skus s on s.id = sl.sku_id
|
|
27
27
|
group by s.id
|
|
@@ -33,7 +33,7 @@ class CreateSkrSkuQtyDetailsView < ActiveRecord::Migration
|
|
|
33
33
|
sum( ( pol.qty - pol.qty_canceled ) * pol.uom_size ) as qty
|
|
34
34
|
from #{skr_prefix}po_lines pol
|
|
35
35
|
join #{skr_prefix}purchase_orders po on po.id = pol.purchase_order_id
|
|
36
|
-
and po.state not in (5,
|
|
36
|
+
and po.state not in (5,15) -- received, canceled
|
|
37
37
|
join #{skr_prefix}sku_locs sl on sl.id = pol.sku_loc_id
|
|
38
38
|
join #{skr_prefix}skus s on s.id = sl.sku_id
|
|
39
39
|
group by s.id
|
|
@@ -5,16 +5,12 @@ class CreateSkrVouchers < ActiveRecord::Migration
|
|
|
5
5
|
|
|
6
6
|
create_skr_table "vouchers" do |t|
|
|
7
7
|
t.skr_visible_id
|
|
8
|
-
|
|
8
|
+
t.skr_state
|
|
9
9
|
t.skr_reference :vendor, single: true, null: false
|
|
10
10
|
t.skr_reference :purchase_order, single: true, null: true
|
|
11
|
-
|
|
12
11
|
t.skr_reference :terms, to_table: 'payment_terms'
|
|
13
|
-
|
|
14
|
-
t.string "state", null: false
|
|
12
|
+
t.date "confirmation_date", null: true # starts out as non-confirmed
|
|
15
13
|
t.string "refno"
|
|
16
|
-
|
|
17
|
-
t.date "confirmation_date", null: true # starts out as non-confirmed
|
|
18
14
|
t.skr_track_modifications
|
|
19
15
|
end
|
|
20
16
|
|
data/db/schema.sql
CHANGED
|
@@ -530,7 +530,6 @@ CREATE TABLE skr_sales_orders (
|
|
|
530
530
|
is_revised boolean DEFAULT false NOT NULL,
|
|
531
531
|
hash_code character varying NOT NULL,
|
|
532
532
|
ship_partial boolean DEFAULT false NOT NULL,
|
|
533
|
-
is_complete boolean DEFAULT false NOT NULL,
|
|
534
533
|
po_num character varying,
|
|
535
534
|
notes text,
|
|
536
535
|
options hstore DEFAULT ''::hstore,
|
|
@@ -1499,6 +1498,39 @@ CREATE SEQUENCE skr_vouchers_id_seq
|
|
|
1499
1498
|
ALTER SEQUENCE skr_vouchers_id_seq OWNED BY skr_vouchers.id;
|
|
1500
1499
|
|
|
1501
1500
|
|
|
1501
|
+
--
|
|
1502
|
+
-- Name: testers; Type: TABLE; Schema: public; Owner: -; Tablespace:
|
|
1503
|
+
--
|
|
1504
|
+
|
|
1505
|
+
CREATE TABLE testers (
|
|
1506
|
+
id integer NOT NULL,
|
|
1507
|
+
name character varying,
|
|
1508
|
+
email character varying,
|
|
1509
|
+
visits text[] DEFAULT '{}'::text[],
|
|
1510
|
+
created_at timestamp without time zone NOT NULL,
|
|
1511
|
+
updated_at timestamp without time zone NOT NULL
|
|
1512
|
+
);
|
|
1513
|
+
|
|
1514
|
+
|
|
1515
|
+
--
|
|
1516
|
+
-- Name: testers_id_seq; Type: SEQUENCE; Schema: public; Owner: -
|
|
1517
|
+
--
|
|
1518
|
+
|
|
1519
|
+
CREATE SEQUENCE testers_id_seq
|
|
1520
|
+
START WITH 1
|
|
1521
|
+
INCREMENT BY 1
|
|
1522
|
+
NO MINVALUE
|
|
1523
|
+
NO MAXVALUE
|
|
1524
|
+
CACHE 1;
|
|
1525
|
+
|
|
1526
|
+
|
|
1527
|
+
--
|
|
1528
|
+
-- Name: testers_id_seq; Type: SEQUENCE OWNED BY; Schema: public; Owner: -
|
|
1529
|
+
--
|
|
1530
|
+
|
|
1531
|
+
ALTER SEQUENCE testers_id_seq OWNED BY testers.id;
|
|
1532
|
+
|
|
1533
|
+
|
|
1502
1534
|
--
|
|
1503
1535
|
-- Name: id; Type: DEFAULT; Schema: public; Owner: -
|
|
1504
1536
|
--
|
|
@@ -1716,6 +1748,13 @@ ALTER TABLE ONLY skr_vo_lines ALTER COLUMN id SET DEFAULT nextval('skr_vo_lines_
|
|
|
1716
1748
|
ALTER TABLE ONLY skr_vouchers ALTER COLUMN id SET DEFAULT nextval('skr_vouchers_id_seq'::regclass);
|
|
1717
1749
|
|
|
1718
1750
|
|
|
1751
|
+
--
|
|
1752
|
+
-- Name: id; Type: DEFAULT; Schema: public; Owner: -
|
|
1753
|
+
--
|
|
1754
|
+
|
|
1755
|
+
ALTER TABLE ONLY testers ALTER COLUMN id SET DEFAULT nextval('testers_id_seq'::regclass);
|
|
1756
|
+
|
|
1757
|
+
|
|
1719
1758
|
--
|
|
1720
1759
|
-- Name: lanes_users_pkey; Type: CONSTRAINT; Schema: public; Owner: -; Tablespace:
|
|
1721
1760
|
--
|
|
@@ -1972,6 +2011,14 @@ ALTER TABLE ONLY skr_vouchers
|
|
|
1972
2011
|
ADD CONSTRAINT skr_vouchers_pkey PRIMARY KEY (id);
|
|
1973
2012
|
|
|
1974
2013
|
|
|
2014
|
+
--
|
|
2015
|
+
-- Name: testers_pkey; Type: CONSTRAINT; Schema: public; Owner: -; Tablespace:
|
|
2016
|
+
--
|
|
2017
|
+
|
|
2018
|
+
ALTER TABLE ONLY testers
|
|
2019
|
+
ADD CONSTRAINT testers_pkey PRIMARY KEY (id);
|
|
2020
|
+
|
|
2021
|
+
|
|
1975
2022
|
--
|
|
1976
2023
|
-- Name: index_lanes_users_on_role_names; Type: INDEX; Schema: public; Owner: -; Tablespace:
|
|
1977
2024
|
--
|
|
@@ -2660,3 +2707,5 @@ INSERT INTO schema_migrations (version) VALUES ('20140422024010');
|
|
|
2660
2707
|
|
|
2661
2708
|
INSERT INTO schema_migrations (version) VALUES ('20140615031600');
|
|
2662
2709
|
|
|
2710
|
+
INSERT INTO schema_migrations (version) VALUES ('20150220015108');
|
|
2711
|
+
|
data/db/seed.rb
CHANGED
|
@@ -7,7 +7,7 @@ module Skr
|
|
|
7
7
|
user = Lanes::User.where(login: 'admin').first
|
|
8
8
|
if user.nil?
|
|
9
9
|
user = Lanes::User.create!(name: "Admin", email: "admin@test.com",
|
|
10
|
-
password: '
|
|
10
|
+
password: 'password', password_confirmation: 'password',
|
|
11
11
|
login: 'admin', role_names: ['administrator'])
|
|
12
12
|
|
|
13
13
|
end
|
data/lib/skr/access_roles.rb
CHANGED
|
@@ -19,8 +19,9 @@ module Lanes::Access
|
|
|
19
19
|
Skr::PaymentTerm,
|
|
20
20
|
Skr::Sku,
|
|
21
21
|
Skr::SalesOrder
|
|
22
|
-
lock_writes Skr::
|
|
23
|
-
|
|
22
|
+
lock_writes Skr::Customer, :terms
|
|
23
|
+
lock Skr::Sku, :gl_asset_account
|
|
24
|
+
lock Skr::Customer, :gl_receivables_account
|
|
24
25
|
end
|
|
25
26
|
|
|
26
27
|
|
data/lib/skr/extension.rb
CHANGED
|
@@ -5,9 +5,10 @@ module Skr
|
|
|
5
5
|
class Extension < Lanes::Extensions::Definition
|
|
6
6
|
|
|
7
7
|
identifier "skr"
|
|
8
|
-
|
|
8
|
+
|
|
9
9
|
root_path Pathname.new(__FILE__).dirname.join("..","..").expand_path
|
|
10
|
-
|
|
10
|
+
|
|
11
|
+
components 'record-finder', 'select-field'
|
|
11
12
|
|
|
12
13
|
def client_bootstrap_data(view)
|
|
13
14
|
gl_accounts = Skr::GlAccount.all.as_json
|
data/lib/skr/models/invoice.rb
CHANGED
|
@@ -51,13 +51,17 @@ module Skr
|
|
|
51
51
|
}
|
|
52
52
|
|
|
53
53
|
enum state: {
|
|
54
|
-
open:
|
|
55
|
-
received:
|
|
54
|
+
open: 0,
|
|
55
|
+
received: 5,
|
|
56
|
+
paid: 10,
|
|
57
|
+
canceled: 15
|
|
56
58
|
}
|
|
57
59
|
|
|
58
60
|
state_machine do
|
|
59
61
|
state :open, initial: true
|
|
60
62
|
state :received
|
|
63
|
+
state :paid
|
|
64
|
+
state :canceled
|
|
61
65
|
|
|
62
66
|
event :mark_received do
|
|
63
67
|
transitions from: :open, to: :received
|
data/lib/skr/models/voucher.rb
CHANGED
|
@@ -36,6 +36,12 @@ module Skr
|
|
|
36
36
|
where(['vouchers.state <> ? and payment_lines.id is null', 'pending']).includes(:payment_line)
|
|
37
37
|
}
|
|
38
38
|
|
|
39
|
+
enum state: {
|
|
40
|
+
pending: 0,
|
|
41
|
+
confirmed: 5,
|
|
42
|
+
paid: 10
|
|
43
|
+
}
|
|
44
|
+
|
|
39
45
|
state_machine do
|
|
40
46
|
state :pending, initial: true
|
|
41
47
|
state :confirmed
|
data/lib/skr/version.rb
CHANGED
|
@@ -3,24 +3,18 @@ describe "Skr.Models.Customer", ->
|
|
|
3
3
|
beforeEach ->
|
|
4
4
|
Lanes.Test.ModelSaver.setUser('admin')
|
|
5
5
|
|
|
6
|
-
|
|
6
|
+
xit "sends failure messages when code isn't set", (done) ->
|
|
7
7
|
model = new Skr.Models.Customer()
|
|
8
|
-
|
|
9
|
-
|
|
10
|
-
|
|
11
|
-
it "sends failure messages when code isn't set", (done)->
|
|
12
|
-
model = new Skr.Models.Customer()
|
|
13
|
-
Lanes.Test.ModelSaver.perform(model, done).then (save)->
|
|
14
|
-
expect(save.error).toHaveBeenCalled()
|
|
8
|
+
Lanes.Test.ModelSaver.perform(model, done).then (save) ->
|
|
15
9
|
expect(model.errors?.code).toContain("blank")
|
|
16
10
|
|
|
17
|
-
it "saves when fields are set", (done)->
|
|
11
|
+
it "saves when fields are set", (done) ->
|
|
18
12
|
model = new Skr.Models.Customer(
|
|
19
13
|
code: "SPECTEST", name: "A Spec Test Customer"
|
|
20
|
-
|
|
14
|
+
terms: {code: 'SPECTESTER'}
|
|
21
15
|
billing_address: { name: "Billing Address" }
|
|
22
16
|
shipping_address: { name: "Shipping Address" }
|
|
23
17
|
)
|
|
24
|
-
|
|
25
|
-
|
|
18
|
+
|
|
19
|
+
Lanes.Test.ModelSaver.perform(model, done).then (save) ->
|
|
26
20
|
expect(model.errors).toBeNull()
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
describe "Skr.Models.SalesOrder", ->
|
|
2
2
|
|
|
3
|
-
|
|
3
|
+
xit "must have a customer to save", (done)->
|
|
4
4
|
model = new Skr.Models.SalesOrder()
|
|
5
5
|
Lanes.Test.ModelSaver.perform(model, done).then (save)->
|
|
6
6
|
expect(save.error).toHaveBeenCalled()
|
metadata
CHANGED
|
@@ -1,14 +1,14 @@
|
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
|
2
2
|
name: stockor
|
|
3
3
|
version: !ruby/object:Gem::Version
|
|
4
|
-
version: 0.1.
|
|
4
|
+
version: 0.1.9
|
|
5
5
|
platform: ruby
|
|
6
6
|
authors:
|
|
7
7
|
- Nathan Stitt
|
|
8
8
|
autorequire:
|
|
9
9
|
bindir: bin
|
|
10
10
|
cert_chain: []
|
|
11
|
-
date: 2015-
|
|
11
|
+
date: 2015-07-07 00:00:00.000000000 Z
|
|
12
12
|
dependencies:
|
|
13
13
|
- !ruby/object:Gem::Dependency
|
|
14
14
|
name: aasm
|
|
@@ -141,8 +141,9 @@ files:
|
|
|
141
141
|
- client/images/skr/logo-sm.png
|
|
142
142
|
- client/skr/Extension.coffee
|
|
143
143
|
- client/skr/components/.gitkeep
|
|
144
|
-
- client/skr/components/address/Address.
|
|
144
|
+
- client/skr/components/address/Address.cjsx
|
|
145
145
|
- client/skr/components/address/address.html
|
|
146
|
+
- client/skr/components/address/styles.scss
|
|
146
147
|
- client/skr/index.js
|
|
147
148
|
- client/skr/models/Address.coffee
|
|
148
149
|
- client/skr/models/Base.coffee
|
|
@@ -182,7 +183,7 @@ files:
|
|
|
182
183
|
- client/skr/screens/base/index.js
|
|
183
184
|
- client/skr/screens/base/index.scss
|
|
184
185
|
- client/skr/screens/base/layout.html
|
|
185
|
-
- client/skr/screens/customer-maint/CustomerMaint.
|
|
186
|
+
- client/skr/screens/customer-maint/CustomerMaint.cjsx
|
|
186
187
|
- client/skr/screens/customer-maint/index.js
|
|
187
188
|
- client/skr/screens/customer-maint/index.scss
|
|
188
189
|
- client/skr/screens/customer-maint/layout.html
|
|
@@ -202,6 +203,7 @@ files:
|
|
|
202
203
|
- client/skr/styles.scss
|
|
203
204
|
- client/skr/views/.gitkeep
|
|
204
205
|
- client/skr/views/Base.coffee
|
|
206
|
+
- coffeelint.json
|
|
205
207
|
- config.ru
|
|
206
208
|
- config/database.yml
|
|
207
209
|
- config/lanes.rb
|
|
@@ -424,7 +426,7 @@ required_rubygems_version: !ruby/object:Gem::Requirement
|
|
|
424
426
|
version: '0'
|
|
425
427
|
requirements: []
|
|
426
428
|
rubyforge_project:
|
|
427
|
-
rubygems_version: 2.4.
|
|
429
|
+
rubygems_version: 2.4.8
|
|
428
430
|
signing_key:
|
|
429
431
|
specification_version: 4
|
|
430
432
|
summary: Stockor is a complete ERP system
|
|
@@ -1,20 +0,0 @@
|
|
|
1
|
-
class Skr.Components.Address extends Lanes.Components.Base
|
|
2
|
-
|
|
3
|
-
|
|
4
|
-
writeTemplateName: -> 'address'
|
|
5
|
-
|
|
6
|
-
constructor: (options={})->
|
|
7
|
-
super
|
|
8
|
-
this.access = 'write'
|
|
9
|
-
if @copyFrom = options.copyFrom
|
|
10
|
-
this.bindCopyFrom()
|
|
11
|
-
this.listenTo(this.copyFrom,'change:model', @bindCopyFrom )
|
|
12
|
-
|
|
13
|
-
bindCopyFrom: ->
|
|
14
|
-
old = this.copyFrom.changedAttributes()['model']
|
|
15
|
-
this.stopListening( old, 'change', @applyChange ) if old
|
|
16
|
-
this.listenTo(this.copyFrom.model,'change', @applyChange )
|
|
17
|
-
|
|
18
|
-
applyChange: (model,value,field)->
|
|
19
|
-
for name,value of model.changedAttributes()
|
|
20
|
-
this.model.set(name,value) if this.model.get(name) == model.previous(name)
|
|
@@ -1,28 +0,0 @@
|
|
|
1
|
-
class Skr.Screens.CustomerMaint extends Skr.Screens.Base
|
|
2
|
-
|
|
3
|
-
mixins:[
|
|
4
|
-
Lanes.Screens.Mixins.Editing
|
|
5
|
-
]
|
|
6
|
-
|
|
7
|
-
useFormBindings: true
|
|
8
|
-
|
|
9
|
-
subviews:
|
|
10
|
-
terms:
|
|
11
|
-
component: 'SelectField'
|
|
12
|
-
model: 'model'
|
|
13
|
-
options: { association: 'terms', mappings: { title: 'code' } }
|
|
14
|
-
billaddr:
|
|
15
|
-
component: 'Address'
|
|
16
|
-
model: 'model.billing_address'
|
|
17
|
-
options: { field_name: 'billing_address_id' }
|
|
18
|
-
shipaddr:
|
|
19
|
-
component: 'Address'
|
|
20
|
-
model: 'model.shipping_address'
|
|
21
|
-
options: ->{ copyFrom: this.billaddr, field_name: 'shipping_address_id' }
|
|
22
|
-
|
|
23
|
-
finderOptions: ->
|
|
24
|
-
modelClass: Skr.Models.Customer
|
|
25
|
-
title: 'Find Customer',
|
|
26
|
-
invalid_chars: Skr.Models.Mixins.CodeField.invalidChars
|
|
27
|
-
withAssociations: ['billing_address', 'shipping_address', 'terms']
|
|
28
|
-
fields: [ 'code', 'name', 'notes', 'credit_limit' ]
|