phronCare/Domain/Entities/ESalesDocument.cs
leandro 5e894ddca5
All checks were successful
CI/CD Pipeline / Build and Deploy with Docker Compose (pull_request) Successful in 7m39s
feat(domain): add sales document domain contracts with coverage
- add sales document domain entities
- add coverage-oriented DTO contracts
- add sales document enums/constants
- prepare domain model for mixed coverage scenarios
- align domain contracts with future ARCA integration

closes #57
2026-05-07 00:33:34 -03:00

136 lines
4.9 KiB
C#

namespace Domain.Entities
{
public partial class ESalesDocument
{
/// <summary>
/// Identificador interno del documento comercial.
/// </summary>
public int Id { get; set; }
/// <summary>
/// Talonario/serie interna existente en PhronCare. Reutiliza PhS_FormSeries para numeracion interna.
/// </summary>
public int? FormseriesId { get; set; }
/// <summary>
/// Numero secuencial interno asignado al emitir internamente el documento. No corresponde al numero fiscal ARCA.
/// </summary>
public int? InternalSequenceNumber { get; set; }
/// <summary>
/// Numero visible interno del documento, formado desde la serie/talonario interno. Puede diferir del numero fiscal.
/// </summary>
public string? InternalDocumentNumber { get; set; }
/// <summary>
/// Tipo comercial interno del documento. Ejemplos: Invoice, DebitNote, CreditNote, CreditInvoice, CreditDebitNote, CreditCreditNote.
/// </summary>
public int DocumentType { get; set; }
/// <summary>
/// Tipo de comprobante fiscal AFIP/ARCA previsto para autorizacion futura. Ejemplos: 1, 6, 11, 201, 202, 203.
/// </summary>
public int? FiscalVoucherType { get; set; }
/// <summary>
/// Letra fiscal prevista del comprobante: A, B, C u otras segun configuracion fiscal.
/// </summary>
public string? FiscalVoucherLetter { get; set; }
/// <summary>
/// Estado comercial interno. Ejemplos: Draft, Validated, Issued, Cancelled. Independiente del estado fiscal.
/// </summary>
public int Status { get; set; }
/// <summary>
/// Presupuesto origen opcional. Puede ser NULL para ventas manuales o de escritorio.
/// </summary>
public int? QuoteId { get; set; }
/// <summary>
/// Cliente origen de la operacion comercial.
/// </summary>
public int CustomerId { get; set; }
/// <summary>
/// Cliente al que se factura realmente. Permite escenarios obra social / particular u otros terceros pagadores.
/// </summary>
public int BillToCustomerId { get; set; }
/// <summary>
/// Fecha de emision interna del documento comercial.
/// </summary>
public DateTime? IssueDate { get; set; }
/// <summary>
/// Moneda del documento comercial.
/// </summary>
public string Currency { get; set; } = null!;
/// <summary>
/// Cotizacion utilizada para la moneda del documento.
/// </summary>
public decimal ExchangeRate { get; set; }
/// <summary>
/// Importe neto total del documento.
/// </summary>
public decimal NetAmount { get; set; }
/// <summary>
/// Importe total de impuestos del documento.
/// </summary>
public decimal TaxAmount { get; set; }
/// <summary>
/// Importe total del documento.
/// </summary>
public decimal TotalAmount { get; set; }
/// <summary>
/// Tipo de documento interno asociado opcional, por ejemplo remito, orden de compra o autorizacion. No representa CbtesAsoc fiscal.
/// </summary>
public string? AssociatedDocumentType { get; set; }
/// <summary>
/// Numero del documento interno asociado opcional.
/// </summary>
public string? AssociatedDocumentNumber { get; set; }
/// <summary>
/// Fecha del documento interno asociado opcional.
/// </summary>
public DateTime? AssociatedDocumentDate { get; set; }
/// <summary>
/// Observaciones comerciales del documento.
/// </summary>
public string? Observations { get; set; }
/// <summary>
/// Snapshot JSON con informacion extra contextual del documento.
/// </summary>
public string? ExtraInfoJson { get; set; }
/// <summary>
/// Fecha inicial del periodo comercial facturado. Aplica especialmente a facturacion por capita o periodos mensuales.
/// </summary>
public DateTime? PeriodFrom { get; set; }
/// <summary>
/// Fecha final del periodo comercial facturado. Aplica especialmente a facturacion por capita o periodos mensuales.
/// </summary>
public DateTime? PeriodTo { get; set; }
public DateTime Createdat { get; set; }
public DateTime? Modifiedat { get; set; }
public virtual ICollection<ESalesDocumentCoverage> PhSSalesDocumentCoverages { get; set; } = new List<ESalesDocumentCoverage>();
public virtual ICollection<ESalesDocumentDetail> PhSSalesDocumentDetails { get; set; } = new List<ESalesDocumentDetail>();
public virtual ICollection<ESalesFiscalDocumentAssociation> PhSSalesFiscalDocumentAssociations { get; set; } = new List<ESalesFiscalDocumentAssociation>();
}
}