toolhound-ruby 1.0.32 → 1.0.33
Sign up to get free protection for your applications and to get access to all the features.
- checksums.yaml +4 -4
- data/lib/toolhound-ruby/base.rb +71 -3
- data/lib/toolhound-ruby/inventory_item.rb +69 -1
- data/lib/toolhound-ruby/version.rb +1 -1
- metadata +2 -2
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA1:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: a0a074d0a368c009ff282e578f2825a84aa1085d
|
4
|
+
data.tar.gz: fe00a3c1678033d581688b68514c93a2db0d58f5
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: e9107c0798c16c6d7a7adb599192a3962cfbdad1c31be02b09825fd4eefe491173b95381d087a127b6dd9ee3938d97a5fbbe6beb11fcaa190e3901918c19ea00
|
7
|
+
data.tar.gz: 07326504bf65b87b3825a5ebe4af11f765c2b48ef7a678f33d995a72f7b6d2fc69d14fca6a660a9f65b8dcd1cdd04395f8f04a0b456971f221be44cea1921278
|
data/lib/toolhound-ruby/base.rb
CHANGED
@@ -231,6 +231,10 @@ module Toolhound
|
|
231
231
|
arr.join(" AND ")
|
232
232
|
end
|
233
233
|
|
234
|
+
def build_group(groups)
|
235
|
+
groups
|
236
|
+
end
|
237
|
+
|
234
238
|
def _build_where(wheres)
|
235
239
|
arr = []
|
236
240
|
case wheres.class.to_s
|
@@ -299,8 +303,9 @@ module Toolhound
|
|
299
303
|
data = []
|
300
304
|
begin
|
301
305
|
results = connection.execute(query)
|
306
|
+
opts = {cache_rows: false}.merge(options || {})
|
302
307
|
|
303
|
-
results.each(
|
308
|
+
results.each(opts) do |row|
|
304
309
|
data << transform_attributes(row)
|
305
310
|
end
|
306
311
|
data
|
@@ -312,11 +317,72 @@ module Toolhound
|
|
312
317
|
finish_statement_handle(results)
|
313
318
|
end
|
314
319
|
|
320
|
+
def update_query(query, options)
|
321
|
+
begin
|
322
|
+
result = connection.execute(query)
|
323
|
+
result.do
|
324
|
+
rescue TinyTds::Error
|
325
|
+
client.reset_connection
|
326
|
+
retry
|
327
|
+
end
|
328
|
+
ensure
|
329
|
+
finish_statement_handle(result)
|
330
|
+
end
|
331
|
+
|
315
332
|
def build_and_query(options, query_options = {})
|
316
333
|
sql = build_sql(options)
|
317
334
|
results = query(sql, query_options)
|
318
335
|
end
|
319
336
|
|
337
|
+
def update(options, query_options = {})
|
338
|
+
sql = build_update_sql(options, query_options)
|
339
|
+
|
340
|
+
debug = query_options[:debug]
|
341
|
+
|
342
|
+
if sql && debug != true
|
343
|
+
update_query(sql, query_options)
|
344
|
+
end
|
345
|
+
|
346
|
+
end
|
347
|
+
|
348
|
+
def build_update_sql(options, query_options = {})
|
349
|
+
table = options[:table] ? formatted_table_name(options[:table]) : table_name
|
350
|
+
attributes = build_update_attributes(options[:attributes])
|
351
|
+
sql = nil
|
352
|
+
where = build_where(options[:where])
|
353
|
+
if attributes.length > 0
|
354
|
+
attributes = attributes.join(", ")
|
355
|
+
|
356
|
+
sql = "UPDATE #{table} SET #{attributes} WHERE #{where}"
|
357
|
+
puts sql
|
358
|
+
end
|
359
|
+
|
360
|
+
sql
|
361
|
+
# update tblCountFinal set
|
362
|
+
# intQuantity = isnull(intQuantity,0) + isnull(@p_Quantity,0),
|
363
|
+
# intQOH = isnull(intQOH,0) + isnull(@p_QuantityOnHand,0)
|
364
|
+
# where intCountFinalID = @CountFinalID
|
365
|
+
end
|
366
|
+
|
367
|
+
def build_update_attributes(attributes)
|
368
|
+
arr = []
|
369
|
+
case attributes.class.to_s
|
370
|
+
when "String"
|
371
|
+
arr << attributes
|
372
|
+
when "Hash"
|
373
|
+
attributes.each do |k, v|
|
374
|
+
name = formmatted_column_name(k)
|
375
|
+
arr << "#{name} = '#{v}'"
|
376
|
+
end
|
377
|
+
when "Array"
|
378
|
+
attributes.each do |v|
|
379
|
+
arr += build_update_attributes(v)
|
380
|
+
end
|
381
|
+
end
|
382
|
+
arr
|
383
|
+
|
384
|
+
end
|
385
|
+
|
320
386
|
|
321
387
|
def build_sql(obj)
|
322
388
|
limit = obj[:limit]
|
@@ -325,14 +391,16 @@ module Toolhound
|
|
325
391
|
from = obj[:from] ? formatted_table_name(obj[:from]) : table_name
|
326
392
|
where = obj[:where] ? build_where(obj[:where]) : nil
|
327
393
|
order = obj[:order]
|
394
|
+
group = obj[:group] ? build_group(obj[:group]) : nil
|
328
395
|
|
329
396
|
selects = "*" if selects.strip.length == 0
|
330
397
|
|
331
398
|
limit_str = limit ? "TOP(#{limit})" : ""
|
332
|
-
where_str = where.length > 0 ? "WHERE #{where}" : ""
|
399
|
+
where_str = where && where.length > 0 ? "WHERE #{where}" : ""
|
333
400
|
order_str = order ? "ORDER BY #{order}" : ""
|
401
|
+
group_str = group ? "GROUP BY #{group}" : ""
|
334
402
|
|
335
|
-
sql = "SELECT #{limit_str} #{selects} FROM #{from} #{joins} #{where_str} #{order_str}"
|
403
|
+
sql = "SELECT #{limit_str} #{selects} FROM #{from} #{joins} #{where_str} #{order_str} #{group_str}"
|
336
404
|
puts sql
|
337
405
|
sql
|
338
406
|
end
|
@@ -66,13 +66,53 @@ module Toolhound
|
|
66
66
|
|
67
67
|
end
|
68
68
|
|
69
|
+
def count(options = {})
|
70
|
+
|
71
|
+
entity_id = options[:entity_id]
|
72
|
+
|
73
|
+
selects = {
|
74
|
+
job_text: [:int_job_id],
|
75
|
+
inventory_item: [{ int_inventory_item_id: {as: :tool_count, agg: :count} }] #[{"count(*)" => {raw: true, as: :tools_assigned}}]
|
76
|
+
}
|
77
|
+
joins = []
|
78
|
+
joins << "INNER JOIN tblInventory ON (tblInventory.intInventoryID = tblInventoryItem.intInventoryID AND tblInventory.bolDeleted = 0)"
|
79
|
+
joins << "INNER JOIN tblInventoryID ON tblInventoryID.intInventoryItemID = tblInventoryItem.intInventoryItemID"
|
80
|
+
joins << "INNER JOIN tblInventoryType ON tblInventoryType.intInventoryTypeID = tblInventoryItem.intInventoryTypeID AND tblInventoryType.bolSerialized = 1"
|
81
|
+
joins << "INNER JOIN(
|
82
|
+
SELECT tblRentalItem.intInventoryIDID FROM tblRentalItem
|
83
|
+
INNER JOIN tblRentalDetail ON tblRentalDetail.intRentalDetailID = tblRentalItem.intRentalDetailID
|
84
|
+
INNER JOIN tblRental ON tblRental.intRentalID = tblRentalDetail.intRentalID AND tblRental.intEntityID = '#{entity_id}'
|
85
|
+
GROUP BY tblRentalItem.intInventoryIDID
|
86
|
+
) AS tblRentalQuery ON tblRentalQuery.intInventoryIDID = tblInventoryID.intInventoryIdID"
|
87
|
+
|
88
|
+
joins << "LEFT OUTER JOIN (
|
89
|
+
SELECT rc.intInventoryIDID, MAX(rc.intRentalChargeID) AS latest_id
|
90
|
+
FROM tblRentalCharge as rc
|
91
|
+
WHERE rc.intEntityID = '#{entity_id}'
|
92
|
+
GROUP BY rc.intInventoryIDID
|
93
|
+
) AS tblLatestCharge ON tblLatestCharge.intInventoryIDID = tblInventoryID.intInventoryIdID"
|
94
|
+
|
95
|
+
joins << "LEFT OUTER JOIN (
|
96
|
+
SELECT intJobID, intRentalChargeID, intRentalItemID
|
97
|
+
FROM tblRentalCharge
|
98
|
+
WHERE intEntityID = '#{entity_id}'
|
99
|
+
) AS tblJobCharge ON tblJobCharge.intRentalChargeID = tblLatestCharge.latest_id"
|
100
|
+
|
101
|
+
joins << "LEFT OUTER JOIN tblJobText on tblJobText.intJobID = tblJobCharge.intJobID AND tblJobText.varLocaleID = '#{locale}'"
|
102
|
+
|
103
|
+
build_and_query(selects: selects, joins: joins, group: "tblJobText.intJobID")
|
104
|
+
|
105
|
+
# GROUP BY tblJobText.intJobID
|
106
|
+
|
107
|
+
end
|
108
|
+
|
69
109
|
def charges(options = {})
|
70
110
|
options = (options || {}).dup
|
71
111
|
|
72
112
|
job_id = options[:job_id]
|
73
113
|
entity_id = options[:entity_id]
|
74
114
|
order = options[:order] || "tblInventoryText.varPartNo"
|
75
|
-
|
115
|
+
# 249
|
76
116
|
|
77
117
|
joins = default_joins
|
78
118
|
entity_query = ""
|
@@ -130,7 +170,35 @@ module Toolhound
|
|
130
170
|
|
131
171
|
end
|
132
172
|
|
173
|
+
def reassign(options)
|
174
|
+
options = (options || {}).dup
|
175
|
+
entity_id = options[:entity_id]
|
176
|
+
inventory_id_id = options[:inventory_id_id]
|
177
|
+
job_id = options[:job_id]
|
178
|
+
|
179
|
+
query_opts = {}
|
180
|
+
query_opts[:debug] = options.delete(:debug) if options[:debug]
|
133
181
|
|
182
|
+
raise ArgumentError.new(:entity_id) unless entity_id
|
183
|
+
raise ArgumentError.new(:inventory_id_id) unless inventory_id_id
|
184
|
+
raise ArgumentError.new(:job_id) unless job_id
|
134
185
|
|
186
|
+
sql = build_sql(from: "job", where: [{"job.int_job_id" => job_id}], limit: 1)
|
187
|
+
result = query(sql, first: true)
|
188
|
+
|
189
|
+
raise ArgumentError.new(:no_job) if result.length == 0
|
190
|
+
|
191
|
+
|
192
|
+
sql = "SELECT * FROM tblRentalCharge WHERE intInventoryIDID = '#{inventory_id_id}' AND intEntityID = '#{entity_id}' "
|
193
|
+
result = query(sql, first: true)
|
194
|
+
|
195
|
+
raise ArgumentError.new(:no_charge) if result.length == 0
|
196
|
+
|
197
|
+
id = result.first[:rental_charge_id]
|
198
|
+
update({attributes: {
|
199
|
+
int_job_id: job_id
|
200
|
+
}, table: "rental_charge", where: [{"rental_charge.int_rental_charge_id" => id}]}, query_opts)
|
201
|
+
|
202
|
+
end
|
135
203
|
end
|
136
204
|
end
|
metadata
CHANGED
@@ -1,14 +1,14 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: toolhound-ruby
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 1.0.
|
4
|
+
version: 1.0.33
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- Markus Klooth
|
8
8
|
autorequire:
|
9
9
|
bindir: bin
|
10
10
|
cert_chain: []
|
11
|
-
date: 2016-03-
|
11
|
+
date: 2016-03-23 00:00:00.000000000 Z
|
12
12
|
dependencies:
|
13
13
|
- !ruby/object:Gem::Dependency
|
14
14
|
name: tiny_tds
|