mirror of
				https://github.com/fspc/BikeShed-1.git
				synced 2025-10-31 08:55:36 -04:00 
			
		
		
		
	Completed adding transactions
This commit is contained in:
		
							parent
							
								
									55d0b8f2f7
								
							
						
					
					
						commit
						873bccb030
					
				| @ -10,17 +10,35 @@ class AppTabPanel < Netzke::Basepack::TabPanel | |||||||
| 
 | 
 | ||||||
|     #all users |     #all users | ||||||
|     #  (had to use hash for borders to get the title to display properly) |     #  (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 |     #for users | ||||||
|     if controller.current_user.user? |     if controller.current_user.user? | ||||||
|       # (had to use hash for borders to get the title to display properly) |       # (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 |     end | ||||||
|     #for admins |     #for admins | ||||||
|     if controller.current_user.admin? |     if controller.current_user.admin? | ||||||
|       # (had to use hash for borders to get the title to display properly) |       # (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 |     end | ||||||
| 
 | 
 | ||||||
|     @@app_tab_panel_items.each do |item| |     @@app_tab_panel_items.each do |item| | ||||||
|  | |||||||
| @ -44,6 +44,7 @@ class BikeLogs < Netzke::Basepack::Grid | |||||||
|       { :name => :start_date}, |       { :name => :start_date}, | ||||||
|       { :name => :end_date}, |       { :name => :end_date}, | ||||||
|       { :name => :description}, |       { :name => :description}, | ||||||
|  |       #had to hack acts_as_loggable/log.rb to get this to work | ||||||
|       { :name => :bike_action__action, :field_label => 'Action'} |       { :name => :bike_action__action, :field_label => 'Action'} | ||||||
|     ] |     ] | ||||||
|   end |   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 = rec.customer | ||||||
|                                               user.nil? ? "" : "#{user.first_name} #{user.last_name}" |                                               user.nil? ? "" : "#{user.first_name} #{user.last_name}" | ||||||
|                                            } |                                            } | ||||||
|       } |       }, | ||||||
|  |       :created_at | ||||||
|     ] |     ] | ||||||
| 
 | 
 | ||||||
|   end |   end | ||||||
| @ -52,4 +53,10 @@ class Transactions < Netzke::Basepack::Grid | |||||||
|   def default_bbar |   def default_bbar | ||||||
|     [ :apply, :add_in_form, :search ] |     [ :apply, :add_in_form, :search ] | ||||||
|   end |   end | ||||||
|  | =begin | ||||||
|  |   #needed for transaction selection | ||||||
|  |   js_configure do |c| | ||||||
|  |     c.mixin :init_component | ||||||
|  |   end | ||||||
|  | =end | ||||||
| end | end | ||||||
|  | |||||||
| @ -2,6 +2,7 @@ class TransactionsBorder < Netzke::Base | |||||||
|   # Remember regions collapse state and size |   # Remember regions collapse state and size | ||||||
|   include Netzke::Basepack::ItemPersistence |   include Netzke::Basepack::ItemPersistence | ||||||
|   component :transactions |   component :transactions | ||||||
|  |   component :transaction_logs | ||||||
|   #users and customers components are required for the transactions form |   #users and customers components are required for the transactions form | ||||||
|   component :users_and_customers_accordian |   component :users_and_customers_accordian | ||||||
| 
 | 
 | ||||||
| @ -11,6 +12,7 @@ class TransactionsBorder < Netzke::Base | |||||||
|     c.title = "Transactions" |     c.title = "Transactions" | ||||||
|     c.items = [ |     c.items = [ | ||||||
|      { netzke_component: :transactions, region: :center, height: 300, split: true }, |      { 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 } |      { netzke_component: :users_and_customers_accordian, region: :south, height: 300, split: true } | ||||||
|     ] |     ] | ||||||
|   end |   end | ||||||
| @ -21,9 +23,8 @@ class TransactionsBorder < Netzke::Base | |||||||
|     c.mixin :init_component |     c.mixin :init_component | ||||||
|   end |   end | ||||||
| 
 | 
 | ||||||
|   endpoint :select_customer do |params, this| |   endpoint :select_transaction do |params, this| | ||||||
|     session[:selected_customer_id] = params[:customer_id] |     session[:selected_transaction_id] = params[:transaction_id] | ||||||
|     session[:selected_customer_type] = params[:customer_type] |  | ||||||
|   end |   end | ||||||
| 
 | 
 | ||||||
| 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 => :start_date}, | ||||||
|       { :name => :end_date}, |       { :name => :end_date}, | ||||||
|       { :name => :description}, |       { :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 => :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 => [ |       { :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} |           {: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 | class ActsAsLoggable::TransactionAction < ActiveRecord::Base | ||||||
|   attr_accessible :action |   attr_accessible :action | ||||||
| 
 | 
 | ||||||
|   belongs_to :bike |   has_many :logs | ||||||
|  |   #belongs_to :bike | ||||||
| 
 | 
 | ||||||
|   def to_s |   def to_s | ||||||
|     self.action |     self.action | ||||||
|  | |||||||
		Loading…
	
	
			
			x
			
			
		
	
		Reference in New Issue
	
	Block a user