< Summary

Information
Class: OzonDomains.Models.OzonHandover.OzonHandoverImportBatch
Assembly: OzonDomains
File(s): /home/runner/work/Studio2Prod/Studio2Prod/OzonDomains/Models/OzonHandover/OzonHandoverImportBatch.cs
Line coverage
100%
Covered lines: 23
Uncovered lines: 0
Coverable lines: 23
Total lines: 68
Line coverage: 100%
Branch coverage
N/A
Covered branches: 0
Total branches: 0
Branch coverage: N/A
Method coverage

Feature is only available for sponsors

Upgrade to PRO version

Metrics

MethodBranch coverage Crap Score Cyclomatic complexity Line coverage
get_Id()100%11100%
get_DocumentType()100%11100%
get_GeneratedAt()100%11100%
get_ReturnType()100%11100%
get_ClosedKind()100%11100%
get_ClosedId()100%11100%
get_SummaryActsCount()100%11100%
get_SummaryItemsCount()100%11100%
get_SummaryTotalValue()100%11100%
get_SummaryAcceptedItemsCount()100%11100%
get_SummaryAcceptedValue()100%11100%
get_SummaryRejectedItemsCount()100%11100%
get_SummaryRejectedValue()100%11100%
get_SummaryPendingItemsCount()100%11100%
get_SummaryPendingValue()100%11100%
get_SummaryDefectCount()100%11100%
get_SummaryMissortCount()100%11100%
get_MatchedItemsCount()100%11100%
get_UnmatchedItemsCount()100%11100%
get_RawJson()100%11100%
get_ImportedAt()100%11100%
get_UpdatedAt()100%11100%
get_Acts()100%11100%

File(s)

/home/runner/work/Studio2Prod/Studio2Prod/OzonDomains/Models/OzonHandover/OzonHandoverImportBatch.cs

#LineLine coverage
 1using System.ComponentModel.DataAnnotations;
 2using System.ComponentModel.DataAnnotations.Schema;
 3using Microsoft.EntityFrameworkCore;
 4
 5namespace OzonDomains.Models.OzonHandover;
 6
 7/// <summary>
 8/// Один импортированный JSON-документ выдачи/приёма-передачи Ozon (формат "Telegram Lite").
 9/// Идемпотентность импорта обеспечивается уникальностью <see cref="ClosedId"/> —
 10/// повторный POST того же батча обновляет существующую запись, а не создаёт дубликат.
 11/// </summary>
 12[Table("OzonHandoverImportBatches")]
 13[Index(nameof(ClosedId), IsUnique = true)]
 14public class OzonHandoverImportBatch
 15{
 16    [Key]
 17    [DatabaseGenerated(DatabaseGeneratedOption.Identity)]
 818    public int Id { get; set; }
 19
 20    /// <summary>Тип документа из источника, например "ozon_returns".</summary>
 21    [MaxLength(50)]
 1322    public string? DocumentType { get; set; }
 23
 24    /// <summary>Момент формирования документа источником.</summary>
 1325    public DateTime GeneratedAt { get; set; }
 26
 27    [MaxLength(20)]
 1328    public string? ReturnType { get; set; }
 29
 30    /// <summary>Тип идентификатора батча источника ("batch" и т.п.), поле closed.kind.</summary>
 31    [MaxLength(50)]
 1332    public string? ClosedKind { get; set; }
 33
 34    /// <summary>
 35    /// Уникальный идентификатор батча источника (поле closed.id, например
 36    /// "ЛК1|МОСКВА_10546|2026-09-15T14:25:29.680972Z"). Ключ идемпотентности импорта.
 37    /// </summary>
 38    [MaxLength(300)]
 2639    public string? ClosedId { get; set; }
 40
 41    // Денормализованная сводка верхнего уровня документа (summary)
 1342    public int SummaryActsCount { get; set; }
 1343    public int SummaryItemsCount { get; set; }
 1344    public decimal SummaryTotalValue { get; set; }
 1345    public int SummaryAcceptedItemsCount { get; set; }
 1346    public decimal SummaryAcceptedValue { get; set; }
 1347    public int SummaryRejectedItemsCount { get; set; }
 1348    public decimal SummaryRejectedValue { get; set; }
 1349    public int SummaryPendingItemsCount { get; set; }
 1350    public decimal SummaryPendingValue { get; set; }
 1351    public int SummaryDefectCount { get; set; }
 1352    public int SummaryMissortCount { get; set; }
 53
 54    /// <summary>Сколько позиций удалось сопоставить с заказом по item_no (ShipmentNumber).</summary>
 1355    public int MatchedItemsCount { get; set; }
 56
 57    /// <summary>Сколько позиций не удалось сопоставить ни с одним заказом.</summary>
 1358    public int UnmatchedItemsCount { get; set; }
 59
 60    /// <summary>Полный исходный JSON документа — для аудита и повторной обработки.</summary>
 61    [Column(TypeName = "longtext")]
 1362    public string? RawJson { get; set; }
 63
 1564    public DateTime ImportedAt { get; set; } = DateTime.UtcNow;
 1865    public DateTime UpdatedAt { get; set; } = DateTime.UtcNow;
 66
 3567    public virtual List<OzonHandoverAct> Acts { get; set; } = new();
 68}