< Summary

Information
Class: OzonDomains.Models.ArmtekEtp.ArmtekInvoiceItem
Assembly: OzonDomains
File(s): /home/runner/work/Studio2Prod/Studio2Prod/OzonDomains/Models/ArmtekEtp/ArmtekInvoice.cs
Line coverage
92%
Covered lines: 26
Uncovered lines: 2
Coverable lines: 28
Total lines: 165
Line coverage: 92.8%
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_InvoiceId()100%210%
get_Invoice()100%210%
get_Position()100%11100%
get_ArmtekCode()100%11100%
get_Article()100%11100%
get_Brand()100%11100%
get_Name()100%11100%
get_FullName()100%11100%
get_Price()100%11100%
get_Quantity()100%11100%
get_Returned()100%11100%
get_Amount()100%11100%
get_OrderNumber()100%11100%
get_OrderPosition()100%11100%
get_Note()100%11100%
get_Gtd()100%11100%
get_Country()100%11100%
get_MaxReturnDate()100%11100%
get_NoReturn()100%11100%
get_ReturnDays()100%11100%
get_Weight()100%11100%
get_Volume()100%11100%
get_VatRate()100%11100%
get_VatAmount()100%11100%
get_Ean()100%11100%
get_Tnved()100%11100%
get_RawJson()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{
 14    public long Id { get; set; }
 15
 16    [Required, MaxLength(20)] public string Kunnr { get; set; } = string.Empty;
 17    [Required, MaxLength(20)] public string Vbeln { get; set; } = string.Empty;
 18
 19    /// <summary>«Дата фактуры».</summary>
 20    public DateTime? InvoiceDate { get; set; }
 21
 22    /// <summary>«Дата и время создания» (ERDAT).</summary>
 23    public DateTime? CreatedAt { get; set; }
 24
 25    /// <summary>«Создал».</summary>
 26    [MaxLength(255)] public string? CreatedBy { get; set; }
 27
 28    /// <summary>«Покупатель»: код и наименование.</summary>
 29    [MaxLength(20)] public string? BuyerCode { get; set; }
 30    [MaxLength(500)] public string? BuyerName { get; set; }
 31
 32    /// <summary>«Пункт разгрузки».</summary>
 33    [MaxLength(20)] public string? UnloadingPointCode { get; set; }
 34    [MaxLength(500)] public string? UnloadingPointName { get; set; }
 35
 36    /// <summary>«Адрес доставки».</summary>
 37    [MaxLength(20)] public string? DeliveryAddressCode { get; set; }
 38    [MaxLength(500)] public string? DeliveryAddress { get; set; }
 39
 40    /// <summary>«Контактное лицо».</summary>
 41    [MaxLength(20)] public string? ContactCode { get; set; }
 42    [MaxLength(500)] public string? Contact { get; set; }
 43
 44    /// <summary>«Способ получения».</summary>
 45    [MaxLength(100)] public string? ReceiveMethod { get; set; }
 46
 47    /// <summary>«Статус доставки (ММВ)».</summary>
 48    [MaxLength(100)] public string? DeliveryStatus { get; set; }
 49
 50    /// <summary>«УПД/Товчек».</summary>
 51    [MaxLength(50)] public string? UpdNumber { get; set; }
 52
 53    /// <summary>«ТН/ТТН».</summary>
 54    [MaxLength(50)] public string? TtnNumber { get; set; }
 55
 56    /// <summary>Источник: «api» — ws.armtek.ru (getInvoice), «etp» — страница фактуры в кабинете.</summary>
 57    [MaxLength(10)] public string Source { get; set; } = "etp";
 58
 59    /// <summary>Заказ(ы) Armtek, по которым выставлена фактура (из отчёта getOrderReportByDate), через запятую.</summar
 60    [MaxLength(200)] public string? OrderNumber { get; set; }
 61
 62    /// <summary>Тип заказа из отчёта: «Возврат», «Отгрузка с ОСНОВНЫХ складов АРМТЕК» и т.п.</summary>
 63    [MaxLength(255)] public string? OrderType { get; set; }
 64    [MaxLength(100)] public string? OrderStatus { get; set; }
 65
 66    /// <summary>Комментарий заказа; у возвратов — причина («Отказ клиента», «Повреждение упаковки»).</summary>
 67    [MaxLength(500)] public string? ReturnReason { get; set; }
 68
 69    /// <summary>PAYMENT — наличный/безналичный.</summary>
 70    [MaxLength(50)] public string? Payment { get; set; }
 71
 72    /// <summary>VSTELT — пункт выдачи/склад отгрузки.</summary>
 73    [MaxLength(255)] public string? PickupPointName { get; set; }
 74
 75    /// <summary>NUMDOG — договор.</summary>
 76    [MaxLength(100)] public string? Contract { get; set; }
 77    [MaxLength(5)] public string? Currency { get; set; }
 78
 79    /// <summary>
 80    /// MAX_RET_SUM — сумма, которую ещё можно вернуть. Заполняется только getInvoice с REFLAG=1; обычный getInvoice
 81    /// отдаёт одно и то же число для всех фактур, поэтому загрузка его не пишет.
 82    /// </summary>
 83    [Column(TypeName = "decimal(18,3)")] public decimal? MaxReturnSum { get; set; }
 84
 85    [Column(TypeName = "decimal(18,3)")] public decimal TotalAmount { get; set; }
 86    [Column(TypeName = "decimal(18,3)")] public decimal TotalQuantity { get; set; }
 87    [Column(TypeName = "decimal(18,3)")] public decimal ReturnedQuantity { get; set; }
 88
 89    [Column(TypeName = "longtext")] public string HeaderJson { get; set; } = "[]";
 90    [Column(TypeName = "longtext")] public string ColumnsJson { get; set; } = "[]";
 91    [Column(TypeName = "longtext")] public string ItemsJson { get; set; } = "[]";
 92
 93    public DateTime LoadedAtUtc { get; set; }
 94
 95    public List<ArmtekInvoiceItem> Items { get; set; } = new();
 96}
 97
 98/// <summary>Позиция фактуры Armtek (элемент report_info страницы фактуры).</summary>
 99[Table("ArmtekInvoiceItems")]
 100public class ArmtekInvoiceItem
 101{
 3102    public long Id { get; set; }
 0103    public long InvoiceId { get; set; }
 0104    public ArmtekInvoice? Invoice { get; set; }
 105
 106    /// <summary>POSNR — «Позиция».</summary>
 16107    public int Position { get; set; }
 108
 109    /// <summary>MATNR — «Код АРМТЕК».</summary>
 23110    [MaxLength(50)] public string? ArmtekCode { get; set; }
 111
 112    /// <summary>PIN — «Артикул».</summary>
 21113    [MaxLength(100)] public string? Article { get; set; }
 114
 115    /// <summary>BRAND — «Бренд».</summary>
 22116    [MaxLength(100)] public string? Brand { get; set; }
 117
 118    /// <summary>NAMER — «Наименование» (товарная группа, как в таблице).</summary>
 16119    [MaxLength(500)] public string? Name { get; set; }
 120
 121    /// <summary>MATNM — полное наименование товара.</summary>
 13122    [MaxLength(1000)] public string? FullName { get; set; }
 123
 124    /// <summary>WAVWR — «Цена».</summary>
 14125    [Column(TypeName = "decimal(18,3)")] public decimal Price { get; set; }
 126
 127    /// <summary>FKIMG — «Количество».</summary>
 27128    [Column(TypeName = "decimal(18,3)")] public decimal Quantity { get; set; }
 129
 130    /// <summary>RETMG — «Возвращено».</summary>
 26131    [Column(TypeName = "decimal(18,3)")] public decimal Returned { get; set; }
 132
 133    /// <summary>NETWR — «Сумма».</summary>
 14134    [Column(TypeName = "decimal(18,3)")] public decimal Amount { get; set; }
 135
 136    /// <summary>ORDER_NUM / ORDER_POS — «Заказ/позиция».</summary>
 21137    [MaxLength(20)] public string? OrderNumber { get; set; }
 20138    [MaxLength(10)] public string? OrderPosition { get; set; }
 139
 140    /// <summary>ORDER_NOTE — «Примечание».</summary>
 14141    [MaxLength(500)] public string? Note { get; set; }
 142
 143    /// <summary>GTD — «ГТД».</summary>
 13144    [MaxLength(100)] public string? Gtd { get; set; }
 145
 146    /// <summary>COUNTRY — «Страна происхождения».</summary>
 14147    [MaxLength(100)] public string? Country { get; set; }
 148
 149    /// <summary>MAX_RET_DATE — последний день возврата.</summary>
 13150    public DateTime? MaxReturnDate { get; set; }
 151
 152    /// <summary>NO_RETURN = X — возврат невозможен.</summary>
 13153    public bool NoReturn { get; set; }
 154
 155    /// <summary>Только из API (getInvoice): дней на возврат, вес, объём, НДС, EAN, ТНВЭД.</summary>
 13156    public int? ReturnDays { get; set; }
 14157    [Column(TypeName = "decimal(18,3)")] public decimal? Weight { get; set; }
 13158    [Column(TypeName = "decimal(18,3)")] public decimal? Volume { get; set; }
 14159    [Column(TypeName = "decimal(18,2)")] public decimal? VatRate { get; set; }
 14160    [Column(TypeName = "decimal(18,3)")] public decimal? VatAmount { get; set; }
 14161    [MaxLength(50)] public string? Ean { get; set; }
 14162    [MaxLength(20)] public string? Tnved { get; set; }
 163
 36164    [Column(TypeName = "longtext")] public string RawJson { get; set; } = string.Empty;
 165}