ncoronel
daa74845b7
feat(purchase): add expiration time calculations to PurchaseResource and implement related tests
2026-08-27 10:06:42 -03:00
ncoronel
c820741e5f
feat(purchase): refactor stock reservation expiration handling and update related tests
2026-08-27 10:06:42 -03:00
ncoronel
f61b7e4dee
feat(auth): expire stale password reset codes
2026-08-27 10:06:41 -03:00
ncoronel
e53fa949cf
feat(auth): persist password reset expiration
2026-08-27 10:06:41 -03:00
ncoronel
c51e24311f
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-27 10:06:41 -03:00
ncoronel
bbe3cf82f5
feat(bootstrap): expose website type favicon
2026-08-26 14:37:25 -03:00
ncoronel
ff61a3d3b8
feat(tenant): share website type favicon attachment
2026-08-26 14:37:17 -03:00
ncoronel
dc33e5dc09
fix: consolidate purchase confirmation emails
2026-08-26 11:29:53 -03:00
ncoronel
d0424c5589
feat(notification): enhance email logging and refactor event handling to use scalar identifiers
2026-08-26 09:38:19 -03:00
ncoronel
28d09dedab
fix(queue): discard email jobs for deleted purchases
2026-08-26 09:15:11 -03:00
ncoronel
8220fb5aaf
feat(notification): add PDF attachments to ticket availability emails
2026-08-26 08:54:15 -03:00
ncoronel
bf02d37a33
feat(sales): add Excel exports
2026-08-25 11:37:53 -03:00
ncoronel
78ce263849
feat(notification): update email branding to use website type for welcome and password reset emails
2026-08-25 11:03:06 -03:00
ncoronel
0c8419a5eb
feat(notification): implement branding for emails using WebsiteType and update templates
2026-08-25 11:03:06 -03:00
ncoronel
c2921166bd
feat(catalog): exclude out-of-stock items and update variant visibility logic
2026-08-25 10:49:05 -03:00
ncoronel
0f67e66b6b
feat(category-visibility): add success messages for category visibility updates
2026-08-25 10:47:53 -03:00
ncoronel
725abed06a
feat(category-visibility): implement category visibility controller and service with update functionality
2026-08-25 10:47:53 -03:00
ncoronel
743939fc63
feat(category-visibility): add success messages for category visibility updates
2026-08-25 10:47:53 -03:00
ncoronel
eb50e65fef
feat(purchase): add filtering for multiple statuses in purchase index and order by status then date
2026-08-25 10:47:53 -03:00
ncoronel
1cf13501d8
feat(category-visibility): implement category visibility controller and service with update functionality
2026-08-25 10:47:53 -03:00
ncoronel
2eeef8d392
feat(catalog): add is_enabled attribute to categories and filter items accordingly
2026-08-25 10:47:53 -03:00
ncoronel
87a4fa6288
feat(catalog): add group_order field to catalog items and update related logic
2026-08-25 10:45:12 -03:00
ncoronel
6b06028771
fix(sales): render PDFs in client timezone
2026-08-24 16:42:38 -03:00
ncoronel
0aa423e90e
feat(sales): validate PDF timezone parameter
2026-08-24 16:42:38 -03:00
ncoronel
e7bf2f887a
Merge branch 'hotfix/change_history_time'
2026-08-24 16:13:19 -03:00
ncoronel
80a02fdc52
feat(sale): add changed_at serialization to SaleModificationResource
2026-08-24 16:12:55 -03:00
nahu
36eb41a18a
feat(invitation): update seat allocation structure and enhance provisioning logic
2026-08-22 14:16:57 +00:00
ncoronel
1dd2366957
feat(catalog): expose product unavailability messages
2026-08-21 16:47:15 -03:00
ncoronel
e8bcaa2026
feat(sales): handle in-review purchases as pending
2026-08-21 16:15:59 -03:00
ncoronel
5548fe8511
feat(purchase): restore in-review transfer lifecycle
2026-08-21 16:15:55 -03:00
ncoronel
dc0fbe06b8
fix(cart): invalidate checkout on mutation
2026-08-21 14:06:11 -03:00
ncoronel
afd69b8393
feat(checkout): track current cart purchase
2026-08-21 14:05:33 -03:00
ncoronel
1650176aa0
refactor(checkout): keep source cart active
2026-08-21 13:42:30 -03:00
ncoronel
79e721ae63
refactor(checkout): disable purchase item editing
2026-08-21 11:03:48 -03:00
ncoronel
4e7e42d16e
refactor(checkout): materialize purchase item snapshots at start
2026-08-21 11:03:39 -03:00
ncoronel
3a2dc8b7e0
feat(cart): implement restoration and reservation of source cart on expired checkout modification
2026-08-21 10:10:28 -03:00
ncoronel
9d870be294
feat(checkout): restore source cart on cancellation
2026-08-21 09:29:23 -03:00
ncoronel
eafb02ffd5
fix(purchase): enhance handling of cart items for created and pending payment purchases
2026-08-21 08:58:51 -03:00
ncoronel
786cf2db52
fix(cart): propagate expired checkout purchase errors
2026-08-21 08:58:51 -03:00
ncoronel
cb56e33685
fix(purchase): unify expired checkout errors
2026-08-21 08:58:51 -03:00
ncoronel
dd81e3b3f7
feat: enhance sale detail retrieval by including trashed cart items and update related tests
2026-08-21 08:58:18 -03:00
ncoronel
8c09ca1204
feat: update sales query to use cart quantity when purchase items are absent and enhance related tests
2026-08-21 08:48:27 -03:00
ncoronel
ae6149df84
feat: enable full cart editing for Desfile tenant and update related tests
2026-08-20 15:13:23 -03:00
ncoronel
1776cfe581
Revert "feat: add session partitioned cookie support and update related tests"
...
This reverts commit 5ad18694e1 .
2026-08-20 15:12:41 -03:00
ncoronel
5ad18694e1
feat: add session partitioned cookie support and update related tests
2026-08-20 14:47:51 -03:00
ncoronel
6775fb110c
feat: simplify cart restoration logic in ReleaseCheckoutService and SourceCartService
2026-08-20 13:53:04 -03:00
ncoronel
9c46eff880
feat: add checkout editing policy to tenants and update related logic across services and resources
2026-08-20 12:38:22 -03:00
ncoronel
c8ce3b0da3
feat(checkout): enforce editing policy on items
2026-08-20 10:56:19 -03:00
ncoronel
d36a929f8c
feat(tenant): add checkout editing policy
2026-08-20 10:56:13 -03:00
ncoronel
2de02dfd31
feat: add item editing preparation and enhance payment intent handling in PurchaseController
2026-08-20 09:46:32 -03:00
ncoronel
f9a766dee1
feat: enhance purchase loading logic to include cart items when purchase items are empty
2026-08-20 08:48:03 -03:00
ncoronel
8bc57cf0ff
fix: update import statements in EditCheckoutService for clarity and consistency
2026-08-19 17:22:02 -03:00
ncoronel
5c0b3503b7
feat(purchase): implement purchase limit enforcement and custom exception handling
2026-08-19 16:48:32 -03:00
ncoronel
8537d2ed0a
feat(catalog): implement maximum addable quantity logic and user quota sharing across variants
2026-08-19 16:48:32 -03:00
ncoronel
d97cc12af6
Merge branch 'feature/cart_editing_policy' into dev
2026-08-19 16:47:30 -03:00
ncoronel
93c99afb13
feat(telepagos): enhance webhook handling and add TenantTransactionResetService
2026-08-19 15:23:22 -03:00
ncoronel
32d2b182c6
Merge branch 'feature/reserved_invitations' into dev
2026-08-19 14:33:38 -03:00
ncoronel
2632a80722
feat(invitation): implement InvitationPurchaseProvisioner and related migration and seeder updates
2026-08-19 14:33:08 -03:00
ncoronel
a2c5e687f9
feat(logging): record reservation cleanup attempts
2026-08-19 14:17:05 -03:00
ncoronel
1dc4e29c69
refactor(reservations): unify expiration command
2026-08-19 13:58:03 -03:00
ncoronel
093e894cc3
feat(cart): expire abandoned stock reservations
2026-08-19 13:48:09 -03:00
ncoronel
fdf0f3328f
refactor(stock): implement expiration for stock reservations and add configuration
2026-08-19 13:43:08 -03:00
ncoronel
8d6bcdcc43
refactor(cart): invalidate payment on actual changes
2026-08-19 13:43:08 -03:00
ncoronel
3206e293eb
refactor(cart): own checkout item editing
2026-08-19 13:43:08 -03:00
ncoronel
aed99bd05e
refactor(checkout): remove legacy purchase item reservations
2026-08-19 13:43:08 -03:00
ncoronel
f1649e0e4b
refactor(checkout): materialize purchase items on confirmation
2026-08-19 13:43:08 -03:00
ncoronel
e6c4b40a37
feat(inventory): add traceable cart stock reservations
2026-08-19 13:43:08 -03:00
ncoronel
15878cd9ba
fix(logging): update Telepagos log path to include date directory
2026-08-19 13:40:40 -03:00
ncoronel
d6574bfd0d
feat(logging): implement dedicated logging for Telepagos events and update logging configuration
2026-08-19 13:37:21 -03:00
ncoronel
16bc657a31
refactor(catalog): add ticket_label to item attributes and update related logic
2026-08-19 11:23:41 -03:00
ncoronel
7cea8d3495
feat(cart): enhance item update functionality to support variant changes and improve cart editing policies
2026-08-19 10:46:19 -03:00
ncoronel
014b5bb012
feat(cart): implement cart editing policies and update related functionality
2026-08-19 10:15:37 -03:00
ncoronel
ced7d594e8
refactor(integrations): move configuration ownership to clients
2026-08-18 17:32:44 -03:00
ncoronel
38e87fff6c
feat(clients): add client ownership for tenants
2026-08-18 17:32:27 -03:00
ncoronel
a8973f6171
feat: separate tenant domain and base path, update related models, requests, and tests
2026-08-18 17:23:01 -03:00
ncoronel
8e26611097
feat: add display_cart_item_images feature to tenants and update related resources
2026-08-18 16:46:45 -03:00
ncoronel
a2298c9de2
feat: add cart editing feature to tenants
...
- Added 'cart_editing_enabled' attribute to Tenant model with default value true.
- Updated StoreTenantRequest and UpdateTenantRequest to include validation for 'cart_editing_enabled'.
- Modified TenantResource to expose 'cart_editing_enabled' in API responses.
- Created migration to add 'cart_editing_enabled' column to tenants table, defaulting to true, and set to false for specific tenant.
- Updated DesfilePuraTendenciaSeeder to set 'cart_editing_enabled' to false for the desfile tenant.
- Enhanced Postman collection generation script to include 'cart_editing_enabled' in tenant creation and update requests.
- Added tests to verify the correct behavior of 'cart_editing_enabled' during migrations and tenant provisioning.
2026-08-18 16:32:17 -03:00
ncoronel
d73b4d1daf
feat: Introduce client management and integration updates
...
- Added client_id field to StoreTenantRequest and UpdateTenantRequest for tenant management.
- Updated TenantResource to include client_id in the response.
- Created migration to establish clients table and link tenants to clients.
- Migrated existing tenant integrations to client_integrations table.
- Grouped specific tenants under a shared client (OnTicket) in a new migration.
- Updated seeders to reflect new client structure and relationships.
- Adjusted integration configurations to require client instead of tenant.
- Added tests for client integration functionality and ensured existing tests reflect the new client structure.
2026-08-18 16:18:34 -03:00
ncoronel
e619c51ac9
Refactor attachment cropping functionality to support multiple variants
...
- Introduced AttachmentCrop model to manage crop variants for attachments.
- Updated Attachment model to remove direct crop fields and establish relationships with AttachmentCrop.
- Modified AttachmentService to handle storing and updating multiple crop variants (desktop and mobile).
- Adjusted validation rules to accommodate new crop structure.
- Updated database migration to create attachment_crops table and migrate existing crop data.
- Refactored tests to ensure compatibility with the new cropping structure and validate multiple crop variants.
- Enhanced documentation to reflect changes in attachment handling and cropping capabilities.
2026-08-18 14:40:22 -03:00
ncoronel
9cfd49f233
feat(attachment): refactor image cropping functionality to use range objects and update related tests
2026-08-18 12:54:47 -03:00
ncoronel
58cc35fd61
feat(attachment): implement deletion of cropped attachments alongside original and update README
2026-08-18 12:20:47 -03:00
ncoronel
460ed528cf
feat(attachment): add cropping functionality for images and update metadata storage
2026-08-18 12:04:39 -03:00
ncoronel
1c2f6c4127
refactor(variant-selection): update variant options retrieval to use catalog item's variants and enhance response structure
2026-08-18 10:45:40 -03:00
ncoronel
9e74e21fb5
refactor(catalog): enhance variant options retrieval by restoring canonical values from reserved cart items
2026-08-18 09:27:26 -03:00
ncoronel
7c2880646f
refactor(cart): simplify CartItemResource response structure to prioritize selected variant details
2026-08-18 09:05:50 -03:00
ncoronel
4817cb28fe
refactor(cart): update CartItemResource to serialize only selected variant and remove unused variant data
2026-08-18 09:02:45 -03:00
ncoronel
c1bfab471c
feat(bootstrap): update tenant bootstrap endpoint to accept domain and path as query parameters, enhancing tenant resolution logic
2026-08-14 15:17:24 -03:00
ncoronel
de8da72354
feat(desfile): refactor entry management to use row-based configuration and expand seat options
2026-08-14 13:32:02 -03:00
ncoronel
21b0517e6c
feat(desfile): implement entry management with image handling and variant synchronization
2026-08-14 11:24:17 -03:00
ncoronel
7fbdc00c64
feat(catalog): add is_enabled field to catalog item attachments
2026-08-14 10:24:11 -03:00
ncoronel
58c7a0f580
fix(catalog): serialize empty selections as an object
2026-08-14 10:15:39 -03:00
ncoronel
a63aea0463
refactor(catalog): return compact ticket selector options
2026-08-14 10:08:58 -03:00
ncoronel
b8251f3b63
fix(catalog): return only matching variant options
2026-08-14 09:57:55 -03:00
ncoronel
a919e9366b
refactor(catalog): rely on inventory for variant availability
2026-08-14 09:54:40 -03:00
ncoronel
ed321d6c6c
feat(catalog): resolve options from partial variant selections
2026-08-14 09:43:38 -03:00
ncoronel
573d4fe5e6
Refactor ticket validity handling and improve tests
...
- Updated tests for Accommodation, Entry, Food, Merchandise, and Sale controllers to use soft deletes for variants and ensure proper inventory counts.
- Enhanced ticket generation logic to resolve validity from soft-deleted catalog sources.
- Introduced a new TicketValidityResolver service to manage ticket validity based on event dates and variant definitions.
- Removed unnecessary database assertions and improved the clarity of validity checks in tests.
- Added comprehensive tests for the new TicketValidityResolver service, ensuring correct handling of event dates and multi-select options.
- Cleaned up unused code and assertions in existing tests for better maintainability.
2026-08-14 09:00:51 -03:00
ncoronel
bfdaf1c38b
feat(tenant): add site title and favicon support for tenants and website types
2026-08-14 08:55:59 -03:00
ncoronel
4de08ff2f2
refactor(auth): simplify password reset attempt handling logic and improve code readability
2026-08-14 08:51:31 -03:00
ncoronel
a4a4c9afbc
feat(auth): enhance password reset attempt handling with new reasons and update related services
2026-08-13 16:49:19 -03:00
ncoronel
630b49cad7
feat(scanner): implement password reset attempt functionality for scanner users
2026-08-13 16:44:27 -03:00