< Summary

Line coverage
59%
Covered lines: 13
Uncovered lines: 9
Coverable lines: 22
Total lines: 101
Line coverage: 59%
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

File(s)

/home/runner/work/Studio2Prod/Studio2Prod/OzonOrdersWeb/Areas/Studio2/ViewModels/OrderHistory/OrderHistoryViewModel.cs

#LineLine coverage
 1using OzonDomains.Models;
 2using OzonOrdersWeb.Areas.Studio2.ViewModels.OrderHistory;
 3using Services.ApiServices.OzonApi.Filters;
 4
 5public class OrderHistoryViewModel
 6{
 57    public int OrderId { get; set; }
 8
 9    /// <summary>Активные проблемы заказа (алерты, ошибка 1С, упавшая транзакция) — те же, что значок в сетках заказов.<
 410    public IReadOnlyList<OrderProblem> Problems { get; set; } = [];
 011    public int? ProductId { get; set; }
 012    public int QuotationRequestsCount { get; set; }
 013    public int QuotationOffersCount { get; set; }
 014    public string? ShipmentNumber { get; set; }
 015    public string? ProductName { get; set; }
 016    public string? ProductImageUrl { get; set; }
 017    public string? Article { get; set; }
 18
 19    /// <summary>offer_id заказа («5511971RUE=DEP») — ключ артикула во внешнем фид-сервисе.</summary>
 20
 021    public string? ClientName { get; set; }
 22
 1223    public Dictionary<DateTime, List<OrderHistory>> Histories { get; set; } = new();
 24
 25    /// <summary>Детали смен статусов поставщиков, привязанные к строкам общей ленты.</summary>
 426    public Dictionary<int, OrderSupplierStatusTimelineViewModel> SupplierStatusTimelineByHistoryId { get; set; } = new()
 27
 28    /// <summary>
 29    /// Транзакции, в которых участвовал заказ: тип, кто провёл, когда, комментарий, проведено в 1С.
 30    /// </summary>
 431    public List<Transaction> Transactions { get; set; } = new();
 32
 33    /// <summary>
 34    /// Начисления Ozon по заказу (API /v1/finance/accrual/postings по номеру отправления и клиенту).
 35    /// </summary>
 436    public List<FinanceTransactionOperation> FinanceOperations { get; set; } = new();
 37
 38    /// <summary>
 39    /// Итоговые суммы по отправлению, рассчитанные из API /v1/finance/accrual/postings.
 40    /// </summary>
 041    public FinanceTransactionTotalsResult? FinanceTotals { get; set; }
 42
 43    /// <summary>
 44    /// История сохранённых итогов по отправлению (OrderShipmentTotals) с датами изменений.
 45    /// </summary>
 446    public List<OrderShipmentTotalsHistoryRowViewModel> ShipmentTotalsHistory { get; set; } = new();
 47
 48    /// <summary>
 49    /// Проведения в 1С, привязанные к истории изменений заказа.
 50    /// </summary>
 1151    public List<OrderHistoryOneCPostingViewModel> OneCPostings { get; set; } = new();
 52
 53    /// <summary>
 54    /// Кэш профилей пользователей для отображения имени/аватара в истории изменений.
 55    /// Ключ — значение ChangedBy (или его display-форма после rollback:).
 56    /// </summary>
 857    public Dictionary<string, OrderHistoryUserProfileViewModel> UserProfiles { get; set; } = new(StringComparer.OrdinalI
 58
 659    public Dictionary<string, long> CalculationSnapshotIdsByOperationId { get; set; } = new(StringComparer.OrdinalIgnore
 60
 461    public List<OrderCalculationSnapshotHistoryViewModel> CalculationSnapshots { get; set; } = new();
 62
 63    /// <summary>
 64    /// Позиции актов выдачи/приёма-передачи Ozon (импорт из "Telegram Lite"), сопоставленные с заказом.
 65    /// </summary>
 466    public List<OrderHistoryHandoverItemViewModel> HandoverItems { get; set; } = new();
 67
 68    /// <summary>Создание и выдача сохранённых PDF-этикеток, показанные в общей ленте заказа.</summary>
 1069    public List<OrderHistoryLabelPrintViewModel> LabelPrints { get; set; } = new();
 70}
 71
 72public sealed class OrderHistoryLabelPrintViewModel
 73{
 74    public long Id { get; init; }
 75    public string FileName { get; init; } = string.Empty;
 76    public DateTime OccurredAtUtc { get; init; }
 77    public string ActorName { get; init; } = string.Empty;
 78    public LabelPrintSource Source { get; init; }
 79    /// <summary>Для PDF, созданных до журнала: время изменения файла, а не подтверждённое событие печати.</summary>
 80    public bool UsesFileDate { get; init; }
 81}
 82
 83public sealed class OrderSupplierStatusTimelineViewModel
 84{
 85    public string ProviderKey { get; init; } = string.Empty;
 86    public string? FromStatusName { get; init; }
 87    public string? FromStatusColor { get; init; }
 88    public string ToStatusName { get; init; } = string.Empty;
 89    public string? ToStatusColor { get; init; }
 90    public string? FromStage { get; init; }
 91    public string ToStage { get; init; } = string.Empty;
 92    public string Source { get; init; } = string.Empty;
 93    public string? Comment { get; init; }
 94}
 95
 96public class OrderHistoryUserProfileViewModel
 97{
 98    public string LoginOrEmail { get; set; } = string.Empty;
 99    public string? DisplayName { get; set; }
 100    public string? AvatarUrl { get; set; }
 101}