dorsale 3.9.3 → 3.9.4

Sign up to get free protection for your applications and to get access to all the features.
Files changed (59) hide show
  1. checksums.yaml +4 -4
  2. data/CHANGELOG.md +6 -0
  3. data/app/controllers/dorsale/billing_machine/application_controller.rb +14 -0
  4. data/app/controllers/dorsale/billing_machine/invoices_controller.rb +16 -12
  5. data/app/controllers/dorsale/billing_machine/quotations_controller.rb +32 -2
  6. data/app/{commands/dorsale/flyboy/task_commands.rb → crons/dorsale/flyboy/task_crons.rb} +1 -1
  7. data/app/mailers/dorsale/generic_mailer.rb +9 -0
  8. data/app/models/dorsale/billing_machine/email.rb +33 -0
  9. data/app/models/dorsale/billing_machine/invoice.rb +7 -2
  10. data/app/models/dorsale/billing_machine/quotation.rb +7 -2
  11. data/app/models/dorsale/email.rb +80 -0
  12. data/app/policies/dorsale/billing_machine/invoice_policy_helper.rb +1 -5
  13. data/app/policies/dorsale/billing_machine/quotation_policy_helper.rb +3 -0
  14. data/app/services/dorsale/billing_machine/pdf_file_generator.rb +6 -2
  15. data/app/views/dorsale/_actions.html.slim +1 -1
  16. data/app/views/dorsale/billing_machine/commons/_details.html.slim +121 -0
  17. data/app/views/dorsale/billing_machine/commons/_email.html.slim +16 -0
  18. data/app/views/dorsale/billing_machine/commons/_form.html.slim +115 -0
  19. data/app/views/dorsale/billing_machine/commons/_header_infos.html.slim +9 -0
  20. data/app/views/dorsale/billing_machine/{invoices → commons}/_line_details.html.slim +0 -0
  21. data/app/views/dorsale/billing_machine/commons/_line_fields.html.slim +27 -0
  22. data/app/views/dorsale/billing_machine/commons/_preview_button.html.slim +25 -0
  23. data/app/views/dorsale/billing_machine/invoices/_details.html.slim +1 -126
  24. data/app/views/dorsale/billing_machine/invoices/_form.html.slim +1 -115
  25. data/app/views/dorsale/billing_machine/invoices/_header_infos.html.slim +1 -9
  26. data/app/views/dorsale/billing_machine/invoices/_line_fields.html.slim +1 -27
  27. data/app/views/dorsale/billing_machine/invoices/_show_title.html.slim +2 -7
  28. data/app/views/dorsale/billing_machine/invoices/email.html.slim +1 -51
  29. data/app/views/dorsale/billing_machine/quotations/_details.html.slim +6 -1
  30. data/app/views/dorsale/billing_machine/quotations/_form.html.slim +1 -1
  31. data/app/views/dorsale/billing_machine/quotations/_header_infos.html.slim +1 -1
  32. data/app/views/dorsale/billing_machine/quotations/_line_fields.html.slim +1 -1
  33. data/app/views/dorsale/billing_machine/quotations/_show_actions.html.slim +4 -1
  34. data/app/views/dorsale/billing_machine/quotations/_show_title.html.slim +7 -1
  35. data/app/views/dorsale/billing_machine/quotations/email.html.slim +1 -0
  36. data/app/views/dorsale/forms/_send_email_buttons.html.slim +10 -0
  37. data/config/locales/billing_machine.en.yml +10 -5
  38. data/config/locales/billing_machine.fr.yml +10 -4
  39. data/config/locales/dorsale.en.yml +11 -0
  40. data/config/locales/dorsale.fr.yml +11 -0
  41. data/config/routes.rb +11 -4
  42. data/config/schedule.rb +1 -1
  43. data/features/billing_machine_invoices.feature +7 -0
  44. data/features/billing_machine_quotations.feature +14 -0
  45. data/features/step_definitions/billing_machine_invoices_steps.rb +17 -0
  46. data/features/step_definitions/billing_machine_quotations_steps.rb +40 -0
  47. data/features/step_definitions/flyboy_tasks_steps.rb +1 -1
  48. data/lib/dorsale/version.rb +1 -1
  49. data/spec/controllers/dorsale/billing_machine/invoices_controller_spec.rb +16 -0
  50. data/spec/controllers/dorsale/billing_machine/quotations_controller_spec.rb +19 -0
  51. data/spec/models/dorsale/billing_machine/invoice_spec.rb +4 -0
  52. data/spec/models/dorsale/billing_machine/quotation_spec.rb +5 -1
  53. data/spec/models/dorsale/expense_gun/expense_line_spec.rb +1 -1
  54. data/spec/rails_helper.rb +1 -4
  55. data/spec/routing/dorsale/billing_machine/invoices_routing_spec.rb +5 -0
  56. data/spec/routing/dorsale/billing_machine/quotations_routing_spec.rb +15 -0
  57. metadata +15 -6
  58. data/app/mailers/dorsale/billing_machine/invoice_mailer.rb +0 -13
  59. data/app/views/dorsale/billing_machine/quotations/_line_details.html.slim +0 -1
@@ -2,4 +2,23 @@ require "rails_helper"
2
2
 
3
3
  describe Dorsale::BillingMachine::QuotationsController, type: :controller do
4
4
  routes { Dorsale::Engine.routes }
5
+
6
+ let(:user) { create(:user) }
7
+ before(:each) { sign_in(user) }
8
+
9
+ describe "#preview" do
10
+ render_views
11
+
12
+ it "should render show" do
13
+ post :preview
14
+ expect(response).to render_template(:show)
15
+ end
16
+
17
+ it "should not save" do
18
+ post :preview
19
+ @quotation = assigns(:quotation)
20
+ expect(@quotation).to be_valid
21
+ expect(@quotation).to_not be_persisted
22
+ end
23
+ end # describe "#preview" do
5
24
  end
@@ -27,6 +27,10 @@ describe Dorsale::BillingMachine::Invoice, type: :model do
27
27
  expect(create(:billing_machine_invoice)).to be_valid
28
28
  end
29
29
 
30
+ it "should return document_type" do
31
+ expect(described_class.new.document_type).to eq :invoice
32
+ end
33
+
30
34
  describe "unique_index" do
31
35
  context "when unique index is 69" do
32
36
  it "should be assigned upon creation" do
@@ -7,7 +7,7 @@ describe Dorsale::BillingMachine::Quotation do
7
7
 
8
8
  it { is_expected.to validate_presence_of :date }
9
9
  it { is_expected.to validate_presence_of :state }
10
- it { is_expected.to ensure_inclusion_of(:state).in_array(described_class::STATES) }
10
+ it { is_expected.to validate_inclusion_of(:state).in_array(described_class::STATES) }
11
11
  it { is_expected.to respond_to :date }
12
12
  it { is_expected.to respond_to :label }
13
13
  it { is_expected.to respond_to :vat_amount }
@@ -21,6 +21,10 @@ describe Dorsale::BillingMachine::Quotation do
21
21
  expect(create(:billing_machine_quotation)).to be_valid
22
22
  end
23
23
 
24
+ it "should return document_type" do
25
+ expect(described_class.new.document_type).to eq :quotation
26
+ end
27
+
24
28
  describe "default values" do
25
29
  it "default date should be today" do
26
30
  expect(described_class.new.date).to eq Date.current
@@ -11,7 +11,7 @@ RSpec.describe ::Dorsale::ExpenseGun::ExpenseLine, type: :model do
11
11
  it { is_expected.to validate_presence_of :company_part }
12
12
  it { is_expected.to validate_numericality_of(:total_all_taxes).is_greater_than_or_equal_to(0) }
13
13
  it { is_expected.to validate_numericality_of(:company_part).is_greater_than_or_equal_to(0) }
14
- it { is_expected.to validate_numericality_of(:company_part).is_less_than_or_equal_to(100.0) }
14
+ it { is_expected.to validate_numericality_of(:company_part).is_less_than_or_equal_to(100) }
15
15
 
16
16
  it "expense line factory should be valid?" do
17
17
  expense_line = build :expense_gun_expense_line, expense: build(:expense_gun_expense)
@@ -3,6 +3,7 @@ ENV["RAILS_ENV"] = 'test'
3
3
  require 'spec_helper'
4
4
  require File.expand_path("../dummy/config/environment", __FILE__)
5
5
  require 'rspec/rails'
6
+ require "agilibox/rspec"
6
7
  require "yomu"
7
8
  # Add additional requires below this line. Rails is not loaded until this point!
8
9
  # Requires supporting ruby files with custom matchers and macros, etc,
@@ -51,8 +52,4 @@ RSpec.configure do |config|
51
52
  # The different available types are documented in the features, such as in
52
53
  # https://relishapp.com/rspec/rspec-rails/docs
53
54
  config.infer_spec_type_from_file_location!
54
-
55
- config.include FactoryBot::Syntax::Methods
56
-
57
- config.after { Timecop.return }
58
55
  end
@@ -49,6 +49,11 @@ describe ::Dorsale::BillingMachine::InvoicesController, type: :routing do
49
49
  route_to("dorsale/billing_machine/invoices#update", id: "1")
50
50
  end
51
51
 
52
+ it "#preview" do
53
+ expect(post "/billing_machine/invoices/preview").to \
54
+ route_to("dorsale/billing_machine/invoices#preview")
55
+ end
56
+
52
57
  it "#email via GET" do
53
58
  expect(get "/billing_machine/invoices/1/email").to \
54
59
  route_to("dorsale/billing_machine/invoices#email", id: "1")
@@ -39,6 +39,11 @@ describe ::Dorsale::BillingMachine::QuotationsController do
39
39
  route_to("dorsale/billing_machine/quotations#destroy", id: "1")
40
40
  end
41
41
 
42
+ it "#preview" do
43
+ expect(post "/billing_machine/quotations/preview").to \
44
+ route_to("dorsale/billing_machine/quotations#preview")
45
+ end
46
+
42
47
  it "#copy" do
43
48
  expect(post "/billing_machine/quotations/1/copy").to \
44
49
  route_to("dorsale/billing_machine/quotations#copy", id: "1")
@@ -48,5 +53,15 @@ describe ::Dorsale::BillingMachine::QuotationsController do
48
53
  expect(get "/billing_machine/quotations/1/create_invoice").to \
49
54
  route_to("dorsale/billing_machine/quotations#create_invoice", id: "1")
50
55
  end
56
+
57
+ it "#email via GET" do
58
+ expect(get "/billing_machine/quotations/1/email").to \
59
+ route_to("dorsale/billing_machine/quotations#email", id: "1")
60
+ end
61
+
62
+ it "#email via PORT" do
63
+ expect(post "/billing_machine/quotations/1/email").to \
64
+ route_to("dorsale/billing_machine/quotations#email", id: "1")
65
+ end
51
66
  end
52
67
  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.3
4
+ version: 3.9.4
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-12-20 00:00:00.000000000 Z
11
+ date: 2017-12-28 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: rails
@@ -525,7 +525,6 @@ files:
525
525
  - app/assets/stylesheets/dorsale/engines/flyboy.sass
526
526
  - app/assets/stylesheets/dorsale/engines/users.sass
527
527
  - app/assets/stylesheets/dorsale/opt/bootstrap_nav_left.sass
528
- - app/commands/dorsale/flyboy/task_commands.rb
529
528
  - app/controllers/concerns/dorsale/flyboy/tasks_summary_concern.rb
530
529
  - app/controllers/dorsale/alexandrie/attachments_controller.rb
531
530
  - app/controllers/dorsale/application_controller.rb
@@ -547,6 +546,7 @@ files:
547
546
  - app/controllers/dorsale/flyboy/task_comments_controller.rb
548
547
  - app/controllers/dorsale/flyboy/tasks_controller.rb
549
548
  - app/controllers/dorsale/users_controller.rb
549
+ - app/crons/dorsale/flyboy/task_crons.rb
550
550
  - app/filters/dorsale/billing_machine/small_data/filter_for_invoices.rb
551
551
  - app/filters/dorsale/billing_machine/small_data/filter_for_quotations.rb
552
552
  - app/filters/dorsale/billing_machine/small_data/filter_strategy_by_customer.rb
@@ -569,8 +569,8 @@ files:
569
569
  - app/helpers/dorsale/flyboy/application_helper.rb
570
570
  - app/helpers/dorsale/users_helper.rb
571
571
  - app/mailers/dorsale/application_mailer.rb
572
- - app/mailers/dorsale/billing_machine/invoice_mailer.rb
573
572
  - app/mailers/dorsale/flyboy/task_mailer.rb
573
+ - app/mailers/dorsale/generic_mailer.rb
574
574
  - app/mailers/dorsale/user_mailer.rb
575
575
  - app/models/dorsale/address.rb
576
576
  - app/models/dorsale/alexandrie.rb
@@ -578,6 +578,7 @@ files:
578
578
  - app/models/dorsale/alexandrie/attachment_type.rb
579
579
  - app/models/dorsale/application_record.rb
580
580
  - app/models/dorsale/billing_machine.rb
581
+ - app/models/dorsale/billing_machine/email.rb
581
582
  - app/models/dorsale/billing_machine/invoice.rb
582
583
  - app/models/dorsale/billing_machine/invoice_line.rb
583
584
  - app/models/dorsale/billing_machine/payment_term.rb
@@ -595,6 +596,7 @@ files:
595
596
  - app/models/dorsale/customer_vault/origin.rb
596
597
  - app/models/dorsale/customer_vault/person.rb
597
598
  - app/models/dorsale/customer_vault/person_data.rb
599
+ - app/models/dorsale/email.rb
598
600
  - app/models/dorsale/expense_gun.rb
599
601
  - app/models/dorsale/expense_gun/category.rb
600
602
  - app/models/dorsale/expense_gun/expense.rb
@@ -659,12 +661,18 @@ files:
659
661
  - app/views/dorsale/alexandrie/attachments/_new_disabled.html.slim
660
662
  - app/views/dorsale/alexandrie/attachments/_progress_bar.html.slim
661
663
  - app/views/dorsale/alexandrie/attachments/index.html.slim
664
+ - app/views/dorsale/billing_machine/commons/_details.html.slim
665
+ - app/views/dorsale/billing_machine/commons/_email.html.slim
666
+ - app/views/dorsale/billing_machine/commons/_form.html.slim
667
+ - app/views/dorsale/billing_machine/commons/_header_infos.html.slim
668
+ - app/views/dorsale/billing_machine/commons/_line_details.html.slim
669
+ - app/views/dorsale/billing_machine/commons/_line_fields.html.slim
670
+ - app/views/dorsale/billing_machine/commons/_preview_button.html.slim
662
671
  - app/views/dorsale/billing_machine/invoices/_details.html.slim
663
672
  - app/views/dorsale/billing_machine/invoices/_filters.html.slim
664
673
  - app/views/dorsale/billing_machine/invoices/_form.html.slim
665
674
  - app/views/dorsale/billing_machine/invoices/_header_infos.html.slim
666
675
  - app/views/dorsale/billing_machine/invoices/_index_actions.html.slim
667
- - app/views/dorsale/billing_machine/invoices/_line_details.html.slim
668
676
  - app/views/dorsale/billing_machine/invoices/_line_fields.html.slim
669
677
  - app/views/dorsale/billing_machine/invoices/_list.html.slim
670
678
  - app/views/dorsale/billing_machine/invoices/_show_actions.html.slim
@@ -688,12 +696,12 @@ files:
688
696
  - app/views/dorsale/billing_machine/quotations/_form.html.slim
689
697
  - app/views/dorsale/billing_machine/quotations/_header_infos.html.slim
690
698
  - app/views/dorsale/billing_machine/quotations/_index_actions.html.slim
691
- - app/views/dorsale/billing_machine/quotations/_line_details.html.slim
692
699
  - app/views/dorsale/billing_machine/quotations/_line_fields.html.slim
693
700
  - app/views/dorsale/billing_machine/quotations/_list.html.slim
694
701
  - app/views/dorsale/billing_machine/quotations/_show_actions.html.slim
695
702
  - app/views/dorsale/billing_machine/quotations/_show_title.html.slim
696
703
  - app/views/dorsale/billing_machine/quotations/edit.html.slim
704
+ - app/views/dorsale/billing_machine/quotations/email.html.slim
697
705
  - app/views/dorsale/billing_machine/quotations/index.html.slim
698
706
  - app/views/dorsale/billing_machine/quotations/new.html.slim
699
707
  - app/views/dorsale/billing_machine/quotations/show.html.slim
@@ -790,6 +798,7 @@ files:
790
798
  - app/views/dorsale/flyboy/tasks/show.html.slim
791
799
  - app/views/dorsale/flyboy/tasks/summary.html.slim
792
800
  - app/views/dorsale/forms/_avatar.html.slim
801
+ - app/views/dorsale/forms/_send_email_buttons.html.slim
793
802
  - app/views/dorsale/user_mailer/new_account.html.slim
794
803
  - app/views/dorsale/users/_form.html.slim
795
804
  - app/views/dorsale/users/_index_actions.html.slim
@@ -1,13 +0,0 @@
1
- class Dorsale::BillingMachine::InvoiceMailer < ::Dorsale::ApplicationMailer
2
- def send_invoice_to_customer(invoice, subject, body, sender = nil)
3
- attachments["#{invoice.t}_#{invoice.tracking_id}.pdf"] = invoice.pdf_file.read
4
-
5
- mail(
6
- :to => invoice.customer.email,
7
- :cc => sender.email,
8
- :reply_to => sender.email,
9
- :subject => subject,
10
- :body => body,
11
- )
12
- end
13
- end
@@ -1 +0,0 @@
1
- = render "dorsale/billing_machine/invoices/line_details", line: line