lib/toolhound-ruby/transaction.rb in toolhound-ruby-1.0.12 vs lib/toolhound-ruby/transaction.rb in toolhound-ruby-1.0.13
- old
+ new
@@ -8,27 +8,88 @@
# self.table_name = :rental
# self.primary_key = :int_rental_id
def default_selects
+ # tblWorkOrder.varWorkOrderNo,
+ # tblInventoryID.varInventoryID,
{
- # manufacturer: [:int_manufacturer_id ],
- # manufacturer_text: [:var_manufacturer, :var_phone, :var_fax, :var_url]
- # rental_item_detail: [:var_status, :status_date, ],
- # rental_detail: [:int_rental_id, :int_inventory_id, :int_quantity, :dec_daily, :dec_weekly, :dec_monthly, :dec_selling_price],
+ transaction_detail: ['intInventoryIdID', :int_transaction_detail_id, :int_qty, :int_qty_return, :dec_unit_cost],
+ transaction: [:int_transaction_id, :dte_transaction_date, :var_transaction_no, :int_location_id, :int_entity_id, :int_job_id],
+ transaction_type: [:bol_return],
+ job_text: [:var_job_number, :var_job],
+ return_status: [:int_return_status_id],
+ return_status_text: [:var_return_status],
+ inventory_status_text: [:var_inventory_status],
+ entity: [{var_entity_id: "varJobNo"}],
+ entity_location_text: [:var_location_name],
+
+ inventory_id: [{var_inventory_id: "varInventoryIdNo"}],
+ inventory: [:int_inventory_id, :int_category_id, :int_sub_category_id],
+ inventory_text: [:var_description, :var_part_no, {varUserField1: "varGlRevenue"}, {varUserField2: "varGlCOGSCode"}, {varUserField3: "varPhaseCode"}],
+ inventory_item_text: [:var_serial_number]
}
end
def default_joins
arr = []
- # arr << "INNER JOIN tblManufacturerText ON (tblManufacturerText.intManufacturerID = tblManufacturer.intManufacturerID AND varLocaleID = '#{locale}')"
- # arr << "INNER JOIN tblRentalDetail ON (tblRentalDetail.intRentalDetailID = tblRentalItem.intRentalDetailID)"
+ arr << "INNER JOIN tblTransaction ON tblTransaction.intTransactionID = tblTransactionDetail.intTransactionID"
+ arr << "INNER JOIN tblTransactionType ON tblTransactionType.intTransactionTypeID = tblTransactionDetail.intTransactionTypeID"
+ arr << "INNER JOIN tblReturnStatus ON tblReturnStatus.intReturnStatusID = tblTransactionDetail.intReturnStatusID"
+ arr << "INNER JOIN tblReturnStatusText ON tblReturnStatusText.intReturnStatusID = tblReturnStatus.intReturnStatusID AND tblReturnStatusText.varLocaleID = '#{locale}'"
+ arr << "INNER JOIN tblInventoryStatusText ON tblInventoryStatusText.intInventoryStatusID = tblTransactionType.intInventoryStatusID AND tblInventoryStatusText.varLocaleID = '#{locale}'"
+ arr << "INNER JOIN tblInventoryID ON tblInventoryID.intInventoryIdID = tblTransactionDetail.intInventoryIdID"
+ arr << "INNER JOIN tblInventory ON tblInventory.intInventoryID = tblInventoryID.intInventoryID"
+ arr << "INNER JOIN tblInventoryText ON tblInventoryText.intInventoryID = tblInventory.intInventoryID AND tblInventoryText.varLocaleID = '#{locale}'"
+ arr << "LEFT OUTER JOIN tblInventoryItem ON tblInventoryItem.intInventoryItemID = tblInventoryID.intInventoryItemID"
+ arr << "LEFT OUTER JOIN tblInventoryItemText ON tblInventoryItemText.intInventoryItemID = tblInventoryItem.intInventoryItemID AND tblInventoryItemText.varLocaleID = '#{locale}'"
+ arr << "INNER JOIN tblEntity ON tblTransaction.intEntityID = tblEntity.intEntityID"
+ arr << "INNER JOIN tblLocation AS tblEntityLocation ON tblEntityLocation.intEntityID = tblEntity.intEntityID"
+ arr << "INNER JOIN tblLocationText AS tblEntityLocationText ON tblEntityLocationText.intLocationID = tblEntityLocation.intLocationID AND tblEntityLocationText.varLocaleID = '#{locale}'"
+ arr << "LEFT OUTER JOIN tblJobText ON tblJobText.intJobID = tblTransaction.intJobID AND tblJobText.varLocaleID = '#{locale}'"
+
+ # AND tblTransactionType.bolReturn = 'true'
arr
end
- def returns
-
+
+ def return_periods_for_entity(entity_id)
+ selects = {
+ transaction: [
+ {dte_transaction_date: {as: :min_date, agg: :min} },
+ {dte_transaction_date: {as: :max_date, agg: :max} }
+ ]
+ }
+ joins = []
+ joins << "INNER JOIN tblTransaction ON tblTransaction.intTransactionID = tblTransactionDetail.intTransactionID"
+ joins << "INNER JOIN tblTransactionType ON
+ tblTransactionType.intTransactionTypeID = tblTransactionDetail.intTransactionTypeID
+ AND tblTransactionType.bolReturn = 'true'
+ "
+
+
+ build_and_query(joins: joins, selects: selects, where: [{'transaction.int_entity_id' => entity_id}], from: 'tblTransactionDetail').first
+
+ end
+
+ def returns(options)
+ entity_id = options.delete :entity_id
+ from_date = options.delete :from_date
+ to_date = options.delete :to_date
+ damaged_only = options.delete :damaged_only
+
+ selects = default_selects
+ joins = default_joins
+ wheres = []
+ wheres << {"transaction_type.bol_return" => 'true'}
+
+ wheres << {"transaction.int_entity_id" => entity_id} if entity_id
+ wheres << "tblTransaction.dteTransactionDate BETWEEN '#{from_date}' AND '#{to_date}'" if from_date && to_date
+ wheres << "(tblReturnStatus.bolCreateWO = 1 OR tblReturnStatus.bolRetire = 1)" if damaged_only == true
+
+ build_and_query(joins: joins, selects: selects, where: wheres, from: 'tblTransactionDetail', order: "tblEntityLocationText.varLocationName")
+
end
# def insert(variables = {})
# vars = {created_user_id: 1, modified_user_id: 1, active: true, job: nil, created_date: nil, modified_date: nil}
# # procedure("Job_Insert", vars)
# end