Sales Document Refinement — Invoice Candidate from Delivery Notes #68
Loading…
x
Reference in New Issue
Block a user
No description provided.
Delete Branch "%!s()"
Deleting a branch is permanent. Although the deleted branch may continue to exist for a short time before it actually gets removed, it CANNOT be undone in most cases. Continue?
Objetivo
Refinar el flujo de creación de Sales Document para que el documento comercial facturable se genere desde Delivery Notes emitidos, permitiendo agrupar uno o varios remitos de un mismo cliente fiscal y conservando precios aprobados y snapshot clínico/comercial.
Contexto funcional
PhronCare ya contiene persistencia, Domain contracts, DTOs, Core flow, repositories, mappings Domain ↔ EF, endpoints API oficiales y Backoffice UI funcional para Sales Documents.
La operación real validada para ortopedias y financiadores queda consolidada como:
Sales Document no representa todavía un comprobante fiscal. Representa un documento comercial preparado para facturación futura.
Coverage se define funcionalmente como la entidad financiadora/pagadora responsable: Obra Social, Prepaga, ART, Particular, Convenio o Cápita. Coverage no es paciente, hospital ni médico.
Alcance
Esta story incluye:
PhSDeliveryNote.SalesinvoiceIdpara marcar remitos asociados al Sales Document creado.OriginSnapshotJson.ExtraInfoJsondel Sales Document.Capas involucradas:
No se requieren cambios SQL porque se reutiliza el campo existente
SalesinvoiceIden Delivery Notes.Fuera de alcance
No forma parte de esta story:
Criterios de aceptación
✔ Sales Document se crea desde Delivery Notes emitidos.
✔ Se permite agrupar múltiples Delivery Notes.
✔ Se valida cliente fiscal único en Core, API y UI.
✔ Se impide facturar remitos ya asociados a un Sales Document.
✔ Se copian líneas del remito correctamente.
✔ Se conservan precios aprobados desde QuoteDetail.
✔ Se conserva snapshot comercial por línea.
✔ Se conserva snapshot agrupado de operaciones.
✔ No se modifica ningún modelo EF scaffolded.
✔ No se rompe el flujo existente de Delivery Notes.
✔ No se rompe el endpoint create anterior de Sales Document.
✔ El patch aplica limpio con:
Decisiones de diseño
Sales Document como documento comercial
Sales Document queda definido como documento comercial facturable, previo a cualquier emisión fiscal. No se introducen conceptos fiscales definitivos todavía.
Cliente fiscal
Para esta story se usa
DeliveryNote.CustomerIdcomo cliente fiscal/facturable efectivo. Es la opción conservadora compatible con el modelo actual porque Delivery Note no posee todavía unBillToCustomerIdseparado.Agrupación de remitos
Se permite agrupar varios Delivery Notes en un único Sales Document solo si todos comparten el mismo
CustomerId.Asociación con remitos
Se reutiliza
PhSDeliveryNote.SalesinvoiceIdpara asociar los remitos al Sales Document creado. No se crea una tabla intermedia en esta story.Precios aprobados
Los importes se toman desde
QuoteDetail.ApprovedunitpriceyQuoteDetail.Approvedamount. Si faltaApprovedamount, se calcula conservadoramente desde precio aprobado/unitario y cantidad del remito. No se recalculan precios comerciales ni se actualizan automáticamente.Snapshot clínico/comercial
Cada línea conserva snapshot de origen con remito, presupuesto, cliente y
ExtraInfoJsondel remito. El encabezado conserva un snapshot agrupado con la lista de operaciones asociadas. En facturación agrupada no se fuerza una única cabecera clínica.Impacto futuro fiscal documentado
Una futura Story Fiscal Foundation deberá introducir formalmente:
Estos datos deberán pertenecer al documento fiscal futuro, no al Sales Document comercial base.
Entregable esperado
Archivos creados:
Archivos modificados:
Branch sugerido:
Commit sugerido: