lib/toolhound-ruby/inventory_item.rb in toolhound-ruby-1.0.22 vs lib/toolhound-ruby/inventory_item.rb in toolhound-ruby-1.0.23
- old
+ new
@@ -64,59 +64,66 @@
def for_inventory(inventory_id)
end
- def charges_for_entity(entity_id, job_id=nil)
- joins = default_joins
+ def charges(options = {})
+ options = (options || {}).dup
+
+ job_id = options[:job_id]
+ entity_id = options[:entity_id]
+ order = options[:order] || "tblInventoryText.varPartNo"
+
+
+ joins = default_joins
+ entity_query = ""
+ charge_entity_query = ""
+ charge_entity_query1 = ""
+ if entity_id
+ entity_query = "AND tblRental.intEntityID = '#{entity_id}'"
+ charge_entity_query = "WHERE rc.intEntityID = '#{entity_id}'"
+ charge_entity_query1 = "WHERE intEntityID = '#{entity_id}'"
+ end
+
joins << "INNER JOIN tblInventoryType ON tblInventoryType.intInventoryTypeID = tblInventoryItem.intInventoryTypeID AND tblInventoryType.bolSerialized = 1"
joins << "INNER JOIN(
SELECT tblRentalItem.intInventoryIDID, SUM(tblRentalItem.decTotalRent) AS decTotalRent
FROM tblRentalItem
INNER JOIN tblRentalDetail ON tblRentalDetail.intRentalDetailID = tblRentalItem.intRentalDetailID
- INNER JOIN tblRental ON tblRental.intRentalID = tblRentalDetail.intRentalID AND tblRental.intEntityID = '#{entity_id}'
+ INNER JOIN tblRental ON tblRental.intRentalID = tblRentalDetail.intRentalID #{entity_query}
GROUP BY tblRentalItem.intInventoryIDID
) AS tblRentalQuery ON tblRentalQuery.intInventoryIDID = tblInventoryID.intInventoryIdID"
+
joins << "LEFT OUTER JOIN (
SELECT rc.intInventoryIDID, MAX(rc.intRentalChargeID) AS latest_id
FROM tblRentalCharge as rc
- WHERE rc.intEntityID = '#{entity_id}'
+ #{charge_entity_query}
GROUP BY rc.intInventoryIDID
) AS tblLatestCharge ON tblLatestCharge.intInventoryIDID = tblInventoryID.intInventoryIdID"
+
joins << "LEFT OUTER JOIN (
SELECT tblRentalCharge.intJobID, tblRentalCharge.intRentalChargeID
FROM tblRentalCharge
- WHERE intEntityID = '#{entity_id}'
+ #{charge_entity_query1}
) AS tblJobCharge ON tblJobCharge.intRentalChargeID = tblLatestCharge.latest_id"
+
joins << "LEFT OUTER JOIN tblJobText on tblJobText.intJobID = tblJobCharge.intJobID AND tblJobText.varLocaleID = '#{locale}'"
- selects = default_selects
+ selects = default_selects
selects[:job_text] = [:int_job_id, :int_job_text_id, :var_job_number, :var_job]
selects[:rental_query] = [:dec_total_rent]
- # (tblInventoryItem.intQOH=@p_QOH OR @p_QOH IS NULL)
wheres = []
if job_id
if job_id == :null
wheres << "(tblJobText.intJobID IS NULL)"
else
wheres << "(tblJobText.intJobID = #{job_id})"
end
end
- build_and_query(selects: selects, where: wheres, joins: joins, order: "tblInventoryText.varPartNo")
- # SELECT tblInventoryItem.*, subquery1.total_rent FROM tblInventoryItem
- # INNER JOIN tblInventoryID ON tblInventoryItem.intInventoryItemID = tblInventoryID.intInventoryItemID
- # INNER JOIN tblInventoryItemText ON tblInventoryItemText.intInventoryItemID = tblInventoryItem.intInventoryItemID
- # INNER JOIN tblInventoryType ON tblInventoryType.intInventoryTypeID = tblInventoryItem.intInventoryTypeID AND tblInventoryType.bolSerialized = 1
- # INNER JOIN(
- # SELECT tblRentalItem.intInventoryIDID, SUM(tblRentalItem.decTotalRent) AS total_rent
- # FROM tblRentalItem
- # INNER JOIN tblRentalDetail ON tblRentalDetail.intRentalDetailID = tblRentalItem.intRentalDetailID
- # INNER JOIN tblRental ON tblRental.intRentalID = tblRentalDetail.intRentalID AND tblRental.intEntityID = 100002
- #
- # GROUP BY tblRentalItem.intInventoryIDID
- # ) AS subquery1 ON subquery1.intInventoryIDID = tblInventoryID.intInventoryIdID
+ build_and_query(selects: selects, where: wheres, joins: joins, order: order)
+
end
end