phronCare/Models/Models/PhSSalesFiscalDocument.cs
leandro 4ee6880e92
All checks were successful
CI/CD Pipeline / Build and Deploy with Docker Compose (pull_request) Successful in 5m28s
feat(eos): create sales document persistence model
closes #55
2026-04-30 16:20:51 -03:00

116 lines
3.6 KiB
C#

using System;
using System.Collections.Generic;
namespace Models.Models;
/// <summary>
/// Documento fiscal asociado a un documento comercial de venta. Guarda estado, CAE, numeracion fiscal, request/response e idempotencia ARCA.
/// </summary>
public partial class PhSSalesFiscalDocument
{
public int Id { get; set; }
/// <summary>
/// Documento comercial interno vinculado al documento fiscal.
/// </summary>
public int SalesdocumentId { get; set; }
/// <summary>
/// Estado fiscal independiente del estado comercial. Ejemplos: None, Pending, Authorized, Rejected, Error, PendingReconciliation.
/// </summary>
public int FiscalStatus { get; set; }
/// <summary>
/// Ambiente fiscal usado para autorizacion: homologacion, produccion u otro valor definido por configuracion.
/// </summary>
public string Environment { get; set; } = null!;
/// <summary>
/// Punto de venta fiscal ARCA/AFIP.
/// </summary>
public short? PointOfSale { get; set; }
/// <summary>
/// Tipo de comprobante fiscal ARCA/AFIP utilizado en FECAESolicitar.
/// </summary>
public int? VoucherType { get; set; }
/// <summary>
/// Letra fiscal del comprobante autorizado o a autorizar.
/// </summary>
public string? VoucherLetter { get; set; }
/// <summary>
/// Numero fiscal del comprobante asignado para ARCA. Se mantiene separado del numero interno.
/// </summary>
public int? VoucherNumber { get; set; }
/// <summary>
/// Codigo de autorizacion electronico obtenido desde ARCA/AFIP.
/// </summary>
public string? Cae { get; set; }
/// <summary>
/// Fecha de vencimiento del CAE.
/// </summary>
public DateTime? CaeExpirationDate { get; set; }
/// <summary>
/// Huella de idempotencia fiscal para evitar duplicacion de solicitudes ante ARCA.
/// </summary>
public string? RequestFingerprint { get; set; }
/// <summary>
/// Indica si el resultado fiscal es final y no debe volver a mutar salvo procesos controlados de auditoria.
/// </summary>
public bool IsFinal { get; set; }
/// <summary>
/// Payload JSON enviado a ARCA/AFIP.
/// </summary>
public string? ArcaRequestPayloadJson { get; set; }
/// <summary>
/// Payload JSON recibido desde ARCA/AFIP.
/// </summary>
public string? ArcaResponsePayloadJson { get; set; }
/// <summary>
/// Errores devueltos por ARCA/AFIP serializados como JSON.
/// </summary>
public string? ErrorsJson { get; set; }
/// <summary>
/// Eventos devueltos por ARCA/AFIP serializados como JSON.
/// </summary>
public string? EventsJson { get; set; }
/// <summary>
/// Observaciones devueltas por ARCA/AFIP serializadas como JSON.
/// </summary>
public string? ObservationsJson { get; set; }
/// <summary>
/// Fecha/hora UTC del intento de autorizacion fiscal.
/// </summary>
public DateTime? AttemptedAtUtc { get; set; }
/// <summary>
/// Fecha/hora UTC de finalizacion del flujo fiscal.
/// </summary>
public DateTime? CompletedAtUtc { get; set; }
/// <summary>
/// Indica que el documento fiscal fue resuelto mediante reconciliacion posterior a timeout o resultado ambiguo.
/// </summary>
public bool ReconciledAfterTimeout { get; set; }
public DateTime Createdat { get; set; }
public DateTime? Modifiedat { get; set; }
public virtual ICollection<PhSSalesFiscalDocumentAssociation> PhSSalesFiscalDocumentAssociations { get; set; } = new List<PhSSalesFiscalDocumentAssociation>();
public virtual PhSSalesDocument Salesdocument { get; set; } = null!;
}