Merged
Conversation
- Add ExpiresAt (nullable) to Sale entity + migration AddSaleExpiresAt
- CreateSaleCommandHandler auto-sets ExpiresAt=UtcNow+30d for Quote type
- ConvertQuoteToSaleCommand: validates quote open/not-expired, marks Cancelled
- SaleType? filter added to GetSalesQuery/ISaleRepository/SaleRepository
- POST /api/v1/sales/{id}/convert endpoint in SaleEndpoints
- PaymentPanel: "Guardar como Cotización" button (OnQuoteSaved callback)
- Pos.razor: accepts ?quoteId= param, pre-loads cart from quote items on init
- QuoteList.razor at /cotizaciones with expiry chip, convert & cancel actions
- NavMenu: "Cotizaciones" link under VENTAS section
- ISaleService/SaleService: type param + ConvertQuoteToSaleAsync
- 15 es-MX localization keys for quote management UI
- Updated GetSalesQueryHandlerTests to match new ISaleRepository signature
Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
Summary
/cotizacioneswith expiry indicator, convert-to-sale, and cancel actionsChanges
Backend (Application + Domain + Infrastructure)
Sale.ExpiresAtnullable field +AddSaleExpiresAtEF migrationCreateSaleCommandHandler: auto-setsExpiresAt = UtcNow+30dwhenType == QuoteConvertQuoteToSaleCommand+ handler: validates quote open/not-expired, marks CancelledGetSalesQuery: newSaleType? Typefilter parameterISaleRepository.GetPagedAsync: addedSaleType? typeparameterSaleEndpoints:saleTypequery param +POST /{id}/convertendpointFrontend (Blazor)
PaymentPanel.razor: "Guardar como Cotización" button withOnQuoteSavedcallbackPos.razor: accepts?quoteId=param → pre-loads cart items from quote on initQuoteList.razorat/cotizaciones: paginated table with expiry chip, convert & cancelNavMenu.razor: "Cotizaciones" link under VENTAS sectionISaleService/SaleService:typeparam +ConvertQuoteToSaleAsyncTest plan
/cotizaciones→ quote appears with expiry date chip🤖 Generated with Claude Code