feat(sales): agregar entidades Domain para Delivery Note #13

Closed
opened 2026-03-16 22:55:41 +00:00 by leandro · 0 comments
Owner

Objetivo

Crear las **entidades de dominio (E*)** del nuevo documento comercial
**Delivery Note** en el módulo Sales.

Esta story continúa el flujo de trabajo definido para el proyecto:

Data → Domain → Core → API → UI

La story anterior ya implementó:

  • tablas SQL
  • scaffold EF en Models/Data

Esta story introduce el modelo de dominio desacoplado de EF.


Contexto funcional

Delivery Note (Remito) es un documento comercial independiente que
representa la entrega de productos al cliente.

Puede estar asociado opcionalmente a:

  • Quote
  • Sales Invoice (futuro)

Para el MVP:

  • se generará desde Quote aprobado

Cada Delivery Note tiene:

Cabecera

Información del documento.

Detalle

Líneas documentales que representan productos o servicios entregados.

El detalle es documental, por lo tanto siempre debe guardar:

  • Description
  • Quantity
  • Notes

aunque exista referencia a otro origen.


Alcance

Solo capa Domain.

Crear las entidades:

Domain/Entities/EDeliveryNote.cs
Domain/Entities/EDeliveryNoteDetail.cs

Crear enum:

Domain/Enums/DeliveryNoteItemOriginType.cs

No incluir lógica de negocio.


EDeliveryNote

Representa la cabecera del documento.

Campos esperados:

Id
DeliveryNoteNumber
QuoteId
SalesInvoiceId
IssueDate
CustomerId
Status
Observations
ExtraInfoJson
PrintCount
CreatedAt
ModifiedAt

Relaciones:

List<EDeliveryNoteDetail> Details

EDeliveryNoteDetail

Representa una línea del documento.

Campos esperados:

Id
DeliveryNoteId
LineNumber
OriginType
OriginId
QuoteDetailId
Description
Quantity
Notes
CreatedAt
ModifiedAt

Enum DeliveryNoteItemOriginType

Representa el origen del renglón.

Valores:

QuoteDetail = 1
SalesProduct = 2
StockProduct = 3
Manual = 4

Esto evita usar tinyint directamente en Core.


Decisiones de diseño

1. Separación Data / Domain

Las entidades E* representan el modelo de negocio y no deben
depender de EF.

Las entidades EF scaffold permanecen en:

Models/Models

2. Correspondencia con base de datos

Las entidades Domain mantienen correspondencia directa con:

PhS_DeliveryNotes
PhS_DeliveryNoteDetails

3. Detalle documental

Las líneas del Delivery Note guardan información independiente del
origen para evitar inconsistencias si el origen cambia.


Fuera de alcance

Esta story NO incluye:

  • lógica de negocio
  • repositorios
  • servicios Core
  • API
  • UI
  • generación desde Quote
  • validaciones

Criterios de aceptación

  • existen EDeliveryNote y EDeliveryNoteDetail
  • existe enum DeliveryNoteItemOriginType
  • relación DeliveryNote → Details
  • naming consistente con Quote y Expedition
  • entidades Domain desacopladas de EF

Branch sugerido

feature/{issue}-deliverynote-domain

Ejemplo:

feature/11-deliverynote-domain

Commit sugerido

feat(sales): agregar entidades domain para delivery note

Closes #11
## Objetivo Crear las \*\*entidades de dominio (E\*)** del nuevo documento comercial **Delivery Note\*\* en el módulo Sales. Esta story continúa el flujo de trabajo definido para el proyecto: Data → Domain → Core → API → UI La story anterior ya implementó: - tablas SQL - scaffold EF en Models/Data Esta story introduce el **modelo de dominio** desacoplado de EF. ------------------------------------------------------------------------ ## Contexto funcional Delivery Note (Remito) es un documento comercial independiente que representa la entrega de productos al cliente. Puede estar asociado opcionalmente a: - Quote - Sales Invoice (futuro) Para el MVP: - se generará desde **Quote aprobado** Cada Delivery Note tiene: ### Cabecera Información del documento. ### Detalle Líneas documentales que representan productos o servicios entregados. El detalle es **documental**, por lo tanto siempre debe guardar: - Description - Quantity - Notes aunque exista referencia a otro origen. ------------------------------------------------------------------------ ## Alcance Solo **capa Domain**. Crear las entidades: Domain/Entities/EDeliveryNote.cs Domain/Entities/EDeliveryNoteDetail.cs Crear enum: Domain/Enums/DeliveryNoteItemOriginType.cs No incluir lógica de negocio. ------------------------------------------------------------------------ ## EDeliveryNote Representa la cabecera del documento. Campos esperados: Id DeliveryNoteNumber QuoteId SalesInvoiceId IssueDate CustomerId Status Observations ExtraInfoJson PrintCount CreatedAt ModifiedAt Relaciones: List<EDeliveryNoteDetail> Details ------------------------------------------------------------------------ ## EDeliveryNoteDetail Representa una línea del documento. Campos esperados: Id DeliveryNoteId LineNumber OriginType OriginId QuoteDetailId Description Quantity Notes CreatedAt ModifiedAt ------------------------------------------------------------------------ ## Enum DeliveryNoteItemOriginType Representa el origen del renglón. Valores: QuoteDetail = 1 SalesProduct = 2 StockProduct = 3 Manual = 4 Esto evita usar `tinyint` directamente en Core. ------------------------------------------------------------------------ ## Decisiones de diseño ### 1. Separación Data / Domain Las entidades **E**\* representan el modelo de negocio y no deben depender de EF. Las entidades EF scaffold permanecen en: Models/Models ------------------------------------------------------------------------ ### 2. Correspondencia con base de datos Las entidades Domain mantienen correspondencia directa con: PhS_DeliveryNotes PhS_DeliveryNoteDetails ------------------------------------------------------------------------ ### 3. Detalle documental Las líneas del Delivery Note guardan información independiente del origen para evitar inconsistencias si el origen cambia. ------------------------------------------------------------------------ ## Fuera de alcance Esta story **NO incluye**: - lógica de negocio - repositorios - servicios Core - API - UI - generación desde Quote - validaciones ------------------------------------------------------------------------ ## Criterios de aceptación - existen `EDeliveryNote` y `EDeliveryNoteDetail` - existe enum `DeliveryNoteItemOriginType` - relación `DeliveryNote → Details` - naming consistente con Quote y Expedition - entidades Domain desacopladas de EF ------------------------------------------------------------------------ ## Branch sugerido feature/{issue}-deliverynote-domain Ejemplo: feature/11-deliverynote-domain ------------------------------------------------------------------------ ## Commit sugerido feat(sales): agregar entidades domain para delivery note Closes #11
leandro added the
STORY
label 2026-03-17 01:10:10 +00:00
leandro added this to the Sales (Ventas, Facturación y Remitos) milestone 2026-03-17 01:10:13 +00:00
leandro added this to the phronCare: Tablero DEV project 2026-03-17 01:10:16 +00:00
leandro self-assigned this 2026-03-17 01:10:29 +00:00
leandro moved this to Done in phronCare: Tablero DEV on 2026-03-23 03:07:36 +00:00
leandro moved this to Done in phronCare: Tablero DEV on 2026-03-23 03:07:37 +00:00
leandro moved this to Done in phronCare: Tablero DEV on 2026-03-23 03:07:39 +00:00
leandro moved this to Done in phronCare: Tablero DEV on 2026-03-23 03:07:40 +00:00
leandro moved this to Done in phronCare: Tablero DEV on 2026-03-23 03:07:42 +00:00
leandro moved this to Done in phronCare: Tablero DEV on 2026-03-23 03:07:45 +00:00
leandro moved this to Done in phronCare: Tablero DEV on 2026-03-23 03:07:47 +00:00
leandro moved this to Done in phronCare: Tablero DEV on 2026-03-23 03:07:49 +00:00
leandro moved this to Done in phronCare: Tablero DEV on 2026-03-23 03:07:51 +00:00
leandro moved this to Done in phronCare: Tablero DEV on 2026-03-23 03:07:52 +00:00
leandro moved this to Done in phronCare: Tablero DEV on 2026-03-24 20:24:05 +00:00
leandro moved this to Done in phronCare: Tablero DEV on 2026-03-24 20:24:07 +00:00
leandro moved this to Done in phronCare: Tablero DEV on 2026-03-25 13:27:46 +00:00
Sign in to join this conversation.
1 Participants
Notifications
Due Date
No due date set.
Dependencies

No dependencies set.

Reference: leandro/phronCare#13
No description provided.