Commit Graph

3245 Commits

Author SHA1 Message Date
Luis Ramos
c0ddeceb1e Remove Pin Payments 2021-02-06 11:15:48 +00:00
Pau Pérez Fabregat
3ab6da03e7 Merge pull request #6296 from luisramos0/remove_migs
Remove Migs payment gateway
2021-02-04 22:07:35 +01:00
Luis Ramos
e69eefdc0f Remove Migs payment gateway 2021-02-03 21:41:40 +00:00
Andy Brett
6e735739a5 after customer auth + redirect, process payment and clear cvv_response_message 2021-02-03 09:50:37 -08:00
Andy Brett
558b01896f extract url helpers to helper module 2021-02-03 09:50:37 -08:00
Pau Pérez Fabregat
79f98bdfa7 Merge pull request #6770 from Matt-Yorkley/more-dead-code
Dead code: Spree::Order#clear_adjustments
2021-02-03 09:37:42 +01:00
Pau Pérez Fabregat
fbab5120f1 Merge pull request #6771 from Matt-Yorkley/touch-updated-at
Touch updated_at column when updating records via #update_column
2021-02-03 09:33:37 +01:00
Pau Perez
060530cda8 Do not fetch VOs with deleted variant
In the line below we filter them out in Ruby so it's a waste of
resources. The fundamental difference is that `#includes` and
`#references` results in LEFT JOINs, whereas `#joins` results in INNER
JOIN, and because there's a default scope on `deleted_at IS NULL`, these
are not included in the result set.

This however, requires us to move away from the current algorithm but
unfortunately we can't refactor it completely yet.

Before:

```sql
SELECT *
  FROM "variant_overrides"
  LEFT OUTER
  JOIN "spree_variants"
    ON "spree_variants"."id"              =  "variant_overrides"."variant_id"
   AND "spree_variants"."deleted_at" IS NULL
  LEFT OUTER
  JOIN "spree_products"
    ON "spree_products"."id"              =  "spree_variants"."product_id"
   AND "spree_products"."deleted_at" IS NULL
 WHERE "variant_overrides"."permission_revoked_at" IS NULL
   AND "variant_overrides"."hub_id" IN (
    SELECT "enterprises"."id"
      FROM "enterprises"
    INNER
      JOIN "enterprise_roles"
        ON "enterprise_roles"."enterprise_id" =  "enterprises"."id"
    WHERE (enterprise_roles.user_id          =  ?)
      AND (sells                             != 'none')
 ORDER BY name)
```

After:

```sql
SELECT "variant_overrides".*
  FROM "variant_overrides"
 INNER
  JOIN "spree_variants"
    ON "spree_variants"."id"              =  "variant_overrides"."variant_id"
   AND "spree_variants"."deleted_at" IS NULL
 INNER
  JOIN "spree_products"
    ON "spree_products"."id"              =  "spree_variants"."product_id"
   AND "spree_products"."deleted_at" IS NULL
 WHERE "variant_overrides"."permission_revoked_at" IS NULL
   AND "variant_overrides"."hub_id" IN (
    SELECT "enterprises"."id"
      FROM "enterprises"
    INNER
      JOIN "enterprise_roles"
        ON "enterprise_roles"."enterprise_id" =  "enterprises"."id"
    WHERE (enterprise_roles.user_id          =  ?)
      AND (sells                             != 'none')
 ORDER BY name)
```

This is covered in the test suite by
spec/controllers/admin/variant_overrides_controller_spec.rb:72. It keeps
passing so we're good to go.
2021-02-01 14:47:51 +01:00
Matt-Yorkley
0e82160b76 Touch the updated_at column when updating records via #update_column
#update_column(s) skips callbacks (which is useful), but it doesn't change the updated_at field on the record by default (which we should be doing in these cases).

This change is made in Spree 2.2 here: b367c629ce
2021-01-30 12:49:38 +00:00
Matt-Yorkley
8466ab5675 Extract more OFN fee-handling code from Spree::Order class 2021-01-29 22:51:21 +00:00
Matt-Yorkley
793baca44f Update fees on single line item and then order fees in LineItemsController#delete
Fees on other line items are left alone (not recreated), and whatever fees on the order are updated.
2021-01-29 21:53:11 +00:00
Matt-Yorkley
ce5f9a9a94 Update existing closed order fees when deleting line items on completed orders in LineItemsController#delete
Whatever fee adjustments there are on other line items should be left alone (not recreated), and whatever fee adjustments are already on the order should just be updated.
2021-01-29 21:53:11 +00:00
Matt-Yorkley
58c7c90624 Refactor methods for updating closed adjustments 2021-01-29 21:53:11 +00:00
Matt-Yorkley
dffa4d4f39 Update order methods delegation 2021-01-29 21:53:09 +00:00
Matt-Yorkley
3ecdfca9cf Rename fee adjustment clear-all method 2021-01-29 21:52:28 +00:00
Matt-Yorkley
9abf6cdcdf Rename expensive method Order#update_distribution_charge!
This method is named "update distribution charge". What this method actually does is delete all of the fee adjustments on an order and all it's line items, then recreate them all from scratch. We call this from lots of different places all the time, and it's incredibly expensive. It even gets called from inside of transactions being run inside callbacks. Renaming it hopefully will add a bit of clarity.

This needs to be a lot more granular!
2021-01-29 21:52:28 +00:00
Matt-Yorkley
785cdf9bdc Extract order fees logic to service 2021-01-29 21:52:27 +00:00
Matt-Yorkley
fc06e5e4c3 Remove dead code Spree::Order#clear_adjustments 2021-01-29 19:58:05 +00:00
Matt-Yorkley
e7866db7b1 Improve efficiency in applying enterprise fees in Order#update_distribution_charge! 2021-01-29 18:32:26 +00:00
Matt-Yorkley
e4d7e03903 Merge pull request #6740 from Matt-Yorkley/carts-cleanup
Remove old abandoned carts
2021-01-29 12:32:16 +01:00
Matt-Yorkley
4f7c8062a1 Create class to map join table and simplify code 2021-01-28 21:51:50 +00:00
Matt-Yorkley
dcbe9c4011 Merge pull request #6756 from andrewpbrett/fix-sca-regression
Fix SCA regression
2021-01-28 19:45:08 +01:00
Matt-Yorkley
c65f623ed8 Memoize and simplify objects being checked in Order#provided_by_order_cycle? 2021-01-28 01:02:57 +00:00
Maikel
8a757812e7 Merge pull request #6735 from coopdevs/enable-mail-delivery-always
Enable mail delivery always
2021-01-28 09:31:12 +11:00
Matt-Yorkley
f49355e5d3 Merge pull request #6724 from Matt-Yorkley/remove-price-adjustments
Delete dead code Spree::Order#price_adjustments
2021-01-27 23:29:38 +01:00
Pau Pérez Fabregat
c3897dd3df Merge pull request #6643 from coopdevs/customer-balance-frontoffice
Customer balance frontoffice
2021-01-27 19:55:56 +01:00
Andy Brett
e6e20309aa Revert "don't try to process a payment if it's pending auth"
This reverts commit bba9e55006.
2021-01-27 08:06:20 -08:00
Pau Perez
4a5869b60c Remove ability to toggle mail delivery
OFN requires mails to work so there's no point in having this
conditional with the maintenance cost it entails.
2021-01-25 13:27:44 +01:00
Matt-Yorkley
7940a42e8c Add Spree::Order#all_adjustments scope, which can be used to get all adjustments on an order, and order's line_items, etc, not just adjustments directly on the order itself. 2021-01-23 03:59:32 +00:00
Matt-Yorkley
4d4c055577 Loosen Spree::Adjustment#tax scope to include any tax adjustments 2021-01-23 03:59:32 +00:00
Matt-Yorkley
173e502c98 Rename #included scope to #inclusive
This method name (#included) is reserved and used internally by ActiveRecord. After updating Ruby, this has changed from a silent warning to a fatal error.
2021-01-23 03:59:32 +00:00
Matt-Yorkley
a328a9bc1b Use included boolean in tax adjustments 2021-01-23 03:59:32 +00:00
Matt-Yorkley
8be18cd05c Add #included and #additional scopes to Spree::Adjustment
We can now do things like:
```
included_tax = order.adjustments.tax.included.sum(:amount)
additional_tax = order.adjustments.tax.additional.sum(:amount)
```
2021-01-23 03:59:32 +00:00
Matt-Yorkley
0247386f82 Delete dead code Spree::Order#price_adjustments
This method returns the same thing as the Spree::Order#line_items_adjustments scope, but in a slightly less useful format (an array instead of a relation). The method's name is also totally inaccurate, as currently the only adjustments that appear on line items are tax adjustments for inclusive tax rates, which by definition have no effect on the price whatsoever...
2021-01-23 00:05:56 +00:00
Andy Brett
84689c43be Merge pull request #6534 from andrewpbrett/sca-emails
Send email when SCA authorization is required for admin payment
2021-01-21 13:53:35 -08:00
Andy Brett
0e7f4b2f14 Merge pull request #6537 from mkllnk/simplify-mail-config
Simplify mail config
2021-01-21 10:59:43 -08:00
Andy Brett
3ef4a74b84 Merge pull request #6655 from Matt-Yorkley/summing-amounts
Improve performance on summing adjustments and payment
2021-01-21 10:58:10 -08:00
Matt-Yorkley
d8b795ebee Merge pull request #6679 from Matt-Yorkley/soft-delete-enterprise-fees
Soft-delete Enterprise Fees
2021-01-21 19:57:29 +01:00
Andy Brett
bba9e55006 don't try to process a payment if it's pending auth 2021-01-21 09:18:29 -08:00
Andy Brett
affc82b2b5 update payment jobs delivery methods 2021-01-21 09:18:29 -08:00
Andy Brett
84b5fcf2ce add resend-authorization-email button to admin screen 2021-01-21 09:17:07 -08:00
Andy Brett
5c0408c68c pass paymentIntent ID to capture 2021-01-21 08:48:38 -08:00
Andy Brett
8507dacc10 pass return_url option to gateway authorize 2021-01-21 08:48:33 -08:00
Andy Brett
e31d566f7f Merge pull request #6283 from luisramos0/sets
Move sets out of app/models to app/services/sets
2021-01-20 19:22:15 -08:00
Andy Brett
1d4fa2983c Merge pull request #6466 from Matt-Yorkley/package-optimisation
Optimise Shipment#to_package
2021-01-20 19:20:56 -08:00
Pau Perez
cc9e3fe69b Replace double negation with proper list of states
We rely now on the exhaustive list of states an order can be in after
checkout. What made this all a bit more messy is that I made up the
"checkout" order state, likely mixing it from the payment model states.

This simplifies things quite a bit and gives meaningful names to things.
2021-01-20 18:34:31 +01:00
Pau Perez
20abaaa950 Reuse outstanding balance statement across queries
Instead of relying on Spree::Order#outstanding_balance we make us of the
result set `balance_value` computed column. So, we ask PostgreSQL to
compute it instead of Ruby and then serialize it from that computed
column. That's a bit faster to compute that way and let's reuse logic.

We hide this new implementation under this features' toggle so it's only
used when enabled. We want hit the old behaviour by default.
2021-01-20 18:23:22 +01:00
Pau Perez
681a009eb6 Extract outstanding balance SQL CASE/WHEN 2021-01-20 18:23:22 +01:00
Matt-Yorkley
6a9505cf67 Ensure adjustments can access soft-deleted originators
Note: originator is generally an EnterpriseFee or a TaxRate
2021-01-19 16:46:14 +00:00
Matt-Yorkley
c4a8a38c8d Soft-delete enterprise fees
These objects can hold critical information related to adjustments and tax categories. If they are hard-deleted we lose vital data that's needed by associated records.
2021-01-19 16:46:14 +00:00