require File.dirname(__FILE__) + '/voidable' module QBFC class Transaction < Element is_base_class ID_NAME = "TxnID" class << self # Find by Reference Number of the Transaction record. # +options+ are the same as those for in +find+. def find_by_ref(sess, ref, options = {}) q = create_query(sess) q.query.RefNumberList.Add(ref) find(sess, :first, q, options) end # Find by TxnID of List record. # +options+ are the same as those for in +find+. def find_by_id(sess, id, options = {}) q = create_query(sess) q.query.TxnIDList.Add(id) find(sess, :first, q, options) end # Find by either ref or id. Tries id first, then ref. def find_by_ref_or_id(*args) find_by_id(*args) || find_by_ref(*args) end alias_method :find_by_unique_id, :find_by_ref_or_id end # Alias of TxnID for this record. def id @ole.txn_id end # Delete this Transaction def delete req = QBFC::Request.new(@sess, "TxnDel") req.txn_del_type = QBFC_CONST::const_get("Tdt#{qb_name}") req.txn_id = id req.submit return true end # Change cleared status of transaction # status can be one of: # - QBFC::CsCleared (or true) # - QBFC::CsNotCleared (or false) # - QBFC::CsPending def cleared_status=(status) req = QBFC::Request.new(@sess, "ClearedStatusMod") req.txn_id = id status = QBFC_CONST::CsCleared if status === true status = QBFC_CONST::CsNotCleared if status === false req.cleared_status = status req.submit return status end # Display the Transaction add (for new records) or edit dialog box def display if new_record? req = QBFC::Request.new(@sess, "TxnDisplayAdd") req.txn_display_add_type = QBFC_CONST::const_get("Tdat#{qb_name}") else req = QBFC::Request.new(@sess, "TxnDisplayMod") req.txn_display_mod_type = QBFC_CONST::const_get("Tdmt#{qb_name}") req.txn_id = id end req.submit return true end end end # Require subclass files Dir[File.dirname(__FILE__) + '/transactions/*.rb'].each do |file| require file end