dorsale 3.9.0 → 3.9.1

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.
Files changed (33) hide show
  1. checksums.yaml +4 -4
  2. data/CHANGELOG.md +4 -0
  3. data/README.md +1 -1
  4. data/app/controllers/dorsale/flyboy/tasks_controller.rb +7 -44
  5. data/app/filters/dorsale/flyboy/small_data/filter_for_tasks.rb +3 -2
  6. data/app/helpers/dorsale/flyboy/application_helper.rb +13 -1
  7. data/app/models/dorsale/flyboy/task.rb +5 -0
  8. data/app/services/dorsale/billing_machine/quotation/to_invoice.rb +1 -1
  9. data/app/sorters/dorsale/flyboy/tasks_sorter.rb +44 -0
  10. data/app/views/dorsale/flyboy/_filters.html.slim +11 -3
  11. data/app/views/dorsale/flyboy/tasks/_context.html.slim +2 -1
  12. data/app/views/dorsale/flyboy/tasks/_filters.html.slim +10 -0
  13. data/app/views/dorsale/flyboy/tasks/_form.html.slim +3 -2
  14. data/app/views/dorsale/flyboy/tasks/_list.html.slim +6 -0
  15. data/app/views/dorsale/flyboy/tasks/_tasks_for_taskable.html.slim +1 -1
  16. data/app/views/dorsale/flyboy/tasks/index.html.slim +1 -1
  17. data/config/locales/dorsale.en.yml +0 -1
  18. data/config/locales/dorsale.fr.yml +0 -1
  19. data/config/locales/flyboy.en.yml +1 -0
  20. data/config/locales/flyboy.fr.yml +1 -0
  21. data/features/support/env.rb +3 -0
  22. data/lib/dorsale/version.rb +1 -1
  23. data/spec/controllers/dorsale/customer_vault/people_controller_spec.rb +2 -2
  24. data/spec/controllers/dorsale/flyboy/tasks_controller_spec.rb +21 -0
  25. data/spec/routing/dorsale/alexandrie/attachments_routing_spec.rb +5 -5
  26. data/spec/routing/dorsale/billing_machine/invoices_routing_spec.rb +11 -11
  27. data/spec/routing/dorsale/billing_machine/quotations_routing_spec.rb +9 -9
  28. data/spec/routing/dorsale/customer_vault/activity_types_routing_spec.rb +5 -5
  29. data/spec/routing/dorsale/customer_vault/events_routing_spec.rb +1 -1
  30. data/spec/routing/dorsale/customer_vault/origins_routing_spec.rb +5 -5
  31. data/spec/routing/dorsale/customer_vault/people_routing_spec.rb +20 -20
  32. data/spec/routing/dorsale/expense_gun/expenses_routing_spec.rb +11 -11
  33. metadata +97 -95
checksums.yaml CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA1:
3
- metadata.gz: 9f957740f5e197d1396130300fa94904f32e3571
4
- data.tar.gz: 1a1210313bd18d1bae5e90c5a057bd4db71fe876
3
+ metadata.gz: 76ebbb416c39796db8712d68bb5952b6a9805904
4
+ data.tar.gz: e2a2fa91cab07ed102a24bdb0fc9240e1a940a92
5
5
  SHA512:
6
- metadata.gz: 3bfb5ef6465100808adb9fdb9b88d26475d53ad63a50f607ccd3b82d8ca04d6bd3e9e11f4a4ba1f8c29ce86e3d288934cda1510403b43f716d7773836365348f
7
- data.tar.gz: 4a0afd7c630a26b280a4b555c0e48c8e70da325ad2f02b088e7507220e5c1f3c7c3e82160bd53301ca16048f4f2aaecadcf083024be39ce632d9b3e2a490b0f2
6
+ metadata.gz: bd88080f00eaa88ee7e464d60e6377359e88af977807e9f616679d620ec38b35ae0c7b4034dc64cafb93d8fe726e611c737bff2c085de7363e4774542a278c9b
7
+ data.tar.gz: 416f512d565db0c0d0a7878006b822fee869acc2ea4b7aa9df05a377102eb86e4a6ccd1d3b2cb52d3b76adad3114a696753598442a6ec6ade2b733e247e05cf1
@@ -2,6 +2,10 @@
2
2
 
3
3
  ## Next version
4
4
 
5
+ ## 3.9.1
6
+
7
+ - Add tags to tasks
8
+
5
9
  ## 3.9.0
6
10
 
7
11
  - Remove BM id cards
data/README.md CHANGED
@@ -17,7 +17,7 @@ go to http://localhost:3000/
17
17
 
18
18
  ## Online demo
19
19
 
20
- https://dorsale-dummy.herokuapp.com
20
+ http://dorsale-dummy.agilidee.com/
21
21
 
22
22
  ## Requirements
23
23
  Hosting application shall define a global current_user method providing the current logged user.
@@ -11,34 +11,20 @@ class Dorsale::Flyboy::TasksController < ::Dorsale::Flyboy::ApplicationControlle
11
11
  :copy,
12
12
  ]
13
13
 
14
- before_action :set_owners, only: [
15
- :new,
16
- :create,
17
- :edit,
18
- :update,
19
- :copy,
20
- ]
21
-
22
14
  def index
23
15
  authorize model, :list?
24
16
 
25
- @tasks ||= scope.all.preload(:taskable)
26
-
27
- @order ||= order_from_params
28
-
17
+ @tasks ||= scope.all.preload(:taskable, :taggings)
29
18
  @filters ||= ::Dorsale::Flyboy::SmallData::FilterForTasks.new(filters_jar)
30
-
31
19
  @tasks = @filters.apply(@tasks)
32
20
  @tasks = @tasks.search(params[:q])
21
+ @tasks_without_pagination = @tasks
22
+ @tasks = Dorsale::Flyboy::TasksSorter.(@tasks, params["sort"] ||= "term")
33
23
 
34
- if @order.is_a?(Proc) # when sorting by a polymorphic attribute
35
- @tasks = @tasks.sort(&@order)
36
- @tasks_without_pagination = @tasks
37
- @tasks = Kaminari.paginate_array(@tasks).page(params[:page])
38
- else
39
- @tasks = @tasks.order(@order)
40
- @tasks_without_pagination = @tasks
24
+ if @tasks.is_a?(ActiveRecord::Relation)
41
25
  @tasks = @tasks.page(params[:page])
26
+ else
27
+ @tasks = Kaminari.paginate_array(@tasks).page(params[:page])
42
28
  end
43
29
  end
44
30
 
@@ -176,10 +162,6 @@ class Dorsale::Flyboy::TasksController < ::Dorsale::Flyboy::ApplicationControlle
176
162
  @taskable ||= @task.taskable
177
163
  end
178
164
 
179
- def set_owners
180
- @owners ||= policy_scope(User).actives
181
- end
182
-
183
165
  def permitted_params
184
166
  [
185
167
  :taskable_id,
@@ -193,30 +175,11 @@ class Dorsale::Flyboy::TasksController < ::Dorsale::Flyboy::ApplicationControlle
193
175
  :reminder_duration,
194
176
  :reminder_unit,
195
177
  :owner_id,
178
+ :tag_list => [],
196
179
  ]
197
180
  end
198
181
 
199
182
  def task_params
200
183
  params.fetch(:task, {}).permit(permitted_params)
201
184
  end
202
-
203
- def order_from_params
204
- sortable_column_order do |column, direction|
205
- case column
206
- when :name, :status
207
- %(LOWER(dorsale_flyboy_tasks.#{column}) #{direction})
208
- when :progress, :term
209
- %(dorsale_flyboy_tasks.#{column} #{direction})
210
- when :taskable
211
- if direction == :asc
212
- proc { |a, b| a.taskable.to_s.downcase <=> b.taskable.to_s.downcase }
213
- else
214
- proc { |a, b| b.taskable.to_s.downcase <=> a.taskable.to_s.downcase }
215
- end
216
- else
217
- params["sort"] = "term"
218
- "term ASC"
219
- end
220
- end
221
- end
222
185
  end
@@ -1,6 +1,7 @@
1
1
  class Dorsale::Flyboy::SmallData::FilterForTasks < ::Agilibox::SmallData::Filter
2
2
  STRATEGIES = {
3
- "fb_state" => ::Dorsale::Flyboy::SmallData::FilterStrategyByTaskState.new,
4
- "fb_owner" => ::Agilibox::SmallData::FilterStrategyByKeyValue.new(:owner_id),
3
+ "fb_state" => ::Dorsale::Flyboy::SmallData::FilterStrategyByTaskState.new,
4
+ "fb_owner" => ::Agilibox::SmallData::FilterStrategyByKeyValue.new(:owner_id),
5
+ "fb_tags" => ::Agilibox::SmallData::FilterStrategyByTags.new,
5
6
  }
6
7
  end
@@ -31,8 +31,20 @@ module Dorsale::Flyboy::ApplicationHelper
31
31
  end
32
32
  end
33
33
 
34
+ def flyboy_tasks_owners_for_select
35
+ ([@task&.owner].compact + policy_scope(User).actives).uniq
36
+ end
37
+
34
38
  def flyboy_tasks_owners_for_filters_select
35
- policy_scope(User)
39
+ flyboy_tasks_owners_for_select
40
+ end
41
+
42
+ def flyboy_tasks_tags_for_select
43
+ Dorsale::TagListForModel.(Dorsale::Flyboy::Task)
44
+ end
45
+
46
+ def flyboy_tasks_tags_for_filters_select
47
+ flyboy_tasks_tags_for_select
36
48
  end
37
49
 
38
50
  def flyboy_reminder_types_for_select
@@ -15,6 +15,11 @@ class Dorsale::Flyboy::Task < ::Dorsale::ApplicationRecord
15
15
  polymorphic_id_for :taskable
16
16
  polymorphic_id_for :owner
17
17
 
18
+ acts_as_taggable
19
+ def tag_list
20
+ super.sort
21
+ end
22
+
18
23
  STATES = %w(done undone ontime onwarning onalert)
19
24
 
20
25
  def state
@@ -37,6 +37,6 @@ class Dorsale::BillingMachine::Quotation::ToInvoice < ::Dorsale::Service
37
37
 
38
38
  def ignored_key?(k)
39
39
  k = k.to_s
40
- k == "id" || k.match?(/index|tracking|state/) || k.end_with?("_at")
40
+ k == "id" || k.match(/index|tracking|state/) || k.end_with?("_at")
41
41
  end
42
42
  end
@@ -0,0 +1,44 @@
1
+ class Dorsale::Flyboy::TasksSorter < Agilibox::Sorter
2
+ def sort
3
+ case column
4
+ when :name, :status
5
+ %(LOWER(dorsale_flyboy_tasks.#{column}) #{direction})
6
+ when :progress, :term
7
+ %(dorsale_flyboy_tasks.#{column} #{direction})
8
+ when :taskable
9
+ if direction == :asc
10
+ proc { |a, b| a.taskable.to_s.downcase <=> b.taskable.to_s.downcase }
11
+ else
12
+ proc { |a, b| b.taskable.to_s.downcase <=> a.taskable.to_s.downcase }
13
+ end
14
+ when :tags
15
+ %(
16
+ (
17
+ SELECT STRING_AGG(n, ' ' ORDER BY n)
18
+ FROM (
19
+ SELECT name AS n
20
+ FROM tags
21
+ WHERE id IN (
22
+ SELECT taggings.tag_id
23
+ FROM taggings
24
+ WHERE taggable_id = dorsale_flyboy_tasks.id
25
+ AND taggings.taggable_type = '#{Dorsale::Flyboy::Task}'
26
+ )
27
+ ) AS task_tags
28
+ ) #{direction}
29
+ )
30
+ end
31
+ end
32
+
33
+ def call
34
+ order = sort
35
+
36
+ if order.is_a?(Proc) # sorting by a polymorphic attribute
37
+ result = @collection.sort(&order)
38
+ else
39
+ result = @collection.reorder(order)
40
+ end
41
+
42
+ result
43
+ end
44
+ end
@@ -1,5 +1,13 @@
1
1
  = filters_form do |f|
2
- = f.input :fb_state, collection: flyboy_status_for_filters_select, include_blank: Dorsale::Flyboy::Task.t("state.all")
2
+ = f.input :fb_state,
3
+ :collection => flyboy_status_for_filters_select,
4
+ :include_blank => Dorsale::Flyboy::Task.t("state.all")
3
5
 
4
- - if @filters.class::STRATEGIES.include?("fb_owner")
5
- = f.input :fb_owner, collection: flyboy_tasks_owners_for_filters_select, include_blank: t("filters.all_owners")
6
+ = f.input :fb_owner,
7
+ :collection => flyboy_tasks_owners_for_filters_select,
8
+ :include_blank => t("filters.all_owners")
9
+
10
+ = f.input :fb_tags,
11
+ :collection => flyboy_tasks_tags_for_filters_select,
12
+ :input_html => {multiple: true},
13
+ :placeholder => ::Dorsale::Flyboy::Task.t(:all_tags)
@@ -5,11 +5,12 @@
5
5
  = task
6
6
 
7
7
  .context-body class=task.state
8
+ = info task, :tags, tags(task)
8
9
  = info task, :progress, progress_bar(percentage: task.progress, label: true)
9
10
  = info task, :owner
10
11
  = info task, :created_at
11
- = info task, :term
12
12
  = info task, :reminder_date
13
+ = info task, :term
13
14
  = info task, :done
14
15
 
15
16
  .context-footer
@@ -0,0 +1,10 @@
1
+ = filters_form do |f|
2
+ = f.input :fb_state, collection: flyboy_status_for_filters_select, include_blank: Dorsale::Flyboy::Task.t("state.all")
3
+
4
+ - if @filters.class::STRATEGIES.include?("fb_owner")
5
+ = f.input :fb_owner, collection: flyboy_tasks_owners_for_filters_select, include_blank: t("filters.all_owners")
6
+
7
+ = f.input :fb_tags,
8
+ :collection => flyboy_tasks_tags_for_filters_select,
9
+ :input_html => {multiple: true},
10
+ :placeholder => ::Dorsale::Flyboy::Task.t(:all_tags)
@@ -17,11 +17,12 @@
17
17
 
18
18
  .row
19
19
  .col-sm-8 = f.input :name
20
- .col-sm-4 = f.input :owner_id, collection: @owners
20
+ .col-sm-4 = f.input :owner_id, collection: flyboy_tasks_owners_for_select
21
21
 
22
+ = f.input :tag_list, collection: flyboy_tasks_tags_for_select, input_html: {multiple: true}
22
23
  = f.input :description, input_html: {rows: 5}
23
- = render "dorsale/flyboy/tasks/term_fields", f: f
24
24
  = render "dorsale/flyboy/tasks/reminder_fields", f: f
25
+ = render "dorsale/flyboy/tasks/term_fields", f: f
25
26
  = f.hidden_field :taskable_id
26
27
  = f.hidden_field :taskable_type
27
28
 
@@ -9,6 +9,9 @@ table#tasks-list
9
9
  th.task-name
10
10
  = sortable_column Dorsale::Flyboy::Task.t, :name
11
11
 
12
+ th.task-tags
13
+ = sortable_column Dorsale::Flyboy::Task.t(:tags), :tags
14
+
12
15
  - unless nested
13
16
  th.taskable-name.hidden-xs
14
17
  = sortable_column Dorsale::Flyboy::Task.t(:taskable), :taskable
@@ -53,6 +56,9 @@ table#tasks-list
53
56
  td.task-name
54
57
  = link_to_object(task)
55
58
 
59
+ td.task-tags
60
+ = tags(task)
61
+
56
62
  - unless nested
57
63
  td.taskable-name.hidden-xs
58
64
  = link_to_object(task.taskable)
@@ -1,6 +1,6 @@
1
1
  .flyboy
2
2
  - content_for :filters
3
- = render "dorsale/flyboy/filters"
3
+ = render "dorsale/flyboy/tasks/filters"
4
4
 
5
5
  - content_for :table
6
6
  = render "dorsale/flyboy/tasks/list", tasks: tasks, nested: true
@@ -5,7 +5,7 @@
5
5
  = ::Dorsale::Flyboy::Task.ts
6
6
 
7
7
  - content_for :filters
8
- = render "dorsale/flyboy/filters"
8
+ = render "dorsale/flyboy/tasks/filters"
9
9
 
10
10
  - content_for :search
11
11
  = search_form
@@ -1,5 +1,4 @@
1
1
  en:
2
- update: "Update"
3
2
  messages:
4
3
  comments:
5
4
  create_ok : "Comment created."
@@ -1,5 +1,4 @@
1
1
  fr:
2
- update: "Modifier"
3
2
  messages:
4
3
  comments:
5
4
  create_ok : "Le commentaire a été créé."
@@ -51,6 +51,7 @@ en:
51
51
  done: "Done ?"
52
52
  description: "Description"
53
53
  progress: "Progress"
54
+ all_tags: "All tags"
54
55
 
55
56
  dorsale/flyboy/task/state:
56
57
  all: "All states"
@@ -53,6 +53,7 @@ fr:
53
53
  done: "Fait"
54
54
  description: "Description"
55
55
  progress: "Progression"
56
+ all_tags: "Tous les tags"
56
57
 
57
58
  dorsale/flyboy/task/state:
58
59
  all: "Tous les états"
@@ -1,4 +1,7 @@
1
1
  ENV["RAILS_ROOT"] ||= File.expand_path("../../../spec/dummy", __FILE__)
2
2
  require "cucumber/rails"
3
3
  require "agilibox/cucumber_config"
4
+ def Zonebie.set_random_timezone
5
+ # https://github.com/agilidee/dorsale/issues/273
6
+ end
4
7
  Agilibox::CucumberConfig.require_all_helpers!
@@ -1,3 +1,3 @@
1
1
  module Dorsale
2
- VERSION = "3.9.0"
2
+ VERSION = "3.9.1"
3
3
  end
@@ -92,7 +92,7 @@ RSpec.describe ::Dorsale::CustomerVault::PeopleController, type: :controller do
92
92
  describe "#create" do
93
93
  before do
94
94
  allow_any_instance_of(Dorsale::CustomerVault::PeopleController).to \
95
- receive(:model) { Dorsale::CustomerVault::Corporation }
95
+ receive(:model) { Dorsale::CustomerVault::Corporation }
96
96
  end
97
97
 
98
98
  it "should generate an event" do
@@ -110,7 +110,7 @@ RSpec.describe ::Dorsale::CustomerVault::PeopleController, type: :controller do
110
110
  describe "#update" do
111
111
  before do
112
112
  allow_any_instance_of(Dorsale::CustomerVault::PeopleController).to \
113
- receive(:model) { Dorsale::CustomerVault::Corporation }
113
+ receive(:model) { Dorsale::CustomerVault::Corporation }
114
114
  end
115
115
 
116
116
  it "should generate an event" do
@@ -70,6 +70,14 @@ describe Dorsale::Flyboy::TasksController, type: :controller do
70
70
  get :index
71
71
  expect(assigns(:tasks).to_a).to eq [@task2]
72
72
  end
73
+
74
+ it "should filter by tags" do
75
+ task1 = create(:flyboy_task, tag_list: "abc")
76
+ task2 = create(:flyboy_task, tag_list: "xyz")
77
+ cookies["filters"] = {fb_tags: ["abc"]}.to_json
78
+ get :index
79
+ expect(assigns(:tasks)).to eq [task1]
80
+ end
73
81
  end
74
82
 
75
83
  context "when sorting" do
@@ -86,6 +94,7 @@ describe Dorsale::Flyboy::TasksController, type: :controller do
86
94
  :term => "21/12/2012",
87
95
  :reminder_type => "custom",
88
96
  :reminder_date => "21/12/2012",
97
+ :tag_list => "aaa",
89
98
  )
90
99
 
91
100
  @task2 = create(:flyboy_task,
@@ -95,6 +104,7 @@ describe Dorsale::Flyboy::TasksController, type: :controller do
95
104
  :term => "23/12/2012",
96
105
  :reminder_type => "custom",
97
106
  :reminder_date => "23/12/2012",
107
+ :tag_list => "bbb",
98
108
  )
99
109
 
100
110
  @task3 = create(:flyboy_task,
@@ -104,6 +114,7 @@ describe Dorsale::Flyboy::TasksController, type: :controller do
104
114
  :term => "22/12/2012",
105
115
  :reminder_type => "custom",
106
116
  :reminder_date => "22/12/2012",
117
+ :tag_list => "",
107
118
  )
108
119
  end
109
120
 
@@ -146,6 +157,16 @@ describe Dorsale::Flyboy::TasksController, type: :controller do
146
157
  get :index, params: {sort: "-term"}
147
158
  expect(assigns(:tasks).to_a).to eq [@task2, @task3, @task1]
148
159
  end
160
+
161
+ it "sorting by tags asc" do
162
+ get :index, params: {sort: "tags"}
163
+ expect(assigns(:tasks).to_a).to eq [@task1, @task2, @task3]
164
+ end
165
+
166
+ it "sorting by tags desc" do
167
+ get :index, params: {sort: "-tags"}
168
+ expect(assigns(:tasks).to_a).to eq [@task3, @task2, @task1]
169
+ end
149
170
  end
150
171
  end
151
172
 
@@ -6,27 +6,27 @@ RSpec.describe Dorsale::Alexandrie::AttachmentsController, type: :routing do
6
6
  describe "routing" do
7
7
  it "#create" do
8
8
  expect(get "/alexandrie/attachments").to \
9
- route_to("dorsale/alexandrie/attachments#index")
9
+ route_to("dorsale/alexandrie/attachments#index")
10
10
  end
11
11
 
12
12
  it "#create" do
13
13
  expect(post "/alexandrie/attachments").to \
14
- route_to("dorsale/alexandrie/attachments#create")
14
+ route_to("dorsale/alexandrie/attachments#create")
15
15
  end
16
16
 
17
17
  it "#edit" do
18
18
  expect(get "/alexandrie/attachments/3/edit").to \
19
- route_to("dorsale/alexandrie/attachments#edit", id: "3")
19
+ route_to("dorsale/alexandrie/attachments#edit", id: "3")
20
20
  end
21
21
 
22
22
  it "#update" do
23
23
  expect(patch "/alexandrie/attachments/3").to \
24
- route_to("dorsale/alexandrie/attachments#update", id: "3")
24
+ route_to("dorsale/alexandrie/attachments#update", id: "3")
25
25
  end
26
26
 
27
27
  it "#destroy" do
28
28
  expect(delete "/alexandrie/attachments/3").to \
29
- route_to("dorsale/alexandrie/attachments#destroy", id: "3")
29
+ route_to("dorsale/alexandrie/attachments#destroy", id: "3")
30
30
  end
31
31
  end
32
32
  end
@@ -6,57 +6,57 @@ describe ::Dorsale::BillingMachine::InvoicesController, type: :routing do
6
6
  describe "routing" do
7
7
  it "#index" do
8
8
  expect(get "/billing_machine/invoices").to \
9
- route_to("dorsale/billing_machine/invoices#index")
9
+ route_to("dorsale/billing_machine/invoices#index")
10
10
  end
11
11
 
12
12
  it "#new" do
13
13
  expect(get "/billing_machine/invoices/new").to \
14
- route_to("dorsale/billing_machine/invoices#new")
14
+ route_to("dorsale/billing_machine/invoices#new")
15
15
  end
16
16
 
17
17
  it "#create" do
18
18
  expect(post "/billing_machine/invoices").to \
19
- route_to("dorsale/billing_machine/invoices#create")
19
+ route_to("dorsale/billing_machine/invoices#create")
20
20
  end
21
21
 
22
22
  it "#show" do
23
23
  expect(get "/billing_machine/invoices/1").to \
24
- route_to("dorsale/billing_machine/invoices#show", id: "1")
24
+ route_to("dorsale/billing_machine/invoices#show", id: "1")
25
25
  end
26
26
 
27
27
  it "#show pdf" do
28
28
  expect(get "/billing_machine/invoices/1.pdf").to \
29
- route_to("dorsale/billing_machine/invoices#show", id: "1", format: "pdf")
29
+ route_to("dorsale/billing_machine/invoices#show", id: "1", format: "pdf")
30
30
  end
31
31
 
32
32
  it "#pay" do
33
33
  expect(patch "/billing_machine/invoices/1/pay").to \
34
- route_to("dorsale/billing_machine/invoices#pay", id: "1")
34
+ route_to("dorsale/billing_machine/invoices#pay", id: "1")
35
35
  end
36
36
 
37
37
  it "#copy" do
38
38
  expect(get "/billing_machine/invoices/1/copy").to \
39
- route_to("dorsale/billing_machine/invoices#copy", id: "1")
39
+ route_to("dorsale/billing_machine/invoices#copy", id: "1")
40
40
  end
41
41
 
42
42
  it "#edit" do
43
43
  expect(get "/billing_machine/invoices/1/edit").to \
44
- route_to("dorsale/billing_machine/invoices#edit", id: "1")
44
+ route_to("dorsale/billing_machine/invoices#edit", id: "1")
45
45
  end
46
46
 
47
47
  it "#update" do
48
48
  expect(patch "/billing_machine/invoices/1").to \
49
- route_to("dorsale/billing_machine/invoices#update", id: "1")
49
+ route_to("dorsale/billing_machine/invoices#update", id: "1")
50
50
  end
51
51
 
52
52
  it "#email via GET" do
53
53
  expect(get "/billing_machine/invoices/1/email").to \
54
- route_to("dorsale/billing_machine/invoices#email", id: "1")
54
+ route_to("dorsale/billing_machine/invoices#email", id: "1")
55
55
  end
56
56
 
57
57
  it "#email via PORT" do
58
58
  expect(post "/billing_machine/invoices/1/email").to \
59
- route_to("dorsale/billing_machine/invoices#email", id: "1")
59
+ route_to("dorsale/billing_machine/invoices#email", id: "1")
60
60
  end
61
61
  end
62
62
  end
@@ -6,47 +6,47 @@ describe ::Dorsale::BillingMachine::QuotationsController do
6
6
 
7
7
  it "#index" do
8
8
  expect(get "/billing_machine/quotations").to \
9
- route_to("dorsale/billing_machine/quotations#index")
9
+ route_to("dorsale/billing_machine/quotations#index")
10
10
  end
11
11
 
12
12
  it "#new" do
13
13
  expect(get "/billing_machine/quotations/new").to \
14
- route_to("dorsale/billing_machine/quotations#new")
14
+ route_to("dorsale/billing_machine/quotations#new")
15
15
  end
16
16
 
17
17
  it "#show" do
18
18
  expect(get "/billing_machine/quotations/1").to \
19
- route_to("dorsale/billing_machine/quotations#show", id: "1")
19
+ route_to("dorsale/billing_machine/quotations#show", id: "1")
20
20
  end
21
21
 
22
22
  it "#edit" do
23
23
  expect(get "/billing_machine/quotations/1/edit").to \
24
- route_to("dorsale/billing_machine/quotations#edit", id: "1")
24
+ route_to("dorsale/billing_machine/quotations#edit", id: "1")
25
25
  end
26
26
 
27
27
  it "#create" do
28
28
  expect(post "/billing_machine/quotations").to \
29
- route_to("dorsale/billing_machine/quotations#create")
29
+ route_to("dorsale/billing_machine/quotations#create")
30
30
  end
31
31
 
32
32
  it "#update" do
33
33
  expect(patch "/billing_machine/quotations/1").to \
34
- route_to("dorsale/billing_machine/quotations#update", id: "1")
34
+ route_to("dorsale/billing_machine/quotations#update", id: "1")
35
35
  end
36
36
 
37
37
  it "#destroy" do
38
38
  expect(delete "/billing_machine/quotations/1").to \
39
- route_to("dorsale/billing_machine/quotations#destroy", id: "1")
39
+ route_to("dorsale/billing_machine/quotations#destroy", id: "1")
40
40
  end
41
41
 
42
42
  it "#copy" do
43
43
  expect(post "/billing_machine/quotations/1/copy").to \
44
- route_to("dorsale/billing_machine/quotations#copy", id: "1")
44
+ route_to("dorsale/billing_machine/quotations#copy", id: "1")
45
45
  end
46
46
 
47
47
  it "#create_invoice" do
48
48
  expect(get "/billing_machine/quotations/1/create_invoice").to \
49
- route_to("dorsale/billing_machine/quotations#create_invoice", id: "1")
49
+ route_to("dorsale/billing_machine/quotations#create_invoice", id: "1")
50
50
  end
51
51
  end
52
52
  end
@@ -6,17 +6,17 @@ describe ::Dorsale::CustomerVault::ActivityTypesController do
6
6
  describe "routing" do
7
7
  it "#index" do
8
8
  expect(get "/customer_vault/activity_types").to \
9
- route_to("dorsale/customer_vault/activity_types#index")
9
+ route_to("dorsale/customer_vault/activity_types#index")
10
10
  end
11
11
 
12
12
  it "#new" do
13
13
  expect(get "/customer_vault/activity_types/new").to \
14
- route_to("dorsale/customer_vault/activity_types#new")
14
+ route_to("dorsale/customer_vault/activity_types#new")
15
15
  end
16
16
 
17
17
  it "#create" do
18
18
  expect(post "/customer_vault/activity_types").to \
19
- route_to("dorsale/customer_vault/activity_types#create")
19
+ route_to("dorsale/customer_vault/activity_types#create")
20
20
  end
21
21
 
22
22
  it "#show" do
@@ -25,12 +25,12 @@ describe ::Dorsale::CustomerVault::ActivityTypesController do
25
25
 
26
26
  it "#edit" do
27
27
  expect(get "/customer_vault/activity_types/3/edit").to \
28
- route_to("dorsale/customer_vault/activity_types#edit", id: "3")
28
+ route_to("dorsale/customer_vault/activity_types#edit", id: "3")
29
29
  end
30
30
 
31
31
  it "#update" do
32
32
  expect(patch "/customer_vault/activity_types/3").to \
33
- route_to("dorsale/customer_vault/activity_types#update", id: "3")
33
+ route_to("dorsale/customer_vault/activity_types#update", id: "3")
34
34
  end
35
35
 
36
36
  it "#destroy" do
@@ -6,7 +6,7 @@ RSpec.describe ::Dorsale::CustomerVault::EventsController, type: :routing do
6
6
  describe "routing" do
7
7
  it "#index" do
8
8
  expect(get "/customer_vault/events").to \
9
- route_to("dorsale/customer_vault/events#index")
9
+ route_to("dorsale/customer_vault/events#index")
10
10
  end
11
11
  end # describe "routing"
12
12
  end
@@ -6,17 +6,17 @@ describe ::Dorsale::CustomerVault::OriginsController do
6
6
  describe "routing" do
7
7
  it "#index" do
8
8
  expect(get "/customer_vault/origins").to \
9
- route_to("dorsale/customer_vault/origins#index")
9
+ route_to("dorsale/customer_vault/origins#index")
10
10
  end
11
11
 
12
12
  it "#new" do
13
13
  expect(get "/customer_vault/origins/new").to \
14
- route_to("dorsale/customer_vault/origins#new")
14
+ route_to("dorsale/customer_vault/origins#new")
15
15
  end
16
16
 
17
17
  it "#create" do
18
18
  expect(post "/customer_vault/origins").to \
19
- route_to("dorsale/customer_vault/origins#create")
19
+ route_to("dorsale/customer_vault/origins#create")
20
20
  end
21
21
 
22
22
  it "#show" do
@@ -25,12 +25,12 @@ describe ::Dorsale::CustomerVault::OriginsController do
25
25
 
26
26
  it "#edit" do
27
27
  expect(get "/customer_vault/origins/3/edit").to \
28
- route_to("dorsale/customer_vault/origins#edit", id: "3")
28
+ route_to("dorsale/customer_vault/origins#edit", id: "3")
29
29
  end
30
30
 
31
31
  it "#update" do
32
32
  expect(patch "/customer_vault/origins/3").to \
33
- route_to("dorsale/customer_vault/origins#update", id: "3")
33
+ route_to("dorsale/customer_vault/origins#update", id: "3")
34
34
  end
35
35
 
36
36
  it "#destroy" do
@@ -6,104 +6,104 @@ RSpec.describe ::Dorsale::CustomerVault::PeopleController, type: :routing do
6
6
  describe "routing" do
7
7
  it "#index" do
8
8
  expect(get "/customer_vault/people").to \
9
- route_to("dorsale/customer_vault/people#index")
9
+ route_to("dorsale/customer_vault/people#index")
10
10
  end
11
11
 
12
12
  it "#corporations via get" do
13
13
  expect(get "/customer_vault/corporations").to \
14
- route_to("dorsale/customer_vault/people#corporations")
14
+ route_to("dorsale/customer_vault/people#corporations")
15
15
  end
16
16
 
17
17
  it "#individuals via get" do
18
18
  expect(get "/customer_vault/individuals").to \
19
- route_to("dorsale/customer_vault/people#individuals")
19
+ route_to("dorsale/customer_vault/people#individuals")
20
20
  end
21
21
 
22
22
  it "#new person" do
23
23
  expect(get "/customer_vault/people/new").to \
24
- route_to("dorsale/customer_vault/people#new")
24
+ route_to("dorsale/customer_vault/people#new")
25
25
  end
26
26
 
27
27
  it "#new corporation" do
28
28
  expect(get "/customer_vault/corporations/new").to \
29
- route_to("dorsale/customer_vault/people#new")
29
+ route_to("dorsale/customer_vault/people#new")
30
30
  end
31
31
 
32
32
  it "#new individual" do
33
33
  expect(get "/customer_vault/individuals/new").to \
34
- route_to("dorsale/customer_vault/people#new")
34
+ route_to("dorsale/customer_vault/people#new")
35
35
  end
36
36
 
37
37
  it "#create person" do
38
38
  expect(post "/customer_vault/people").to \
39
- route_to("dorsale/customer_vault/people#create")
39
+ route_to("dorsale/customer_vault/people#create")
40
40
  end
41
41
 
42
42
  it "#create individual" do
43
43
  expect(post "/customer_vault/individuals").to \
44
- route_to("dorsale/customer_vault/people#create")
44
+ route_to("dorsale/customer_vault/people#create")
45
45
  end
46
46
 
47
47
  it "#create corporation" do
48
48
  expect(post "/customer_vault/corporations").to \
49
- route_to("dorsale/customer_vault/people#create")
49
+ route_to("dorsale/customer_vault/people#create")
50
50
  end
51
51
 
52
52
  it "#show" do
53
53
  expect(get "/customer_vault/people/1").to \
54
- route_to("dorsale/customer_vault/people#show", id: "1")
54
+ route_to("dorsale/customer_vault/people#show", id: "1")
55
55
  end
56
56
 
57
57
  it "#tasks" do
58
58
  expect(get "/customer_vault/people/1/tasks").to \
59
- route_to("dorsale/customer_vault/people#tasks", id: "1")
59
+ route_to("dorsale/customer_vault/people#tasks", id: "1")
60
60
  end
61
61
 
62
62
  it "#invoices" do
63
63
  expect(get "/customer_vault/people/1/invoices").to \
64
- route_to("dorsale/customer_vault/people#invoices", id: "1")
64
+ route_to("dorsale/customer_vault/people#invoices", id: "1")
65
65
  end
66
66
 
67
67
  it "#links" do
68
68
  expect(get "/customer_vault/people/1/links").to \
69
- route_to("dorsale/customer_vault/links#index", person_id: "1")
69
+ route_to("dorsale/customer_vault/links#index", person_id: "1")
70
70
  end
71
71
 
72
72
  it "#edit" do
73
73
  expect(get "/customer_vault/people/1/edit").to \
74
- route_to("dorsale/customer_vault/people#edit", id: "1")
74
+ route_to("dorsale/customer_vault/people#edit", id: "1")
75
75
  end
76
76
 
77
77
  it "#update" do
78
78
  expect(patch "/customer_vault/people/1").to \
79
- route_to("dorsale/customer_vault/people#update", id: "1")
79
+ route_to("dorsale/customer_vault/people#update", id: "1")
80
80
  end
81
81
 
82
82
  it "#destroy" do
83
83
  expect(delete "/customer_vault/people/1").to \
84
- route_to("dorsale/customer_vault/people#destroy", id: "1")
84
+ route_to("dorsale/customer_vault/people#destroy", id: "1")
85
85
  end
86
86
  end # describe "routing"
87
87
 
88
88
  describe "route helpers" do
89
89
  it "#new_customer_vault_corporation_path" do
90
90
  expect(new_customer_vault_corporation_path).to \
91
- eq "/dorsale/customer_vault/corporations/new"
91
+ eq "/dorsale/customer_vault/corporations/new"
92
92
  end
93
93
 
94
94
  it "#new_customer_vault_individual_path" do
95
95
  expect(new_customer_vault_individual_path).to \
96
- eq "/dorsale/customer_vault/individuals/new"
96
+ eq "/dorsale/customer_vault/individuals/new"
97
97
  end
98
98
 
99
99
  it "#customer_vault_corporation_path" do
100
100
  expect(customer_vault_corporations_path).to \
101
- eq "/dorsale/customer_vault/corporations"
101
+ eq "/dorsale/customer_vault/corporations"
102
102
  end
103
103
 
104
104
  it "#customer_vault_individual_path" do
105
105
  expect(customer_vault_individuals_path).to \
106
- eq "/dorsale/customer_vault/individuals"
106
+ eq "/dorsale/customer_vault/individuals"
107
107
  end
108
108
  end # describe "route helpers"
109
109
  end
@@ -6,57 +6,57 @@ describe ::Dorsale::ExpenseGun::ExpensesController, type: :routing do
6
6
  describe "routing" do
7
7
  it "#index" do
8
8
  expect(get "/expense_gun/expenses").to \
9
- route_to("dorsale/expense_gun/expenses#index")
9
+ route_to("dorsale/expense_gun/expenses#index")
10
10
  end
11
11
 
12
12
  it "#new" do
13
13
  expect(get "/expense_gun/expenses/new").to \
14
- route_to("dorsale/expense_gun/expenses#new")
14
+ route_to("dorsale/expense_gun/expenses#new")
15
15
  end
16
16
 
17
17
  it "#create" do
18
18
  expect(post "/expense_gun/expenses").to \
19
- route_to("dorsale/expense_gun/expenses#create")
19
+ route_to("dorsale/expense_gun/expenses#create")
20
20
  end
21
21
 
22
22
  it "#show" do
23
23
  expect(get "/expense_gun/expenses/1").to \
24
- route_to("dorsale/expense_gun/expenses#show", id: "1")
24
+ route_to("dorsale/expense_gun/expenses#show", id: "1")
25
25
  end
26
26
 
27
27
  it "#edit" do
28
28
  expect(get "/expense_gun/expenses/1/edit").to \
29
- route_to("dorsale/expense_gun/expenses#edit", id: "1")
29
+ route_to("dorsale/expense_gun/expenses#edit", id: "1")
30
30
  end
31
31
 
32
32
  it "#update" do
33
33
  expect(patch "/expense_gun/expenses/1").to \
34
- route_to("dorsale/expense_gun/expenses#update", id: "1")
34
+ route_to("dorsale/expense_gun/expenses#update", id: "1")
35
35
  end
36
36
 
37
37
  it "#submit" do
38
38
  expect(patch "/expense_gun/expenses/1/submit").to \
39
- route_to("dorsale/expense_gun/expenses#submit", id: "1")
39
+ route_to("dorsale/expense_gun/expenses#submit", id: "1")
40
40
  end
41
41
 
42
42
  it "#accept" do
43
43
  expect(patch "/expense_gun/expenses/1/accept").to \
44
- route_to("dorsale/expense_gun/expenses#accept", id: "1")
44
+ route_to("dorsale/expense_gun/expenses#accept", id: "1")
45
45
  end
46
46
 
47
47
  it "#refuse" do
48
48
  expect(patch "/expense_gun/expenses/1/refuse").to \
49
- route_to("dorsale/expense_gun/expenses#refuse", id: "1")
49
+ route_to("dorsale/expense_gun/expenses#refuse", id: "1")
50
50
  end
51
51
 
52
52
  it "#cancel" do
53
53
  expect(patch "/expense_gun/expenses/1/cancel").to \
54
- route_to("dorsale/expense_gun/expenses#cancel", id: "1")
54
+ route_to("dorsale/expense_gun/expenses#cancel", id: "1")
55
55
  end
56
56
 
57
57
  it "#copy" do
58
58
  expect(get "/expense_gun/expenses/1/copy").to \
59
- route_to("dorsale/expense_gun/expenses#copy", id: "1")
59
+ route_to("dorsale/expense_gun/expenses#copy", id: "1")
60
60
  end
61
61
  end
62
62
  end
metadata CHANGED
@@ -1,14 +1,14 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: dorsale
3
3
  version: !ruby/object:Gem::Version
4
- version: 3.9.0
4
+ version: 3.9.1
5
5
  platform: ruby
6
6
  authors:
7
7
  - agilidée
8
8
  autorequire:
9
9
  bindir: bin
10
10
  cert_chain: []
11
- date: 2017-10-27 00:00:00.000000000 Z
11
+ date: 2017-11-20 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: rails
@@ -642,6 +642,7 @@ files:
642
642
  - app/services/dorsale/service.rb
643
643
  - app/services/dorsale/tag_list_for_model.rb
644
644
  - app/sorters/dorsale/flyboy/task_comments_sorter.rb
645
+ - app/sorters/dorsale/flyboy/tasks_sorter.rb
645
646
  - app/uploaders/dorsale/alexandrie/file_uploader.rb
646
647
  - app/uploaders/dorsale/application_uploader.rb
647
648
  - app/uploaders/dorsale/avatar_uploader.rb
@@ -771,6 +772,7 @@ files:
771
772
  - app/views/dorsale/flyboy/task_mailer/new_task.html.slim
772
773
  - app/views/dorsale/flyboy/task_mailer/term_email.html.slim
773
774
  - app/views/dorsale/flyboy/tasks/_context.html.slim
775
+ - app/views/dorsale/flyboy/tasks/_filters.html.slim
774
776
  - app/views/dorsale/flyboy/tasks/_form.html.slim
775
777
  - app/views/dorsale/flyboy/tasks/_index_actions.html.slim
776
778
  - app/views/dorsale/flyboy/tasks/_list.html.slim
@@ -1013,129 +1015,129 @@ signing_key:
1013
1015
  specification_version: 4
1014
1016
  summary: Modular ERP made with Ruby on Rails
1015
1017
  test_files:
1016
- - spec/controllers/dorsale/alexandrie/attachments_controller_spec.rb
1017
- - spec/controllers/dorsale/billing_machine/invoices_controller_spec.rb
1018
- - spec/controllers/dorsale/billing_machine/quotations_controller_spec.rb
1019
- - spec/controllers/dorsale/comments_controller_spec.rb
1020
- - spec/controllers/dorsale/customer_vault/events_controller_spec.rb
1021
- - spec/controllers/dorsale/customer_vault/people_controller_spec.rb
1022
- - spec/controllers/dorsale/expense_gun/expenses_controller_spec.rb
1023
- - spec/controllers/dorsale/flyboy/task_comments_controller_spec.rb
1024
- - spec/controllers/dorsale/flyboy/tasks_controller_spec.rb
1025
- - spec/factories/alexandrie_attachment_types.rb
1026
- - spec/factories/alexandrie_attachments.rb
1018
+ - spec/spec_helper.rb
1019
+ - spec/mailers/user_mailer.rb
1020
+ - spec/models/dorsale/billing_machine_spec.rb
1021
+ - spec/models/dorsale/i18n_spec.rb
1022
+ - spec/models/dorsale/alexandrie/attachment_spec.rb
1023
+ - spec/models/dorsale/alexandrie/attachment_type_spec.rb
1024
+ - spec/models/dorsale/expense_gun/expense_spec.rb
1025
+ - spec/models/dorsale/expense_gun/expense_line_spec.rb
1026
+ - spec/models/dorsale/expense_gun/category_spec.rb
1027
+ - spec/models/dorsale/customer_vault/person_spec.rb
1028
+ - spec/models/dorsale/customer_vault/individual_spec.rb
1029
+ - spec/models/dorsale/customer_vault/activity_type_spec.rb
1030
+ - spec/models/dorsale/customer_vault/origin_spec.rb
1031
+ - spec/models/dorsale/customer_vault/event_spec.rb
1032
+ - spec/models/dorsale/customer_vault/corporation_spec.rb
1033
+ - spec/models/dorsale/customer_vault/link_spec.rb
1034
+ - spec/models/dorsale/users_spec.rb
1035
+ - spec/models/dorsale/billing_machine/quotation_line_spec.rb
1036
+ - spec/models/dorsale/billing_machine/quotation_spec.rb
1037
+ - spec/models/dorsale/billing_machine/invoice_line_spec.rb
1038
+ - spec/models/dorsale/billing_machine/invoice_spec.rb
1039
+ - spec/models/dorsale/comment_spec.rb
1040
+ - spec/models/dorsale/flyboy/task_spec.rb
1041
+ - spec/models/dorsale/flyboy/task_comment_spec.rb
1042
+ - spec/models/dorsale/address_spec.rb
1043
+ - spec/support/devise.rb
1044
+ - spec/support/message_delivery.rb
1045
+ - spec/factories/expense_gun_categories.rb
1046
+ - spec/factories/dorsale_addresses.rb
1027
1047
  - spec/factories/billing_machine_invoice_lines.rb
1048
+ - spec/factories/customer_vault_origins.rb
1049
+ - spec/factories/customer_vault_links.rb
1050
+ - spec/factories/alexandrie_attachments.rb
1051
+ - spec/factories/customer_vault_event.rb
1028
1052
  - spec/factories/billing_machine_invoices.rb
1029
- - spec/factories/billing_machine_payment_terms.rb
1030
- - spec/factories/billing_machine_quotation_lines.rb
1031
- - spec/factories/billing_machine_quotations.rb
1032
1053
  - spec/factories/customer_vault_activity_types.rb
1054
+ - spec/factories/billing_machine_payment_terms.rb
1033
1055
  - spec/factories/customer_vault_corporations.rb
1034
- - spec/factories/customer_vault_event.rb
1056
+ - spec/factories/expense_gun_expenses.rb
1057
+ - spec/factories/alexandrie_attachment_types.rb
1058
+ - spec/factories/billing_machine_quotations.rb
1059
+ - spec/factories/flyboy_tasks.rb
1035
1060
  - spec/factories/customer_vault_individuals.rb
1036
- - spec/factories/customer_vault_links.rb
1037
- - spec/factories/customer_vault_origins.rb
1038
- - spec/factories/dorsale_addresses.rb
1039
- - spec/factories/dorsale_comments.rb
1040
- - spec/factories/expense_gun_categories.rb
1061
+ - spec/factories/billing_machine_quotation_lines.rb
1041
1062
  - spec/factories/expense_gun_expense_lines.rb
1042
- - spec/factories/expense_gun_expenses.rb
1063
+ - spec/factories/dorsale_comments.rb
1043
1064
  - spec/factories/flyboy_task_comments.rb
1044
- - spec/factories/flyboy_tasks.rb
1045
1065
  - spec/files/avatar.png
1046
1066
  - spec/files/pdf.pdf
1047
- - spec/mailers/user_mailer.rb
1048
- - spec/models/dorsale/address_spec.rb
1049
- - spec/models/dorsale/alexandrie/attachment_spec.rb
1050
- - spec/models/dorsale/alexandrie/attachment_type_spec.rb
1051
- - spec/models/dorsale/billing_machine/invoice_line_spec.rb
1052
- - spec/models/dorsale/billing_machine/invoice_spec.rb
1053
- - spec/models/dorsale/billing_machine/quotation_line_spec.rb
1054
- - spec/models/dorsale/billing_machine/quotation_spec.rb
1055
- - spec/models/dorsale/billing_machine_spec.rb
1056
- - spec/models/dorsale/comment_spec.rb
1057
- - spec/models/dorsale/customer_vault/activity_type_spec.rb
1058
- - spec/models/dorsale/customer_vault/corporation_spec.rb
1059
- - spec/models/dorsale/customer_vault/event_spec.rb
1060
- - spec/models/dorsale/customer_vault/individual_spec.rb
1061
- - spec/models/dorsale/customer_vault/link_spec.rb
1062
- - spec/models/dorsale/customer_vault/origin_spec.rb
1063
- - spec/models/dorsale/customer_vault/person_spec.rb
1064
- - spec/models/dorsale/expense_gun/category_spec.rb
1065
- - spec/models/dorsale/expense_gun/expense_line_spec.rb
1066
- - spec/models/dorsale/expense_gun/expense_spec.rb
1067
- - spec/models/dorsale/flyboy/task_comment_spec.rb
1068
- - spec/models/dorsale/flyboy/task_spec.rb
1069
- - spec/models/dorsale/i18n_spec.rb
1070
- - spec/models/dorsale/users_spec.rb
1071
- - spec/pdfs/dorsale/billing_machine/invoice_multiple_vat_pdf_spec.rb
1072
1067
  - spec/pdfs/dorsale/billing_machine/invoice_single_vat_pdf_spec.rb
1073
1068
  - spec/pdfs/dorsale/billing_machine/quotation_multiple_vat_pdf_spec.rb
1074
1069
  - spec/pdfs/dorsale/billing_machine/quotation_single_vat_pdf_spec.rb
1075
- - spec/rails_helper.rb
1070
+ - spec/pdfs/dorsale/billing_machine/invoice_multiple_vat_pdf_spec.rb
1076
1071
  - spec/routing/dorsale/alexandrie/attachments_routing_spec.rb
1077
- - spec/routing/dorsale/billing_machine/invoices_routing_spec.rb
1078
- - spec/routing/dorsale/billing_machine/quotations_routing_spec.rb
1079
1072
  - spec/routing/dorsale/comments_routing_spec.rb
1073
+ - spec/routing/dorsale/expense_gun/expenses_routing_spec.rb
1074
+ - spec/routing/dorsale/users_routing_spec.rb
1080
1075
  - spec/routing/dorsale/customer_vault/activity_types_routing_spec.rb
1081
- - spec/routing/dorsale/customer_vault/events_routing_spec.rb
1082
1076
  - spec/routing/dorsale/customer_vault/origins_routing_spec.rb
1083
1077
  - spec/routing/dorsale/customer_vault/people_routing_spec.rb
1084
- - spec/routing/dorsale/expense_gun/expenses_routing_spec.rb
1085
- - spec/routing/dorsale/flyboy/task_comments_routing_spec.rb
1078
+ - spec/routing/dorsale/customer_vault/events_routing_spec.rb
1079
+ - spec/routing/dorsale/billing_machine/quotations_routing_spec.rb
1080
+ - spec/routing/dorsale/billing_machine/invoices_routing_spec.rb
1086
1081
  - spec/routing/dorsale/flyboy/tasks_routing_spec.rb
1087
- - spec/routing/dorsale/users_routing_spec.rb
1088
- - spec/services/dorsale/billing_machine/quotation/copy_spec.rb
1082
+ - spec/routing/dorsale/flyboy/task_comments_routing_spec.rb
1083
+ - spec/controllers/dorsale/alexandrie/attachments_controller_spec.rb
1084
+ - spec/controllers/dorsale/comments_controller_spec.rb
1085
+ - spec/controllers/dorsale/expense_gun/expenses_controller_spec.rb
1086
+ - spec/controllers/dorsale/customer_vault/events_controller_spec.rb
1087
+ - spec/controllers/dorsale/customer_vault/people_controller_spec.rb
1088
+ - spec/controllers/dorsale/billing_machine/invoices_controller_spec.rb
1089
+ - spec/controllers/dorsale/billing_machine/quotations_controller_spec.rb
1090
+ - spec/controllers/dorsale/flyboy/tasks_controller_spec.rb
1091
+ - spec/controllers/dorsale/flyboy/task_comments_controller_spec.rb
1092
+ - spec/rails_helper.rb
1093
+ - spec/services/dorsale/expense_gun/expense/copy_spec.rb
1089
1094
  - spec/services/dorsale/billing_machine/quotation/statistics.rb
1095
+ - spec/services/dorsale/billing_machine/quotation/copy_spec.rb
1090
1096
  - spec/services/dorsale/billing_machine/quotation/to_invoice_spec.rb
1091
- - spec/services/dorsale/expense_gun/expense/copy_spec.rb
1092
1097
  - spec/services/dorsale/flyboy/task/copy_spec.rb
1093
1098
  - spec/services/dorsale/flyboy/task/snoozer_spec.rb
1094
- - spec/spec_helper.rb
1095
- - spec/support/devise.rb
1096
- - spec/support/message_delivery.rb
1097
- - features/access.feature
1098
- - features/billing_machine_invoices.feature
1099
- - features/billing_machine_multiple_vat.feature
1100
- - features/billing_machine_payment_terms.feature
1101
- - features/billing_machine_quotations.feature
1102
- - features/customer_vault_activity_types.feature
1103
- - features/customer_vault_corporations.feature
1104
- - features/customer_vault_filters.feature
1105
- - features/customer_vault_individuals.feature
1106
- - features/customer_vault_invoices.feature
1107
- - features/customer_vault_links.feature
1108
- - features/customer_vault_origins.feature
1109
1099
  - features/customer_vault_people.feature
1110
- - features/customer_vault_search.feature
1111
- - features/customer_vault_tasks.feature
1112
1100
  - features/expense_gun_categories.feature
1101
+ - features/customer_vault_activity_types.feature
1102
+ - features/users_management.feature
1103
+ - features/customer_vault_individuals.feature
1104
+ - features/billing_machine_quotations.feature
1113
1105
  - features/expense_gun_expenses.feature
1114
- - features/flyboy_task_comments.feature
1115
- - features/flyboy_tasks.feature
1106
+ - features/access.feature
1116
1107
  - features/flyboy_tasks_summary.feature
1117
- - features/step_definitions/access_steps.rb
1118
- - features/step_definitions/alexandrie_steps.rb
1119
- - features/step_definitions/billing_machine_invoices_steps.rb
1120
- - features/step_definitions/billing_machine_multiple_vat.rb
1121
- - features/step_definitions/billing_machine_payment_terms_steps.rb
1108
+ - features/customer_vault_corporations.feature
1109
+ - features/billing_machine_invoices.feature
1110
+ - features/support/env.rb
1111
+ - features/customer_vault_search.feature
1112
+ - features/billing_machine_payment_terms.feature
1113
+ - features/customer_vault_origins.feature
1114
+ - features/billing_machine_multiple_vat.feature
1115
+ - features/step_definitions/customer_vault_filters_steps.rb
1122
1116
  - features/step_definitions/billing_machine_quotations_steps.rb
1123
- - features/step_definitions/common_steps.rb
1124
- - features/step_definitions/customer_vault_activity_types_steps.rb
1117
+ - features/step_definitions/customer_vault_search_steps.rb
1118
+ - features/step_definitions/expense_gun_expenses_steps.rb
1125
1119
  - features/step_definitions/customer_vault_corporations_steps.rb
1126
- - features/step_definitions/customer_vault_filters_steps.rb
1120
+ - features/step_definitions/tasks_summary_steps.rb
1121
+ - features/step_definitions/flyboy_tasks_steps.rb
1127
1122
  - features/step_definitions/customer_vault_individuals_steps.rb
1123
+ - features/step_definitions/billing_machine_payment_terms_steps.rb
1124
+ - features/step_definitions/alexandrie_steps.rb
1125
+ - features/step_definitions/billing_machine_invoices_steps.rb
1126
+ - features/step_definitions/billing_machine_multiple_vat.rb
1128
1127
  - features/step_definitions/customer_vault_invoices_steps.rb
1129
- - features/step_definitions/customer_vault_links_steps.rb
1130
- - features/step_definitions/customer_vault_origins_steps.rb
1131
1128
  - features/step_definitions/customer_vault_people_steps.rb
1132
- - features/step_definitions/customer_vault_search_steps.rb
1133
- - features/step_definitions/customer_vault_tasks_steps.rb
1129
+ - features/step_definitions/users_management_step.rb
1134
1130
  - features/step_definitions/expense_gun_categories_steps.rb
1135
- - features/step_definitions/expense_gun_expenses_steps.rb
1131
+ - features/step_definitions/customer_vault_origins_steps.rb
1136
1132
  - features/step_definitions/flyboy_task_comments_steps.rb
1137
- - features/step_definitions/flyboy_tasks_steps.rb
1138
- - features/step_definitions/tasks_summary_steps.rb
1139
- - features/step_definitions/users_management_step.rb
1140
- - features/support/env.rb
1141
- - features/users_management.feature
1133
+ - features/step_definitions/customer_vault_activity_types_steps.rb
1134
+ - features/step_definitions/customer_vault_tasks_steps.rb
1135
+ - features/step_definitions/common_steps.rb
1136
+ - features/step_definitions/access_steps.rb
1137
+ - features/step_definitions/customer_vault_links_steps.rb
1138
+ - features/customer_vault_invoices.feature
1139
+ - features/customer_vault_links.feature
1140
+ - features/customer_vault_filters.feature
1141
+ - features/flyboy_task_comments.feature
1142
+ - features/customer_vault_tasks.feature
1143
+ - features/flyboy_tasks.feature