Commit Graph
208 Commits
Author SHA1 Message Date
Cédric Krier 07a2e268c6 Use bulk context manager
Closes #11750
2026-07-15 09:31:05 +02:00
Cédric Krier bc1de342d1 Pass query as a list of argument to format_args for Shopify query logging 2026-08-06 09:46:51 +02:00
Cédric Krier 264cb3eaee Add logging info about Shopify request
The shopify_app does not generate any logging except the raw info from httpx.
2026-08-06 08:48:19 +02:00
Nicolas Évrard 305301a53e Replace the administration group by a flag on the user 2026-09-13 17:28:32 +02:00
Cédric Krier e936e37d8f Use a sentinel as default value for setting attribute only if changed
For new instances, we must set also the attribute with value `None` as they may
be tested later.

Closes #15060
2026-09-03 15:49:20 +02:00
Cédric Krier c02578478e Add missing _method to url for webhooks 2026-09-03 15:42:15 +02:00
Nicolas Évrard 331131f111 Use Router to register URL endpoints in the pool 2026-08-28 12:06:27 +02:00
Cédric Krier 3cdb3b0fb5 Call on_change_product only if the sale line has been changed
Since f41c9c208d39 the _changed_values is a method instead of a property.

Closes #15013
2026-08-14 18:11:42 +02:00
Cédric Krier f61dc1afdf Do not rely on shipments order from sale in test scenario
Closes #15009
2026-08-13 23:44:29 +02:00
Cédric Krier 7ef25665ff Set Shopify warehouse on sale line only if it has changed
Closes #14995
2026-08-06 10:52:54 +02:00
Cédric Krier 06e917e5f4 Get Shopify order ID from the order_edit key for orders/edited topic
Closes #14992
2026-08-05 10:39:35 +02:00
Cédric Krier bc6f47d033 Convert request headers to dict and body as text to verify Shopify webhook
Closes #14991
2026-08-05 10:07:54 +02:00
Cédric Krier 15d32505dc Use webhook secret to verify Shopify webhook
Closes #14989
2026-08-04 17:32:47 +02:00
Cédric Krier 4bd7cfa657 Clear Shopify ID for product template no more found on Shopify
If the Shopify ID of a template can not be found on Shopify, there is no need
to keep it as we could not reactivate the Shopify product it is added back.

Closes #14980
2026-07-30 16:37:30 +02:00
Cédric Krier 1e2c1ab795 Do not set a shipment cost method for Shopify order without shipping line
Without a shipping line, there is no carrier selected and thus no shipment cost
method to set.

Closes #14976
2026-07-29 19:30:48 +02:00
Cédric Krier 6b99dc69cc Use binary version of psycopg for tests 2026-07-17 22:11:32 +02:00
Cédric Krier 1f28439b09 Raise the final exception when all retries of Shopify request has failed 2026-07-21 17:33:03 +02:00
Cédric Krier a089427b1d Use dict.get instead of getattr to retrieve user errors from Shopify request
The GraphQL library returns dict instead of object.

Closes #14964
2026-07-21 17:32:21 +02:00
Cédric Krier 77966e69f8 Update Shopify product if any variant of the product has been removed
Closes #14955
2026-07-14 17:07:07 +02:00
Cédric Krier ca659201cd Add a refund line for Shopify refund that are not linked to items
Closes #14875
2026-06-16 20:40:21 +02:00
Cédric Krier bc8151c822 Process Shopify sale only if the authorized payment amount is greater than the amount to pay
The correction of #14816 was wrong and the amount to pay should be modified if
there is a global refund.
2026-06-03 15:06:05 +02:00
Cédric Krier 32cae6b2cb Retry mutation query for Shopify tests 2026-06-25 19:03:12 +02:00
Cédric Krier a574780de1 Set only one quantity per line items when creating Shopify fulfillment
Closes #14912
2026-06-25 15:26:30 +02:00
Cédric Krier e95e3f989f Do not reset to quotation Shopify order already processed
After a refund the authorized payment amount may be lower than the amount to
pay but the sale should still stay in processing or done state.

Closes #14816
2026-05-05 00:11:08 +02:00
Cédric Krier 3b16f5f6db Ensure to refund Shopify order only once
There are no guarantee from Shopify that the fulfillableQuantity will be
updated just after the refund creation but the sale may be re-processed via the
Shopify webhooks just after the refund.
To avoid to refund multiple times, we need to keep track that the refund was
already be made.

Closes #14776
2026-04-16 11:11:01 +02:00
Cédric Krier 5e3c4ee93c Fix computation of documentation series for odd minor version 2026-04-20 21:23:36 +02:00
Cédric Krier d8594bd9fd Increase version number 2026-04-20 21:08:15 +02:00
Cédric Krier 7f0d38f477 Prepare release 8.0.0 2026-04-20 20:10:13 +02:00
Cédric Krier de1bb5d5d9 Update translations [skip ci] 2026-04-20 10:38:52 +02:00
Cédric Krier 1c80557101 Sort Shopify products by ID when position is None
Closes #14774
2026-04-15 16:26:20 +02:00
Cédric Krier 905a2b20ba Rename invoice method on shipment into on fulfillment 2026-02-25 11:37:37 +01:00
Cédric Krier 264e27d88e Replace ShopifyAPI by shopifyapp
Closes #14243
2026-03-29 20:05:46 +02:00
Cédric Krier 75ec32b080 Set header for sale from shopify before setting the lines
The lines may depend on the header like the shipping line which depends on the
carrier.

Closes #14706
2026-03-25 23:25:50 +01:00
Cédric Krier df5dc23253 Add support for pick-up delivery method from Shopify
Closes #14581
2026-03-27 13:38:34 +01:00
Cédric Krier 41f63dbb1a Log the update of sales from Shopify
Closes #14711
2026-03-26 10:58:16 +01:00
Cédric Krier 248dbc45f2 Fetch all non cancelled Shopify orders
Orders with only gift cards are directly archived by Shopify but we need to
fetch them.
2026-02-04 16:39:09 +01:00
Cédric Krier f9cfa0c422 Add support for gift card products on Shopify
Closes #14417
2026-01-09 18:31:28 +01:00
Cédric Krier 39a22ae74f Use python3 to launch build 2026-03-26 00:32:49 +01:00
Cédric Krier 94c4f0a9e6 Rewrite coverage paths
Since tox is running tests on the installed package, the coverage paths are no
more relative to the repository root.
2026-03-25 19:39:52 +01:00
Cédric Krier a51a6249c0 Add attn to address
Closes #14633
2026-02-27 12:55:11 +01:00
Cédric Krier a61814d46e Assign shipment before pick in Shopify test scenario 2026-02-10 19:22:32 +01:00
Cédric Krier 145ce8f2f8 Make retrieval of metadata via build really quiet 2026-03-22 09:07:23 +01:00
Cédric Krier f6cc09c813 Do not check link to help.shopify.com
The website requires JavaScript.
2026-03-23 09:03:05 +01:00
Cédric Krier 5310b00496 Remove grouped_slice per IN_MAX
The usage of ``grouped_slice`` without size is deprecated since `=
ANY(ARRAY[%s])` is used for PostgreSQL and SQLite is used only for tests.

The ``Database.IN_MAX`` is replaced by ``backend.MAX_QUERY_PARAMS`` which is a
more accurate limit of the backend.
The SQLite limits is indeed SQLITE_MAX_EXPR_DEPTH so we use a empirical value.
2026-03-22 21:05:26 +01:00
Nicolas Évrard 299dd6b1c9 Update to Psycopg 3
Closes #10901
2026-03-22 19:53:32 +01:00
Cédric Krier d3c8a8e55d Add support for Python 3.14 2026-03-21 09:02:25 +01:00
Cédric Krier 42b0fc7061 Remove support for Python 3.9 2026-03-21 08:48:06 +01:00
Cédric Krier e15c0b7d7a Upgrade to pyproject using hatchling as build-system 2026-03-21 18:46:34 +01:00
Cédric Krier af2e06bb32 Set headers and restrict to 1 worker when checking documentation link
This follows the wikipedia robot policy:
https://wikitech.wikimedia.org/wiki/Robot_policy

Closes #14637
2026-03-02 10:58:19 +01:00
Cédric Krier 00c723b0eb Manage payment terms from Shopify
The sale is always confirmed when the Shopify order has payment terms.

Closes #14619
2026-02-20 17:50:02 +01:00