From 177c0c9344304bfddd6257565c5c4eec4b25154b Mon Sep 17 00:00:00 2001 From: Miguel Michelson Date: Sun, 11 Aug 2024 23:03:27 -0400 Subject: [PATCH] product items --- .../product_checkout_controller.rb | 21 ++++++++++-------- app/models/product_purchase.rb | 4 ++++ app/views/product_purchases/index.html.erb | 5 ++++- app/views/sales/product_show.erb | 4 +++- app/views/shared/_user_menu.html.erb | 22 ++++++++++++++----- 5 files changed, 40 insertions(+), 16 deletions(-) diff --git a/app/controllers/product_checkout_controller.rb b/app/controllers/product_checkout_controller.rb index 2356550..1094c55 100644 --- a/app/controllers/product_checkout_controller.rb +++ b/app/controllers/product_checkout_controller.rb @@ -75,16 +75,16 @@ def success stripe_session = Stripe::Checkout::Session.retrieve(@purchase.stripe_session_id) if stripe_session.payment_status == 'paid' - shipping_cost = stripe_session.shipping_cost.amount_total / 100.0 + shipping_cost = stripe_session.shipping_cost.amount_total / 100.0 rescue 0 total_amount = stripe_session.amount_total / 100.0 payment_intent = Stripe::PaymentIntent.retrieve(stripe_session.payment_intent) @purchase.update( status: :completed, - shipping_address: stripe_session.shipping_details.address.to_h, - shipping_name: stripe_session.shipping_details.name, - phone: stripe_session.customer_details.phone, + shipping_address: stripe_session&.shipping_details&.address&.to_h, + shipping_name: stripe_session&.shipping_details&.name, + phone: stripe_session&.customer_details&.phone, shipping_cost: shipping_cost, total_amount: total_amount, payment_intent_id: payment_intent["id"] @@ -94,11 +94,14 @@ def success @purchase.product_purchase_items.create(cart.product_cart_items.map { |item| product = item.product - shipping = product.product_shippings.find_by(country: stripe_session.shipping_details.address.country) || - product.product_shippings.find_by(country: 'Rest of World') - - additional_shipping_cost = shipping ? (item.quantity - 1) * shipping.additional_cost : 0 - + shipping = nil + additional_shipping_cost = 0 + if stripe_session.shipping_details.present? + shipping = product.product_shippings.find_by(country: stripe_session.shipping_details.address.country) || + product.product_shippings.find_by(country: 'Rest of World') + + additional_shipping_cost = shipping ? (item.quantity - 1) * shipping.additional_cost : 0 + end { product: product, quantity: item.quantity, diff --git a/app/models/product_purchase.rb b/app/models/product_purchase.rb index b2358c2..61035b4 100644 --- a/app/models/product_purchase.rb +++ b/app/models/product_purchase.rb @@ -36,4 +36,8 @@ def can_refund? completed? || shipped? || delivered? end + def total_quantity + product_purchase_items.sum(&:quantity) + end + end \ No newline at end of file diff --git a/app/views/product_purchases/index.html.erb b/app/views/product_purchases/index.html.erb index b7e2474..85fddbb 100644 --- a/app/views/product_purchases/index.html.erb +++ b/app/views/product_purchases/index.html.erb @@ -53,6 +53,9 @@

Shipping cost: <%= number_to_currency(item.shipping_cost) %>

+

+ Quantity: <%= item.quantity %> +

<% end %> @@ -67,7 +70,7 @@ <%= purchase.line1 %> <%= purchase.line2 %> <%= purchase.postal_code %> - <%= purchase.city %>, <%= purchase.state %>, <%= purchase.country %> + <%= [purchase.city, purchase.state, purchase.country].compact.to_sentence %> diff --git a/app/views/sales/product_show.erb b/app/views/sales/product_show.erb index f6f4ba7..e9153bf 100644 --- a/app/views/sales/product_show.erb +++ b/app/views/sales/product_show.erb @@ -15,7 +15,9 @@
Quantity
-
<%= @product_item.product_purchase_items.size %>
+
+ <%= @product_item.total_quantity %> +
Price
diff --git a/app/views/shared/_user_menu.html.erb b/app/views/shared/_user_menu.html.erb index efd81fe..191d5bc 100644 --- a/app/views/shared/_user_menu.html.erb +++ b/app/views/shared/_user_menu.html.erb @@ -248,11 +248,11 @@ class: "block px-4 py-2 text-sm text-gray-700 dark:text-gray-300" do %> <%= t("menu.my_products_merch") %> <% end %> - <% end %> - - <%= link_to "/sales", - class: "block px-4 py-2 text-sm text-gray-700 dark:text-gray-300" do %> - <%= t("menu.my_sales") %> + + <%= link_to "/sales", + class: "block px-4 py-2 text-sm text-gray-700 dark:text-gray-300" do %> + <%= t("menu.my_sales") %> + <% end %> <% end %> <%= link_to user_settings_path(current_user.username), @@ -387,6 +387,18 @@ <%= link_to "/purchases/tickets", class: "block px-4 py-2 text-sm text-gray-700 dark:text-gray-300" do %> <%= t("menu.my_purchases") %> <% end %> + + <% if current_user&.can_sell_products? %> + <%= link_to user_products_path(current_user.username), + class: "block px-4 py-2 text-sm text-gray-700 dark:text-gray-300" do %> + <%= t("menu.my_products_merch") %> + <% end %> + + <%= link_to "/sales", + class: "block px-4 py-2 text-sm text-gray-700 dark:text-gray-300" do %> + <%= t("menu.my_sales") %> + <% end %> + <% end %> <%= link_to user_settings_path(current_user.username), class: "block px-4 py-2 text-sm text-gray-700 dark:text-gray-300" do %> <%= t("menu.settings") %>