your_ai_insight 1.0.9 → 1.0.10

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 CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA256:
3
- metadata.gz: d87c237089e57905bc9d515c0794f85aa8e398bb37d45395fe20b7350193f51d
4
- data.tar.gz: 52567467c46c142f6e5e23e27473a0c5dc67679130863513fdff295b77b6fbed
3
+ metadata.gz: 3241c83b9d80f1cffabef64df8128eb4d765b1c31667e256815257040bfb8861
4
+ data.tar.gz: 0ebe08ba0157fa78175d2f1188f57d62d97fee0c384fcf627bd20d897eb4e460
5
5
  SHA512:
6
- metadata.gz: a5b17824ec83493d6323b9afba879fd95184ceaec6a4928183ff87fe12f42cbea21deec59b5433d5bd360fc0940a502378047b79c95d1eb08bc276637fc94378
7
- data.tar.gz: f0fc882bd61d7741b3bc1bbda2504ee975a4bb5e5bd3a207a3af50c6c09f50d7be88060277d1e702d7056efec93fa68f499bcbc3a51b46db11495307b775e531
6
+ metadata.gz: 17e3e5509660d296e10855c05f3ac4df938ae9fc64974dc538c023d4b7e85d9d1ba994b7b205e7d157e88736559e6b6ef57e8b1f2fd66ef4580aba1d78fecada
7
+ data.tar.gz: 94b4d799978ea42d41354b7d57089972243866ce4e2d2fb0a059dafb1f33159c657fe033d61cdbdbc31588781598ff1c033befa0f91717c4bc45dbf1df8e2c96
@@ -80,15 +80,17 @@ module YourAiInsight
80
80
  end
81
81
 
82
82
  def jobs_by_status
83
- rows = exec_query("SELECT #{@c.jobs_status_col}, COUNT(*) as cnt FROM #{j} #{job_where} GROUP BY #{@c.jobs_status_col}")
83
+ col = @c.jobs_status_col
84
+ rows = exec_query("SELECT #{col}, COUNT(*) as cnt FROM #{j} #{job_where} GROUP BY #{col}")
84
85
  labels = { 0 => "new", 1 => "assigned", 2 => "active", 3 => "work_complete", 4 => "all_tasks_complete", 5 => "finaled" }
85
- rows.each_with_object({}) { |r, h| h[labels[r["status"].to_i] || r["status"].to_s] = r["cnt"].to_i }
86
+ rows.each_with_object({}) { |r, h| h[labels[r[col].to_i] || r[col].to_s] = r["cnt"].to_i }
86
87
  rescue StandardError; {}
87
88
  end
88
89
 
89
90
  def jobs_by_priority
90
- rows = exec_query("SELECT #{@c.jobs_priority_col}, COUNT(*) as cnt FROM #{j} #{job_where} AND #{@c.jobs_priority_col} IS NOT NULL GROUP BY #{@c.jobs_priority_col}")
91
- rows.each_with_object({}) { |r, h| h[r["priority"]] = r["cnt"].to_i }
91
+ col = @c.jobs_priority_col
92
+ rows = exec_query("SELECT #{col}, COUNT(*) as cnt FROM #{j} #{job_where} AND #{col} IS NOT NULL GROUP BY #{col}")
93
+ rows.each_with_object({}) { |r, h| h[r[col]] = r["cnt"].to_i }
92
94
  rescue StandardError; {}
93
95
  end
94
96
 
@@ -103,28 +105,28 @@ module YourAiInsight
103
105
 
104
106
  def jobs_on_hold_detail
105
107
  exec_query(<<~SQL)
106
- SELECT j.id, j.name, j.#{@c.jobs_priority_col}, j.#{@c.jobs_status_col},
107
- j.created_at, l.name as location_name, c.name as customer_name
108
+ SELECT #{j}.id, #{j}.name, #{j}.#{@c.jobs_priority_col}, #{j}.#{@c.jobs_status_col},
109
+ #{j}.created_at, l.name as location_name, c.name as customer_name
108
110
  FROM #{j}
109
- LEFT JOIN #{loc} l ON l.id = j.#{@c.jobs_location_id_col}
110
- LEFT JOIN #{cust} c ON c.id = j.#{@c.jobs_customer_id_col}
111
- #{job_where} AND j.#{@c.jobs_hold_col} = true
112
- ORDER BY j.created_at ASC LIMIT 25
111
+ LEFT JOIN #{loc} l ON l.id = #{j}.#{@c.jobs_location_id_col}
112
+ LEFT JOIN #{cust} c ON c.id = #{j}.#{@c.jobs_customer_id_col}
113
+ #{job_where} AND #{j}.#{@c.jobs_hold_col} = true
114
+ ORDER BY #{j}.created_at ASC LIMIT 25
113
115
  SQL
114
116
  rescue StandardError; []
115
117
  end
116
118
 
117
119
  def over_budget_jobs_detail
118
120
  exec_query(<<~SQL)
119
- SELECT j.id, j.name,
121
+ SELECT #{j}.id, #{j}.name,
120
122
  COALESCE(SUM(e.#{@c.expenses_actual_col}),0) as total_actual,
121
123
  COALESCE(SUM(e.#{@c.expenses_budget_col}),0) as total_budget,
122
124
  l.name as location_name
123
125
  FROM #{j}
124
- LEFT JOIN #{exp} e ON e.#{@c.expenses_job_id_col} = j.id
125
- LEFT JOIN #{loc} l ON l.id = j.#{@c.jobs_location_id_col}
126
+ LEFT JOIN #{exp} e ON e.#{@c.expenses_job_id_col} = #{j}.id
127
+ LEFT JOIN #{loc} l ON l.id = #{j}.#{@c.jobs_location_id_col}
126
128
  #{job_where}
127
- GROUP BY j.id, j.name, l.name
129
+ GROUP BY #{j}.id, #{j}.name, l.name
128
130
  HAVING COALESCE(SUM(e.#{@c.expenses_actual_col}),0) > COALESCE(SUM(e.#{@c.expenses_budget_col}),0)
129
131
  ORDER BY (COALESCE(SUM(e.#{@c.expenses_actual_col}),0) - COALESCE(SUM(e.#{@c.expenses_budget_col}),0)) DESC
130
132
  LIMIT 15
@@ -140,7 +142,7 @@ module YourAiInsight
140
142
  exec_query(<<~SQL)
141
143
  SELECT l.name, COUNT(j.id) as job_count
142
144
  FROM #{loc} l
143
- LEFT JOIN #{j} ON j.#{@c.jobs_location_id_col} = l.id
145
+ LEFT JOIN #{j} j ON j.#{@c.jobs_location_id_col} = l.id
144
146
  #{location_join_where("l")}
145
147
  GROUP BY l.name ORDER BY job_count DESC LIMIT 10
146
148
  SQL
@@ -151,7 +153,7 @@ module YourAiInsight
151
153
  exec_query(<<~SQL)
152
154
  SELECT c.name, COUNT(j.id) as job_count
153
155
  FROM #{cust} c
154
- LEFT JOIN #{j} ON j.#{@c.jobs_customer_id_col} = c.id
156
+ LEFT JOIN #{j} j ON j.#{@c.jobs_customer_id_col} = c.id
155
157
  #{customer_join_where("c")}
156
158
  GROUP BY c.name ORDER BY job_count DESC LIMIT 10
157
159
  SQL
@@ -191,15 +193,15 @@ module YourAiInsight
191
193
 
192
194
  def overdue_tasks_detail
193
195
  exec_query(<<~SQL)
194
- SELECT t.id, t.name, t.#{@c.tasks_complete_col}, t.#{@c.tasks_budget_col},
195
- t.#{@c.tasks_actual_col}, j.name as job_name, l.name as location_name
196
+ SELECT #{t}.id, #{t}.name, #{t}.#{@c.tasks_complete_col}, #{t}.#{@c.tasks_budget_col},
197
+ #{t}.#{@c.tasks_actual_col}, j.name as job_name, l.name as location_name
196
198
  FROM #{t}
197
- LEFT JOIN #{j} ON j.id = t.#{@c.tasks_job_id_col}
199
+ LEFT JOIN #{j} j ON j.id = #{t}.#{@c.tasks_job_id_col}
198
200
  LEFT JOIN #{loc} l ON l.id = j.#{@c.jobs_location_id_col}
199
201
  #{task_where}
200
- AND t.#{@c.tasks_complete_col} < CURRENT_DATE
201
- AND t.#{@c.tasks_status_col} != 2
202
- ORDER BY t.#{@c.tasks_complete_col} ASC LIMIT 20
202
+ AND #{t}.#{@c.tasks_complete_col} < CURRENT_DATE
203
+ AND #{t}.#{@c.tasks_status_col} != 2
204
+ ORDER BY #{t}.#{@c.tasks_complete_col} ASC LIMIT 20
203
205
  SQL
204
206
  rescue StandardError; []
205
207
  end
@@ -227,9 +229,9 @@ module YourAiInsight
227
229
  exec_query(<<~SQL)
228
230
  SELECT b.id, b.#{@c.bids_amount_col}, b.received, b.notes,
229
231
  t.name as task_name, j.name as job_name, v.name as vendor_name
230
- FROM #{b}
231
- LEFT JOIN #{t} ON #{t}.id = b.#{@c.bids_task_id_col}
232
- LEFT JOIN #{j} ON #{j}.id = #{t}.#{@c.tasks_job_id_col}
232
+ FROM #{b} b
233
+ LEFT JOIN #{t} t ON t.id = b.#{@c.bids_task_id_col}
234
+ LEFT JOIN #{j} j ON j.id = t.#{@c.tasks_job_id_col}
233
235
  LEFT JOIN vendors v ON v.id = b.vendor_id
234
236
  WHERE (b.#{@c.bids_status_col} IS NULL OR b.#{@c.bids_status_col} NOT IN ('accepted','rejected'))
235
237
  AND b.created_at BETWEEN #{range_sql}
@@ -365,7 +367,7 @@ module YourAiInsight
365
367
  def br = @c.budget_requests_table
366
368
 
367
369
  def range_sql
368
- "'#{@date_range.first.to_s(:db)}' AND '#{@date_range.last.to_s(:db)}'"
370
+ "'#{@date_range.first.strftime('%Y-%m-%d %H:%M:%S')}' AND '#{@date_range.last.strftime('%Y-%m-%d %H:%M:%S')}'"
369
371
  end
370
372
 
371
373
  def range_label
@@ -1,3 +1,3 @@
1
1
  module YourAiInsight
2
- VERSION = "1.0.9"
2
+ VERSION = "1.0.10"
3
3
  end
metadata CHANGED
@@ -1,7 +1,7 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: your_ai_insight
3
3
  version: !ruby/object:Gem::Version
4
- version: 1.0.9
4
+ version: 1.0.10
5
5
  platform: ruby
6
6
  authors:
7
7
  - AllPro IFM