require 'piggybak/config'
require 'acts_as_variant'
require 'acts_as_orderer'
require 'acts_as_changer'
require 'active_merchant'
require 'formatted_changes'
require 'currency'
require 'mask_submissions'
module Piggybak
def self.config(entity = nil, &block)
if entity
Piggybak::Config.model(entity, &block)
elsif block_given? && ENV['SKIP_RAILS_ADMIN_INITIALIZER'] != "true"
block.call(Piggybak::Config)
else
Piggybak::Config
end
end
def self.reset
Piggybak::Config.reset
end
class Engine < Rails::Engine
initializer "piggybak.add_helper" do |app|
ApplicationController.class_eval do
helper :piggybak
end
end
initializer "piggybak.rails_admin_config" do |app|
# RailsAdmin config file. Generated on December 21, 2011 13:04
# See github.com/sferik/rails_admin for more informations
RailsAdmin.config do |config|
config.model Piggybak::Order do
label "Order"
navigation_label "Orders"
weight 1
object_label_method :admin_label
show do
field :status
field :total do
formatted_value do
"$%.2f" % value
end
end
field :tax_charge do
formatted_value do
"$%.2f" % value
end
end
field :total_due do
formatted_value do
"$%.2f" % value
end
end
field :created_at
field :email
field :phone
field :user
field :line_items
field :billing_address
field :shipping_address
field :shipments
field :payments
field :order_notes do
pretty_value do
value.inject([]) { |arr, o| arr << o.details }.join("
").html_safe
end
end
end
list do
field :id
field :billing_address do
label "Billing Name"
pretty_value do
"#{value.lastname}, #{value.firstname}"
end
searchable [:firstname, :lastname]
end
field :total do
formatted_value do
"$%.2f" % value
end
end
field :created_at do
strftime_format "%d-%m-%Y"
end
field :status
end
edit do
field :recorded_changer, :hidden do
partial "recorded_changer"
end
# TODO: Figure out why this doesn't work here
#field :recorded_changer, :hidden do
# default_value do
# bindings[:view]._current_user.id
# end
#end
field :status do
visible do
!bindings[:object].new_record?
end
read_only do
!bindings[:object].new_record?
end
end
field :details do
partial "order_details"
help ""
visible do
!bindings[:object].new_record?
end
end
field :user
field :email
field :phone
field :ip_address do
read_only true
end
field :user_agent do
read_only true
end
field :billing_address do
help "Required"
end
field :shipping_address do
help "Required"
end
field :line_items do
active true
help ""
end
field :shipments do
active true
help ""
end
field :adjustments do
active true
help ""
end
field :refund_amt do
label "Refund Amount"
visible do
!bindings[:object].new_record?
end
help "This does not interact with the payment gateway."
end
field :payments do
active true
help ""
end
field :order_notes do
active true
end
end
end
config.model Piggybak::OrderNote do
object_label_method :admin_label
visible false
list do
field :user
field :note
field :created_at
end
edit do
field :details do
label "Order Note"
help ""
visible do
!bindings[:object].new_record?
end
read_only do
!bindings[:object].new_record?
end
end
field :user_id, :hidden do
default_value do
bindings[:view]._current_user.id
end
end
field :note do
visible do
bindings[:object].new_record?
end
end
end
end
config.model Piggybak::Address do
label "Address"
object_label_method :admin_label
visible false
edit do
field :firstname
field :lastname
field :address1
field :address2
field :city
field :zip
field :location do
partial "location_select"
help "Required"
label "Country & State"
end
end
end
config.model Piggybak::LineItem do
label "Line Item"
object_label_method :admin_label
visible false
edit do
field :variant
field :quantity
field :total do
read_only true
formatted_value do
value ? "$%.2f" % value : '-'
end
help "This will automatically be calculated at the time of processing."
end
end
end
config.model Piggybak::Shipment do
object_label_method :admin_label
visible false
edit do
field :shipping_method
field :status do
label "Shipping Status"
end
field :total do
read_only true
formatted_value do
"$%.2f" % value
end
help "This will automatically be calculated at the time of processing."
end
end
end
config.model Piggybak::Adjustment do
object_label_method :admin_label
visible false
edit do
field :user_id, :hidden do
default_value do
bindings[:view]._current_user.id
end
end
field :source do
help "Source of adjustment."
visible do
!bindings[:object].new_record?
end
read_only do
!bindings[:object].new_record?
end
end
field :total do
help "A negative value represents credit. A positive value represents charge."
read_only do
!bindings[:object].new_record?
end
formatted_value do
"$%.2f" % value
end
end
field :note do
read_only do
!bindings[:object].new_record?
end
end
end
end
config.model Piggybak::Payment do
object_label_method :admin_label
visible false
edit do
field :payment_method do
read_only do
!bindings[:object].new_record?
end
end
field :masked_number do
help "Required"
label "Number"
visible do
!bindings[:object].new_record?
end
read_only do
!bindings[:object].new_record?
end
end
field :number do
help "Required"
visible do
bindings[:object].new_record?
end
end
field :verification_value do
help "Required"
visible do
bindings[:object].new_record?
end
end
field :month do
label "Exp. Month"
read_only do
!bindings[:object].new_record?
end
end
field :year do
label "Exp. Year"
read_only do
!bindings[:object].new_record?
end
end
field :total do
read_only true
visible do
!bindings[:object].new_record?
end
formatted_value do
"$%.2f" % value
end
help "This will automatically be calculated at the time of processing."
end
end
end
config.model Piggybak::PaymentMethod do
navigation_label "Configuration"
weight 2
object_label_method :admin_label
list do
field :description
field :active
end
edit do
field :description do
help "This is the label the user sees."
end
field :klass do
label "Calculator"
end
field :active
field :payment_method_values do
label "Metadata"
end
end
end
config.model Piggybak::PaymentMethodValue do
object_label_method :admin_label
visible false
edit do
include_all_fields
field :payment_method do
visible false
end
end
end
config.model Piggybak::ShippingMethod do
navigation_label "Configuration"
object_label_method :admin_label
edit do
field :description do
help "This is the label the user sees."
end
field :klass do
label "Calculator"
end
field :active
field :shipping_method_values do
label "Metadata"
end
end
list do
field :description
field :active
end
end
config.model Piggybak::ShippingMethodValue do
object_label_method :admin_label
visible false
edit do
include_all_fields
field :shipping_method do
visible false
end
end
end
config.model Piggybak::TaxMethod do
navigation_label "Configuration"
object_label_method :admin_label
edit do
field :description
field :klass do
label "Calculator"
end
field :active
field :tax_method_values do
label "Metadata"
end
end
list do
field :description
field :active
end
end
config.model Piggybak::TaxMethodValue do
object_label_method :admin_label
visible false
edit do
include_all_fields
field :tax_method do
visible false
end
end
end
config.model Piggybak::Country do
label "Countries"
navigation_label "Geodata"
weight 3
list do
sort_by :name
field :name
field :abbr
end
edit do
field :name
field :abbr
field :active_shipping
field :active_billing
end
end
config.model Piggybak::State do
navigation_label "Geodata"
label "States"
list do
field :name
field :abbr
field :country
end
edit do
field :name
field :abbr
field :country
end
end
config.model Piggybak::Variant do
label "Variant"
navigation_label "Orders"
object_label_method :admin_label
edit do
field :item do
read_only do
!bindings[:object].new_record?
end
end
include_all_fields
field :unlimited_inventory do
help "If true, backorders on this variant will be allowed, regardless of quantity on hand."
end
end
list do
field :description
field :price
field :quantity
field :active
end
end
end
end
end
end