mirror of
				https://github.com/fspc/BikeShed-1.git
				synced 2025-11-04 01:15:36 -05:00 
			
		
		
		
	Completed adding transactions
This commit is contained in:
		
							parent
							
								
									55d0b8f2f7
								
							
						
					
					
						commit
						873bccb030
					
				@ -10,17 +10,35 @@ class AppTabPanel < Netzke::Basepack::TabPanel
 | 
			
		||||
 | 
			
		||||
    #all users
 | 
			
		||||
    #  (had to use hash for borders to get the title to display properly)
 | 
			
		||||
    @@app_tab_panel_items = [ :transactions_border, {layout: :fit, wrappedComponent: :bikes_border, title: "Bikes"}, {layout: :fit, wrappedComponent: :brands_and_models_border, title: "Brands/Models"}]
 | 
			
		||||
    @@app_tab_panel_items = [ { layout: :fit,
 | 
			
		||||
                                wrappedComponent: :bikes_border,
 | 
			
		||||
                                title: "Bikes"},
 | 
			
		||||
                              { layout: :fit,
 | 
			
		||||
                                wrappedComponent: :brands_and_models_border,
 | 
			
		||||
                                title: "Brands/Models"}
 | 
			
		||||
                              ]
 | 
			
		||||
 | 
			
		||||
    #for users
 | 
			
		||||
    if controller.current_user.user?
 | 
			
		||||
      # (had to use hash for borders to get the title to display properly)
 | 
			
		||||
      @@app_tab_panel_items.concat [{ layout: :fit, wrappedComponent: :user_profile_border, title: "Profile"}]
 | 
			
		||||
      @@app_tab_panel_items.concat [{ layout: :fit,
 | 
			
		||||
                                      wrappedComponent: :user_profile_border,
 | 
			
		||||
                                      title: "Profile"},
 | 
			
		||||
                                    { layout: :fit,
 | 
			
		||||
                                      wrappedComponent: :user_transactions_border,
 | 
			
		||||
                                      title: "Transactions"}
 | 
			
		||||
                                    ]
 | 
			
		||||
    end
 | 
			
		||||
    #for admins
 | 
			
		||||
    if controller.current_user.admin?
 | 
			
		||||
      # (had to use hash for borders to get the title to display properly)
 | 
			
		||||
      @@app_tab_panel_items.concat [{ layout: :fit, wrappedComponent: :users_and_profiles_border, title: "Users/Profiles"}, :logs]
 | 
			
		||||
      @@app_tab_panel_items.concat [{ layout: :fit,
 | 
			
		||||
                                      wrappedComponent: :users_and_profiles_border,
 | 
			
		||||
                                      title: "Users/Profiles"},
 | 
			
		||||
                                      { layout: :fit,
 | 
			
		||||
                                      wrappedComponent: :transactions_border,
 | 
			
		||||
                                      title: "Transactions"},
 | 
			
		||||
                                      :logs]
 | 
			
		||||
    end
 | 
			
		||||
 | 
			
		||||
    @@app_tab_panel_items.each do |item|
 | 
			
		||||
 | 
			
		||||
@ -44,6 +44,7 @@ class BikeLogs < Netzke::Basepack::Grid
 | 
			
		||||
      { :name => :start_date},
 | 
			
		||||
      { :name => :end_date},
 | 
			
		||||
      { :name => :description},
 | 
			
		||||
      #had to hack acts_as_loggable/log.rb to get this to work
 | 
			
		||||
      { :name => :bike_action__action, :field_label => 'Action'}
 | 
			
		||||
    ]
 | 
			
		||||
  end
 | 
			
		||||
 | 
			
		||||
							
								
								
									
										67
									
								
								app/components/transaction_logs.rb
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										67
									
								
								app/components/transaction_logs.rb
									
									
									
									
									
										Normal file
									
								
							@ -0,0 +1,67 @@
 | 
			
		||||
class TransactionLogs < Netzke::Basepack::Grid
 | 
			
		||||
 | 
			
		||||
  def configure(c)
 | 
			
		||||
    super
 | 
			
		||||
 | 
			
		||||
    c.model = "ActsAsLoggable::Log"
 | 
			
		||||
    c.title = "Transaction Payments"
 | 
			
		||||
    c.data_store = {auto_load: false}
 | 
			
		||||
    c.scope = lambda { |rel| rel.where(:loggable_type => 'Transaction',:loggable_id => session[:selected_transaction_id]);}
 | 
			
		||||
    c.strong_default_attrs = {
 | 
			
		||||
      :loggable_type => 'Transaction',
 | 
			
		||||
      :loggable_id => session[:selected_transaction_id],
 | 
			
		||||
      :log_action_type => 'ActsAsLoggable::TransactionAction',
 | 
			
		||||
      :logger_type => 'User',
 | 
			
		||||
      :logger_id => controller.current_user.id,
 | 
			
		||||
      :start_date => Time.now.to_formatted_s(:db),
 | 
			
		||||
      :end_date => Time.now.to_formatted_s(:db)
 | 
			
		||||
    }
 | 
			
		||||
 | 
			
		||||
    c.columns = [
 | 
			
		||||
      { :name => :start_date, :format => "g:ia - D, M j - Y", :width => 165, :default_value => Time.now.to_formatted_s(:db), :text => 'Date'  },
 | 
			
		||||
      { :name => :description, :text => "Amount"} ,
 | 
			
		||||
      { :name => :transaction_action__action, :text => 'Method'},
 | 
			
		||||
      { :name => :logged_by, :getter => lambda{ |rec|
 | 
			
		||||
          user = User.find_by_id(rec.logger_id)
 | 
			
		||||
          user.nil? ? "" : "#{user.first_name} #{user.last_name}"
 | 
			
		||||
        },
 | 
			
		||||
        :text => "Processed by"
 | 
			
		||||
      }
 | 
			
		||||
    ]
 | 
			
		||||
 | 
			
		||||
    if controller.current_user.user?
 | 
			
		||||
      c.prohibit_update = true
 | 
			
		||||
      c.prohibit_create = true
 | 
			
		||||
      c.prohibit_delete = true
 | 
			
		||||
    end
 | 
			
		||||
 | 
			
		||||
  end
 | 
			
		||||
 | 
			
		||||
  def default_fields_for_forms
 | 
			
		||||
    customer = nil
 | 
			
		||||
    item = nil
 | 
			
		||||
    if session[:selected_transaction_id]
 | 
			
		||||
      trans = Transaction.find_by_id(session[:selected_transaction_id])
 | 
			
		||||
      customer = trans.customer
 | 
			
		||||
      item = trans.item
 | 
			
		||||
    end
 | 
			
		||||
    customer = "No Customer Selected" if customer.nil?
 | 
			
		||||
    item = "No Item Selected" if item.nil?
 | 
			
		||||
    [
 | 
			
		||||
      { :no_binding => true, :xtype => 'displayfield', :fieldLabel => "Payment from:", :value => "#{customer.to_s}"},
 | 
			
		||||
      { :no_binding => true, :xtype => 'displayfield', :fieldLabel => "Payment for:", :value => "#{item.to_s}"},
 | 
			
		||||
      { :name => :description, :xtype => 'numberfield', :field_label => 'Amount'},
 | 
			
		||||
      #had to hack acts_as_loggable/log.rb to get this to work
 | 
			
		||||
      { :name => :transaction_action__action, :field_label => 'Payment Method'}
 | 
			
		||||
    ]
 | 
			
		||||
  end
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
  #override with nil to remove actions
 | 
			
		||||
  def default_bbar
 | 
			
		||||
    bbar = [ :search ]
 | 
			
		||||
    bbar.concat [ :apply, :add_in_form ] if not controller.current_user.user?
 | 
			
		||||
    bbar
 | 
			
		||||
  end
 | 
			
		||||
 | 
			
		||||
end
 | 
			
		||||
@ -20,7 +20,8 @@ class Transactions < Netzke::Basepack::Grid
 | 
			
		||||
                                              user = rec.customer
 | 
			
		||||
                                              user.nil? ? "" : "#{user.first_name} #{user.last_name}"
 | 
			
		||||
                                           }
 | 
			
		||||
      }
 | 
			
		||||
      },
 | 
			
		||||
      :created_at
 | 
			
		||||
    ]
 | 
			
		||||
 | 
			
		||||
  end
 | 
			
		||||
@ -52,4 +53,10 @@ class Transactions < Netzke::Basepack::Grid
 | 
			
		||||
  def default_bbar
 | 
			
		||||
    [ :apply, :add_in_form, :search ]
 | 
			
		||||
  end
 | 
			
		||||
=begin
 | 
			
		||||
  #needed for transaction selection
 | 
			
		||||
  js_configure do |c|
 | 
			
		||||
    c.mixin :init_component
 | 
			
		||||
  end
 | 
			
		||||
=end
 | 
			
		||||
end
 | 
			
		||||
 | 
			
		||||
@ -2,6 +2,7 @@ class TransactionsBorder < Netzke::Base
 | 
			
		||||
  # Remember regions collapse state and size
 | 
			
		||||
  include Netzke::Basepack::ItemPersistence
 | 
			
		||||
  component :transactions
 | 
			
		||||
  component :transaction_logs
 | 
			
		||||
  #users and customers components are required for the transactions form
 | 
			
		||||
  component :users_and_customers_accordian
 | 
			
		||||
 | 
			
		||||
@ -11,6 +12,7 @@ class TransactionsBorder < Netzke::Base
 | 
			
		||||
    c.title = "Transactions"
 | 
			
		||||
    c.items = [
 | 
			
		||||
     { netzke_component: :transactions, region: :center, height: 300, split: true },
 | 
			
		||||
     { netzke_component: :transaction_logs, region: :east, width: 300, split: true },
 | 
			
		||||
     { netzke_component: :users_and_customers_accordian, region: :south, height: 300, split: true }
 | 
			
		||||
    ]
 | 
			
		||||
  end
 | 
			
		||||
@ -21,9 +23,8 @@ class TransactionsBorder < Netzke::Base
 | 
			
		||||
    c.mixin :init_component
 | 
			
		||||
  end
 | 
			
		||||
 | 
			
		||||
  endpoint :select_customer do |params, this|
 | 
			
		||||
    session[:selected_customer_id] = params[:customer_id]
 | 
			
		||||
    session[:selected_customer_type] = params[:customer_type]
 | 
			
		||||
  endpoint :select_transaction do |params, this|
 | 
			
		||||
    session[:selected_transaction_id] = params[:transaction_id]
 | 
			
		||||
  end
 | 
			
		||||
 | 
			
		||||
end
 | 
			
		||||
 | 
			
		||||
@ -0,0 +1,14 @@
 | 
			
		||||
{
 | 
			
		||||
  initComponent: function(){
 | 
			
		||||
    // calling superclass's initComponent
 | 
			
		||||
    this.callParent();
 | 
			
		||||
 | 
			
		||||
    // setting the 'rowclick' event
 | 
			
		||||
    var view = this.getComponent('transactions').getView();
 | 
			
		||||
    view.on('itemclick', function(view, record){
 | 
			
		||||
      // The beauty of using Ext.Direct: calling 3 endpoints in a row, which results in a single call to the server!
 | 
			
		||||
      this.selectTransaction({transaction_id: record.get('id')});
 | 
			
		||||
      this.getComponent('transaction_logs').getStore().load();
 | 
			
		||||
    }, this);
 | 
			
		||||
  }
 | 
			
		||||
}
 | 
			
		||||
@ -58,6 +58,7 @@ class UserLogs < Netzke::Basepack::Grid
 | 
			
		||||
      { :name => :start_date},
 | 
			
		||||
      { :name => :end_date},
 | 
			
		||||
      { :name => :description},
 | 
			
		||||
      #had to hack acts_as_loggable/log.rb to get this to work
 | 
			
		||||
      { :name => :user_action__action, :field_label => 'Action', :value => action_id},
 | 
			
		||||
      { :name => :for_bike, :checkboxName => :copy_log, :inputValue => true, :title => "Copy description to a Bike's History?", :xtype => 'fieldset', :checkboxToggle => true, :collapsed => true, :items => [
 | 
			
		||||
          {:xtype => 'combo', :no_binding => true, :name => :copy_id, :title => 'Bike', :fieldLabel => 'Bike', :store => bike_store, :value => bike_id}
 | 
			
		||||
 | 
			
		||||
							
								
								
									
										40
									
								
								app/components/user_transactions.rb
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										40
									
								
								app/components/user_transactions.rb
									
									
									
									
									
										Normal file
									
								
							@ -0,0 +1,40 @@
 | 
			
		||||
class UserTransactions < Netzke::Basepack::Grid
 | 
			
		||||
 | 
			
		||||
  def configure(c)
 | 
			
		||||
    super
 | 
			
		||||
 | 
			
		||||
    c.model = "Transaction"
 | 
			
		||||
    c.title = "Transactions"
 | 
			
		||||
    c.scope = lambda { |rel| rel.where(:customer_id => controller.current_user.id, :customer_type => 'User');}
 | 
			
		||||
    c.data_store = { auto_load: true }
 | 
			
		||||
    c.columns = [
 | 
			
		||||
      :amount,
 | 
			
		||||
      :item,
 | 
			
		||||
      { :name => :bike__serial_number},
 | 
			
		||||
      { :name => :vendor, :getter => lambda { |rec|
 | 
			
		||||
                                              user = rec.vendor
 | 
			
		||||
                                              user.nil? ? "" : "#{user.first_name} #{user.last_name}"
 | 
			
		||||
                                           }
 | 
			
		||||
      },
 | 
			
		||||
      { :name => :customer, :getter => lambda { |rec|
 | 
			
		||||
                                              user = rec.customer
 | 
			
		||||
                                              user.nil? ? "" : "#{user.first_name} #{user.last_name}"
 | 
			
		||||
                                           }
 | 
			
		||||
      },
 | 
			
		||||
      :created_at
 | 
			
		||||
    ]
 | 
			
		||||
 | 
			
		||||
    if controller.current_user.user?
 | 
			
		||||
      c.prohibit_update = true
 | 
			
		||||
      c.prohibit_create = true
 | 
			
		||||
      c.prohibit_delete = true
 | 
			
		||||
    end
 | 
			
		||||
  end
 | 
			
		||||
 | 
			
		||||
  #override with nil to remove actions
 | 
			
		||||
  def default_bbar
 | 
			
		||||
    bbar = [ :search ]
 | 
			
		||||
    bbar.concat [ :apply, :add_in_form ] if not controller.current_user.user?
 | 
			
		||||
    bbar
 | 
			
		||||
  end
 | 
			
		||||
end
 | 
			
		||||
							
								
								
									
										27
									
								
								app/components/user_transactions_border.rb
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										27
									
								
								app/components/user_transactions_border.rb
									
									
									
									
									
										Normal file
									
								
							@ -0,0 +1,27 @@
 | 
			
		||||
class UserTransactionsBorder < Netzke::Base
 | 
			
		||||
  # Remember regions collapse state and size
 | 
			
		||||
  include Netzke::Basepack::ItemPersistence
 | 
			
		||||
  component :user_transactions
 | 
			
		||||
  component :transaction_logs
 | 
			
		||||
 | 
			
		||||
  def configure(c)
 | 
			
		||||
    super
 | 
			
		||||
    c.header = false
 | 
			
		||||
    c.title = "Transactions"
 | 
			
		||||
    c.items = [
 | 
			
		||||
     { netzke_component: :user_transactions, region: :center, height: 300, split: true },
 | 
			
		||||
     { netzke_component: :transaction_logs, region: :south, height: 300, split: true }
 | 
			
		||||
    ]
 | 
			
		||||
  end
 | 
			
		||||
 | 
			
		||||
  js_configure do |c|
 | 
			
		||||
    c.layout = :border
 | 
			
		||||
    c.border = false
 | 
			
		||||
    c.mixin :init_component
 | 
			
		||||
  end
 | 
			
		||||
 | 
			
		||||
  endpoint :select_transaction do |params, this|
 | 
			
		||||
    session[:selected_transaction_id] = params[:transaction_id]
 | 
			
		||||
  end
 | 
			
		||||
 | 
			
		||||
end
 | 
			
		||||
@ -0,0 +1,14 @@
 | 
			
		||||
{
 | 
			
		||||
  initComponent: function(){
 | 
			
		||||
    // calling superclass's initComponent
 | 
			
		||||
    this.callParent();
 | 
			
		||||
 | 
			
		||||
    // setting the 'rowclick' event
 | 
			
		||||
    var view = this.getComponent('user_transactions').getView();
 | 
			
		||||
    view.on('itemclick', function(view, record){
 | 
			
		||||
      // The beauty of using Ext.Direct: calling 3 endpoints in a row, which results in a single call to the server!
 | 
			
		||||
      this.selectTransaction({transaction_id: record.get('id')});
 | 
			
		||||
      this.getComponent('transaction_logs').getStore().load();
 | 
			
		||||
    }, this);
 | 
			
		||||
  }
 | 
			
		||||
}
 | 
			
		||||
@ -1,7 +1,8 @@
 | 
			
		||||
class ActsAsLoggable::TransactionAction < ActiveRecord::Base
 | 
			
		||||
  attr_accessible :action
 | 
			
		||||
 | 
			
		||||
  belongs_to :bike
 | 
			
		||||
  has_many :logs
 | 
			
		||||
  #belongs_to :bike
 | 
			
		||||
 | 
			
		||||
  def to_s
 | 
			
		||||
    self.action
 | 
			
		||||
 | 
			
		||||
		Loading…
	
	
			
			x
			
			
		
	
		Reference in New Issue
	
	Block a user