mirror of
https://github.com/fspc/BikeShed-1.git
synced 2025-04-04 05:33:22 -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,9 +20,10 @@ 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
|
||||||
|
|
||||||
def default_fields_for_forms
|
def default_fields_for_forms
|
||||||
@ -34,7 +35,7 @@ class Transactions < Netzke::Basepack::Grid
|
|||||||
elsif session[:selected_customer_type] == "Customer"
|
elsif session[:selected_customer_type] == "Customer"
|
||||||
customer = Customer.find_by_id(session[:selected_customer_id])
|
customer = Customer.find_by_id(session[:selected_customer_id])
|
||||||
end
|
end
|
||||||
|
|
||||||
customer = "No User Selected" if customer.nil?
|
customer = "No User Selected" if customer.nil?
|
||||||
[
|
[
|
||||||
{ :no_binding => true, :xtype => 'displayfield', :fieldLabel => "Creating Transaction for:", :value => "#{customer.to_s}"},
|
{ :no_binding => true, :xtype => 'displayfield', :fieldLabel => "Creating Transaction for:", :value => "#{customer.to_s}"},
|
||||||
@ -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