414df97e9d
Squashed commit of the following:
...
commit cd99a6489b
Merge: ebcbbb1 e63a036
Author: ncoronel <ncoronel@quo.ar >
Date: Wed Aug 26 10:12:44 2026 -0300
Merge branch 'fix/simplify_stock_reservations' of https://gitea.quo.ar/tbianchini/shopit-back into fix/simplify_stock_reservations
commit ebcbbb1774
Author: ncoronel <ncoronel@quo.ar >
Date: Tue Aug 25 16:33:39 2026 -0300
fix(cart): reconcile expired cart mutations
commit 3dd378ed06
Author: ncoronel <ncoronel@quo.ar >
Date: Tue Aug 25 16:10:15 2026 -0300
docs(stock): describe associated entity expiration
commit 4f705175bd
Author: ncoronel <ncoronel@quo.ar >
Date: Tue Aug 25 16:10:14 2026 -0300
test(stock): cover propagated reservation expiration
commit 82570fe941
Author: ncoronel <ncoronel@quo.ar >
Date: Tue Aug 25 16:09:52 2026 -0300
refactor(stock): propagate reservation expiration
commit d2a2b323e0
Author: ncoronel <ncoronel@quo.ar >
Date: Tue Aug 25 15:58:47 2026 -0300
docs(stock): document terminal reservation recovery
commit ec67623b7b
Author: ncoronel <ncoronel@quo.ar >
Date: Tue Aug 25 15:58:47 2026 -0300
test(stock): cover terminal reservation lifecycle
commit f6f138e180
Author: ncoronel <ncoronel@quo.ar >
Date: Tue Aug 25 15:58:41 2026 -0300
refactor(stock): make expired reservations terminal
commit d612b7a118
Author: ncoronel <ncoronel@quo.ar >
Date: Tue Aug 25 15:28:30 2026 -0300
docs(stock): describe unified expiration ownership
commit 49f42d4507
Author: ncoronel <ncoronel@quo.ar >
Date: Tue Aug 25 15:28:23 2026 -0300
test(stock): cover authoritative reservation expiration
commit 1881cc1d4b
Author: ncoronel <ncoronel@quo.ar >
Date: Tue Aug 25 15:28:17 2026 -0300
refactor(stock): make reservation expiration authoritative
commit 00ec37d8a0
Author: ncoronel <ncoronel@quo.ar >
Date: Tue Aug 25 15:05:34 2026 -0300
docs(stock): document centralized reservation flow
commit d9f374c718
Author: ncoronel <ncoronel@quo.ar >
Date: Tue Aug 25 15:05:29 2026 -0300
test(stock): cover aggregate reservation lifecycle
commit bbfdf8f342
Author: ncoronel <ncoronel@quo.ar >
Date: Tue Aug 25 15:05:23 2026 -0300
refactor(stock): centralize reservation aggregate
commit 8a0f29bdae
Author: ncoronel <ncoronel@quo.ar >
Date: Tue Aug 25 16:33:39 2026 -0300
fix(cart): reconcile expired cart mutations
commit 198ed400a9
Author: ncoronel <ncoronel@quo.ar >
Date: Tue Aug 25 16:10:15 2026 -0300
docs(stock): describe associated entity expiration
commit 23d83166e6
Author: ncoronel <ncoronel@quo.ar >
Date: Tue Aug 25 16:10:14 2026 -0300
test(stock): cover propagated reservation expiration
commit cb090402d0
Author: ncoronel <ncoronel@quo.ar >
Date: Tue Aug 25 16:09:52 2026 -0300
refactor(stock): propagate reservation expiration
commit c120b6f7c0
Author: ncoronel <ncoronel@quo.ar >
Date: Tue Aug 25 15:58:47 2026 -0300
docs(stock): document terminal reservation recovery
commit 1106fa28b4
Author: ncoronel <ncoronel@quo.ar >
Date: Tue Aug 25 15:58:47 2026 -0300
test(stock): cover terminal reservation lifecycle
commit 896fb81bcf
Author: ncoronel <ncoronel@quo.ar >
Date: Tue Aug 25 15:58:41 2026 -0300
refactor(stock): make expired reservations terminal
commit 8545fbc645
Author: ncoronel <ncoronel@quo.ar >
Date: Tue Aug 25 15:28:30 2026 -0300
docs(stock): describe unified expiration ownership
commit dd6dcb708a
Author: ncoronel <ncoronel@quo.ar >
Date: Tue Aug 25 15:28:23 2026 -0300
test(stock): cover authoritative reservation expiration
commit 624b246ff5
Author: ncoronel <ncoronel@quo.ar >
Date: Tue Aug 25 15:28:17 2026 -0300
refactor(stock): make reservation expiration authoritative
commit 007b95b904
Author: ncoronel <ncoronel@quo.ar >
Date: Tue Aug 25 15:05:34 2026 -0300
docs(stock): document centralized reservation flow
commit 0b3c8c93be
Author: ncoronel <ncoronel@quo.ar >
Date: Tue Aug 25 15:05:29 2026 -0300
test(stock): cover aggregate reservation lifecycle
commit ede718e448
Author: ncoronel <ncoronel@quo.ar >
Date: Tue Aug 25 15:05:23 2026 -0300
refactor(stock): centralize reservation aggregate
commit e63a03601a
Author: ncoronel <ncoronel@quo.ar >
Date: Tue Aug 25 16:33:39 2026 -0300
fix(cart): reconcile expired cart mutations
commit 389373ad8c
Author: ncoronel <ncoronel@quo.ar >
Date: Tue Aug 25 16:10:15 2026 -0300
docs(stock): describe associated entity expiration
commit ace02a3133
Author: ncoronel <ncoronel@quo.ar >
Date: Tue Aug 25 16:10:14 2026 -0300
test(stock): cover propagated reservation expiration
commit d69a6210f6
Author: ncoronel <ncoronel@quo.ar >
Date: Tue Aug 25 16:09:52 2026 -0300
refactor(stock): propagate reservation expiration
commit 3c0b43fea3
Author: ncoronel <ncoronel@quo.ar >
Date: Tue Aug 25 15:58:47 2026 -0300
docs(stock): document terminal reservation recovery
commit 9b0008626b
Author: ncoronel <ncoronel@quo.ar >
Date: Tue Aug 25 15:58:47 2026 -0300
test(stock): cover terminal reservation lifecycle
commit 61861e331a
Author: ncoronel <ncoronel@quo.ar >
Date: Tue Aug 25 15:58:41 2026 -0300
refactor(stock): make expired reservations terminal
commit 2cc9d7dd97
Author: ncoronel <ncoronel@quo.ar >
Date: Tue Aug 25 15:28:30 2026 -0300
docs(stock): describe unified expiration ownership
commit f982bcead1
Author: ncoronel <ncoronel@quo.ar >
Date: Tue Aug 25 15:28:23 2026 -0300
test(stock): cover authoritative reservation expiration
commit 7a85e1731d
Author: ncoronel <ncoronel@quo.ar >
Date: Tue Aug 25 15:28:17 2026 -0300
refactor(stock): make reservation expiration authoritative
commit 6db99e775a
Author: ncoronel <ncoronel@quo.ar >
Date: Tue Aug 25 15:05:34 2026 -0300
docs(stock): document centralized reservation flow
commit e5f7ba3615
Author: ncoronel <ncoronel@quo.ar >
Date: Tue Aug 25 15:05:29 2026 -0300
test(stock): cover aggregate reservation lifecycle
commit 24bfef431b
Author: ncoronel <ncoronel@quo.ar >
Date: Tue Aug 25 15:05:23 2026 -0300
refactor(stock): centralize reservation aggregate
2026-08-26 10:30:16 -03:00
dc0fbe06b8
fix(cart): invalidate checkout on mutation
2026-08-21 14:06:11 -03:00
afd69b8393
feat(checkout): track current cart purchase
2026-08-21 14:05:33 -03:00
79e721ae63
refactor(checkout): disable purchase item editing
2026-08-21 11:03:48 -03:00
786cf2db52
fix(cart): propagate expired checkout purchase errors
2026-08-21 08:58:51 -03:00
ae6149df84
feat: enable full cart editing for Desfile tenant and update related tests
2026-08-20 15:13:23 -03:00
1776cfe581
Revert "feat: add session partitioned cookie support and update related tests"
...
This reverts commit 5ad18694e1 .
2026-08-20 15:12:41 -03:00
5ad18694e1
feat: add session partitioned cookie support and update related tests
2026-08-20 14:47:51 -03:00
c8ce3b0da3
feat(checkout): enforce editing policy on items
2026-08-20 10:56:19 -03:00
5c0b3503b7
feat(purchase): implement purchase limit enforcement and custom exception handling
2026-08-19 16:48:32 -03:00
8537d2ed0a
feat(catalog): implement maximum addable quantity logic and user quota sharing across variants
2026-08-19 16:48:32 -03:00
d97cc12af6
Merge branch 'feature/cart_editing_policy' into dev
2026-08-19 16:47:30 -03:00
a2c5e687f9
feat(logging): record reservation cleanup attempts
2026-08-19 14:17:05 -03:00
1dc4e29c69
refactor(reservations): unify expiration command
2026-08-19 13:58:03 -03:00
093e894cc3
feat(cart): expire abandoned stock reservations
2026-08-19 13:48:09 -03:00
8d6bcdcc43
refactor(cart): invalidate payment on actual changes
2026-08-19 13:43:08 -03:00
3206e293eb
refactor(cart): own checkout item editing
2026-08-19 13:43:08 -03:00
e6c4b40a37
feat(inventory): add traceable cart stock reservations
2026-08-19 13:43:08 -03:00
014b5bb012
feat(cart): implement cart editing policies and update related functionality
2026-08-19 10:15:37 -03:00
8e26611097
feat: add display_cart_item_images feature to tenants and update related resources
2026-08-18 16:46:45 -03:00
7c2880646f
refactor(cart): simplify CartItemResource response structure to prioritize selected variant details
2026-08-18 09:05:50 -03:00
4817cb28fe
refactor(cart): update CartItemResource to serialize only selected variant and remove unused variant data
2026-08-18 09:02:45 -03:00
97995ae728
feat(catalog): replace selectionOptions with selectorOptions to filter hidden attributes
2026-08-13 08:30:03 -03:00
8359f0831f
feat(cart): update guest token cookie settings for improved session handling in tests
2026-08-12 15:49:53 -03:00
02cf3f3773
Add tests for ticket validity and event date formatting
...
- Create TicketValiditySchemaTest to verify database schema for ticket validity.
- Update CatalogModelsTest to include tests for event date attributes and selection options.
- Introduce EventDateTextFormatterTest for formatting event dates in Spanish.
- Refactor EventModelsTest to include validity time relationships.
- Add SaleDetailResourceTest to ensure correct serialization of purchase items.
- Enhance TicketTest with validity time checks and status management.
- Implement ValidityTimeResourceTest to validate resource output for different validity types.
- Add ValidityTimeTest to verify casting and validity checks for validity time types.
2026-08-11 12:41:35 -03:00
ff9d7728e8
Implement localization for API responses and error messages
...
- Added localization support for API responses in English and Spanish.
- Introduced a middleware to set the API locale based on the Accept-Language header.
- Updated various exception messages and validation responses to use localized strings.
- Created new language files for English and Spanish translations.
- Refactored existing code to replace hardcoded messages with localized strings.
- Added tests to verify localization functionality and response correctness.
2026-07-28 10:19:39 -03:00
8b26a2b63e
feat(purchase): add checkout expiration settings and reservation status to purchase items
...
- Introduced a new configuration file for purchase settings, including checkout and payment expiration times.
- Added a migration to include a `reservation_status` column in the `compra_items` table, defaulting to 'active' and updating existing records based on purchase status.
- Created a migration to add an `expires_at` timestamp to the `compras` table, updating it for existing records based on their status.
- Scoped unique indexes in the `carritos` table to only active carts, adding virtual columns for active user and guest tokens.
- Implemented a console command to expire overdue purchases and release stock reservations, scheduled to run every minute.
- Added tests for Google token exchange and login functionality, ensuring proper cart handling and user authentication.
- Updated purchase-related tests to reflect changes in item handling and customer data validation.
2026-07-27 12:49:27 -03:00
29a2ca19a3
refactor(catalog): Complete catalog refactor to simplify its data model and its querying.
...
source commits: refactor/catalog
2026-07-21 09:23:19 -03:00
6fc6ed1fac
feat: refactor cart and purchase handling to support polymorphic buyable types and improve code readability
2026-07-16 09:55:38 -03:00
c05206cc51
feat: refactor cart item handling to use mapped buyable types and improve method signatures
2026-07-16 09:19:38 -03:00
480ee70393
feat: refactor cart and bundle handling to support Buyable interface for improved flexibility
2026-07-16 09:19:03 -03:00
1d56d27350
feat: implement Bundle and BundleItem models, migrations, and polymorphic relationships for cart and purchase items
2026-07-16 09:11:00 -03:00
10157d7c63
feat: Implement inventory policy for product variants
...
- Introduced InventoryPolicy enum to manage tracked and unlimited inventory types.
- Updated ProductVariant model to include inventory_policy and cantidad_vendida attributes.
- Modified addItem and updateItem methods in Cart to check available quantity based on inventory policy.
- Added migration to include inventory_policy and cantidad_vendida in productos_variantes table.
- Enhanced tests to validate inventory behavior for both tracked and unlimited policies.
- Updated various request and resource classes to handle new inventory fields.
2026-07-16 08:36:59 -03:00
3703ae9bcf
feat: add getTotalAmount method to Cart and refactor Purchase model to utilize it
2026-07-06 15:26:41 -03:00
c19e00987e
feat: implement MergeGuestCartMiddleware to merge guest cart with user cart upon authentication
2026-07-06 14:57:19 -03:00
dc32eb9bee
feat: enhance checkout process with cart integration and stock confirmation
2026-07-06 14:06:25 -03:00
b94efea4e0
feat: update maximum quantity error message in Cart model and test
2026-07-03 08:44:49 -03:00
a95cfc780b
feat: implement user registration functionality with validation and response handling
2026-07-02 12:23:50 -03:00
18eedd3209
feat: add success messages for cart item operations in CartController
2026-07-02 12:06:00 -03:00
00837850e6
feat: enhance stock validation messages in addItem and updateItem methods
2026-07-02 10:37:08 -03:00
6a0b08c9d7
feat: implement multi-tenant cart system with stock reservation and inventory tracking
2026-07-01 16:21:53 -03:00
4943e68606
feat: implement multi-tenant cart functionality and add image validation helper
2026-07-01 15:38:12 -03:00
a79f58d520
feat: implement cart service and resource to manage user and guest shopping carts
2026-07-01 14:56:12 -03:00
a7dba4dc10
feat: implement CartService to manage cart lifecycle and guest identity resolution
2026-07-01 12:38:46 -03:00
cb15905c46
feat: refactor product attributes handling to use product_attribute table and update related models and requests
2026-06-30 16:35:56 -03:00
fdeba7540b
feat: refactor product variant handling to use product pricing and remove unnecessary fields
2026-06-30 15:58:19 -03:00
492c6c4ac2
feat(cart): implement cart management with add, update, and remove item functionalities
2026-06-25 10:24:45 -03:00
9b82800921
feat(cart): add Cart and CartItem models with item management methods
2026-06-25 10:03:17 -03:00