From a3df4bf0262154d8dfa3667f6e20d09fc8dca77c Mon Sep 17 00:00:00 2001 From: Lynne Davis Date: Tue, 24 Feb 2015 13:43:00 +1000 Subject: [PATCH 01/11] LD: Adding additional functionality for order cycle management reports - adding hub code model, adding temp_controlled bool, adding delivery report --- .../admin/reports_controller_decorator.rb | 5 +- app/models/customer.rb | 2 + db/migrate/20150122145607_create_customers.rb | 13 ++++ ...controlled_to_spree_shipping_categories.rb | 5 ++ db/schema.rb | 20 ++++- .../order_cycle_management_report.rb | 78 +++++++++++++++---- spec/features/admin/reports_spec.rb | 15 +++- 7 files changed, 114 insertions(+), 24 deletions(-) create mode 100644 app/models/customer.rb create mode 100644 db/migrate/20150122145607_create_customers.rb create mode 100644 db/migrate/20150216075336_add_temperature_controlled_to_spree_shipping_categories.rb diff --git a/app/controllers/spree/admin/reports_controller_decorator.rb b/app/controllers/spree/admin/reports_controller_decorator.rb index 655d1778dc..50954950e0 100644 --- a/app/controllers/spree/admin/reports_controller_decorator.rb +++ b/app/controllers/spree/admin/reports_controller_decorator.rb @@ -27,7 +27,8 @@ Spree::Admin::ReportsController.class_eval do ["Addresses", :addresses] ], order_cycle_management: [ - ["Payment Methods Report", :payment_methods_report] + ["Payment Methods Report", :payment_methods], + ["Delivery Report", :delivery] ] } @@ -58,7 +59,6 @@ Spree::Admin::ReportsController.class_eval do @report_types = REPORT_TYPES[:customers] @report_type = params[:report_type] @report = OpenFoodNetwork::CustomersReport.new spree_current_user, params - render_report(@report.header, @report.table, params[:csv], "customers_#{timestamp}.csv") end @@ -68,7 +68,6 @@ Spree::Admin::ReportsController.class_eval do @report = OpenFoodNetwork::OrderCycleManagementReport.new spree_current_user, params @search = Spree::Order.complete.not_state(:canceled).managed_by(spree_current_user).search(params[:q]) - @orders = @search.result render_report(@report.header, @report.table, params[:csv], "order_cycle_management_#{timestamp}.csv") diff --git a/app/models/customer.rb b/app/models/customer.rb new file mode 100644 index 0000000000..047dcb0c04 --- /dev/null +++ b/app/models/customer.rb @@ -0,0 +1,2 @@ +class Customer < ActiveRecord::Base +end diff --git a/db/migrate/20150122145607_create_customers.rb b/db/migrate/20150122145607_create_customers.rb new file mode 100644 index 0000000000..7993f9a4b6 --- /dev/null +++ b/db/migrate/20150122145607_create_customers.rb @@ -0,0 +1,13 @@ +class CreateCustomers < ActiveRecord::Migration + def change + create_table :customers do |t| + t.string :email + t.references :enterprise + t.string :code + + t.timestamps + end + add_index :customers, [:enterprise_id, :code], unique: true + add_index :customers, :email + end +end diff --git a/db/migrate/20150216075336_add_temperature_controlled_to_spree_shipping_categories.rb b/db/migrate/20150216075336_add_temperature_controlled_to_spree_shipping_categories.rb new file mode 100644 index 0000000000..d939d5fdf3 --- /dev/null +++ b/db/migrate/20150216075336_add_temperature_controlled_to_spree_shipping_categories.rb @@ -0,0 +1,5 @@ +class AddTemperatureControlledToSpreeShippingCategories < ActiveRecord::Migration + def change + add_column :spree_shipping_categories, :temperature_controlled, :boolean + end +end diff --git a/db/schema.rb b/db/schema.rb index 2d8f28fbdd..3c77da926a 100644 --- a/db/schema.rb +++ b/db/schema.rb @@ -11,7 +11,7 @@ # # It's strongly recommended to check this file into your version control system. -ActiveRecord::Schema.define(:version => 20141219034321) do +ActiveRecord::Schema.define(:version => 20150216075336) do create_table "adjustment_metadata", :force => true do |t| t.integer "adjustment_id" @@ -155,6 +155,17 @@ ActiveRecord::Schema.define(:version => 20141219034321) do add_index "coordinator_fees", ["enterprise_fee_id"], :name => "index_coordinator_fees_on_enterprise_fee_id" add_index "coordinator_fees", ["order_cycle_id"], :name => "index_coordinator_fees_on_order_cycle_id" + create_table "customers", :force => true do |t| + t.string "email" + t.integer "enterprise_id" + t.string "code" + t.datetime "created_at", :null => false + t.datetime "updated_at", :null => false + end + + add_index "customers", ["email"], :name => "index_customers_on_email" + add_index "customers", ["enterprise_id", "code"], :name => "index_customers_on_enterprise_id_and_code", :unique => true + create_table "distributors_payment_methods", :id => false, :force => true do |t| t.integer "distributor_id" t.integer "payment_method_id" @@ -574,9 +585,9 @@ ActiveRecord::Schema.define(:version => 20141219034321) do t.string "email" t.text "special_instructions" t.integer "distributor_id" - t.integer "order_cycle_id" t.string "currency" t.string "last_ip_address" + t.integer "order_cycle_id" t.integer "cart_id" end @@ -837,8 +848,9 @@ ActiveRecord::Schema.define(:version => 20141219034321) do create_table "spree_shipping_categories", :force => true do |t| t.string "name" - t.datetime "created_at", :null => false - t.datetime "updated_at", :null => false + t.datetime "created_at", :null => false + t.datetime "updated_at", :null => false + t.boolean "temperature_controlled" end create_table "spree_shipping_methods", :force => true do |t| diff --git a/lib/open_food_network/order_cycle_management_report.rb b/lib/open_food_network/order_cycle_management_report.rb index 06a90bfe25..ac98b062c4 100644 --- a/lib/open_food_network/order_cycle_management_report.rb +++ b/lib/open_food_network/order_cycle_management_report.rb @@ -1,3 +1,5 @@ +require 'open_food_network/user_balance_calculator' + module OpenFoodNetwork class OrderCycleManagementReport attr_reader :params @@ -7,23 +9,19 @@ module OpenFoodNetwork end def header - ["First Name", "Last Name", "Email", "Phone", "Hub", "Shipping Method", "Payment Method", "Amount"] + if is_payment_methods? + ["First Name", "Last Name", "Hub", "Hub Code", "Email", "Phone", "Shipping Method", "Payment Method", "Amount", "Balance"] + else + ["First Name", "Last Name", "Hub", "Hub Code", "Delivery Address", "Delivery Postcode", "Phone", "Shipping Method", "Payment Method", "Amount", "Balance", "Temp Controlled Items?", "Special Instructions"] + end end def table - orders.map do |order| - ba = order.billing_address - da = order.distributor.andand.address - [ba.firstname, - ba.lastname, - order.email, - ba.phone, - order.distributor.andand.name, - order.shipping_method.andand.name, - order.payments.first.andand.payment_method.andand.name, - order.payments.first.amount - ] - end + if is_payment_methods? + orders.map { |o| payment_method_row o } + else + orders.map { |o| delivery_row o } + end end def orders @@ -34,6 +32,44 @@ module OpenFoodNetwork filter_to_order_cycle filter_to_payment_method filter_to_shipping_method orders end + + private + + def payment_method_row (order) + ba = order.billing_address + da = order.distributor.andand.address + [ba.firstname, + ba.lastname, + order.distributor.andand.name, + customer_code(order.email), + order.email, + ba.phone, + order.shipping_method.andand.name, + order.payments.first.andand.payment_method.andand.name, + order.payments.first.amount, + OpenFoodNetwork::UserBalanceCalculator.new(order.user, order.distributor).balance + ] + end + + def delivery_row (order) + ba = order.billing_address + da = order.distributor.andand.address + [ba.firstname, + ba.lastname, + order.distributor.andand.name, + customer_code(order.email), + "#{ba.address1} #{ba.address2} #{ba.city}", + ba.zipcode, + ba.phone, + order.shipping_method.andand.name, + order.payments.first.andand.payment_method.andand.name, + order.payments.first.amount, + OpenFoodNetwork::UserBalanceCalculator.new(order.user, order.distributor).balance, + has_temperature_controlled_items?(order), + order.special_instructions + ] + end + def filter_to_payment_method(orders) if params[:payment_method_name].present? orders.with_payment_method_name(params[:payment_method_name]) @@ -57,5 +93,19 @@ module OpenFoodNetwork orders end end + + def has_temperature_controlled_items?(order) + order.line_items.any? { |line_item| line_item.product.shipping_category.nil? ? + false : line_item.product.shipping_category.temperature_controlled? } + end + + def is_payment_methods? + params[:report_type] == "payment_methods" + end + + def customer_code (email) + customer = Customer.where(email: email).first + customer.nil? ? "" : customer.code + end end end diff --git a/spec/features/admin/reports_spec.rb b/spec/features/admin/reports_spec.rb index 0524a6769e..0956f268d3 100644 --- a/spec/features/admin/reports_spec.rb +++ b/spec/features/admin/reports_spec.rb @@ -65,12 +65,21 @@ feature %q{ click_link "Reports" end - scenario "order payment method report" do - click_link "Order Cycle Management" + scenario "payment method report" do + click_link "Payment Methods Report" rows = find("table#listing_order_payment_methods").all("thead tr") table = rows.map { |r| r.all("th").map { |c| c.text.strip } } table.sort.should == [ - ["First Name", "Last Name", "Email", "Phone", "Hub", "Shipping Method", "Payment Method", "Amount"] + ["First Name", "Last Name", "Hub", "Hub Code", "Email", "Phone", "Shipping Method", "Payment Method", "Amount", "Balance"] + ].sort + end + + scenario "delivery report" do + click_link "Delivery Report" + rows = find("table#listing_order_payment_methods").all("thead tr") + table = rows.map { |r| r.all("th").map { |c| c.text.strip } } + table.sort.should == [ + ["First Name", "Last Name", "Hub", "Hub Code", "Delivery Address", "Delivery Postcode", "Phone", "Shipping Method", "Payment Method", "Amount", "Balance", "Temp Controlled Items?", "Special Instructions"] ].sort end end From 87b1ab9a1acfaa2624868c475c202068bc3acd89 Mon Sep 17 00:00:00 2001 From: Lynne Davis Date: Tue, 24 Feb 2015 13:43:00 +1000 Subject: [PATCH 02/11] LD: Adding additional functionality for order cycle management reports - adding hub code model, adding temp_controlled bool, adding delivery report --- .../admin/reports_controller_decorator.rb | 5 +- app/models/customer.rb | 2 + db/migrate/20150122145607_create_customers.rb | 13 ++++ ...controlled_to_spree_shipping_categories.rb | 5 ++ db/schema.rb | 18 ++++- .../order_cycle_management_report.rb | 78 +++++++++++++++---- spec/features/admin/reports_spec.rb | 15 +++- 7 files changed, 113 insertions(+), 23 deletions(-) create mode 100644 app/models/customer.rb create mode 100644 db/migrate/20150122145607_create_customers.rb create mode 100644 db/migrate/20150216075336_add_temperature_controlled_to_spree_shipping_categories.rb diff --git a/app/controllers/spree/admin/reports_controller_decorator.rb b/app/controllers/spree/admin/reports_controller_decorator.rb index 655d1778dc..50954950e0 100644 --- a/app/controllers/spree/admin/reports_controller_decorator.rb +++ b/app/controllers/spree/admin/reports_controller_decorator.rb @@ -27,7 +27,8 @@ Spree::Admin::ReportsController.class_eval do ["Addresses", :addresses] ], order_cycle_management: [ - ["Payment Methods Report", :payment_methods_report] + ["Payment Methods Report", :payment_methods], + ["Delivery Report", :delivery] ] } @@ -58,7 +59,6 @@ Spree::Admin::ReportsController.class_eval do @report_types = REPORT_TYPES[:customers] @report_type = params[:report_type] @report = OpenFoodNetwork::CustomersReport.new spree_current_user, params - render_report(@report.header, @report.table, params[:csv], "customers_#{timestamp}.csv") end @@ -68,7 +68,6 @@ Spree::Admin::ReportsController.class_eval do @report = OpenFoodNetwork::OrderCycleManagementReport.new spree_current_user, params @search = Spree::Order.complete.not_state(:canceled).managed_by(spree_current_user).search(params[:q]) - @orders = @search.result render_report(@report.header, @report.table, params[:csv], "order_cycle_management_#{timestamp}.csv") diff --git a/app/models/customer.rb b/app/models/customer.rb new file mode 100644 index 0000000000..047dcb0c04 --- /dev/null +++ b/app/models/customer.rb @@ -0,0 +1,2 @@ +class Customer < ActiveRecord::Base +end diff --git a/db/migrate/20150122145607_create_customers.rb b/db/migrate/20150122145607_create_customers.rb new file mode 100644 index 0000000000..7993f9a4b6 --- /dev/null +++ b/db/migrate/20150122145607_create_customers.rb @@ -0,0 +1,13 @@ +class CreateCustomers < ActiveRecord::Migration + def change + create_table :customers do |t| + t.string :email + t.references :enterprise + t.string :code + + t.timestamps + end + add_index :customers, [:enterprise_id, :code], unique: true + add_index :customers, :email + end +end diff --git a/db/migrate/20150216075336_add_temperature_controlled_to_spree_shipping_categories.rb b/db/migrate/20150216075336_add_temperature_controlled_to_spree_shipping_categories.rb new file mode 100644 index 0000000000..d939d5fdf3 --- /dev/null +++ b/db/migrate/20150216075336_add_temperature_controlled_to_spree_shipping_categories.rb @@ -0,0 +1,5 @@ +class AddTemperatureControlledToSpreeShippingCategories < ActiveRecord::Migration + def change + add_column :spree_shipping_categories, :temperature_controlled, :boolean + end +end diff --git a/db/schema.rb b/db/schema.rb index a8ac91e6d8..b4c7f4e436 100644 --- a/db/schema.rb +++ b/db/schema.rb @@ -155,6 +155,17 @@ ActiveRecord::Schema.define(:version => 20150220035501) do add_index "coordinator_fees", ["enterprise_fee_id"], :name => "index_coordinator_fees_on_enterprise_fee_id" add_index "coordinator_fees", ["order_cycle_id"], :name => "index_coordinator_fees_on_order_cycle_id" + create_table "customers", :force => true do |t| + t.string "email" + t.integer "enterprise_id" + t.string "code" + t.datetime "created_at", :null => false + t.datetime "updated_at", :null => false + end + + add_index "customers", ["email"], :name => "index_customers_on_email" + add_index "customers", ["enterprise_id", "code"], :name => "index_customers_on_enterprise_id_and_code", :unique => true + create_table "distributors_payment_methods", :id => false, :force => true do |t| t.integer "distributor_id" t.integer "payment_method_id" @@ -585,9 +596,9 @@ ActiveRecord::Schema.define(:version => 20150220035501) do t.string "email" t.text "special_instructions" t.integer "distributor_id" - t.integer "order_cycle_id" t.string "currency" t.string "last_ip_address" + t.integer "order_cycle_id" t.integer "cart_id" end @@ -848,8 +859,9 @@ ActiveRecord::Schema.define(:version => 20150220035501) do create_table "spree_shipping_categories", :force => true do |t| t.string "name" - t.datetime "created_at", :null => false - t.datetime "updated_at", :null => false + t.datetime "created_at", :null => false + t.datetime "updated_at", :null => false + t.boolean "temperature_controlled" end create_table "spree_shipping_methods", :force => true do |t| diff --git a/lib/open_food_network/order_cycle_management_report.rb b/lib/open_food_network/order_cycle_management_report.rb index 06a90bfe25..ac98b062c4 100644 --- a/lib/open_food_network/order_cycle_management_report.rb +++ b/lib/open_food_network/order_cycle_management_report.rb @@ -1,3 +1,5 @@ +require 'open_food_network/user_balance_calculator' + module OpenFoodNetwork class OrderCycleManagementReport attr_reader :params @@ -7,23 +9,19 @@ module OpenFoodNetwork end def header - ["First Name", "Last Name", "Email", "Phone", "Hub", "Shipping Method", "Payment Method", "Amount"] + if is_payment_methods? + ["First Name", "Last Name", "Hub", "Hub Code", "Email", "Phone", "Shipping Method", "Payment Method", "Amount", "Balance"] + else + ["First Name", "Last Name", "Hub", "Hub Code", "Delivery Address", "Delivery Postcode", "Phone", "Shipping Method", "Payment Method", "Amount", "Balance", "Temp Controlled Items?", "Special Instructions"] + end end def table - orders.map do |order| - ba = order.billing_address - da = order.distributor.andand.address - [ba.firstname, - ba.lastname, - order.email, - ba.phone, - order.distributor.andand.name, - order.shipping_method.andand.name, - order.payments.first.andand.payment_method.andand.name, - order.payments.first.amount - ] - end + if is_payment_methods? + orders.map { |o| payment_method_row o } + else + orders.map { |o| delivery_row o } + end end def orders @@ -34,6 +32,44 @@ module OpenFoodNetwork filter_to_order_cycle filter_to_payment_method filter_to_shipping_method orders end + + private + + def payment_method_row (order) + ba = order.billing_address + da = order.distributor.andand.address + [ba.firstname, + ba.lastname, + order.distributor.andand.name, + customer_code(order.email), + order.email, + ba.phone, + order.shipping_method.andand.name, + order.payments.first.andand.payment_method.andand.name, + order.payments.first.amount, + OpenFoodNetwork::UserBalanceCalculator.new(order.user, order.distributor).balance + ] + end + + def delivery_row (order) + ba = order.billing_address + da = order.distributor.andand.address + [ba.firstname, + ba.lastname, + order.distributor.andand.name, + customer_code(order.email), + "#{ba.address1} #{ba.address2} #{ba.city}", + ba.zipcode, + ba.phone, + order.shipping_method.andand.name, + order.payments.first.andand.payment_method.andand.name, + order.payments.first.amount, + OpenFoodNetwork::UserBalanceCalculator.new(order.user, order.distributor).balance, + has_temperature_controlled_items?(order), + order.special_instructions + ] + end + def filter_to_payment_method(orders) if params[:payment_method_name].present? orders.with_payment_method_name(params[:payment_method_name]) @@ -57,5 +93,19 @@ module OpenFoodNetwork orders end end + + def has_temperature_controlled_items?(order) + order.line_items.any? { |line_item| line_item.product.shipping_category.nil? ? + false : line_item.product.shipping_category.temperature_controlled? } + end + + def is_payment_methods? + params[:report_type] == "payment_methods" + end + + def customer_code (email) + customer = Customer.where(email: email).first + customer.nil? ? "" : customer.code + end end end diff --git a/spec/features/admin/reports_spec.rb b/spec/features/admin/reports_spec.rb index 0524a6769e..0956f268d3 100644 --- a/spec/features/admin/reports_spec.rb +++ b/spec/features/admin/reports_spec.rb @@ -65,12 +65,21 @@ feature %q{ click_link "Reports" end - scenario "order payment method report" do - click_link "Order Cycle Management" + scenario "payment method report" do + click_link "Payment Methods Report" rows = find("table#listing_order_payment_methods").all("thead tr") table = rows.map { |r| r.all("th").map { |c| c.text.strip } } table.sort.should == [ - ["First Name", "Last Name", "Email", "Phone", "Hub", "Shipping Method", "Payment Method", "Amount"] + ["First Name", "Last Name", "Hub", "Hub Code", "Email", "Phone", "Shipping Method", "Payment Method", "Amount", "Balance"] + ].sort + end + + scenario "delivery report" do + click_link "Delivery Report" + rows = find("table#listing_order_payment_methods").all("thead tr") + table = rows.map { |r| r.all("th").map { |c| c.text.strip } } + table.sort.should == [ + ["First Name", "Last Name", "Hub", "Hub Code", "Delivery Address", "Delivery Postcode", "Phone", "Shipping Method", "Payment Method", "Amount", "Balance", "Temp Controlled Items?", "Special Instructions"] ].sort end end From 39c5f8febec705d0b162f9f02c0ac45498e6c147 Mon Sep 17 00:00:00 2001 From: Lynne Davis Date: Mon, 2 Mar 2015 12:32:28 +1100 Subject: [PATCH 03/11] Updating Customer model with validations --- app/models/customer.rb | 6 ++++++ 1 file changed, 6 insertions(+) diff --git a/app/models/customer.rb b/app/models/customer.rb index 047dcb0c04..3dbdd59a67 100644 --- a/app/models/customer.rb +++ b/app/models/customer.rb @@ -1,2 +1,8 @@ class Customer < ActiveRecord::Base + + belongs_to :enterprise + + validates :code, presence: true, uniqueness: {scope: :enterprise_id} + validates :email, presence: true + validates :enterprise_id, presence: true end From f2a35e219e9d1a4b41f5d45446cc50713f9ef57c Mon Sep 17 00:00:00 2001 From: Lynne Davis Date: Mon, 2 Mar 2015 12:59:07 +1100 Subject: [PATCH 04/11] Updating migration on customers table with extra validation --- db/migrate/20150122145607_create_customers.rb | 11 ++++++++--- db/schema.rb | 11 ++++++++--- 2 files changed, 16 insertions(+), 6 deletions(-) diff --git a/db/migrate/20150122145607_create_customers.rb b/db/migrate/20150122145607_create_customers.rb index 7993f9a4b6..12e5a721e8 100644 --- a/db/migrate/20150122145607_create_customers.rb +++ b/db/migrate/20150122145607_create_customers.rb @@ -1,13 +1,18 @@ class CreateCustomers < ActiveRecord::Migration def change create_table :customers do |t| - t.string :email - t.references :enterprise - t.string :code + t.string :email, null: false + t.references :enterprise, null: false + t.string :code, null: false + t.references :user t.timestamps end add_index :customers, [:enterprise_id, :code], unique: true add_index :customers, :email + add_index :customers, :user_id + + add_foreign_key :customers, :enterprises, column: :enterprise_id + add_foreign_key :customers, :spree_users, column: :user_id end end diff --git a/db/schema.rb b/db/schema.rb index b4c7f4e436..2d4abcce6c 100644 --- a/db/schema.rb +++ b/db/schema.rb @@ -156,15 +156,17 @@ ActiveRecord::Schema.define(:version => 20150220035501) do add_index "coordinator_fees", ["order_cycle_id"], :name => "index_coordinator_fees_on_order_cycle_id" create_table "customers", :force => true do |t| - t.string "email" - t.integer "enterprise_id" - t.string "code" + t.string "email", :null => false + t.integer "enterprise_id", :null => false + t.string "code", :null => false + t.integer "user_id" t.datetime "created_at", :null => false t.datetime "updated_at", :null => false end add_index "customers", ["email"], :name => "index_customers_on_email" add_index "customers", ["enterprise_id", "code"], :name => "index_customers_on_enterprise_id_and_code", :unique => true + add_index "customers", ["user_id"], :name => "index_customers_on_user_id" create_table "distributors_payment_methods", :id => false, :force => true do |t| t.integer "distributor_id" @@ -1093,6 +1095,9 @@ ActiveRecord::Schema.define(:version => 20150220035501) do add_foreign_key "coordinator_fees", "enterprise_fees", name: "coordinator_fees_enterprise_fee_id_fk" add_foreign_key "coordinator_fees", "order_cycles", name: "coordinator_fees_order_cycle_id_fk" + add_foreign_key "customers", "enterprises", name: "customers_enterprise_id_fk" + add_foreign_key "customers", "spree_users", name: "customers_user_id_fk", column: "user_id" + add_foreign_key "distributors_payment_methods", "enterprises", name: "distributors_payment_methods_distributor_id_fk", column: "distributor_id" add_foreign_key "distributors_payment_methods", "spree_payment_methods", name: "distributors_payment_methods_payment_method_id_fk", column: "payment_method_id" From 3279003fd318baf27bfde0c76e96ec906f1b1b19 Mon Sep 17 00:00:00 2001 From: Lynne Davis Date: Tue, 3 Mar 2015 09:35:26 +1100 Subject: [PATCH 05/11] Updating logic on temperature_controlled lookup --- lib/open_food_network/order_cycle_management_report.rb | 3 +-- 1 file changed, 1 insertion(+), 2 deletions(-) diff --git a/lib/open_food_network/order_cycle_management_report.rb b/lib/open_food_network/order_cycle_management_report.rb index ac98b062c4..09b9449a82 100644 --- a/lib/open_food_network/order_cycle_management_report.rb +++ b/lib/open_food_network/order_cycle_management_report.rb @@ -95,8 +95,7 @@ module OpenFoodNetwork end def has_temperature_controlled_items?(order) - order.line_items.any? { |line_item| line_item.product.shipping_category.nil? ? - false : line_item.product.shipping_category.temperature_controlled? } + order.line_items.any? { |line_item| line_item.product.shipping_category.andand.temperature_controlled } end def is_payment_methods? From 2a8ba0bf425f369dd682448d10537f8dbbd2a238 Mon Sep 17 00:00:00 2001 From: Lynne Davis Date: Tue, 3 Mar 2015 16:12:07 +1100 Subject: [PATCH 06/11] Fixing merge conflicts after rebase --- app/models/customer.rb | 1 - db/schema.rb | 9 +++++++++ 2 files changed, 9 insertions(+), 1 deletion(-) diff --git a/app/models/customer.rb b/app/models/customer.rb index 3dbdd59a67..f09ffe2e7d 100644 --- a/app/models/customer.rb +++ b/app/models/customer.rb @@ -1,5 +1,4 @@ class Customer < ActiveRecord::Base - belongs_to :enterprise validates :code, presence: true, uniqueness: {scope: :enterprise_id} diff --git a/db/schema.rb b/db/schema.rb index 2d4abcce6c..0fc5e6340a 100644 --- a/db/schema.rb +++ b/db/schema.rb @@ -156,17 +156,26 @@ ActiveRecord::Schema.define(:version => 20150220035501) do add_index "coordinator_fees", ["order_cycle_id"], :name => "index_coordinator_fees_on_order_cycle_id" create_table "customers", :force => true do |t| +<<<<<<< HEAD t.string "email", :null => false t.integer "enterprise_id", :null => false t.string "code", :null => false t.integer "user_id" +======= + t.string "email" + t.integer "enterprise_id" + t.string "code" +>>>>>>> a3df4bf0262154d8dfa3667f6e20d09fc8dca77c t.datetime "created_at", :null => false t.datetime "updated_at", :null => false end add_index "customers", ["email"], :name => "index_customers_on_email" add_index "customers", ["enterprise_id", "code"], :name => "index_customers_on_enterprise_id_and_code", :unique => true +<<<<<<< HEAD add_index "customers", ["user_id"], :name => "index_customers_on_user_id" +======= +>>>>>>> a3df4bf0262154d8dfa3667f6e20d09fc8dca77c create_table "distributors_payment_methods", :id => false, :force => true do |t| t.integer "distributor_id" From 3ea7ff766a7336a9f57ca82f58805798865e6e41 Mon Sep 17 00:00:00 2001 From: Lynne Davis Date: Tue, 3 Mar 2015 16:29:17 +1100 Subject: [PATCH 08/11] Removing additional merge conflicts --- db/schema.rb | 9 --------- 1 file changed, 9 deletions(-) diff --git a/db/schema.rb b/db/schema.rb index 0fc5e6340a..2d4abcce6c 100644 --- a/db/schema.rb +++ b/db/schema.rb @@ -156,26 +156,17 @@ ActiveRecord::Schema.define(:version => 20150220035501) do add_index "coordinator_fees", ["order_cycle_id"], :name => "index_coordinator_fees_on_order_cycle_id" create_table "customers", :force => true do |t| -<<<<<<< HEAD t.string "email", :null => false t.integer "enterprise_id", :null => false t.string "code", :null => false t.integer "user_id" -======= - t.string "email" - t.integer "enterprise_id" - t.string "code" ->>>>>>> a3df4bf0262154d8dfa3667f6e20d09fc8dca77c t.datetime "created_at", :null => false t.datetime "updated_at", :null => false end add_index "customers", ["email"], :name => "index_customers_on_email" add_index "customers", ["enterprise_id", "code"], :name => "index_customers_on_enterprise_id_and_code", :unique => true -<<<<<<< HEAD add_index "customers", ["user_id"], :name => "index_customers_on_user_id" -======= ->>>>>>> a3df4bf0262154d8dfa3667f6e20d09fc8dca77c create_table "distributors_payment_methods", :id => false, :force => true do |t| t.integer "distributor_id" From 72a568ffad44affa76cdff09759f25e796bdc524 Mon Sep 17 00:00:00 2001 From: Lynne Davis Date: Tue, 3 Mar 2015 16:33:49 +1100 Subject: [PATCH 09/11] Adding not null to temp_controlled field of shipping_categories --- ...6_add_temperature_controlled_to_spree_shipping_categories.rb | 2 +- db/schema.rb | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/db/migrate/20150216075336_add_temperature_controlled_to_spree_shipping_categories.rb b/db/migrate/20150216075336_add_temperature_controlled_to_spree_shipping_categories.rb index d939d5fdf3..89035fc16f 100644 --- a/db/migrate/20150216075336_add_temperature_controlled_to_spree_shipping_categories.rb +++ b/db/migrate/20150216075336_add_temperature_controlled_to_spree_shipping_categories.rb @@ -1,5 +1,5 @@ class AddTemperatureControlledToSpreeShippingCategories < ActiveRecord::Migration def change - add_column :spree_shipping_categories, :temperature_controlled, :boolean + add_column :spree_shipping_categories, :temperature_controlled, :boolean, null: false, default: false end end diff --git a/db/schema.rb b/db/schema.rb index 2d4abcce6c..9bbc6da0ca 100644 --- a/db/schema.rb +++ b/db/schema.rb @@ -863,7 +863,7 @@ ActiveRecord::Schema.define(:version => 20150220035501) do t.string "name" t.datetime "created_at", :null => false t.datetime "updated_at", :null => false - t.boolean "temperature_controlled" + t.boolean "temperature_controlled", :null => false end create_table "spree_shipping_methods", :force => true do |t| From b26c46d7db3587e057b899280966b32f4411b0ec Mon Sep 17 00:00:00 2001 From: Lynne Davis Date: Tue, 3 Mar 2015 16:39:55 +1100 Subject: [PATCH 10/11] Removing default false from temp_controlled - shipping categories --- ...6_add_temperature_controlled_to_spree_shipping_categories.rb | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/db/migrate/20150216075336_add_temperature_controlled_to_spree_shipping_categories.rb b/db/migrate/20150216075336_add_temperature_controlled_to_spree_shipping_categories.rb index 89035fc16f..9ddf19c81e 100644 --- a/db/migrate/20150216075336_add_temperature_controlled_to_spree_shipping_categories.rb +++ b/db/migrate/20150216075336_add_temperature_controlled_to_spree_shipping_categories.rb @@ -1,5 +1,5 @@ class AddTemperatureControlledToSpreeShippingCategories < ActiveRecord::Migration def change - add_column :spree_shipping_categories, :temperature_controlled, :boolean, null: false, default: false + add_column :spree_shipping_categories, :temperature_controlled, :boolean, null: false end end From cfa281478a14c31b1744f6da3c3493e3a2c52b0a Mon Sep 17 00:00:00 2001 From: Lynne Davis Date: Wed, 4 Mar 2015 12:02:07 +1100 Subject: [PATCH 11/11] Adding ability to edit ShippingCategory.temperature_controlled from admin interface --- app/models/spree/shipping_category_decorator.rb | 3 +++ .../add_temperature_controlled_form_element.html.haml.deface | 5 +++++ .../index/add_temp_controlled_td.html.haml.deface | 5 +++++ .../index/add_temp_controlled_th.html.haml.deface | 4 ++++ 4 files changed, 17 insertions(+) create mode 100644 app/models/spree/shipping_category_decorator.rb create mode 100644 app/overrides/spree/admin/shipping_categories/_form/add_temperature_controlled_form_element.html.haml.deface create mode 100644 app/overrides/spree/admin/shipping_categories/index/add_temp_controlled_td.html.haml.deface create mode 100644 app/overrides/spree/admin/shipping_categories/index/add_temp_controlled_th.html.haml.deface diff --git a/app/models/spree/shipping_category_decorator.rb b/app/models/spree/shipping_category_decorator.rb new file mode 100644 index 0000000000..b78ba3337c --- /dev/null +++ b/app/models/spree/shipping_category_decorator.rb @@ -0,0 +1,3 @@ +Spree::ShippingCategory.class_eval do + attr_accessible :temperature_controlled +end diff --git a/app/overrides/spree/admin/shipping_categories/_form/add_temperature_controlled_form_element.html.haml.deface b/app/overrides/spree/admin/shipping_categories/_form/add_temperature_controlled_form_element.html.haml.deface new file mode 100644 index 0000000000..4e9652bbd3 --- /dev/null +++ b/app/overrides/spree/admin/shipping_categories/_form/add_temperature_controlled_form_element.html.haml.deface @@ -0,0 +1,5 @@ +/ insert_bottom "div[data-hook='admin_shipping_category_form_fields']" + +%div.field.align-center{data-hook => "name"} + = f.label :temperature_controlled, t(:temperature_controlled) + = f.check_box :temperature_controlled diff --git a/app/overrides/spree/admin/shipping_categories/index/add_temp_controlled_td.html.haml.deface b/app/overrides/spree/admin/shipping_categories/index/add_temp_controlled_td.html.haml.deface new file mode 100644 index 0000000000..ce3d7304db --- /dev/null +++ b/app/overrides/spree/admin/shipping_categories/index/add_temp_controlled_td.html.haml.deface @@ -0,0 +1,5 @@ +/ insert_after "[data-hook='category_row'] td:first-child" + +%td.align-center + = shipping_category.temperature_controlled + %br/ diff --git a/app/overrides/spree/admin/shipping_categories/index/add_temp_controlled_th.html.haml.deface b/app/overrides/spree/admin/shipping_categories/index/add_temp_controlled_th.html.haml.deface new file mode 100644 index 0000000000..561e59bf91 --- /dev/null +++ b/app/overrides/spree/admin/shipping_categories/index/add_temp_controlled_th.html.haml.deface @@ -0,0 +1,4 @@ +/ insert_after "[data-hook='categories_header'] th:first-child" + +%th + Temperature Controlled