< Summary

Information
Class: OzonDomains.Models.ArmtekEtp.ArmtekInvoice
Assembly: OzonDomains
File(s): /home/runner/work/Studio2Prod/Studio2Prod/OzonDomains/Models/ArmtekEtp/ArmtekInvoice.cs
Line coverage
100%
Covered lines: 36
Uncovered lines: 0
Coverable lines: 36
Total lines: 165
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_Kunnr()100%11100%
get_Vbeln()100%11100%
get_InvoiceDate()100%11100%
get_CreatedAt()100%11100%
get_CreatedBy()100%11100%
get_BuyerCode()100%11100%
get_BuyerName()100%11100%
get_UnloadingPointCode()100%11100%
get_UnloadingPointName()100%11100%
get_DeliveryAddressCode()100%11100%
get_DeliveryAddress()100%11100%
get_ContactCode()100%11100%
get_Contact()100%11100%
get_ReceiveMethod()100%11100%
get_DeliveryStatus()100%11100%
get_UpdNumber()100%11100%
get_TtnNumber()100%11100%
get_Source()100%11100%
get_OrderNumber()100%11100%
get_OrderType()100%11100%
get_OrderStatus()100%11100%
get_ReturnReason()100%11100%
get_Payment()100%11100%
get_PickupPointName()100%11100%
get_Contract()100%11100%
get_Currency()100%11100%
get_MaxReturnSum()100%11100%
get_TotalAmount()100%11100%
get_TotalQuantity()100%11100%
get_ReturnedQuantity()100%11100%
get_HeaderJson()100%11100%
get_ColumnsJson()100%11100%
get_ItemsJson()100%11100%
get_LoadedAtUtc()100%11100%
get_Items()100%11100%

File(s)

/home/runner/work/Studio2Prod/Studio2Prod/OzonDomains/Models/ArmtekEtp/ArmtekInvoice.cs

#LineLine coverage
 1using System.ComponentModel.DataAnnotations;
 2using System.ComponentModel.DataAnnotations.Schema;
 3
 4namespace OzonDomains.Models.ArmtekEtp;
 5
 6/// <summary>
 7/// Фактура из личного кабинета Armtek (etp.armtek.ru/invoice/index/{Kunnr}/{Vbeln}): шапка страницы и позиции.
 8/// Шапка целиком (все строки «название: значение») — в <see cref="HeaderJson"/>, описание колонок таблицы
 9/// (заголовок → поле) — в <see cref="ColumnsJson"/>, исходные позиции — в <see cref="ItemsJson"/>.
 10/// </summary>
 11[Table("ArmtekInvoices")]
 12public class ArmtekInvoice
 13{
 514    public long Id { get; set; }
 15
 5816    [Required, MaxLength(20)] public string Kunnr { get; set; } = string.Empty;
 3717    [Required, MaxLength(20)] public string Vbeln { get; set; } = string.Empty;
 18
 19    /// <summary>«Дата фактуры».</summary>
 4320    public DateTime? InvoiceDate { get; set; }
 21
 22    /// <summary>«Дата и время создания» (ERDAT).</summary>
 2723    public DateTime? CreatedAt { get; set; }
 24
 25    /// <summary>«Создал».</summary>
 1326    [MaxLength(255)] public string? CreatedBy { get; set; }
 27
 28    /// <summary>«Покупатель»: код и наименование.</summary>
 2729    [MaxLength(20)] public string? BuyerCode { get; set; }
 2730    [MaxLength(500)] public string? BuyerName { get; set; }
 31
 32    /// <summary>«Пункт разгрузки».</summary>
 2733    [MaxLength(20)] public string? UnloadingPointCode { get; set; }
 2734    [MaxLength(500)] public string? UnloadingPointName { get; set; }
 35
 36    /// <summary>«Адрес доставки».</summary>
 2637    [MaxLength(20)] public string? DeliveryAddressCode { get; set; }
 2738    [MaxLength(500)] public string? DeliveryAddress { get; set; }
 39
 40    /// <summary>«Контактное лицо».</summary>
 2641    [MaxLength(20)] public string? ContactCode { get; set; }
 2742    [MaxLength(500)] public string? Contact { get; set; }
 43
 44    /// <summary>«Способ получения».</summary>
 2745    [MaxLength(100)] public string? ReceiveMethod { get; set; }
 46
 47    /// <summary>«Статус доставки (ММВ)».</summary>
 1348    [MaxLength(100)] public string? DeliveryStatus { get; set; }
 49
 50    /// <summary>«УПД/Товчек».</summary>
 2851    [MaxLength(50)] public string? UpdNumber { get; set; }
 52
 53    /// <summary>«ТН/ТТН».</summary>
 2754    [MaxLength(50)] public string? TtnNumber { get; set; }
 55
 56    /// <summary>Источник: «api» — ws.armtek.ru (getInvoice), «etp» — страница фактуры в кабинете.</summary>
 3757    [MaxLength(10)] public string Source { get; set; } = "etp";
 58
 59    /// <summary>Заказ(ы) Armtek, по которым выставлена фактура (из отчёта getOrderReportByDate), через запятую.</summar
 2760    [MaxLength(200)] public string? OrderNumber { get; set; }
 61
 62    /// <summary>Тип заказа из отчёта: «Возврат», «Отгрузка с ОСНОВНЫХ складов АРМТЕК» и т.п.</summary>
 2763    [MaxLength(255)] public string? OrderType { get; set; }
 2764    [MaxLength(100)] public string? OrderStatus { get; set; }
 65
 66    /// <summary>Комментарий заказа; у возвратов — причина («Отказ клиента», «Повреждение упаковки»).</summary>
 2867    [MaxLength(500)] public string? ReturnReason { get; set; }
 68
 69    /// <summary>PAYMENT — наличный/безналичный.</summary>
 2770    [MaxLength(50)] public string? Payment { get; set; }
 71
 72    /// <summary>VSTELT — пункт выдачи/склад отгрузки.</summary>
 2773    [MaxLength(255)] public string? PickupPointName { get; set; }
 74
 75    /// <summary>NUMDOG — договор.</summary>
 2676    [MaxLength(100)] public string? Contract { get; set; }
 1377    [MaxLength(5)] public string? Currency { get; set; }
 78
 79    /// <summary>
 80    /// MAX_RET_SUM — сумма, которую ещё можно вернуть. Заполняется только getInvoice с REFLAG=1; обычный getInvoice
 81    /// отдаёт одно и то же число для всех фактур, поэтому загрузка его не пишет.
 82    /// </summary>
 2783    [Column(TypeName = "decimal(18,3)")] public decimal? MaxReturnSum { get; set; }
 84
 1685    [Column(TypeName = "decimal(18,3)")] public decimal TotalAmount { get; set; }
 1586    [Column(TypeName = "decimal(18,3)")] public decimal TotalQuantity { get; set; }
 1587    [Column(TypeName = "decimal(18,3)")] public decimal ReturnedQuantity { get; set; }
 88
 3789    [Column(TypeName = "longtext")] public string HeaderJson { get; set; } = "[]";
 3490    [Column(TypeName = "longtext")] public string ColumnsJson { get; set; } = "[]";
 3491    [Column(TypeName = "longtext")] public string ItemsJson { get; set; } = "[]";
 92
 1493    public DateTime LoadedAtUtc { get; set; }
 94
 10395    public List<ArmtekInvoiceItem> Items { get; set; } = new();
 96}
 97
 98/// <summary>Позиция фактуры Armtek (элемент report_info страницы фактуры).</summary>
 99[Table("ArmtekInvoiceItems")]
 100public class ArmtekInvoiceItem
 101{
 102    public long Id { get; set; }
 103    public long InvoiceId { get; set; }
 104    public ArmtekInvoice? Invoice { get; set; }
 105
 106    /// <summary>POSNR — «Позиция».</summary>
 107    public int Position { get; set; }
 108
 109    /// <summary>MATNR — «Код АРМТЕК».</summary>
 110    [MaxLength(50)] public string? ArmtekCode { get; set; }
 111
 112    /// <summary>PIN — «Артикул».</summary>
 113    [MaxLength(100)] public string? Article { get; set; }
 114
 115    /// <summary>BRAND — «Бренд».</summary>
 116    [MaxLength(100)] public string? Brand { get; set; }
 117
 118    /// <summary>NAMER — «Наименование» (товарная группа, как в таблице).</summary>
 119    [MaxLength(500)] public string? Name { get; set; }
 120
 121    /// <summary>MATNM — полное наименование товара.</summary>
 122    [MaxLength(1000)] public string? FullName { get; set; }
 123
 124    /// <summary>WAVWR — «Цена».</summary>
 125    [Column(TypeName = "decimal(18,3)")] public decimal Price { get; set; }
 126
 127    /// <summary>FKIMG — «Количество».</summary>
 128    [Column(TypeName = "decimal(18,3)")] public decimal Quantity { get; set; }
 129
 130    /// <summary>RETMG — «Возвращено».</summary>
 131    [Column(TypeName = "decimal(18,3)")] public decimal Returned { get; set; }
 132
 133    /// <summary>NETWR — «Сумма».</summary>
 134    [Column(TypeName = "decimal(18,3)")] public decimal Amount { get; set; }
 135
 136    /// <summary>ORDER_NUM / ORDER_POS — «Заказ/позиция».</summary>
 137    [MaxLength(20)] public string? OrderNumber { get; set; }
 138    [MaxLength(10)] public string? OrderPosition { get; set; }
 139
 140    /// <summary>ORDER_NOTE — «Примечание».</summary>
 141    [MaxLength(500)] public string? Note { get; set; }
 142
 143    /// <summary>GTD — «ГТД».</summary>
 144    [MaxLength(100)] public string? Gtd { get; set; }
 145
 146    /// <summary>COUNTRY — «Страна происхождения».</summary>
 147    [MaxLength(100)] public string? Country { get; set; }
 148
 149    /// <summary>MAX_RET_DATE — последний день возврата.</summary>
 150    public DateTime? MaxReturnDate { get; set; }
 151
 152    /// <summary>NO_RETURN = X — возврат невозможен.</summary>
 153    public bool NoReturn { get; set; }
 154
 155    /// <summary>Только из API (getInvoice): дней на возврат, вес, объём, НДС, EAN, ТНВЭД.</summary>
 156    public int? ReturnDays { get; set; }
 157    [Column(TypeName = "decimal(18,3)")] public decimal? Weight { get; set; }
 158    [Column(TypeName = "decimal(18,3)")] public decimal? Volume { get; set; }
 159    [Column(TypeName = "decimal(18,2)")] public decimal? VatRate { get; set; }
 160    [Column(TypeName = "decimal(18,3)")] public decimal? VatAmount { get; set; }
 161    [MaxLength(50)] public string? Ean { get; set; }
 162    [MaxLength(20)] public string? Tnved { get; set; }
 163
 164    [Column(TypeName = "longtext")] public string RawJson { get; set; } = string.Empty;
 165}