feat(sales): Sales Document Persistence Model and clean #55

Closed
opened 2026-04-30 19:19:43 +00:00 by leandro · 0 comments
Owner

🎯 Objetivo

Definir e implementar la base de persistencia para el módulo de facturación en PhronCare, soportando:

  • Facturas (A/B/C)
  • Notas de débito / crédito
  • FCE / NDE / NCE (preparado, no implementado aún)
  • Separación entre documento comercial y fiscal (ARCA)

📌 Contexto funcional

Actualmente PhronCare posee:

  • Presupuestos (PhS_QuoteHeaders)
  • Remitos (PhS_DeliveryNotes)
  • Expediciones (PhLSMExpeditions)

Falta incorporar el concepto de documento de venta valorizado, independiente de:

  • logística (remitos)
  • intención comercial (presupuestos)

🧠 Decisiones de diseño

1. Separación de responsabilidades

Quote → intención comercial
DeliveryNote → ejecución logística
SalesDocument → valorización económica/fiscal

2. Modelo genérico (no “Invoices”)

Se define:

PhS_SalesDocuments

en lugar de:

Invoices / InvoiceDocuments ❌

para soportar múltiples tipos de comprobantes.


3. Numeración

  • ✔ Interna → PhS_FormSeries
  • ✔ Fiscal → ARCA (NO se persiste previamente)

Separación obligatoria:

internal_sequence_number ≠ voucher_number (AFIP)

4. Remitos

  • NO obligatorios
  • ✔ solo referencia opcional en cabecera
  • NO FK en detalle

5. Origen de facturación

Detalle vinculado a:

quote_detail_id

Permite:

  • facturación parcial (60/40)
  • obra social / particular
  • ventas manuales

6. Fiscal desacoplado

PhS_SalesFiscalDocuments
PhS_SalesFiscalDocumentAssociations

Soporta:

  • CAE
  • idempotencia
  • request/response
  • reconciliación

🧱 Alcance

Tablas creadas

  • PhS_SalesDocuments
  • PhS_SalesDocumentDetails
  • PhS_SalesFiscalDocuments
  • PhS_SalesFiscalDocumentAssociations

Incluye

  • FK a PhS_FormSeries
  • FK a PhS_QuoteHeaders
  • FK a PhS_QuoteDetails
  • FK a PhS_Customers
  • FK a PhS_Products

Extended Properties

Se agregan MS_Description en:

  • tablas
  • columnas clave

🚫 Fuera de alcance

  • Lógica de negocio (Core)
  • Endpoints API
  • UI
  • Integración ARCA
  • Asientos contables

Criterios de aceptación

  • Script SQL ejecuta sin errores
  • Tablas creadas correctamente
  • FKs válidas
  • Índices creados
  • Extended properties visibles
  • Scaffold EF funciona sin errores

🧪 Validación técnica

  1. Ejecutar script en DB
  2. Scaffold selectivo
  3. Build OK
  4. Validar DbContext

🌱 Decisiones futuras habilitadas

  • Facturación parcial
  • Multi-tenant fiscal
  • Idempotencia ARCA
  • Reconciliación por timeout
  • Soporte FCE

🔀 Branch sugerido

feature/leandro/55-sales-document-data-model

💬 Commit sugerido

feat(data): create sales document persistence model

closes #55

🚀 Próxima Story

👉 #57 — Core: creación y emisión de SalesDocument

  • servicio de creación
  • numeración interna
  • validaciones básicas
  • estados comerciales
## 🎯 Objetivo Definir e implementar la base de persistencia para el módulo de facturación en PhronCare, soportando: * Facturas (A/B/C) * Notas de débito / crédito * FCE / NDE / NCE (preparado, no implementado aún) * Separación entre documento comercial y fiscal (ARCA) --- ## 📌 Contexto funcional Actualmente PhronCare posee: * Presupuestos (`PhS_QuoteHeaders`) * Remitos (`PhS_DeliveryNotes`) * Expediciones (`PhLSMExpeditions`) Falta incorporar el concepto de **documento de venta valorizado**, independiente de: * logística (remitos) * intención comercial (presupuestos) --- ## 🧠 Decisiones de diseño ### 1. Separación de responsabilidades ```text Quote → intención comercial DeliveryNote → ejecución logística SalesDocument → valorización económica/fiscal ``` --- ### 2. Modelo genérico (no “Invoices”) Se define: ```text PhS_SalesDocuments ``` en lugar de: ```text Invoices / InvoiceDocuments ❌ ``` para soportar múltiples tipos de comprobantes. --- ### 3. Numeración * ✔ Interna → `PhS_FormSeries` * ✔ Fiscal → ARCA (NO se persiste previamente) Separación obligatoria: ```text internal_sequence_number ≠ voucher_number (AFIP) ``` --- ### 4. Remitos * ❌ NO obligatorios * ✔ solo referencia opcional en cabecera * ❌ NO FK en detalle --- ### 5. Origen de facturación Detalle vinculado a: ```text quote_detail_id ``` Permite: * facturación parcial (60/40) * obra social / particular * ventas manuales --- ### 6. Fiscal desacoplado ```text PhS_SalesFiscalDocuments PhS_SalesFiscalDocumentAssociations ``` Soporta: * CAE * idempotencia * request/response * reconciliación --- ## 🧱 Alcance ### Tablas creadas * `PhS_SalesDocuments` * `PhS_SalesDocumentDetails` * `PhS_SalesFiscalDocuments` * `PhS_SalesFiscalDocumentAssociations` --- ### Incluye * FK a `PhS_FormSeries` * FK a `PhS_QuoteHeaders` * FK a `PhS_QuoteDetails` * FK a `PhS_Customers` * FK a `PhS_Products` --- ### Extended Properties Se agregan `MS_Description` en: * tablas * columnas clave --- ## 🚫 Fuera de alcance * Lógica de negocio (Core) * Endpoints API * UI * Integración ARCA * Asientos contables --- ## ✅ Criterios de aceptación * Script SQL ejecuta sin errores * Tablas creadas correctamente * FKs válidas * Índices creados * Extended properties visibles * Scaffold EF funciona sin errores --- ## 🧪 Validación técnica 1. Ejecutar script en DB 2. Scaffold selectivo 3. Build OK 4. Validar DbContext --- ## 🌱 Decisiones futuras habilitadas * Facturación parcial * Multi-tenant fiscal * Idempotencia ARCA * Reconciliación por timeout * Soporte FCE --- ## 🔀 Branch sugerido ```bash feature/leandro/55-sales-document-data-model ``` --- ## 💬 Commit sugerido ```text feat(data): create sales document persistence model closes #55 ``` --- ## 🚀 Próxima Story 👉 **#57 — Core: creación y emisión de SalesDocument** * servicio de creación * numeración interna * validaciones básicas * estados comerciales
leandro changed title from feat(eos): Sales Document Persistence Model and clean to feat(sales): Sales Document Persistence Model and clean 2026-04-30 20:48:01 +00:00
leandro added the
STORY
label 2026-05-07 04:19:19 +00:00
leandro added this to the Sales (Ventas, Facturación y Remitos) milestone 2026-05-07 04:19:22 +00:00
leandro added this to the phronCare: Tablero DEV project 2026-05-07 04:19:25 +00:00
leandro self-assigned this 2026-05-07 04:19:27 +00:00
Sign in to join this conversation.
1 Participants
Notifications
Due Date
No due date set.
Dependencies

No dependencies set.

Reference: leandro/phronCare#55
No description provided.