Commit Graph

2586 Commits

Author SHA1 Message Date
Luis Ramos
0815068050 Merge branch 'master' into 3-0-stable-mar6 2020-03-06 09:20:03 +00:00
Pau Pérez Fabregat
4ea891ee2f Merge pull request #4834 from Matt-Yorkley/3-0-bind-message
[Spree 2.1] PG::ProtocolViolation: ERROR: bind message supplies 0 parameters...
2020-03-05 19:31:06 +01:00
Pau Perez
0042ab2f28 Rewrite INNER JOIN in ActiveRecord's DSL 2020-03-05 17:45:06 +01:00
Pau Perez
53a63775fe Replace LEFT JOIN with INNER JOIN
I see no reason why a LEFT might be needed and its the root cause of the
awful performance.
2020-03-05 17:45:06 +01:00
Luis Ramos
3b37fa8872 Move variant scoping from alias method into manifest method 2020-03-03 16:40:31 +00:00
Luis Ramos
5688de4936 Make Shipment#manifest work with deleted variants again
This makes the default variant scope in inventory_unit being used which includes deleted variants
2020-03-03 16:38:03 +00:00
Luis Ramos
d8a92eec4b Bring Shipment#manifest from spree as is 2020-03-03 16:37:00 +00:00
Luis Ramos
e584233c9e Uncomment code that was commented earlier on in the upgrade, we are now ready to handle this 2020-03-03 14:25:17 +00:00
Pau Pérez Fabregat
9980723060 Merge pull request #4880 from Matt-Yorkley/3-0-duplicate-validations
[Spree 2.1] Fix duplicate validations in payment methods and shipping methods
2020-03-03 10:44:40 +01:00
Pau Pérez Fabregat
b0962f65da Merge pull request #4872 from Matt-Yorkley/3-0-touch
[Spree 2.1] Touch on new records
2020-03-03 10:39:58 +01:00
Luis Ramos
6c8b175344 Merge match and its alias method 2020-03-03 09:29:02 +00:00
Pau Pérez Fabregat
390cc61273 Merge pull request #4867 from Matt-Yorkley/3-0-gmappable
[Spree 2.1] acts_as_gmappable
2020-03-03 10:28:12 +01:00
Luis Ramos
a508c55700 Bring TaxRate.match to OFN
The version of this method in spree 2.1 will break our build

This way we simply bypass this fix in spree: https://github.com/spree/spree/pull/3669

We can get back to this in the future if we ever experience the mentioned bug
2020-03-03 09:27:04 +00:00
Luis Ramos
777754f8a9 Remove dead code that creates products in product_set 2020-03-02 19:41:51 +00:00
Matt-Yorkley
ed5351d23e Fix duplicate validations in payment methods and shipping methods
Updates the syntax to follow the recommended usage in the code comments of the ActiveModel #validates_with method.

Fixes:

  12) Spree::PaymentMethod raises errors when required fields are missing
      Failure/Error: expect(pm.errors.to_a).to eq(["Name can't be blank", "At least one hub must be selected"])

        expected: ["Name can't be blank", "At least one hub must be selected"]
             got: ["Name can't be blank", "At least one hub must be selected", "At least one hub must be selected"]

        (compared using ==)
      # ./spec/models/spree/payment_method_spec.rb:16:in `block (2 levels) in <module:Spree>'
2020-03-02 19:02:07 +01:00
Luis Ramos
d0a3ab68f3 Make processing payments also pending payments 2020-03-02 17:30:12 +00:00
luisramos0
6877485c90 Extract AuthorizeResponsePatcher from stripeSCA gateway 2020-03-02 17:30:12 +00:00
luisramos0
95c1b7f7a6 Extract PaymentIntentValidator from StripeSCA gateway 2020-03-02 17:30:12 +00:00
luisramos0
e2cdb01a28 Improve readability of stripe sca gateway code 2020-03-02 17:30:12 +00:00
luisramos0
08e729673f Move stripe sca gateway error messages to translatable keys 2020-03-02 17:30:12 +00:00
luisramos0
c0bf09131f Make order.pending_payments include payments in pending state so that these payments (pending is the state after authorization for credit cards) are also processed as part of the normal order workflow 2020-03-02 17:30:12 +00:00
luisramos0
4b3b4e00ff Add authorize action to the stripe_sca gateway and make it fetch the redirect url if provided
Change the purchase action to only capture the alrteady authorized payment intent
2020-03-02 17:30:12 +00:00
Luis Ramos
c37218fdc5 Merge pull request #4719 from luisramos0/stripe_card_to_pm
Make StripeSCA payment method work with existing credit cards (the ones saved through the Stripe Charges API)
2020-03-02 17:22:07 +00:00
Luis Ramos
dad21a52b2 Merge pull request #4672 from luisramos0/stripe_sca_method
Add new Stripe payment method compatible with the new Stripe Payment Intents API
2020-03-02 17:19:05 +00:00
Matt-Yorkley
a0999f5d58 Check #persisted? before calling #touch
Rails 4 now throws a fatal error if calling #touch on an object that hasn't been saved yet: c63cfc8722/activerecord/lib/active_record/persistence.rb (L957)

Fixes:

  41) Stock::Package#shipping_methods does not return shipping methods not used by the package's order distributor
      Failure/Error: distributors.each(&:touch)

      ActiveRecord::ActiveRecordError:
        can not touch on a new record object
      # ./app/models/spree/shipping_method_decorator.rb:81:in `touch_distributors'
      # ./spec/models/stock/package_spec.rb:39:in `block (2 levels) in <module:Stock>'
      # ./spec/models/stock/package_spec.rb:17:in `block (2 levels) in <module:Stock>'
      # ./spec/models/stock/package_spec.rb:32:in `block (2 levels) in <module:Stock>'
      # ./spec/models/stock/package_spec.rb:7:in `block (2 levels) in <module:Stock>'
      # ./spec/models/stock/package_spec.rb:44:in `block (3 levels) in <module:Stock>'

  42) Stock::Package#shipping_categories returns shipping categories that are not shipping categories of the order's products
      Failure/Error: distributors.each(&:touch)

      ActiveRecord::ActiveRecordError:
        can not touch on a new record object
      # ./app/models/spree/shipping_method_decorator.rb:81:in `touch_distributors'
      # ./spec/models/stock/package_spec.rb:39:in `block (2 levels) in <module:Stock>'
      # ./spec/models/stock/package_spec.rb:17:in `block (2 levels) in <module:Stock>'
      # ./spec/models/stock/package_spec.rb:32:in `block (2 levels) in <module:Stock>'
      # ./spec/models/stock/package_spec.rb:7:in `block (2 levels) in <module:Stock>'
      # ./spec/models/stock/package_spec.rb:50:in `block (3 levels) in <module:Stock>'
2020-03-01 18:40:15 +01:00
Matt-Yorkley
847a349a6b Fix geocoding in Rails 4 🎉
Responsibility for geocoding has moved from the `gmaps4rails` gem using `acts_as_taggable`, to the `geocoding` gem using `geocoded_by`. We already use this in the Address model.
2020-02-29 13:08:06 +01:00
Matt-Yorkley
5c526bf5cc Move definitions into constants and use #freeze 2020-02-28 13:08:17 +01:00
Matt-Yorkley
a9e6622639 Update product import #assign_attributes calls
For some reason some of the superfluous attributes being assigned here have started throwing fatal errors in Rails 4 instead of being silently ignored...
2020-02-28 13:08:17 +01:00
Matt-Yorkley
cc1ab1bdb9 Fix issue with broken SQL fragments in scopes and nested subqueries
It looks like there are some issues with prepared statements here, where the resulting SQL contains something like: `WHERE "enterprise_roles"."user_id" = $1` in a subquery. The "$1" part is being lost somehow and isn't present if it's used in nested subqueries.

Example fixed spec (there are lots like this one):

  59) Spree::Admin::ReportsController Supplier Bulk Coop where I have granted P-OC to the distributor only shows product line items that I am supplying
      Failure/Error: produced_line_items.select("spree_line_items.id"))

      ActiveRecord::StatementInvalid:
        PG::ProtocolViolation: ERROR:  bind message supplies 0 parameters, but prepared statement "" requires 1
        : SELECT id FROM "spree_line_items"  WHERE "spree_line_items"."order_id" IN (SELECT id FROM "spree_orders"  WHERE (("spree_orders"."distributor_id" IN (SELECT enterprises.id FROM "enterprises" INNER JOIN "enterprise_roles" ON "enterprise_roles"."enterprise_id" = "enterprises"."id" WHERE (enterprise_roles.user_id = 947)) OR "spree_orders"."order_cycle_id" IN (SELECT id FROM "order_cycles"  WHERE "order_cycles"."coordinator_id" IN (SELECT "enterprises"."id" FROM "enterprises" INNER JOIN "enterprise_roles" ON "enterprises"."id" = "enterprise_roles"."enterprise_id" WHERE "enterprise_roles"."user_id" = $1)))))
      # ./app/services/permissions/order.rb:28:in `visible_line_items'
      # ./lib/open_food_network/reports/line_items.rb:16:in `list'
      # ./lib/open_food_network/bulk_coop_report.rb:54:in `table_items'
      # ./app/controllers/spree/admin/reports_controller.rb:264:in `order_grouper_table'
      # ./app/controllers/spree/admin/reports_controller.rb:101:in `bulk_coop'
      # ./spec/controllers/spree/admin/reports_controller_spec.rb:168:in `block (5 levels) in <top (required)>'
      # ------------------
      # --- Caused by: ---
      # PG::ProtocolViolation:
      #   ERROR:  bind message supplies 0 parameters, but prepared statement "" requires 1
      #   ./app/services/permissions/order.rb:28:in `visible_line_items'
2020-02-28 12:16:55 +01:00
Pau Pérez Fabregat
9440363a22 Merge pull request #4821 from luisramos0/3_val_issues
[Spree 2.1] Fix creation of enterprises/users in specs
2020-02-28 11:34:27 +01:00
Pau Pérez Fabregat
19dd5d0af3 Merge pull request #4855 from luisramos0/3-0-ship-method-services
[Spree 2.1] Fix ShippingMethod.services query
2020-02-28 11:31:53 +01:00
Matt-Yorkley
38215c2a88 Delete some dead code
This feature for assigning defaults via the UI was previously removed
2020-02-27 19:28:25 +01:00
Luis Ramos
ade52dd07d Make ship methods services query work with rails 4, bool_or now results in a boolean and not in t or f as before 2020-02-27 17:40:32 +00:00
Matt-Yorkley
f5bc120fb1 Remove without_protection: true argument from #create calls
Needed for using Strong Parameters in Rails 4
2020-02-22 14:35:10 +01:00
Matt-Yorkley
3896644a04 Remove attr_accessible declarations
Needed for using Strong Parameters in Rails 4
2020-02-22 14:03:16 +01:00
Luis Ramos
1dc7b5793c Fix Enterprise validation and factory so that users are added after the validation 2020-02-22 12:06:33 +00:00
Matt-Yorkley
8b54281254 Add missing method removed from order model in Spree 2.1
It looks like #price_adjustments was refactored/removed in Spree 2.1, but we still call the method in order_decorator
2020-02-22 11:06:51 +00:00
Matt-Yorkley
6c22d655c8 Temporarily remove additional email validation on Spree::Order
A new custom email validator class was added to Spree::Order, and currently it fails every time (breaking lots of specs). This ugly hack disables it for now.
2020-02-22 11:06:51 +00:00
Matt-Yorkley
98fdbb8621 Update deprecated #scoped calls
Model#scoped is now deprecated. Model#where(nil) in Rails 4 returns the same result as Model#scoped in Rails 3
2020-02-22 11:06:51 +00:00
Matt-Yorkley
241e9221b4 Replace deprecated :restrict option in address_decorator.rb
DEPRECATION WARNING: The :restrict option is deprecated. Please use :restrict_with_exception instead, which provides the same functionality. (called from block in <top (required)> at /home/user/Github/openfoodnetwork/app/models/spree/address_decorator.rb:4)
2020-02-22 11:06:51 +00:00
Matt-Yorkley
6541b55872 Fix default_association deprecated syntax in OrderCycle and Schedule 2020-02-22 11:06:51 +00:00
Matt-Yorkley
0a9d63dd2f Fix deprecated syntax on associations 2020-02-22 11:06:51 +00:00
Matt-Yorkley
a8b8269a02 Update deprecated #find_or_initialize_by_* methods 2020-02-22 11:06:51 +00:00
Matt-Yorkley
53645517af Update deprecated #find_by_* methods 2020-02-22 11:06:51 +00:00
luisramos0
9c369caae2 Temporarily comment part of Enterprise.relate_to_owners_enterprises so that most specs pass for now 2020-02-22 11:05:24 +00:00
luisramos0
18ca9980c9 Temporarily comment Enterprise.ensure_owner_is_manager otherwise all specs erroring out with 'Enterprise roles invalid' 2020-02-22 11:05:24 +00:00
luisramos0
8dbe4accaf Upgrade to the spree branch 2-1-0-stable and rails 4.0.0 2020-02-22 11:05:24 +00:00
Luis Ramos
ccb4c77d1f Adapt credit card cloner to not clone card if it's a card to be used only once
Adapt stripe_sca specs to new cloner logic
2020-02-21 10:56:32 +00:00
luisramos0
5ef1510fc7 Adapt CreditCard cloner to clone not 'cards of the platform account to payment_methods of the connected accounts' but instead 'cards or payment_methods of the platform account to payment_methods of the connected accounts'
This process mimicks the existing process of generating a token on the connected account from a card on the platform account. In the Payment Intents API we need to create a payment method in the connected account, a token is not enough
2020-02-21 10:56:32 +00:00
luisramos0
1afd712ff4 Make StripeSCA store cards (and delete them) on the Stripe platform account and not the Stripe Connected account (the sellers accounts)
This is important so that cards can be re-used across sellers in OFN
2020-02-21 10:56:32 +00:00