effective_reports 0.4.0 → 0.4.1

Sign up to get free protection for your applications and to get access to all the features.
checksums.yaml CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA256:
3
- metadata.gz: bc5e577b9e0f7dbcd5425889023bc698c029deda52104a0a36e9ab3c5eb4a353
4
- data.tar.gz: 01ebdb1ecff80758de3a495dee72919e514ded99b4c831e1995ab1f6ca7b28d3
3
+ metadata.gz: 70923b082133448581e40494e8a68f93c231a8441fd7bbeda0281554ffe9f78b
4
+ data.tar.gz: 554d4e33b48736d92dbfed175a3aea01009f7fed5eda4c5f7bfcba8fe5c2c46e
5
5
  SHA512:
6
- metadata.gz: fed92ce6f5d9c049fae81dea487c1f061c4b05aed86202042fcbd5f4eb01de6b2bb2662d89b73fb9917fc79e188e500e3ab76be94e5c845f5005cad77734e6ff
7
- data.tar.gz: 7b90bca9c8cc801a7cdf5cb4e25603e94ee313a8a6ae607e30fedbe0c95dfc134f832af88467b2c7b3bbf348c1cad62370f789d98d014d9945a025bef9e66a8e
6
+ metadata.gz: 122a4720d2e2c3e883a53138ac7bcf954885b85d27ac486f92ee887471e9ae50be45a28e2bb1118cf57cffdd125557d499c09a1d4a4ff456bc7049f4c15f5659
7
+ data.tar.gz: da2fce3831d715481f6180e9a73882fd79ca3604ff061269a5542316669038f43cffcac4bbf8d41e124d8ac7de5304c118d9af070ae37edadd145dfd944c3b7d
@@ -6,6 +6,7 @@ module ActsAsReportable
6
6
  extend ActiveSupport::Concern
7
7
 
8
8
  PRICE_NAME_ATTRIBUTES = ['price', 'subtotal', 'tax', 'total', 'current_revenue', 'current_revenue_subtotal', 'current_revenue_tax', 'deferred_revenue', 'deferred_revenue_subtotal', 'deferred_revenue_tax', 'amount_owing', 'surcharge']
9
+ DENY_LIST = [:logged_changes, :password, :encrypted_password]
9
10
 
10
11
  module Base
11
12
  def acts_as_reportable(options = nil)
@@ -80,7 +81,7 @@ module ActsAsReportable
80
81
  end; h
81
82
  end
82
83
 
83
- atts.merge(associated)
84
+ atts.merge(associated).except(*DENY_LIST)
84
85
  end
85
86
 
86
87
  end
@@ -36,6 +36,16 @@ module Effective
36
36
  validates :title, presence: true, uniqueness: true
37
37
  validates :reportable_class_name, presence: true
38
38
 
39
+ validate do
40
+ error = begin
41
+ collection().to_sql; nil
42
+ rescue StandardError => e
43
+ e.message
44
+ end
45
+
46
+ errors.add(:base, "Invalid Report: #{error}") if error.present?
47
+ end
48
+
39
49
  def to_s
40
50
  title.presence || 'report'
41
51
  end
@@ -107,7 +117,7 @@ module Effective
107
117
 
108
118
  # Apply Scopes
109
119
  report_scopes.each do |scope|
110
- collection = (scope.value.nil? ? collection.send(scope.name) : collection.send(scope.name, scope.value))
120
+ collection = scope.apply_scope(collection)
111
121
  end
112
122
 
113
123
  # Apply Includes
@@ -37,9 +37,19 @@ module Effective
37
37
  end
38
38
 
39
39
  validate(if: -> {report&.reportable }) do
40
- unless report.reportable.new.reportable_scopes.key?(name.to_sym)
41
- errors.add(:name, "acts_as_reportable #{report.reportable} reportable_scopes() missing :#{name} scope")
40
+ reportable = report.reportable
41
+
42
+ if reportable.new.reportable_scopes.key?(name.to_sym) == false
43
+ errors.add(:name, "acts_as_reportable #{reportable} reportable_scopes() missing :#{name} scope")
44
+ end
45
+
46
+ scope_error = begin
47
+ apply_scope(reportable.all).to_sql; nil
48
+ rescue StandardError => e
49
+ e.message
42
50
  end
51
+
52
+ self.errors.add(:name, scope_error) if scope_error.present?
43
53
  end
44
54
 
45
55
  def to_s
@@ -54,5 +64,9 @@ module Effective
54
64
  return '=' if advanced?
55
65
  end
56
66
 
67
+ def apply_scope(collection)
68
+ value.nil? ? collection.send(name) : collection.send(name, value)
69
+ end
70
+
57
71
  end
58
72
  end
@@ -1,23 +1,24 @@
1
- - if report.description.present?
2
- %p= simple_format(report.description)
1
+ = card do
2
+ - if report.description.present?
3
+ %p= simple_format(report.description)
3
4
 
4
- - if report.filtered_report_columns.present? || report.report_scopes.present?
5
- %p The results of this report have been filtered by the following:
5
+ - if report.filtered_report_columns.present? || report.report_scopes.present?
6
+ %p The results of this report have been filtered by the following:
6
7
 
7
- - if report.filtered_report_columns.present?
8
- %p= badges(report.filtered_report_columns.map(&:to_s))
8
+ - if report.filtered_report_columns.present?
9
+ %p= badges(report.filtered_report_columns.map(&:to_s))
9
10
 
10
- - if report.report_scopes.present?
11
- %p= badges(report.report_scopes.map(&:to_s))
11
+ - if report.report_scopes.present?
12
+ %p= badges(report.report_scopes.map(&:to_s))
12
13
 
13
- = collapse('Show SQL') do
14
- %p= report.collection.to_sql
14
+ = collapse('Show SQL') do
15
+ %p= report.collection.to_sql
15
16
 
16
- - if (notifications = report.try(:notifications)).present?
17
- %p.mt-3
18
- The following notifications are sent based on this report:
19
- - notifications.each do |notification|
20
- = link_to(notification, effective_messaging.edit_admin_notification_path(notification), target: '_blank')
17
+ - if (notifications = report.try(:notifications)).present?
18
+ %p.mt-3
19
+ The following notifications are sent based on this report:
20
+ - notifications.each do |notification|
21
+ = link_to(notification, effective_messaging.edit_admin_notification_path(notification), target: '_blank')
21
22
 
22
- - datatable = EffectiveReportDatatable.new(report: report)
23
- = render_datatable(datatable)
23
+ - datatable = EffectiveReportDatatable.new(report: report)
24
+ = render_datatable(datatable)
@@ -1,3 +1,3 @@
1
1
  module EffectiveReports
2
- VERSION = '0.4.0'.freeze
2
+ VERSION = '0.4.1'.freeze
3
3
  end
metadata CHANGED
@@ -1,14 +1,14 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: effective_reports
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.4.0
4
+ version: 0.4.1
5
5
  platform: ruby
6
6
  authors:
7
7
  - Code and Effect
8
8
  autorequire:
9
9
  bindir: bin
10
10
  cert_chain: []
11
- date: 2023-10-26 00:00:00.000000000 Z
11
+ date: 2023-11-07 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: rails